比较提交
4
次代码提交
096576d882
...
7ad022ce4b
| 作者 | SHA1 | 提交日期 | |
|---|---|---|---|
|
|
7ad022ce4b | ||
|
|
b87b594e62 | ||
|
|
b9415330e5 | ||
|
|
89fad4857f |
+11
-9
@@ -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
|
||||||
|
|
||||||
+4
-4
@@ -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": {}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -3,7 +3,7 @@
|
|||||||
"name": "existing-deploy-db-lifecycle-isolation",
|
"name": "existing-deploy-db-lifecycle-isolation",
|
||||||
"title": "既有环境应用发布隔离数据库容器生命周期",
|
"title": "既有环境应用发布隔离数据库容器生命周期",
|
||||||
"description": "隔离 existing 应用发布中的显式及依赖传播数据库容器生命周期操作,保留 initialize 与既有迁移流程;实施、独立复核及获批首次真实部署已通过,未归档。",
|
"description": "隔离 existing 应用发布中的显式及依赖传播数据库容器生命周期操作,保留 initialize 与既有迁移流程;实施、独立复核及获批首次真实部署已通过,未归档。",
|
||||||
"status": "in_progress",
|
"status": "completed",
|
||||||
"dev_type": null,
|
"dev_type": null,
|
||||||
"scope": null,
|
"scope": null,
|
||||||
"package": null,
|
"package": null,
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"creator": "shunli",
|
"creator": "shunli",
|
||||||
"assignee": "shunli",
|
"assignee": "shunli",
|
||||||
"createdAt": "2026-09-05",
|
"createdAt": "2026-09-05",
|
||||||
"completedAt": null,
|
"completedAt": "2026-09-25",
|
||||||
"branch": null,
|
"branch": null,
|
||||||
"base_branch": "main",
|
"base_branch": "main",
|
||||||
"worktree_path": null,
|
"worktree_path": null,
|
||||||
@@ -32,4 +32,4 @@
|
|||||||
],
|
],
|
||||||
"notes": "2026-09-05 用户独立复核 PASS 后明确批准提交、push 和首次真实部署。产品提交 f223bfb72fb2baef51199702c2def84c41af7aef 已推送并部署;同一项目 db 的 ID、创建时间、启动时间、重启次数和镜像均未变,健康检查与公网 ready/bundle marker 通过,文案 findings=0。完整证据见 implement.md;后续仅提交验收记录,不重新部署。保留 in_progress,未获归档授权;旧 task 笔记不纳入提交,财务 403 尚未启动。",
|
"notes": "2026-09-05 用户独立复核 PASS 后明确批准提交、push 和首次真实部署。产品提交 f223bfb72fb2baef51199702c2def84c41af7aef 已推送并部署;同一项目 db 的 ID、创建时间、启动时间、重启次数和镜像均未变,健康检查与公网 ready/bundle marker 通过,文案 findings=0。完整证据见 implement.md;后续仅提交验收记录,不重新部署。保留 in_progress,未获归档授权;旧 task 笔记不纳入提交,财务 403 尚未启动。",
|
||||||
"meta": {}
|
"meta": {}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -3,7 +3,7 @@
|
|||||||
"name": "trellis-upgrade-rule-cleanup",
|
"name": "trellis-upgrade-rule-cleanup",
|
||||||
"title": "Trellis 升级与规则精简",
|
"title": "Trellis 升级与规则精简",
|
||||||
"description": "全局 CLI 与项目模板升级至 0.6.16,适配 inline 并精简已批准的项目及用户级规则,不涉及业务代码。",
|
"description": "全局 CLI 与项目模板升级至 0.6.16,适配 inline 并精简已批准的项目及用户级规则,不涉及业务代码。",
|
||||||
"status": "review",
|
"status": "completed",
|
||||||
"dev_type": null,
|
"dev_type": null,
|
||||||
"scope": "workflow-governance",
|
"scope": "workflow-governance",
|
||||||
"package": null,
|
"package": null,
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"creator": "shunli",
|
"creator": "shunli",
|
||||||
"assignee": "shunli",
|
"assignee": "shunli",
|
||||||
"createdAt": "2026-09-05",
|
"createdAt": "2026-09-05",
|
||||||
"completedAt": null,
|
"completedAt": "2026-09-25",
|
||||||
"branch": null,
|
"branch": null,
|
||||||
"base_branch": "main",
|
"base_branch": "main",
|
||||||
"worktree_path": null,
|
"worktree_path": null,
|
||||||
@@ -23,4 +23,4 @@
|
|||||||
"relatedFiles": [],
|
"relatedFiles": [],
|
||||||
"notes": "2026-09-06 原项目升级及 seed 增量均经用户独立复核 PASS;TR-01 是遗留宽松的后续加固,不是升级回归。独立重现 50/50 绿与旧判定 9 红/41 绿,确认增量 6 变/42 不变;main 历史 138 行 seed 全为纯 marker。已补 hook/validator 不对称及诊断差异规约,用户明确授权本次项目升级独立提交并合入 main,执行结果以 Git 历史为准。不 push、归档或部署;保留 review 和空 completedAt,不将未覆盖的 G1–G10 用户级全量独立复核算作通过。",
|
"notes": "2026-09-06 原项目升级及 seed 增量均经用户独立复核 PASS;TR-01 是遗留宽松的后续加固,不是升级回归。独立重现 50/50 绿与旧判定 9 红/41 绿,确认增量 6 变/42 不变;main 历史 138 行 seed 全为纯 marker。已补 hook/validator 不对称及诊断差异规约,用户明确授权本次项目升级独立提交并合入 main,执行结果以 Git 历史为准。不 push、归档或部署;保留 review 和空 completedAt,不将未覆盖的 G1–G10 用户级全量独立复核算作通过。",
|
||||||
"meta": {}
|
"meta": {}
|
||||||
}
|
}
|
||||||
+3
-3
@@ -3,7 +3,7 @@
|
|||||||
"name": "existing-deploy-seed-separation",
|
"name": "existing-deploy-seed-separation",
|
||||||
"title": "日常发布与首次 seed 初始化分离",
|
"title": "日常发布与首次 seed 初始化分离",
|
||||||
"description": "规划 existing 发布不自动执行 seed,保留 initialize 初始化能力、缺配置停止和数据库生命周期隔离",
|
"description": "规划 existing 发布不自动执行 seed,保留 initialize 初始化能力、缺配置停止和数据库生命周期隔离",
|
||||||
"status": "in_progress",
|
"status": "completed",
|
||||||
"dev_type": null,
|
"dev_type": null,
|
||||||
"scope": "deployment-seed",
|
"scope": "deployment-seed",
|
||||||
"package": null,
|
"package": null,
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"creator": "shunli",
|
"creator": "shunli",
|
||||||
"assignee": "shunli",
|
"assignee": "shunli",
|
||||||
"createdAt": "2026-09-09",
|
"createdAt": "2026-09-09",
|
||||||
"completedAt": null,
|
"completedAt": "2026-09-25",
|
||||||
"branch": null,
|
"branch": null,
|
||||||
"base_branch": "main",
|
"base_branch": "main",
|
||||||
"worktree_path": null,
|
"worktree_path": null,
|
||||||
@@ -23,4 +23,4 @@
|
|||||||
"relatedFiles": [],
|
"relatedFiles": [],
|
||||||
"notes": "",
|
"notes": "",
|
||||||
"meta": {}
|
"meta": {}
|
||||||
}
|
}
|
||||||
在新工单中引用
屏蔽一个用户