- 新增 Feature Flag 模型、评估服务与管理 API(erp_sync/invoice_verification)\n- 完成 ERP 与验真灰度收口(路由/服务/作业统一判定)\n- 补齐 pay 与手动 sync 的 department_id 灰度上下文\n- 增加管理后台开关页、PWA 基础设施与移动拍照/审批页面\n- 增加回归脚本、安全基线与压测脚本,更新文档与执行合同\n\nIssue: G0,G1,G2,G3,G4,G5,G6,H1,M1,M2,M3,M4
5.2 KiB
5.2 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | G0 | P11/P12执行合同建档 | 创建并校验P11-P12执行合同CSV且冻结依赖关系 | CSV通过校验且字段满足规范 | python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-02-11-p11-p12-governance-mobile.csv | manual | DONE | DONE | DONE | issues/2026-02-11-p11-p12-governance-mobile.csv | [] | none |
| 3 | G1 | Feature Flag模型与评估服务 | 新增feature_flags数据模型并实现统一评估服务与env硬闸融合 | 支持erp_sync/invoice_verification两键评估且默认fail-closed | cd server && npm run prisma:validate && node --check src/services/featureFlags/index.js && node --check src/config.js | manual | DONE | DONE | DONE | server/prisma/schema.prisma | server/prisma/migrations/* | server/src/services/featureFlags/index.js | server/src/config.js | server/.env.example | ["G0"] | 默认两键force_off作为首期安全基线 |
| 4 | G2 | 开关管理API与审计 | 新增system.settings可访问的Feature Flag查询与更新API并写审计 | GET/PUT接口可用且变更具备审计记录 | cd server && node --check src/routes/featureFlags.js && node --check src/app.js | manual | DONE | DONE | DONE | server/src/routes/featureFlags.js | server/src/app.js | server/src/routes/audit.js | server/src/utils/audit.js | ["G1"] | 并发更新使用expectedVersion乐观锁 |
| 5 | G3 | ERP灰度接入(pay+手动sync) | pay自动入队与手动ERP同步统一走feature flag并按department_id灰度 | pay成功语义不变且非灰度部门阻断手动sync并跳过自动入队 | cd server && ./scripts/regression-integrations.sh | manual | DONE | DONE | DONE | server/src/routes/reimbursements.js | server/src/routes/integrations.js | server/src/services/integrations/erp.js | server/src/services/featureFlags/index.js | ["G2"] | 需补齐reimbursement.department_id查询字段 |
| 6 | G4 | 验真开关统一收口(路由+服务+作业) | 验真判定统一收敛到services/verification/index并覆盖路由与worker | verify/retry/worker均按统一判定执行且关闭时落verification_disabled_by_flag | cd server && ./scripts/regression-verification.sh | manual | DONE | DONE | DONE | server/src/routes/invoicePool/verification.js | server/src/services/verification/index.js | server/src/jobs/verificationJob.js | server/src/jobs/pgBossJobs.js | server/src/services/verification/tax.js | server/src/services/featureFlags/index.js | ["G2"] | 移除分散的config.invoiceVerificationEnabled直接判断 |
| 7 | G5 | 管理后台开关页 | 新增Feature Flags管理页面并接入权限与导航 | system.settings角色可查看并更新开关且前端构建通过 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/pages/FeatureFlagsPage.tsx | client/src/api/featureFlags.ts | client/src/router/index.tsx | client/src/components/navigation/NavLinks.tsx | ["G2"] | 展示effective状态与灰度范围 |
| 8 | G6 | 回归脚本与文档收口 | 新增feature flag回归脚本并接入总回归与README和矩阵 | 脚本可重复执行且check-minimal保持通过 | cd server && ./scripts/regression-feature-flags.sh && cd /home/shunli/Projects/hyb-oa && ./scripts/check-minimal.sh | manual | DONE | DONE | DONE | server/scripts/regression-feature-flags.sh | server/scripts/regression-all.sh | server/README.md | docs/feature-matrix.md | ["G3","G4","G5"] | 回滚通过RUN_FEATURE_FLAGS_REGRESSION=0 |
| 9 | H1 | 安全与压测门槛 | 新增安全基线检查与dashboard压测脚本并形成文档基线 | 脚本输出可复用且阈值说明可追溯 | cd server && ./scripts/security-baseline.sh && ./scripts/benchmark-dashboard.sh | manual | DONE | DONE | DONE | server/scripts/security-baseline.sh | server/scripts/benchmark-dashboard.sh | docs/ops/non-functional-baseline.md | ["G6"] | 默认先观测不阻断 |
| 10 | M1 | PWA基础设施 | 在现有client启用PWA并新增manifest与SW注册开关 | 支持安装与离线壳打开且构建通过 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/vite.config.ts | client/src/main.tsx | client/public/manifest.webmanifest | ["H1"] | 默认仅缓存静态壳与离线fallback |
| 11 | M2 | 移动拍照与离线上传队列 | 新增移动拍照上传页及indexeddb离线重放队列 | 断网缓存并在联网后自动重放上传成功 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/pages/MobileCapturePage.tsx | client/src/mobile/uploadQueue.ts | client/src/api/invoicePool.ts | client/src/router/index.tsx | ["M1"] | iOS只保证前台恢复后重放 |
| 12 | M3 | 移动审批快捷处理 | 新增移动审批列表与详情快捷动作页复用workflow接口 | 移动端可完成approve/reject/return/transfer闭环 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/pages/MobileApprovalsPage.tsx | client/src/api/workflow.ts | client/src/router/index.tsx | ["M1"] | 保持现有权限守卫策略 |
| 13 | M4 | P12验收与收口 | 补充PWA手工回归清单并同步矩阵与执行合同状态 | checklist完整且P12状态可审计追溯 | manual: 按 docs/mobile/pwa-regression-checklist.md 执行离线上传与移动审批全流程 | manual | DONE | DONE | DONE | docs/mobile/pwa-regression-checklist.md | docs/feature-matrix.md | issues/2026-02-11-p11-p12-governance-mobile.csv | ["M2","M3"] | 无自动化时必须写可复现手工步骤 |