文件
hyb-oa/.trellis/tasks/archive/2026-07/07-28-ceo-finance-fallback/implement.md
T
wangsli eaa2dc0ff3
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
归档CEO财务兜底任务(07-28-ceo-finance-fallback)
2026-07-28 15:01:18 +08:00

4.4 KiB
原始文件 Blame 文件历史

CEO 本人报销财务兜底实施计划

1. Implementation

  • 扩展后端 owner-self fallback 白名单为 finance|finance_mgr,创建默认值改为 finance。
  • 将三档种子默认规则统一为财务 finance 收口,保留大额 ceo 节点。
  • 更新前端 API 类型、创建/编辑选项、默认值和推荐文案;兼容展示 finance_mgr。
  • 更新工作流、规则 API、报销提交回归测试,覆盖 CEO 三档唯一 finance、普通员工链、自审、无持有人和 legacy finance_mgr。
  • 修正 seed:config 对既有审批规则的删除重建副作用;仅空库创建默认规则,生产既有规则保留到独立原子回填阶段。
  • 新增默认 dry-run、双确认 apply 的生产规则回填脚本;事务内锁定并校验三档规则、CEO/财务/admin/binding 基线,更新三条规则、写三条脱敏审计并复核受保护计数。
  • 生产 dry-run 发现原生 audit_logs 插入未携带 Prisma 客户端侧 UUID;事务已回滚。脚本已改为显式写入审计 UUID,并新增执行级回归覆盖三条审计 SQL 与 dry-run 回滚。
  • 更新当前业务事实源,区分目标、代码部署和生产规则回填状态。

2. Local Validation

  • cd server && node --check src/utils/workflow.js && node --check src/routes/approvalRules.js && node --check src/scripts/seed-config.js && node --check src/scripts/apply-ceo-finance-fallback.js
  • cd server && npx vitest run tests/unit/utils/workflow.test.js tests/unit/routes/approvalRules.permissions.test.js tests/unit/routes/reimbursements.expense-standards.test.js tests/unit/scripts/seed-config.defaults.test.js tests/unit/scripts/apply-ceo-finance-fallback.test.js(58 项通过)
  • cd server && npm run prisma:validate
  • cd client && npm run typecheck && npm run build
  • node scripts/qa/check-process-contract.mjs --baseline --json
  • node scripts/qa/audit-docs.mjs --check-registry(0 error,保留既有 22 个未注册文档 warning)
  • python3 ./.trellis/scripts/task.py validate 07-28-ceo-finance-fallback
  • node scripts/qa/check-trellis-governance.mjs && git diff --check
  • bash scripts/check-minimal.sh(167 个测试文件、1053 项后端测试、前端 build 与矩阵门禁通过)
  • dry-run 缺陷修复后复跑 Prisma validate 与 5 个聚焦测试文件(59 项通过)。

3. Review Gate

  • 只读 review 权限白名单、自审阻断、普通员工链、历史快照不回写、API/UI 类型一致性和生产事务边界;发现并修复部署 seed 提前覆盖规则问题后复核无剩余阻断。

4. Deployment And Production Apply

  • 提交并推送已验证代码。
  • 修复部署脚本已知的数据目录保护缺陷:同步根目录与数据目录任一方向重叠时在 SSH 前阻断,自定义同步树内 .env 动态保护;隔离备份/恢复合同通过。
  • 部署后核对 /ready 构建号、migration 状态、runtime smoke、external deps smoke 和前端 bundle。
  • 生产只读冻结规则结构、active finance、CEO、角色、binding、历史快照和审计基线。
  • 原子更新恰好 3 条启用规则并逐条写脱敏审计;任一预条件漂移则零写入停止。
  • 只读解析 CEO 小/中/大额快照均为唯一 finance,普通员工链符合目标;不创建真实报销。
  • 复核无角色、主管、binding、历史快照或企微写入变化。

部署执行备注:3594872 首次部署通过,并将附件从同步树内迁至独立数据目录、保留校验一致的回退副本;首次生产 dry-run 因审计表 UUID 缺失失败并完整回滚。修复提交 a74cba1 随后部署,/ready、migration、runtime/external-deps smoke、92 个公网资源扫描通过;4 个自动运维 timer 已刷新运行身份。第二次 dry-run 为 DRY_RUN_PASS,apply 原子写入 3 条规则与 3 条脱敏审计,受保护计数稳定;只读解析 CEO 三档均为唯一 finance、普通员工链符合目标,0 条真实报销、0 次企微写入。

5. Stop Conditions

  • 生产 active finance 不是唯一非 CEO 持有人,或目标人员 inactive/unbound。
  • 启用规则不是恰好 3 条,金额区间或角色结构与冻结基线不符。
  • 部署路径仍可能删除 .env、附件或数据库宿主目录。
  • 任一测试出现自审、管理员代批、历史快照重写或普通员工链异常。
  • 真实 CEO 报销验证未取得单独批准。