4.4 KiB
4.4 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | P20TRAVEL2-0 | P20TRAVEL2执行合同刷新建档 | 创建并校验TRAVEL-2 superseding CSV并冻结混合双轨 对公支付闭环 发票绑定与ERP payment journal边界 | 新CSV通过校验且明确supersede旧roadmap CSV并写清CardAuthorization CardTransaction与mark-paid双主轴 | python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-10_21-05-59-p20-travel-2-l5-corporate-payments-refresh.csv | manual | DONE | DONE | DONE | issues/2026-03-10_21-05-59-p20-travel-2-l5-corporate-payments-refresh.csv | [] | 保留旧roadmap CSV作为首次规划锚点 不再直接改写 |
| 3 | P20TRAVEL2-1 | 统付模型支付权限与双账轨基线 | 新增CardAuthorization CardTransaction TravelOrder支付字段 InvoicePool.travel_order_id与travel.payment.manage并冻结authorize settle reverse支付预算语义 | Prisma模型 权限映射 发票绑定字段与预算轨道基线全部落地且不改写TRAVEL-1既有reserve confirm release语义 | cd server && npm run prisma:validate && npm run test | manual | DONE | DONE | DONE | server/prisma/schema.prisma | server/prisma/migrations/*_p20_travel_2_corporate_payments/migration.sql | server/src/constants/permissions.js | client/src/auth/permissions.ts | server/src/services/travelPayments.js | server/tests | ["P20TRAVEL2-0"] | 支付预算账轨与申请预算账轨并存 不回改travel_request审批确认点 |
| 4 | P20TRAVEL2-2 | 授权交易导入与订单确认语义 | 实现travelAuthorizations与travelTransactions导入列表 freeze suggestion并在精确匹配时把TravelOrder推进到confirmed | 授权交易导入具备幂等 跳过原因清晰 异常交易仅影响支付轨道不阻断差旅申请主流程 | cd server && npm run test | manual | DONE | DONE | DONE | server/src/routes/travelAuthorizations.js | server/src/routes/travelTransactions.js | server/src/routes/travelOrders.js | server/src/routes/travelRequests.js | server/src/app.js | server/tests | ["P20TRAVEL2-1"] | 导入接口继续由integration.manage保护 |
| 5 | P20TRAVEL2-3 | 发票绑定标记已支付与ERP journal出站 | 扩展invoice-pool绑定travelOrderId并实现POST /api/travel-orders/:id/mark-paid与travel_order.paid到erp.journal.export出站链路 | 订单支付幂等成功 发票排他绑定成立 ERP payment journal可按erp_sync门禁入Outbox | cd server && npm run test | manual | DONE | DONE | DONE | server/src/routes/invoicePool.js | server/src/routes/travelOrders.js | server/src/services/integrations/erpJournal.js | server/src/services/integrations/dispatcher.js | server/tests | ["P20TRAVEL2-2"] | mark-paid不自动归档发票 travel_order.paid为本期唯一新增稳定公共事件 |
| 6 | P20TRAVEL2-4 | 差旅前端支付轨道与发票绑定交互 | 在差旅详情页新增对公支付轨道卡片并支持mark-paid bind invoice freeze suggestion与ERP stage展示 | 前端能按travel.payment.manage控制操作按钮 普通查看者只读查看且接口失败不阻断主页面 | cd client && npm run typecheck && npm run build | manual | DONE | DONE | DONE | client/src/api/travelPayments.ts | client/src/api/travelRequests.ts | client/src/api/invoicePool.ts | client/src/components/travel/TravelPaymentTrackCard.tsx | client/src/components/travel/TravelOrderMarkPaidDialog.tsx | client/src/pages/TravelRequestsPage.tsx | client/src/pages/InvoicePoolPage.tsx | client/src/pages/invoice-pool/InvoiceBindCard.tsx | ["P20TRAVEL2-3"] | 优先复用现有发票池选择器 不新增travel专用票据页面 |
| 7 | P20TRAVEL2-5 | P20TRAVEL2文档矩阵同步与回归收口 | 同步ADR 边界文档 领域事件 Feature Matrix与事实源校验器并完成全量回归 | 文档明确TRAVEL-2为混合双轨+订单支付闭环 矩阵更新到248且全部验证命令通过 | cd server && npm run prisma:validate && npm run test && cd ../client && npm run typecheck && npm run build && python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-10_21-05-59-p20-travel-2-l5-corporate-payments-refresh.csv && python3 scripts/validate-feature-matrix.py && git diff --check | manual | DONE | DONE | DONE | docs/adr/adr-enterprise-card-control.md | docs/integration-boundaries.md | docs/domain-events.md | docs/feature-matrix.md | scripts/validate-feature-matrix.py | issues/2026-03-10_21-05-59-p20-travel-2-l5-corporate-payments-refresh.csv | ["P20TRAVEL2-4"] | 完成后矩阵标题更新为P5-P19+IM-1+ERP-3+R10+MCP-1+AI-1+TRAVEL-1+TRAVEL-2 总数248 |