文件
hyb-oa/issues/2026-05-16_09-42-43-p2-fin-payment-batch-v1.csv

10 行
9.4 KiB
CSV

ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
"P2FINV1-0","P2-FIN-V1 合同建档","建立付款批次最小闭环启用前硬化合同,范围限定本地或隔离环境验证;公网 payment_batch_v1 继续关闭,不部署,不接真实支付,不写 ERP 实时凭证。","1) CSV 校验通过;2) 本轮复用现有 /api/payment-batches、/api/ap-operations、/api/exports/ap-operations 和 payment_batch_v1;3) 不新增业务 API、schema、migration、路由或 feature flag;4) 公网不启用付款批次;5) 后续 P2-OCR/UX8/P2-WF/P2-BIZ 只排队不实现。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_09-42-43-p2-fin-payment-batch-v1.csv;人工核对本 CSV 范围不包含公网启用、部署、生产恢复、数据库重置或远端 env 打印。","python3|manual","DONE","DONE","DONE","issues/2026-05-16_09-42-43-p2-fin-payment-batch-v1.csv","[]","ScopeLocked=DONE; CSV validated; no public enable/deploy/prod restore/db reset/secret/env print; later public enable requires P2-FIN-LIVE."
"P2FINV1-1","现有回归预检","先执行付款批次现有后端、前端和本地隔离 E2E 回归,判断是否需要代码修复;若全过,本轮作为启用前验收与硬化收口,不强行制造代码改动。","1) 后端语法、Prisma、单测和 regression-payment-batches 通过;2) 前端 typecheck/build 通过;3) 本地或隔离 E2E 支付批次闭环通过或有明确非代码阻断;4) 预检结论写入 Notes。","受影响流程:员工提交报销 -> 主管/财务审批 -> 财务创建付款批次 -> 财务主管复核 -> 财务执行 -> 报销 paid、发票 archived、AP 台账更新;验证命令:cd server && npm run prisma:validate && node --check src/routes/paymentBatches.js src/routes/apOperations.js src/routes/exports.js src/routes/reimbursements.js && npm test -- tests/unit/routes/paymentBatches.reimbursement.test.js tests/unit/routes/exports.apOperations.test.js tests/unit/services/financeLedger.test.js && ./scripts/regression-payment-batches.sh;cd client && npm run typecheck && npm run build;cd client && E2E_BASE_URL=<local-or-isolated-url> npx playwright test tests/e2e/reimbursement-payment-batch-flow.spec.ts --workers=1 --reporter=list。","npm|node|bash|playwright","DONE","DONE","DONE","server/src/routes/paymentBatches.js|server/src/routes/apOperations.js|server/src/routes/exports.js|server/src/routes/reimbursements.js|server/tests/unit|server/scripts/regression-payment-batches.sh|client/tests/e2e/reimbursement-payment-batch-flow.spec.ts","[""P2FINV1-0""]","Precheck=PASS; server prisma/node-check/unit 8 tests/regression-payment-batches pass; client typecheck/build pass; isolated E2E final pass at artifacts/qa-flow/business-flow-20260516-095719/summary.txt after E2E status/confirm assertions hardened."
"P2FINV1-2","后端硬化预留","仅当 P2FINV1-1 发现后端缺口时,最小修补现有付款批次、AP 台账、AP 导出或报销付款 follow-up;不新增接口契约、schema 或 migration。","1) 若无后端缺口则记录 N/A;2) 若修补,保持现有 API 兼容;3) 权限、maker-checker、状态转换和审计不回归;4) 不接真实支付或 ERP 实时凭证。","受影响流程:付款批次创建、复核、执行、失败项、AP 导出和报销付款归档;验证步骤:复跑 P2FINV1-1 后端命令,必要时增加最小单测。","node|npm|manual","DONE","DONE","DONE","server/src/routes/paymentBatches.js|server/src/routes/apOperations.js|server/src/routes/exports.js|server/src/routes/reimbursements.js|server/tests/unit","[""P2FINV1-1""]","BackendHardening=N/A; existing backend passed focused regression; no server/src, API, schema or migration changes."
"P2FINV1-3","前端硬化预留","仅当 P2FINV1-1 发现前端缺口时,最小修补 PaymentBatchesPage、ApOperationsPage 或移动财务空态;不新增移动付款能力或新路由。","1) 若无前端缺口则记录 N/A;2) 付款批次和 AP 页面操作与现有权限一致;3) flag off 时仍展示关闭态或 409 解释;4) 不新增移动执行付款。","受影响流程:财务 PC 付款批次页、AP 运营页、移动财务摘要关闭态;验证步骤:cd client && npm run typecheck && npm run build;必要时补 focused Playwright。","npm|playwright|manual","DONE","DONE","DONE","client/src/pages/PaymentBatchesPage.tsx|client/src/pages/ApOperationsPage.tsx|client/src/pages/MobilePortalPage.tsx|client/tests/e2e","[""P2FINV1-1""]","FrontendHardening=E2E_ONLY; no product UI or route change; updated reimbursement-payment-batch-flow spec for current status badges and payment action confirmation; typecheck/build pass."
"P2FINV1-4","本地隔离闭环验收","在本地或隔离环境临时打开 payment_batch_v1,跑付款批次最小闭环,确认创建、复核、执行、报销 paid、发票 archived、AP 台账和 ERP outbox 兼容证据。","1) E2E 闭环通过;2) 不使用公网环境写付款批次;3) 测试产生的数据仅存在本地或隔离环境;4) 若环境不可用,记录阻断原因,不伪造通过。","流程级验证:启动本地/隔离 server 和 client 后执行 cd client && E2E_BASE_URL=<local-or-isolated-url> npx playwright test tests/e2e/reimbursement-payment-batch-flow.spec.ts --workers=1 --reporter=list;人工核对测试中 ensureFeatureFlagOn 只作用于本地/隔离环境。","playwright|manual","DONE","DONE","DONE","client/tests/e2e/reimbursement-payment-batch-flow.spec.ts|server/src/scripts/seed-trialrun.js|server/src/routes/featureFlags.js","[""P2FINV1-1""]","LocalClosure=PASS; isolated temp DB run business-flow-20260516-095719, 1 passed; ensureFeatureFlagOn only local/isolated; public payment_batch_v1 remains off."
"P2FINV1-5","权限审计回滚验收","验证付款批次权限、审计事件和 flag off 回滚口径:财务成功,员工/审批人/admin-only 拒绝或受门禁 409,审计可追溯,flag off 回到关闭态。","1) payment.batch.manage 和 risk.review.manage 权限边界清楚;2) 员工、审批人、admin-only 不越权;3) PAYMENT_BATCH_* 与 EXPORT_AP_OPERATIONS 审计覆盖;4) flag off 后 payment-batches/AP/export 回到 409 或移动关闭空态。","流程级验证:cd client && E2E_BASE_URL=<local-or-isolated-url> npx playwright test tests/e2e/permission-direct-access.spec.ts --workers=1 --reporter=list;rg -n 'PAYMENT_BATCH_CREATED|PAYMENT_BATCH_REVIEWED|PAYMENT_BATCH_SECOND_REVIEWED|PAYMENT_BATCH_EXECUTED|EXPORT_AP_OPERATIONS|payment_batch_v1_disabled|flag_force_off' server/src client/tests docs issues;公网只运行 LIVE_SMOKE_BASE_URL=https://oa.hyinda.com node scripts/qa/check-live-smoke-env.mjs,不执行付款批次写入。","playwright|rg|node|manual","DONE","DONE","DONE","client/tests/e2e/permission-direct-access.spec.ts|server/src/routes/paymentBatches.js|server/src/routes/exports.js|server/src/services/featureFlags/index.js|scripts/qa/check-live-smoke-env.mjs","[""P2FINV1-4""]","RollbackEvidence=PASS; permission-direct-access in isolated temp DB business-flow-20260516-095900, 8 passed; rg confirmed PAYMENT_BATCH_* and EXPORT_AP_OPERATIONS audit plus flag_force_off/payment_batch_v1_disabled; live readiness true without public writes."
"P2FINV1-6","独立 reviewer 复核","对 P2-FIN-V1 做独立只读复核,重点检查权限模型、财务状态流、maker-checker、审计事件、flag off 回滚和未接真实支付边界。","1) reviewer 结论无阻断;2) 如有阻断,先修复并复跑相关测试;3) 复核明确本轮不新增 schema/API,不公网启用;4) 复核意见写入 Notes。","人工 reviewer:对照 diff、P2FINV1-1..5 证据、server/src/routes/paymentBatches.js、server/src/routes/exports.js、client/tests/e2e/reimbursement-payment-batch-flow.spec.ts 和 permission-direct-access.spec.ts;不修改代码。","manual","DONE","DONE","DONE","issues/2026-05-16_09-42-43-p2-fin-payment-batch-v1.csv|server/src/routes/paymentBatches.js|server/src/routes/exports.js|client/tests/e2e","[""P2FINV1-5""]","Reviewer=PASS; read-only review found no business code diff; routes still enforce payment_batch_v1 gate, payment.batch.manage/risk.review.manage split, maker-checker, audit events and no real payment/ERP credential path; no blocker."
"P2FINV1-7","收口回填与中文提交","回填 P2-FIN-V1 CSV、文档索引、事实源矩阵和人工试运行报告,运行最终校验并提交中文 commit。","1) CSV 状态真实回填;2) docs/文档索引.md、docs/文档事实源状态矩阵.md、docs/trialrun/人工试运行报告.md 必要状态已更新;3) validate、audit-docs、rg 和 git diff --check 通过;4) 中文 commit 引用 P2FINV1;5) 明确未部署。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_09-42-43-p2-fin-payment-batch-v1.csv;node scripts/qa/audit-docs.mjs --check-registry;rg -n 'P2FINV1|P2-FIN-V1|payment_batch_v1|付款批次|flag_force_off|EXPORT_AP_OPERATIONS|PAYMENT_BATCH' docs issues;git diff --check;git status --short。","python3|node|rg|git|manual","DONE","DONE","DONE","issues/2026-05-16_09-42-43-p2-fin-payment-batch-v1.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[""P2FINV1-6""]","Closeout=PASS; docs index/matrix/trial report updated; final validate/audit-docs/rg/git diff check run before commit; not deployed; next queued P2-OCR-SAMPLE."