比较提交

...
4 次代码提交
作者 SHA1 备注 提交日期
wangsli和Claude Sonnet 5 7ad022ce4b 补齐验收记录并归档非参与人报销只读投影任务 [08-28-reimbursement-nonparticipant-readonly-projection]
ci-minimal / check-minimal (push) Canceled after 0s
ci-e2e / e2e (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
wangsli和Claude Sonnet 5 b87b594e62 归档Trellis项目升级与规则精简任务 [09-05-trellis-upgrade-rule-cleanup]
全部 AC 完成:CLI 升级至 0.6.16、项目模板与全局规则精简经用户批准落地、
seed 加固及负向回归经独立增量复核通过(50/50 绿、9红/41绿还原判定重现)。
合并提交 66f25b1f 已确认在 main 历史;status 已是 review,等归档授权。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 20:52:12 +08:00
wangsli和Claude Sonnet 5 b9415330e5 归档日常发布与首次seed初始化分离任务 [09-09-existing-deploy-seed-separation]
全部 AC 完成:部署脚本与 Compose init 消除无条件 seed 旁路,existing 对
已修改配置不重写、重复执行稳定,缺项检查不误判、切应用前停止不自动
seed;数据库生命周期隔离回归不退步。2026-09-09 已完成 b87cc55 真实发布
(本轮回填补齐了完整执行记录:845 镜像清理、备份验真、发布后复核)。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 20:52:12 +08:00
wangsli和Claude Sonnet 5 89fad4857f 归档既有环境应用发布数据库生命周期隔离任务 [09-05-existing-deploy-db-lifecycle-isolation]
AC1-8 全部完成:existing 路径不再隐式触碰数据库生命周期,四类源码变异回归
锁定,独立只读复核通过,2026-09-05 已完成真实发布验证(f223bfb72fb2),
容器身份五项未变、公网 ready/bundle marker 通过。此前保留 in_progress 仅
因未获明确归档授权,现予归档。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 20:51:59 +08:00
共修改 24 个文件,包含 24 行新增和 22 行删除
@@ -63,15 +63,17 @@
## Acceptance Criteria
- [ ] 非参与管理员或财务查看他人 draft/rejected 报销时,PC 和移动端不存在明细、项目、票据、附件、提交、删除、撤回和催办等报销人维护动作。
- [ ] 同一非参与人仍能查看报销概要、明细事实、处理进度、材料原件和合并预览;reviewing 审批/财务职责入口仍在原工作流页面正常使用。
- [ ] 非参与人看到“只读查看”上下文;未关联票据显示“关联明细:未关联”,bound 状态显示“已关联”,页面不存在“自动生成或匹配明细”和“草稿或驳回状态可移除”。
- [ ] 非参与人直接调用报销头修改/删除、附件增删、明细增改删、提交、项目关联、发票 bind/unbind 均返回 `403 PERM_001`,且对应数据、文件、审计、workflow 和通知零副作用。
- [ ] 普通非参与人调用 precheck 返回 `403 PERM_001` 且 precheck 服务零调用;owner/submitter 与 `expense.view_all` 查看者保持成功读取基线。
- [ ] owner/submitter 在 approved/paid 等非编辑状态调用 `link-project` 返回 409 且项目归属不变;draft/rejected 且具备 `expense.edit_own` 时保持成功基线。
- [ ] owner/submitter 在既有允许状态仍可维护、提交、撤回和催办自己的报销;现有状态校验、材料查看、打印、财务付款、workflow 审批和差旅票据分支不变。
- [ ] 无 schema、迁移、权限码或角色定义变更;前后端聚焦测试、前端 typecheck/build、相关 Playwright、Trellis 治理、敏感检查和 `git diff --check` 通过。
- [ ] 只读权限复核结论为 PASS 后才形成新工作提交;部署子任务随后重新冻结包含 Task A 与本任务的候选 SHA,原 `174cb7a` 不再作为最终部署基线。
2026-09-25 核对:本节 9 条勾选此前未随实施同步更新,任务文档一直显示未完成;业务提交 `e8d6766` 已确认合入并随后续发布上线(是当前生产 `b1d25d3c` 的祖先提交),implement.md 的服务端/前端验证清单与独立只读复核记录逐条对应下列各项,现据实补勾。
- [x] 非参与管理员或财务查看他人 draft/rejected 报销时,PC 和移动端不存在明细、项目、票据、附件、提交、删除、撤回和催办等报销人维护动作。
- [x] 同一非参与人仍能查看报销概要、明细事实、处理进度、材料原件和合并预览;reviewing 审批/财务职责入口仍在原工作流页面正常使用。
- [x] 非参与人看到“只读查看”上下文;未关联票据显示“关联明细:未关联”,bound 状态显示“已关联”,页面不存在“自动生成或匹配明细”和“草稿或驳回状态可移除”。
- [x] 非参与人直接调用报销头修改/删除、附件增删、明细增改删、提交、项目关联、发票 bind/unbind 均返回 `403 PERM_001`,且对应数据、文件、审计、workflow 和通知零副作用。
- [x] 普通非参与人调用 precheck 返回 `403 PERM_001` 且 precheck 服务零调用;owner/submitter 与 `expense.view_all` 查看者保持成功读取基线。
- [x] owner/submitter 在 approved/paid 等非编辑状态调用 `link-project` 返回 409 且项目归属不变;draft/rejected 且具备 `expense.edit_own` 时保持成功基线。
- [x] owner/submitter 在既有允许状态仍可维护、提交、撤回和催办自己的报销;现有状态校验、材料查看、打印、财务付款、workflow 审批和差旅票据分支不变。
- [x] 无 schema、迁移、权限码或角色定义变更;前后端聚焦测试、前端 typecheck/build、相关 Playwright、Trellis 治理、敏感检查和 `git diff --check` 通过。
- [x] 只读权限复核结论为 PASS 后才形成新工作提交;部署子任务随后重新冻结包含 Task A 与本任务的候选 SHA,原 `174cb7a` 不再作为最终部署基线。
## Out of Scope
@@ -3,7 +3,7 @@
"name": "reimbursement-nonparticipant-readonly-projection",
"title": "非参与人报销详情只读投影修复",
"description": "收紧非 owner/submitter 查看报销详情时的 PC、移动端操作投影与服务端变更资格,并改为面向审批/浏览者的只读票据文案。",
"status": "in_progress",
"status": "completed",
"dev_type": null,
"scope": "PC/mobile reimbursement read-only projection; reimbursement and invoice-pool object authorization; role-aware invoice copy",
"package": null,
@@ -11,7 +11,7 @@
"creator": "shunli",
"assignee": "shunli",
"createdAt": "2026-08-28",
"completedAt": null,
"completedAt": "2026-09-25",
"branch": null,
"base_branch": "main",
"worktree_path": null,
@@ -27,6 +27,6 @@
"server/src/routes/reimbursements.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": {}
}
@@ -3,7 +3,7 @@
"name": "existing-deploy-db-lifecycle-isolation",
"title": "既有环境应用发布隔离数据库容器生命周期",
"description": "隔离 existing 应用发布中的显式及依赖传播数据库容器生命周期操作,保留 initialize 与既有迁移流程;实施、独立复核及获批首次真实部署已通过,未归档。",
"status": "in_progress",
"status": "completed",
"dev_type": null,
"scope": null,
"package": null,
@@ -11,7 +11,7 @@
"creator": "shunli",
"assignee": "shunli",
"createdAt": "2026-09-05",
"completedAt": null,
"completedAt": "2026-09-25",
"branch": null,
"base_branch": "main",
"worktree_path": null,
@@ -3,7 +3,7 @@
"name": "trellis-upgrade-rule-cleanup",
"title": "Trellis 升级与规则精简",
"description": "全局 CLI 与项目模板升级至 0.6.16,适配 inline 并精简已批准的项目及用户级规则,不涉及业务代码。",
"status": "review",
"status": "completed",
"dev_type": null,
"scope": "workflow-governance",
"package": null,
@@ -11,7 +11,7 @@
"creator": "shunli",
"assignee": "shunli",
"createdAt": "2026-09-05",
"completedAt": null,
"completedAt": "2026-09-25",
"branch": null,
"base_branch": "main",
"worktree_path": null,
@@ -3,7 +3,7 @@
"name": "existing-deploy-seed-separation",
"title": "日常发布与首次 seed 初始化分离",
"description": "规划 existing 发布不自动执行 seed,保留 initialize 初始化能力、缺配置停止和数据库生命周期隔离",
"status": "in_progress",
"status": "completed",
"dev_type": null,
"scope": "deployment-seed",
"package": null,
@@ -11,7 +11,7 @@
"creator": "shunli",
"assignee": "shunli",
"createdAt": "2026-09-09",
"completedAt": null,
"completedAt": "2026-09-25",
"branch": null,
"base_branch": "main",
"worktree_path": null,