- P2: 2026-02-08_14-20-25-p2-ci-and-tests.csv - P3: 2026-02-08_17-05-00-p3-full-delivery.csv - P4: 2026-02-08_21-50-09-p4-trialrun-ready.csv
4.6 KiB
4.6 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | D1 | CSV快照收口 | 创建P3全量交付快照,承接C2~C5并扩展D6~D12执行合同 | 新CSV通过校验且依赖关系正确,旧快照保持不变 | python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-02-08_17-05-00-p3-full-delivery.csv | manual | DONE | DONE | DONE | issues/2026-02-08_17-05-00-p3-full-delivery.csv | [] | 旧快照保持不可变 |
| 3 | D2 | 审计接口自动化回归 | 新增审计回归脚本覆盖权限/分页/筛选/参数非法 | regression-audit.sh 可重复执行并覆盖 PERM_001/分页/筛选/VALID_001 | cd server && ./scripts/regression-audit.sh | manual | DONE | DONE | DONE | server/scripts/regression-audit.sh | server/src/routes/audit.js | server/README.md | ["D1"] | 复用现有回归脚本模式 |
| 4 | D3 | OCR自动化回归(Mock优先) | 新增mock OCR provider与回归脚本,覆盖状态流转与并发锁 | regression-ocr.sh 在 mock 模式可跑通 pending_ocr->available、重复票据、失败重试、并发唯一认领 | cd server && ./scripts/regression-ocr.sh | manual | DONE | DONE | DONE | server/src/services/ocr/index.js | server/src/services/ocr/mock.js | server/scripts/regression-ocr.sh | server/scripts/regression-all.sh | ["D1"] | 真实腾讯凭据测试为可选非阻塞 |
| 5 | D4 | 平台级回归CI补强 | 新增可选全回归工作流,支持workflow_dispatch和nightly | 新增workflow可在CI中完成DB+migrate+seed+server+全回归脚本执行 | manual: GitHub Actions workflow_dispatch 触发通过 | manual | DONE | DONE | DONE | .github/workflows/ci-regression.yml | server/scripts/regression-all.sh | ["D2","D3"] | 保留ci-minimal不变 |
| 6 | D5 | 工作流详情与转审候选API | 新增任务详情与候选审批人接口并增强任务列表分页 | 新增 /api/workflow/tasks/:taskId 与 /api/workflow/approvers,列表返回分页字段 | cd server && node --check src/routes/workflow.js | manual | DONE | DONE | DONE | server/src/routes/workflow.js | server/README.md | ["D1"] | 保持既有动作接口语义不变 |
| 7 | D6 | 前端待办列表+详情+动作 | 替换待办占位页,落地列表、详情与approve/reject/return/transfer动作 | 审批角色可在前端完成待办闭环,动作后列表与详情同步刷新 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/pages/WorkflowTasksPage.tsx | client/src/pages/WorkflowTaskDetailPage.tsx | client/src/api/workflow.ts | client/src/router/index.tsx | ["D5"] | 引入react-query统一缓存失效 |
| 8 | D7 | 报销列表API | 新增报销分页列表接口并支持状态筛选与权限范围 | /api/reimbursements 支持 page/pageSize/status/scope 且权限行为正确 | cd server && node --check src/routes/reimbursements.js | manual | DONE | DONE | DONE | server/src/routes/reimbursements.js | server/README.md | ["D1"] | 仅增不破 |
| 9 | D8 | 前端报销页落地 | 实现报销列表/详情并联调创建提交撤回支付 | employee/finance角色可完成报销基础流程并正确处理错误码 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/pages/ReimbursementsPage.tsx | client/src/pages/ReimbursementDetailPage.tsx | client/src/api/reimbursements.ts | ["D7"] | 支付动作遵循后端幂等语义 |
| 10 | D9 | 票据池列表API | 新增票据池分页列表接口支持状态与ownerScope筛选 | /api/invoice-pool 返回分页列表并按 invoice.manage / own 权限过滤 | cd server && node --check src/routes/invoicePool.js | manual | DONE | DONE | DONE | server/src/routes/invoicePool.js | server/README.md | ["D1"] | 保持既有上传/绑定接口不变 |
| 11 | D10 | 前端票据页落地 | 实现票据中心列表上传轮询OCR绑定与签名预览 | 票据页可上传并展示OCR状态,支持绑定报销与签名预览 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/pages/InvoicePoolPage.tsx | client/src/api/invoicePool.ts | ["D9"] | ocr_failed显示错误并支持重试提示 |
| 12 | D11 | 前后端错误语义统一 | 统一前端错误映射与mutation后缓存失效策略 | 同类错误提示一致,动作后相关页面数据自动刷新 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/api/types.ts | client/src/api/errorMessages.ts | client/src/main.tsx | client/src/query/* | ["D6","D8","D10"] | 优先复用react-query成熟能力 |
| 13 | D12 | 全链路验收与发布清单 | 补齐文档、回归入口与发布回滚清单 | server/client README 更新且 regression-all 支持 audit/ocr 分层入口 | cd /home/shunli/Projects/hyb-oa && ./scripts/check-minimal.sh | manual | DONE | DONE | DONE | server/README.md | client/README.md | server/scripts/regression-all.sh | ["D4","D11"] | 最终交付需回归证据可复现 |