4.4 KiB
4.4 KiB
| 1 | ID | Title | Description | Acceptance | Test_Method | Tools | Dev_Status | Review1_Status | Regression_Status | Files | Dependencies | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | R33-3-0 | 新执行合同建档与范围锁定 | 基于 R33-2 后 full-local 暴露的 assets create purchase submit travel create 三条事务尾部超时问题建立单独热补合同并锁定只修这三条链路 | 新 CSV 校验通过 且 Notes 写明本轮只收口事务尾部超时不扩散到其他业务域 | python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-24_17-00-26-r33-3-transaction-timeout-tail-cleanup.csv | manual | DONE | DONE | DONE | issues/2026-03-24_17-00-26-r33-3-transaction-timeout-tail-cleanup.csv | [] | R33-2 作为历史快照不回写;本轮不调整 Prisma transaction timeout,仅通过缩事务与审计后移收口。2026-03-24 已完成 R33-3 CSV 建档并校验通过。 |
| 3 | R33-3-1 | 资产建卡事务尾部收口 | 把 POST /api/assets 中无原子性要求的 audit log 移到事务提交后执行以消除资产建卡 P2028 | 事务内仅保留 assetCard.create 与条件 assetAssignment.create 且资产创建响应结构不变 审计失败只记日志不影响成功返回 | cd server && node --check src/routes/assets.js | manual | DONE | DONE | DONE | server/src/routes/assets.js | ["R33-3-0"] | 不新增事务外副作用;只把 ASSET_CARD_CREATED 审计改为 best-effort。2026-03-24 `cd server && node --check src/routes/assets.js` 通过;同日 full-local 中 assets regression 与 `tests/e2e/assets-flow.spec.ts` 通过,server log 未再出现 asset create 对应 P2028。 |
| 4 | R33-3-2 | 采购 submit 二次收口 | 把 purchase submit 中 PURCHASE_REQUEST_SUBMITTED 审计移到事务后执行并保留现有事务外通知 helper | submit 路由返回字段保持 purchaseRequestId requestNo workflowInstanceId currentTaskId budgetPoolId warnings budgetReservation 不变 且审计失败只记日志不影响 200 返回 | cd server && node --check src/routes/purchaseRequests.js | manual | DONE | DONE | DONE | server/src/routes/purchaseRequests.js|server/src/services/notifications/* | ["R33-3-0"] | 第一阶段只移审计;若 full-local 仍仅在 purchase submit 报 P2028,允许在同合同内把 resolveActionableStep 纯读解析前置到事务外,不改审批规则与错误语义。2026-03-24 `cd server && node --check src/routes/purchaseRequests.js` 通过;同日 full-local 中 procurement regression 与 `tests/e2e/procurement-flow.spec.ts` 通过,采购 fallback 未触发且 server log 未再出现 purchase submit P2028。 |
| 5 | R33-3-3 | 差旅建单事务尾部收口 | 把 POST /api/travel-requests 的 financial dimensions 只读校验前置并将创建审计移到事务后执行 | 事务内仅保留 travelRequest.create 与 nested segments 写入 且创建成功返回结构与前端 URL 契约不变 审计失败只记日志不影响成功返回 | cd server && node --check src/routes/travelRequests.js | manual | DONE | DONE | DONE | server/src/routes/travelRequests.js | ["R33-3-0"] | 只修 create 路由,不动 submit pay reconciliation;ensureFinancialDimensions 前置到事务外。2026-03-24 `cd server && node --check src/routes/travelRequests.js` 通过;同日 full-local 中 `tests/e2e/travel-payment-flow.spec.ts` 通过,server log 未再出现 travel create 对应 P2028。 |
| 6 | R33-3-4 | 定向回归与 full-local 全绿验收 | 验证 assets procurement travel 三条链路不再触发事务尾部 P2028 并恢复整套本地门禁 | assets-flow procurement-flow travel-payment-flow 通过 且 bash scripts/qa/run-web-gates.sh full-local 通过并且日志中不再出现这三条链路对应的 P2028 | cd client && npm run typecheck && cd client && npm run test:e2e -- tests/e2e/assets-flow.spec.ts tests/e2e/procurement-flow.spec.ts tests/e2e/travel-payment-flow.spec.ts && bash scripts/qa/run-web-gates.sh full-local | manual | DONE | DONE | DONE | server/src/routes/assets.js|server/src/routes/purchaseRequests.js|server/src/routes/travelRequests.js|client/tests/e2e/assets-flow.spec.ts|client/tests/e2e/procurement-flow.spec.ts|client/tests/e2e/travel-payment-flow.spec.ts|scripts/qa/run-web-gates.sh | ["R33-3-1","R33-3-2","R33-3-3"] | 定向 E2E 直接运行时因本地未起 server 返回 ECONNREFUSED,已改用项目标准门禁编排验证。2026-03-24 `cd client && npm run typecheck` 通过;同日 `bash scripts/qa/run-web-gates.sh full-local` 通过,结果为 26 passed / 3 skipped / 0 failed,且日志未再出现 assets create purchase submit travel create 对应 P2028。 |