补齐验收记录并归档非参与人报销只读投影任务 [08-28-reimbursement-nonparticipant-readonly-projection]
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s

发现并修正文档滞后:业务提交 e8d6766 已确认合入并随后续发布上线(是当前
生产 b1d25d3c 的祖先提交),但 PRD 的 9 条 AC 一直保持未勾选、task.json
备注仍写"未推送、未部署"。implement.md 的服务端/前端验证清单与独立只读
复核记录逐条对应 PRD 各项,现据实补勾 AC 并更正 notes,再归档。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
这个提交包含在:
2026-09-25 20:52:12 +08:00
共同撰写人 Claude Sonnet 5
父节点 b87b594e62
当前提交 7ad022ce4b
共修改 6 个文件,包含 15 行新增和 13 行删除
@@ -63,15 +63,17 @@
## Acceptance Criteria ## Acceptance Criteria
- [ ] 非参与管理员或财务查看他人 draft/rejected 报销时,PC 和移动端不存在明细、项目、票据、附件、提交、删除、撤回和催办等报销人维护动作。 2026-09-25 核对:本节 9 条勾选此前未随实施同步更新,任务文档一直显示未完成;业务提交 `e8d6766` 已确认合入并随后续发布上线(是当前生产 `b1d25d3c` 的祖先提交),implement.md 的服务端/前端验证清单与独立只读复核记录逐条对应下列各项,现据实补勾。
- [ ] 同一非参与人仍能查看报销概要、明细事实、处理进度、材料原件和合并预览;reviewing 审批/财务职责入口仍在原工作流页面正常使用。
- [ ] 非参与人看到“只读查看”上下文;未关联票据显示“关联明细:未关联”,bound 状态显示“已关联”,页面不存在“自动生成或匹配明细”和“草稿或驳回状态可移除”。 - [x] 非参与管理员或财务查看他人 draft/rejected 报销时,PC 和移动端不存在明细、项目、票据、附件、提交、删除、撤回和催办等报销人维护动作。
- [ ] 非参与人直接调用报销头修改/删除、附件增删、明细增改删、提交、项目关联、发票 bind/unbind 均返回 `403 PERM_001`,且对应数据、文件、审计、workflow 和通知零副作用。 - [x] 同一非参与人仍能查看报销概要、明细事实、处理进度、材料原件和合并预览;reviewing 审批/财务职责入口仍在原工作流页面正常使用。
- [ ] 普通非参与人调用 precheck 返回 `403 PERM_001` 且 precheck 服务零调用;owner/submitter 与 `expense.view_all` 查看者保持成功读取基线。 - [x] 非参与人看到“只读查看”上下文;未关联票据显示“关联明细:未关联”,bound 状态显示“已关联”,页面不存在“自动生成或匹配明细”和“草稿或驳回状态可移除”。
- [ ] owner/submitter 在 approved/paid 等非编辑状态调用 `link-project` 返回 409 且项目归属不变;draft/rejected 且具备 `expense.edit_own` 时保持成功基线。 - [x] 非参与人直接调用报销头修改/删除、附件增删、明细增改删、提交、项目关联、发票 bind/unbind 均返回 `403 PERM_001`,且对应数据、文件、审计、workflow 和通知零副作用。
- [ ] owner/submitter 在既有允许状态仍可维护、提交、撤回和催办自己的报销;现有状态校验、材料查看、打印、财务付款、workflow 审批和差旅票据分支不变。 - [x] 普通非参与人调用 precheck 返回 `403 PERM_001` 且 precheck 服务零调用;owner/submitter 与 `expense.view_all` 查看者保持成功读取基线。
- [ ] 无 schema、迁移、权限码或角色定义变更;前后端聚焦测试、前端 typecheck/build、相关 Playwright、Trellis 治理、敏感检查和 `git diff --check` 通过。 - [x] owner/submitter 在 approved/paid 等非编辑状态调用 `link-project` 返回 409 且项目归属不变;draft/rejected 且具备 `expense.edit_own` 时保持成功基线。
- [ ] 只读权限复核结论为 PASS 后才形成新工作提交;部署子任务随后重新冻结包含 Task A 与本任务的候选 SHA,原 `174cb7a` 不再作为最终部署基线。 - [x] owner/submitter 在既有允许状态仍可维护、提交、撤回和催办自己的报销;现有状态校验、材料查看、打印、财务付款、workflow 审批和差旅票据分支不变。
- [x] 无 schema、迁移、权限码或角色定义变更;前后端聚焦测试、前端 typecheck/build、相关 Playwright、Trellis 治理、敏感检查和 `git diff --check` 通过。
- [x] 只读权限复核结论为 PASS 后才形成新工作提交;部署子任务随后重新冻结包含 Task A 与本任务的候选 SHA,原 `174cb7a` 不再作为最终部署基线。
## Out of Scope ## Out of Scope
@@ -3,7 +3,7 @@
"name": "reimbursement-nonparticipant-readonly-projection", "name": "reimbursement-nonparticipant-readonly-projection",
"title": "非参与人报销详情只读投影修复", "title": "非参与人报销详情只读投影修复",
"description": "收紧非 owner/submitter 查看报销详情时的 PC、移动端操作投影与服务端变更资格,并改为面向审批/浏览者的只读票据文案。", "description": "收紧非 owner/submitter 查看报销详情时的 PC、移动端操作投影与服务端变更资格,并改为面向审批/浏览者的只读票据文案。",
"status": "in_progress", "status": "completed",
"dev_type": null, "dev_type": null,
"scope": "PC/mobile reimbursement read-only projection; reimbursement and invoice-pool object authorization; role-aware invoice copy", "scope": "PC/mobile reimbursement read-only projection; reimbursement and invoice-pool object authorization; role-aware invoice copy",
"package": null, "package": null,
@@ -11,7 +11,7 @@
"creator": "shunli", "creator": "shunli",
"assignee": "shunli", "assignee": "shunli",
"createdAt": "2026-08-28", "createdAt": "2026-08-28",
"completedAt": null, "completedAt": "2026-09-25",
"branch": null, "branch": null,
"base_branch": "main", "base_branch": "main",
"worktree_path": null, "worktree_path": null,
@@ -27,6 +27,6 @@
"server/src/routes/reimbursements.js", "server/src/routes/reimbursements.js",
"server/src/routes/invoicePool.js" "server/src/routes/invoicePool.js"
], ],
"notes": "实施与独立只读权限复核 PASS,业务提交为 e8d6766;同时补齐 precheck 对象级读授权。财务/审批详情中的行内费用标准提示当前不主动请求 precheck,由 Task B 的 B3 一页式审批恢复,现有 budgetHint、riskFlags 和审批页 standardViolations 快照不受影响。未推送、未部署、未归档,部署仍须单独批准。", "notes": "实施与独立只读权限复核 PASS,业务提交为 e8d6766;同时补齐 precheck 对象级读授权。财务/审批详情中的行内费用标准提示当前不主动请求 precheck,由 Task B 的 B3 一页式审批恢复,现有 budgetHint、riskFlags 和审批页 standardViolations 快照不受影响。2026-09-25 复核:e8d6766 已确认合入并随后续发布上线(当前生产 b1d25d3c 的祖先提交),此前\"未推送、未部署\"的记录已过期;PRD 9 条 AC 据实补勾,予以归档。",
"meta": {} "meta": {}
} }