文件
hyb-oa/issues/2026-05-16_09-02-42-p2-fin-payment-batch-decision.csv
T

9.1 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2P2FIN-0P2-FIN 决策合同建档建立付款批次启用决策准备合同,只做启用条件、验收边界、回滚口径和后续实现合同准备,不启用 payment_batch_v1,不写业务代码,不执行付款批次业务写入。1) CSV 校验通过;2) 范围限定 issues/docs 和只读源代码核对;3) 不新增 API/schema/UI/feature flag;4) 不部署;5) 输出 GO_TO_IMPLEMENT、HOLD_FOR_PREREQ 或 FREEZE。流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_09-02-42-p2-fin-payment-batch-decision.csv;人工核对本轮不改 server/src、client/src 业务代码,不启用 payment_batch_v1。python3|manualDONEDONEDONEissues/2026-05-16_09-02-42-p2-fin-payment-batch-decision.csv[]2026-05-16 CSV 建档并校验通过;承接 P2D-2;P2-ORG high=0 medium=0,默认不启动 P2-ORG-FIX;回滚路径:删除本 CSV 和本轮既有文档状态回填,不影响运行环境。
3P2FIN-1现有付款批次代码与 flag 边界盘点只读核对付款批次后端路由、AP 台账、导出、前端页面、移动空态、feature flag 和 E2E/单测覆盖,区分已有实现和当前启用边界。1) 列出 payment_batch_v1 评估点和 flag_force_off 关闭语义;2) 确认 /payment-batches、/ap-operations、/exports/ap-operations 均受门禁或权限控制;3) 确认移动端仍只显示未启用空态;4) 不执行付款批次写入。受影响流程:已审批报销进入财务后处理时,付款批次入口在 flag off 下不可用或解释性空态;验证步骤:rg -n 'payment_batch_v1|flag_force_off|payment-batches|PaymentBatch|付款批次|未启用' server/src client/src client/tests docs issues;人工核对 server/src/routes/paymentBatches.js、apOperations.js、exports.js、featureFlags/index.js、client/src/pages/PaymentBatchesPage.tsx、MobilePortalPage.tsx。rg|manualDONEDONEDONEserver/src/routes/paymentBatches.js|server/src/routes/apOperations.js|server/src/routes/exports.js|server/src/services/featureFlags/index.js|client/src/pages/PaymentBatchesPage.tsx|client/src/pages/MobilePortalPage.tsx["P2FIN-0"]DecisionEvidence=server/src/routes/paymentBatches.js、apOperations.js 和 exports.js 均先 evaluate payment_batch_v1;flag_force_off 时返回 payment_batch_v1_disabled 409;MobilePortalPage 仍显示付款批次未启用空态;未执行付款批次写接口,未改代码。
4P2FIN-2角色与账号矩阵确认确认付款批次决策所需角色和测试账号口径:财务可创建/执行,财务主管或具备风险复核权限者可复核,普通员工、审批人和 admin-only 不得越权。1) 角色矩阵覆盖 finance、finance_mgr、employee、manager、admin-only;2) admin-only 不作为业务审批或付款角色;3) 财务/admin 混授仍需人工确认;4) live smoke 凭据存在不再作为 HOLD 原因。受影响流程:财务创建付款批次、复核人 maker-checker、执行付款、普通角色直连拒绝;验证步骤:rg -n 'payment.batch.manage|risk.review.manage|expense.finance.pay|admin-only|finance_mgr|LIVE_SMOKE_FINANCE' server/src/constants/permissions.js client/tests docs issues;必要时运行 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-smoke-env.mjs --json,只读检查凭据 readiness 且不打印 secret。rg|node|manualDONEDONEDONEserver/src/constants/permissions.js|client/tests/e2e/permission-direct-access.spec.ts|scripts/qa/check-live-smoke-env.mjs|docs/trialrun/人工试运行报告.md["P2FIN-1"]RoleMatrix=finance 具备 expense.finance.pay/payment.batch.manage;finance_mgr 具备 expense.finance.pay/payment.batch.manage 且可作为复核角色候选;permission-direct-access 覆盖 employee/manager/admin-only 拒绝或受门禁 409;live smoke readiness publicReady=true liveSmokeReady=true liveOcrReady=true;未输出 secret。
5P2FIN-3导出字段与审计事件口径确认确认付款批次启用前必须验收的导出字段、审计事件和归档证据口径,保持财务导出权限和敏感操作留痕一致。1) AP 导出受 payment_batch_v1 和财务权限控制;2) 导出写 EXPORT_AP_OPERATIONS 审计;3) 付款批次创建、复核、二次复核、执行均有审计事件;4) 导出字段与报销 OCR 规约一致或列出差异。受影响流程:财务导出 AP 台账,审计员或管理员可追溯导出和付款批次操作;验证步骤:rg -n 'EXPORT_AP_OPERATIONS|PAYMENT_BATCH_CREATED|PAYMENT_BATCH_REVIEWED|PAYMENT_BATCH_SECOND_REVIEWED|PAYMENT_BATCH_EXECUTED|导出字段至少包括' server/src docs issues。rg|manualDONEDONEDONEserver/src/routes/exports.js|server/src/routes/paymentBatches.js|docs/需求-报销发票OCR规约.md|issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv["P2FIN-1"]ExportAudit=exports.js 中 /exports/ap-operations 先过 payment_batch_v1 与 AP_OPERATIONS_PERMISSION_CODES,再写 EXPORT_AP_OPERATIONS;paymentBatches.js 已有 PAYMENT_BATCH_CREATED、PAYMENT_BATCH_REVIEWED、PAYMENT_BATCH_SECOND_REVIEWED、PAYMENT_BATCH_EXECUTED;报销 OCR 规约要求付款批次号、付款时间、付款人、付款备注和导出批次等字段;本轮未导出真实数据。
6P2FIN-4公网验收窗口与 flag off 回滚口径锁定付款批次进入实现前的公网验收窗口、feature flag 启停、flag off 空态和回滚验证条件。1) 公网验收必须单独批准窗口;2) payment_batch_v1 默认保持关闭;3) 回滚条件为 flag off 后 AP/payment-batches/export 回到 409 或关闭空态;4) 不接真实支付或 ERP 实时凭证。受影响流程:P2-FIN-V1 上线前后,财务入口、AP 台账、付款批次和导出在 flag on/off 下行为可验证;验证步骤:核对 R7E/FBA/P2D/BIZ8 文档和现有测试,确认 P2-FIN-V1 必须另建合同并含 /ready、public bundle、live smoke、权限直连、flag off 回滚。rg|manualDONEDONEDONEdocs/trialrun/R7E后功能边界审计.md|docs/trialrun/人工试运行报告.md|issues/2026-05-16_00-19-21-p2-decision-followup.csv|client/tests/e2e/reimbursement-payment-batch-flow.spec.ts["P2FIN-2","P2FIN-3"]Rollback=payment_batch_v1 默认继续关闭;P2-FIN-V1 公网验收窗口需在实现合同中单独批准,且上线前后必须验证 flag on 正向闭环和 flag off 后 AP/payment-batches/export 回到 409 或移动关闭空态;不接真实支付、不写 ERP 实时凭证、不执行生产恢复或 DB reset。
7P2FIN-5付款批次启用决策结论基于 P2FIN-1..4 输出 P2-FIN 是否进入独立实现合同的结论,并写明前置条件、后续合同 slug、回滚和验收口径。1) 结论为 GO_TO_IMPLEMENT、HOLD_FOR_PREREQ 或 FREEZE 之一;2) 若 GO_TO_IMPLEMENT,后续必须另建 P2-FIN-V1 实现合同;3) 若 HOLD,列出未满足前置;4) 若 FREEZE,列出冻结原因。受影响流程:后续财务付款批次开发派工;验证步骤:人工核对 P2FIN-1..4 证据和 P2D-2 口径,确认 payment_batch_v1 未被启用且没有付款批次业务写入;结论写入 Notes。manualDONEDONEDONEissues/2026-05-16_09-02-42-p2-fin-payment-batch-decision.csv["P2FIN-4"]Decision=GO_TO_IMPLEMENT; Rationale=代码、flag、权限、导出、审计、live readiness 和回滚口径已可支撑进入单独实现合同;本结论不等于当前启用 payment_batch_v1; Prereq=另建 P2-FIN-V1 合同并获批准,实施前确认公网验收窗口和真实财务参与人,涉及权限/状态机/审计需独立 review; NextContract=P2-FIN-V1; Rollback=flag off,入口和 API 回到关闭态,保留已审计数据但不接真实支付或 ERP; TestScope=财务成功,员工/审批人/admin-only 拒绝,导出权限与 EXPORT_AP_OPERATIONS,PAYMENT_BATCH_* 审计,flag off 回滚。
8P2FIN-6文档状态回填与阶段收口将 P2-FIN 决策准备结果回写既有事实源和人工试运行报告,完成 CSV 校验、文档审计、diff 检查和中文提交。1) docs/文档索引.md、docs/文档事实源状态矩阵.md、docs/trialrun/人工试运行报告.md 如有必要已回填;2) CSV 校验通过;3) audit-docs 无 error;4) git diff --check 通过;5) 完成中文 commit。流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_09-02-42-p2-fin-payment-batch-decision.csv;node scripts/qa/audit-docs.mjs --check-registry;rg -n 'P2-FIN|P2FIN|payment_batch_v1|付款批次|GO_TO_IMPLEMENT|HOLD_FOR_PREREQ|FREEZE' docs issues;git diff --check。python3|node|rg|git|manualDONEDONEDONEissues/2026-05-16_09-02-42-p2-fin-payment-batch-decision.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md["P2FIN-5"]Closeout=validate_issues_csv 通过;audit-docs errors=0 warnings=1,warning 为既有 unregistered docs files:24;关键词 rg 可解释;git diff --check 通过;本轮未部署,公网状态不变。