文件
hyb-oa/issues/2026-03-24_14-48-16-r33-2-reimbursement-submit-timeout-hotfix.csv
T

6 行
3.2 KiB
CSV

ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
R33-2-0,新执行合同建档与范围锁定,基于 R33-1 后 full-local 暴露的 reimbursement submit P2028 超时问题建立单独热补合同并锁定只修报销提交链路,新 CSV 校验通过 且 Notes 写明本轮只修 reimbursement submit 不扩散到采购/差旅 submit,python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-24_14-48-16-r33-2-reimbursement-submit-timeout-hotfix.csv,manual,DONE,TODO,DONE,issues/2026-03-24_14-48-16-r33-2-reimbursement-submit-timeout-hotfix.csv,[],"R33-1 作为历史快照不回写;本轮不调整 Prisma transaction timeout,仅通过缩事务收口。2026-03-24 已完成 R33-2 CSV 建档并校验通过。"
R33-2-1,报销提交事务边界收紧,把 reimbursement submit 的主状态变更与通知副作用拆成事务内外两段以消除 P2028 超时,submit 路由仍返回原有 reimbursementId formNumber workflowInstanceId currentTaskId status budget precheckDecision openedRiskFlagCount 且通知 IM email 任一失败不影响 200 返回,cd server && node --check src/routes/reimbursements.js,manual,DONE,DONE,DONE,server/src/routes/reimbursements.js|server/src/services/notifications/*,"[""R33-2-0""]","只修 `/api/reimbursements/:id/submit`;不改权限模型 审批规则 状态机 与前端 API 类型。2026-03-24 已把 recipients/createNotifications/enqueueIm/sendNotificationEmailSafe 移到事务外;同日 cd server && node --check src/routes/reimbursements.js 通过。"
R33-2-2,报销提交副作用 helper 与单测,提取报销提交成功后的事务外副作用 helper 并补 route 级单测证明其失败不会阻断业务提交,新增 __testables helper 且单测覆盖 resolveRecipients 或 enqueueImNotifications 失败时 helper 只记日志不抛致命错误,cd server && npm test -- tests/unit/routes/reimbursement.submit-side-effects.test.js,manual,DONE,DONE,DONE,server/src/routes/reimbursements.js|server/tests/unit/routes/reimbursement.submit-side-effects.test.js,"[""R33-2-1""]","单测只覆盖事务外副作用降级策略,不扩展到报销业务主链路。2026-03-24 已新增 __testables.finalizeReimbursementSubmitSideEffects;同日 cd server && npm test -- tests/unit/routes/reimbursement.submit-side-effects.test.js 通过。"
R33-2-3,恢复 reimbursement main-flow 与 full-local 绿灯,验证 reimbursement submit 不再触发 P2028 并恢复整套本地门禁,main-flow 通过 且 bash scripts/qa/run-web-gates.sh full-local 通过且日志中不再出现 reimbursement submit P2028,cd client && npm run typecheck && cd client && npm run test:e2e -- tests/e2e/main-flow.spec.ts && bash scripts/qa/run-web-gates.sh full-local,manual,DONE,DONE,DONE,server/src/routes/reimbursements.js|client/tests/e2e/main-flow.spec.ts|scripts/qa/run-web-gates.sh,"[""R33-2-1"",""R33-2-2""]","若 full-local 再暴露新红灯,仅记录为范围外,不顺手扩修其他业务域。2026-03-24 已同步放宽 main-flow 超时并删除 OCR 中间态断言;同日 cd client && npm run typecheck 通过,bash scripts/qa/run-web-gates.sh full-local 最终通过,结果为 26 passed / 3 skipped / 0 failed,且日志未再出现 reimbursement submit P2028。"