PA6 补齐权限与审计回归

这个提交包含在:
2026-05-12 08:29:18 +08:00
父节点 aec660a8fe
当前提交 a0dc6fc408
共修改 13 个文件,包含 645 行新增和 42 行删除
@@ -1,7 +1,7 @@
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
PA6-1,权限审计回归合同建档,规划 R6 后角色矩阵、服务端权限、自审规则和审计留痕回归。,"1) 本 CSV 校验通过;2) 覆盖员工、审批人、财务、管理员、负责人;3) 前端隐藏不作为权限边界;4) 不改组织规则。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-12_01-46-00-r6-permission-audit-regression.csv。",python3,DONE,DONE,DONE,issues/2026-05-12_01-46-00-r6-permission-audit-regression.csv,[],权限问题发现后单独修复,不顺手扩功能。
PA6-2,角色入口矩阵回归,检查 PC 和移动入口按员工、审批人、财务、管理员、负责人裁剪。,"1) 员工不见财务和管理入口;2) 财务不见系统管理入口;3) 管理员不见业务审批按钮;4) 移动入口与 PC 权限一致。","流程级验证:各角色登录 PC 和移动 -> 记录入口矩阵 -> 与 docs/需求-统一审批中心规约.md 对齐。",playwright|manual,TODO,TODO,TODO,client/src/components/navigation|client/src/features/mobile/navigation.ts,"[""PA6-1""]",角色显示差异采用同框架裁剪。
PA6-3,服务端直连越权回归,对备用模块和业务动作做 API 直连拒绝验证。,"1) 普通员工直连预算、AP、ERP、票据中心等备用路径不得泄露数据;2) 财务和管理员边界正确;3) 无权动作返回 403 或可解释 4xx。","流程级验证:用员工、财务、管理员 token 直连关键 API -> 记录 HTTP 状态和是否泄露数据。",curl|playwright,TODO,TODO,TODO,server/src/routes|client/tests/e2e/permission-direct-access.spec.ts,"[""PA6-2""]",不得打印 token。
PA6-4,自审与 admin-only 回归,覆盖报销、请假、采购的自审阻断和 admin-only 禁止业务审批。,"1) 提交人本人不能审批本人单据;2) admin-only 不能获得业务审批权;3) 正式审批人可以处理自己的待办;4) 服务端强制拒绝。","流程级验证:构造三类单据 -> 本人尝试审批被拒绝 -> admin-only 尝试审批被拒绝 -> 正式审批人通过。",playwright|node,TODO,TODO,TODO,server/src/routes/workflow.js|client/tests/e2e,"[""PA6-3""]",涉及 workflow 需 reviewer 复核。
PA6-5,审计留痕回归,核对登录、审批、付款、导出、附件下载和通知投递的审计可追溯。,"1) 关键动作有审计或 delivery;2) 审计不含密码和 secret;3) 查询权限正确;4) 失败动作也有可解释记录。","流程级验证:执行关键动作 -> 管理员查询审计 -> 检查字段和脱敏;通知投递查询 delivery。",playwright|manual,TODO,TODO,TODO,server/src/routes/audit*|server/src/services/notificationDispatcher.js,"[""PA6-4""]",敏感数据不得入库日志。
PA6-6,权限审计回归部署,完成后执行权限 E2E、后端单测、部署和公网复检。,"1) permission-direct-access 通过;2) workflow 权限回归通过;3) 部署后 live smoke 通过;4) 问题全部登记。","流程级验证:cd client && npm run test:e2e -- permission-direct-access.spec.ts settings-governance.spec.ts;server 相关单测;deploy;live smoke readiness。",npm|node|bash,TODO,TODO,TODO,client/tests/e2e|server/tests|deploy/trialrun,"[""PA6-5""]",权限变更必须单独 commit。
PA6-2,角色入口矩阵回归,检查 PC 和移动入口按员工、审批人、财务、管理员、负责人裁剪。,"1) 员工不见财务和管理入口;2) 财务不见系统管理入口;3) 管理员不见业务审批按钮;4) 移动入口与 PC 权限一致。","流程级验证:各角色登录 PC 和移动 -> 记录入口矩阵 -> 与 docs/需求-统一审批中心规约.md 对齐。",playwright|manual,DONE,DONE,DONE,client/src/components/navigation|client/src/features/mobile/navigation.ts,"[""PA6-1""]",角色显示差异采用同框架裁剪。
PA6-3,服务端直连越权回归,对备用模块和业务动作做 API 直连拒绝验证。,"1) 普通员工直连预算、AP、ERP、票据中心等备用路径不得泄露数据;2) 财务和管理员边界正确;3) 无权动作返回 403 或可解释 4xx。","流程级验证:用员工、财务、管理员 token 直连关键 API -> 记录 HTTP 状态和是否泄露数据。",curl|playwright,DONE,DONE,DONE,server/src/routes|client/tests/e2e/permission-direct-access.spec.ts,"[""PA6-2""]",不得打印 token。
PA6-4,自审与 admin-only 回归,覆盖报销、请假、采购的自审阻断和 admin-only 禁止业务审批。,"1) 提交人本人不能审批本人单据;2) admin-only 不能获得业务审批权;3) 正式审批人可以处理自己的待办;4) 服务端强制拒绝。","流程级验证:构造三类单据 -> 本人尝试审批被拒绝 -> admin-only 尝试审批被拒绝 -> 正式审批人通过。",playwright|node,DONE,DONE,DONE,server/src/routes/workflow.js|client/tests/e2e,"[""PA6-3""]",涉及 workflow 需 reviewer 复核。
PA6-5,审计留痕回归,核对登录、审批、付款、导出、附件下载和通知投递的审计可追溯。,"1) 关键动作有审计或 delivery;2) 审计不含密码和 secret;3) 查询权限正确;4) 失败动作也有可解释记录。","流程级验证:执行关键动作 -> 管理员查询审计 -> 检查字段和脱敏;通知投递查询 delivery。",playwright|manual,DONE,DONE,DONE,server/src/routes/audit*|server/src/services/notificationDispatcher.js,"[""PA6-4""]",敏感数据不得入库日志。
PA6-6,权限审计回归部署,完成后执行权限 E2E、后端单测、部署和公网复检。,"1) permission-direct-access 通过;2) workflow 权限回归通过;3) 部署后 live smoke 通过;4) 问题全部登记。","流程级验证:cd client && npm run test:e2e -- permission-direct-access.spec.ts settings-governance.spec.ts;server 相关单测;deploy;live smoke readiness。",npm|node|bash,DONE,DONE,DONE,client/tests/e2e|server/tests|deploy/trialrun,"[""PA6-5""]",权限变更必须单独 commit。
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
2 PA6-1 权限审计回归合同建档 规划 R6 后角色矩阵、服务端权限、自审规则和审计留痕回归。 1) 本 CSV 校验通过;2) 覆盖员工、审批人、财务、管理员、负责人;3) 前端隐藏不作为权限边界;4) 不改组织规则。 流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-12_01-46-00-r6-permission-audit-regression.csv。 python3 DONE DONE DONE issues/2026-05-12_01-46-00-r6-permission-audit-regression.csv [] 权限问题发现后单独修复,不顺手扩功能。
3 PA6-2 角色入口矩阵回归 检查 PC 和移动入口按员工、审批人、财务、管理员、负责人裁剪。 1) 员工不见财务和管理入口;2) 财务不见系统管理入口;3) 管理员不见业务审批按钮;4) 移动入口与 PC 权限一致。 流程级验证:各角色登录 PC 和移动 -> 记录入口矩阵 -> 与 docs/需求-统一审批中心规约.md 对齐。 playwright|manual TODO DONE TODO DONE TODO DONE client/src/components/navigation|client/src/features/mobile/navigation.ts ["PA6-1"] 角色显示差异采用同框架裁剪。
4 PA6-3 服务端直连越权回归 对备用模块和业务动作做 API 直连拒绝验证。 1) 普通员工直连预算、AP、ERP、票据中心等备用路径不得泄露数据;2) 财务和管理员边界正确;3) 无权动作返回 403 或可解释 4xx。 流程级验证:用员工、财务、管理员 token 直连关键 API -> 记录 HTTP 状态和是否泄露数据。 curl|playwright TODO DONE TODO DONE TODO DONE server/src/routes|client/tests/e2e/permission-direct-access.spec.ts ["PA6-2"] 不得打印 token。
5 PA6-4 自审与 admin-only 回归 覆盖报销、请假、采购的自审阻断和 admin-only 禁止业务审批。 1) 提交人本人不能审批本人单据;2) admin-only 不能获得业务审批权;3) 正式审批人可以处理自己的待办;4) 服务端强制拒绝。 流程级验证:构造三类单据 -> 本人尝试审批被拒绝 -> admin-only 尝试审批被拒绝 -> 正式审批人通过。 playwright|node TODO DONE TODO DONE TODO DONE server/src/routes/workflow.js|client/tests/e2e ["PA6-3"] 涉及 workflow 需 reviewer 复核。
6 PA6-5 审计留痕回归 核对登录、审批、付款、导出、附件下载和通知投递的审计可追溯。 1) 关键动作有审计或 delivery;2) 审计不含密码和 secret;3) 查询权限正确;4) 失败动作也有可解释记录。 流程级验证:执行关键动作 -> 管理员查询审计 -> 检查字段和脱敏;通知投递查询 delivery。 playwright|manual TODO DONE TODO DONE TODO DONE server/src/routes/audit*|server/src/services/notificationDispatcher.js ["PA6-4"] 敏感数据不得入库日志。
7 PA6-6 权限审计回归部署 完成后执行权限 E2E、后端单测、部署和公网复检。 1) permission-direct-access 通过;2) workflow 权限回归通过;3) 部署后 live smoke 通过;4) 问题全部登记。 流程级验证:cd client && npm run test:e2e -- permission-direct-access.spec.ts settings-governance.spec.ts;server 相关单测;deploy;live smoke readiness。 npm|node|bash TODO DONE TODO DONE TODO DONE client/tests/e2e|server/tests|deploy/trialrun ["PA6-5"] 权限变更必须单独 commit。