ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes P25-0,P25执行合同建档与范围冻结,创建并校验费控内核与 AP 运营执行合同 CSV 并冻结本轮以预算前控 预校验 付款批次为主线的边界,CSV 通过校验且明确本期不引入真实银企直联 仅沉淀统一费控内核与 AP 运营能力,python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-21_09-10-00-p25-fee-control-ap.csv,manual,TODO,TODO,TODO,issues/2026-03-21_09-10-00-p25-fee-control-ap.csv|server/src/services/budgetPool.js|server/src/routes/reimbursements.js|server/src/routes/travelRequests.js,[],P25 以 warn block manual_review 三类预算语义和 maker-checker 为固定边界 P25-1,预算控制规则中心,新增按法体 部门 成本中心 费用类型配置 warn block manual_review 的规则中心与默认 seed,预算控制规则可查询 新增 更新 停用 并在报销 采购 差旅三域按统一优先级命中,cd server && npm run prisma:validate && npm test -- tests/unit/budgetPool.service.test.js tests/unit/services/featureFlags.test.js,manual,TODO,TODO,TODO,server/prisma/schema.prisma|server/prisma/migrations|server/src/routes/budgetControlRules.js|server/src/services/budgetPool.js|server/src/scripts/seed-config.js|server/tests/unit/budgetPool.service.test.js,"[""P25-0""]",不引入新的预算引擎服务 优先扩展现有 budgetPool 语义 P25-2,单据预校验 API,为报销 采购 差旅补齐统一 precheck API 在提交前返回预算 判重 绑定与必填风险摘要,precheck 仅返回风险结果和建议动作 不写业务终态 三个业务域接口语义一致,cd server && npm test -- tests/unit/routes/travelRequests.test.js tests/unit/routes/purchase.archive-erp.test.js tests/unit/routes/invoicePool.travel-bind.test.js,manual,TODO,TODO,TODO,server/src/routes/reimbursements.js|server/src/routes/purchaseRequests.js|server/src/routes/travelRequests.js|server/src/services/budgetPool.js|server/tests/unit/routes,"[""P25-1""]",返回结构固定包含 result riskHints blockingReasons nextActions budgetSnapshot P25-3,财务付款批次与 maker-checker,将单笔付款提升为批次创建 复核 执行 导出模型并对高风险支付启用 maker-checker,付款批次支持 create review execute export requeue 且复核人与执行发起人不可为同一人,cd server && npm run prisma:validate && npm test -- tests/unit/routes/travelRequests.payment-track.test.js tests/unit/routes/travelAuthorizations.test.js && cd ../client && npm run typecheck && npm run build,manual,TODO,TODO,TODO,server/prisma/schema.prisma|server/prisma/migrations|server/src/routes/paymentBatches.js|server/src/routes/reimbursements.js|server/src/routes/travelRequests.js|client/src/api/travelPayments.ts|client/src/pages/TravelRequestsPage.tsx,"[""P25-2""]",执行必须幂等且失败只允许 requeue 不自动推进业务终态 P25-4,AP 摘要与异常运营页,沉淀未付 部分匹配 异常交易 待导出 失败重试的统一 AP 运营视图与处理入口,财务可查看统一 AP 异常列表 摘要 KPI 导出状态和失败重试入口 且权限边界清晰,cd server && npm test -- tests/unit/routes/travelReconciliation.test.js tests/unit/services/travelReconciliation.test.js && cd ../client && npm run typecheck && npm run build,manual,TODO,TODO,TODO,server/src/routes/paymentBatches.js|server/src/routes/travelReconciliation.js|server/src/routes/exports.js|client/src/pages/ApOperationsPage.tsx|client/src/api/exports.ts|client/src/api/travelReconciliation.ts,"[""P25-3""]",AP 运营页优先复用现有差旅对账与导出模式 不单建二套导出链路 P25-5,指标与预警,将预算超用 重复风险 长时间未付款 异常对账接入 Dashboard 与通知能力,高风险费控事件可进入 Dashboard 指标和通知路由 且不影响主业务成功返回,cd server && npm test -- tests/unit/routes/ai.test.js tests/unit/routes/notifications.test.js && ./scripts/regression-dashboard.sh && cd ../client && npm run typecheck && npm run build,manual,TODO,TODO,TODO,server/src/routes/dashboard.js|server/src/routes/notifications.js|server/src/constants/notificationTypes.js|client/src/pages/DashboardPage.tsx|client/src/api/dashboard.ts|client/src/api/notifications.ts,"[""P25-4""]",预警以只读告警和运营入口为主 不自动代执行付款或冻结 P25-6,P25回归与验收收口,完成费控规则 预校验 付款批次 AP 运营和指标预警后的整体验收收口,预算三模式 预校验 批次付款 AP 异常和三条主线零回归全部通过,cd server && npm run prisma:validate && npm test && ./scripts/regression-budget.sh && ./scripts/regression-all.sh && cd ../client && npm run typecheck && npm run build,manual,TODO,TODO,TODO,issues/2026-03-21_09-10-00-p25-fee-control-ap.csv|server/scripts/regression-budget.sh|server/scripts/regression-all.sh|server/tests|client/src/pages/DashboardPage.tsx,"[""P25-5""]",P25 完成标准以 precheck 前置和付款批次可运营为准