文件
hyb-oa/issues/2026-03-29_08-07-14-p25-lite-budget-ap.csv
wangsli 90c15a382a P25L-5 回填 P25-lite 回归完成状态
根据已通过的 Prisma、语法检查、服务端测试、前端 typecheck/build 更新 Regression_Status 与 Notes。
2026-03-29 09:54:05 +08:00

7.0 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2P25L-0P25-lite合同建档与范围冻结创建并校验本轮预算控制与AP最小可用运营执行合同 CSV 冻结范围仅含预算规则中心 统一预检 API 付款批次 maker-checker 强化和最小 AP 运营看板Issue CSV 校验通过 且明确不做银企直连 Dashboard 告警 AP 重工作台与额外实体类型扩展python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-29_08-07-14-p25-lite-budget-ap.csvmanualDONEDONEDONEissues/2026-03-29_08-07-14-p25-lite-budget-ap.csv[]已执行 CSV 校验脚本并通过(见 Test_Method)
3P25L-1预算控制规则中心接入预算页在现有 budgetControlRules 路由基础上提供预算页内规则中心入口 支持按法人实体 部门 费用类型配置 warn block manual_review 并维护规则启停与优先级预算页内可查看 新增 更新 归档规则 expenseType 仅在 reimbursement 规则下可选 非 budget.manage 用户不显示规则维护入口业务流程:进入预算管理页 切换到规则中心 新建法体规则 部门规则和报销费用类型规则 保存后刷新仍存在 再归档一条规则确认列表状态正确;命令:cd client && npm run typecheck && npm run build && cd ../server && node --check src/routes/budgetControlRules.jsmanualDONEDONEDONEserver/src/routes/budgetControlRules.js|client/src/pages/BudgetsPage.tsx|client/src/api/budgetControlRules.ts|client/src/api/expenseTypes.ts["P25L-0"]已在可用环境补跑并通过:client typecheck、client build、server node --check src/routes/budgetControlRules.js;预算页规则中心业务流程验证通过
4P25L-2统一预检API与旧路由兼容包装抽出统一预检入口并新增公共 HTTP API 保留报销 采购 差旅现有 precheck 路由作为 wrapper 确保响应结构和权限边界一致新增总入口可按 entityType 返回与旧接口一致的 precheck 结果 三个旧路由结果不漂移 且不会打穿原有 expense.submit procurement.submit travel.submit 权限业务流程:分别准备一张报销单 一张采购单 一张差旅单 调用旧 precheck 与统一 precheck 对比 decision 命中规则和 nextActions 一致;命令:cd server && node --check src/services/feeControl.js && node --check src/routes/reimbursements.js && node --check src/routes/purchaseRequests.js && node --check src/routes/travelRequests.jsmanualDONEDONEDONEserver/src/services/feeControl.js|server/src/routes/reimbursements.js|server/src/routes/purchaseRequests.js|server/src/routes/travelRequests.js|client/src/api/feeControl.ts|client/src/lib/precheck.ts["P25L-1"]已在可用环境补跑并通过:server node --check(feeControl / reimbursements / purchaseRequests / travelRequests)。reviewer 已确认统一预检按 entityType 复用 submit 权限边界,旧 /:id/precheck wrapper 结果统一委托 resolveEntityPrecheck;未来若收紧实体可见性需补归属校验
5P25L-3付款批次maker-checker高风险强化在现有 paymentBatches 基础上增加批次总金额计算 高风险标识和 5 万元阈值复核要求 保持 create review execute 主状态流不重做批次返回 totalAmount highRisk reviewRequirement 高风险批次需完成规定复核后才能执行 maker_checker_conflict 与 open risk flag resolve 约束继续生效业务流程:创建低风险批次并完成复核执行 再创建总金额大于等于 50000 的高风险批次 验证高风险标识和执行前校验;命令:cd server && npm run prisma:validate && node --check src/routes/paymentBatches.js && cd ../client && npm run typecheck && npm run buildmanualDONEDONEDONEserver/prisma/schema.prisma|server/prisma/migrations|server/src/routes/paymentBatches.js|client/src/api/paymentBatches.ts|client/src/pages/PaymentBatchesPage.tsx["P25L-2"]reviewer 已审查:二次复核状态流与前端按钮条件对齐,maker-checker/二审人不同约束完整;迁移为 additive 新增列 secondary_review_*(payment_batches)。回滚路径:1) 回滚代码到不引用 secondary_review_*(保留列也可安全运行);2) 若必须清理 schema,再执行 SQL:ALTER TABLE payment_batches DROP COLUMN secondary_review_comment; DROP COLUMN secondary_reviewed_at; DROP COLUMN secondary_reviewed_by。已在可用环境补跑并通过:Prisma schema validate、server node --check src/routes/paymentBatches.js、client typecheck、client build;高低风险批次主流程验证通过
6P25L-4最小AP运营看板改造成财务视角扩展 ap-operations 汇总与列表 交付待付款 部分匹配 异常和预算超支四类财务视角摘要与明细AP 运营页展示 pendingPaymentCount partialMatchCount exceptionCount budgetOverspendCount 并能查看对应列表 预算超支单独可见 不混在通用风险列表里业务流程:进入 AP 运营页 检查四张摘要卡与开放批次 失败付款项 对账异常和预算超支列表显示正确;命令:cd server && node --check src/routes/apOperations.js && cd ../client && npm run typecheck && npm run buildmanualDONEDONEDONEserver/src/routes/apOperations.js|client/src/api/apOperations.ts|client/src/pages/ApOperationsPage.tsx["P25L-3"]已在可用环境补跑并通过:server node --check src/routes/apOperations.js、client typecheck、client build;AP 运营四类摘要与列表验证通过。注意:exceptionCount 口径为 failedPaymentItemCount + nonBudgetRiskFlagCount,非去重实体数,可能偏大(不阻塞)
7P25L-5Reviewer与QA回归收口按 reviewer→qa 顺序完成审批规则 付款状态流和预算/AP 视图的独立审查与回归 并回填 CSV 状态reviewer 对权限 状态流 回滚路径和行为漂移无阻塞意见 QA 跑通预算规则 统一预检 批次复核执行和 AP 看板四条主线且状态全部回填 DONEReview:独立审查 paymentBatches feeControl apOperations 相关 diff;QA:执行各 Issue Test_Method,并补跑 cd server && npm run prisma:validate && ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run buildmanualDONEDONEDONEissues/2026-03-29_08-07-14-p25-lite-budget-ap.csv|server/src/routes/paymentBatches.js|server/src/services/feeControl.js|server/src/routes/apOperations.js|client/src/pages/BudgetsPage.tsx|client/src/pages/PaymentBatchesPage.tsx|client/src/pages/ApOperationsPage.tsx["P25L-1","P25L-2","P25L-3","P25L-4"]reviewer 结论:1) 发现并修复报销提交预算阻断语义可能覆盖规则中心的问题(现在仅在 budget_precheck_v1 关闭时保留 legacy block 409;开启时以 authoritative precheck 的规则 controlMode 为准);2) 统一预检不打穿 submit 权限但缺少实体可见性约束(与旧路由一致,记录为后续风险);3) payment batch 列表存在 N+1 风险项查询(不阻塞)。QA 已在可用环境补跑并通过:Prisma schema validate、6 个变更文件 syntax check、server tests 63 文件/292 用例、client typecheck、client build;P25-lite 四条主线回归全部通过