# Implementation Plan:B-2a 报销审批内容工作台 ## Before Development - [x] 用户批准父任务及 B-2a 最新 PRD/design/implement。 - [x] 运行 `trellis-before-dev`,读取 frontend、approval workflow、reimbursement/OCR 和 cross-layer/code-reuse 规约。 - [x] 用合成角色复核 workflow task 可见者读取 reimbursement detail 的权限矩阵。 - [x] 冻结共享组件最小输入字段与 PC/移动页面结构。 ## Implementation Order 1. [x] 后端把现有 `budgetCheck` 最小字段写入 workflow context,并在任务详情显式投影;补旧数据兼容单测。 2. [x] 建立共享 projection 纯函数与测试:明细分组、票据归属、快照/实时提示、退回引用。 3. [x] 建立响应式共享明细证据组件,只实现 review/readonly 能力和材料打开回调。 4. [x] PC 审批页接入双查询、主列内容和右侧 sticky 决策区;关键数据失败时 fail closed。 5. [x] 移动审批页接入同一组件,调整底部主/次动作;按允许字段投影缓存 workflow 摘要,排除全部报销证据,并在离线/内容未加载时阻断报销审批动作和草稿。 6. [x] 恢复提交时费用标准行内提示、预算快照、办公电子设备提示和当前票据检查。 7. [x] 增加明细/票据引用到现有退回意见的交互,不改后端 comment 合同。 8. [x] 更新冲突的 frontend spec:旧“仅提供详情出口”改为共享内容工作台合同;保留完整原始表单次要入口。 ## Verification - [x] 后端聚焦 Vitest + `npm run prisma:validate` + 相关 `node --check`。 - [x] 前端组件/纯函数测试、`npm run typecheck`、`npm run build`。 - [ ] PC/移动 Playwright 覆盖完整证据查看、快照/实时冲突、加载失败、材料打开、退回引用和动作层级。(PC 合成 2/2 已通过;移动完整环境待跑) - [x] 移动离线回归直接检查 IndexedDB 缓存字段,证明报销证据未落盘;既有非报销离线草稿用例保留在同一回归文件。 - [x] 权限矩阵覆盖当前审批人、已处理查看、财务只读和无权身份。 - [x] `node scripts/qa/check-ui-design-rules.mjs --strict` 与 `--self-test`。 - [x] `node scripts/qa/check-process-contract.mjs --baseline --json`、Trellis governance、敏感内容检查、`git diff --check`。 - [x] 实施后因触及审批 workflow context 与权限读取链,执行只读 reviewer 复核;inline 模式由主会话按规则完成只读复核,不派发实现/check 子代理。 ## Deployment Boundary - [ ] 无用户单独部署授权时只提交本地代码与元数据,不 push、不部署。 - [ ] 部署使用独立候选和既有生产回滚基线;无 migration/seed/flag。 - [ ] 公网使用合成报销任务验证 PC/移动完整流程,不修改真人报销或审批状态。