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

3.2 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2R33-2-0新执行合同建档与范围锁定基于 R33-1 后 full-local 暴露的 reimbursement submit P2028 超时问题建立单独热补合同并锁定只修报销提交链路新 CSV 校验通过 且 Notes 写明本轮只修 reimbursement submit 不扩散到采购/差旅 submitpython3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-24_14-48-16-r33-2-reimbursement-submit-timeout-hotfix.csvmanualDONETODODONEissues/2026-03-24_14-48-16-r33-2-reimbursement-submit-timeout-hotfix.csv[]R33-1 作为历史快照不回写;本轮不调整 Prisma transaction timeout,仅通过缩事务收口。2026-03-24 已完成 R33-2 CSV 建档并校验通过。
3R33-2-1报销提交事务边界收紧把 reimbursement submit 的主状态变更与通知副作用拆成事务内外两段以消除 P2028 超时submit 路由仍返回原有 reimbursementId formNumber workflowInstanceId currentTaskId status budget precheckDecision openedRiskFlagCount 且通知 IM email 任一失败不影响 200 返回cd server && node --check src/routes/reimbursements.jsmanualDONEDONEDONEserver/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 通过。
4R33-2-2报销提交副作用 helper 与单测提取报销提交成功后的事务外副作用 helper 并补 route 级单测证明其失败不会阻断业务提交新增 __testables helper 且单测覆盖 resolveRecipients 或 enqueueImNotifications 失败时 helper 只记日志不抛致命错误cd server && npm test -- tests/unit/routes/reimbursement.submit-side-effects.test.jsmanualDONEDONEDONEserver/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 通过。
5R33-2-3恢复 reimbursement main-flow 与 full-local 绿灯验证 reimbursement submit 不再触发 P2028 并恢复整套本地门禁main-flow 通过 且 bash scripts/qa/run-web-gates.sh full-local 通过且日志中不再出现 reimbursement submit P2028cd client && npm run typecheck && cd client && npm run test:e2e -- tests/e2e/main-flow.spec.ts && bash scripts/qa/run-web-gates.sh full-localmanualDONEDONEDONEserver/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。