LDF 收口部署财务回单闭环

这个提交包含在:
2026-05-17 10:41:35 +08:00
父节点 ab5ab4deed
当前提交 426a96816a
共修改 5 个文件,包含 69 行新增和 14 行删除
@@ -3,7 +3,7 @@
"LDF-1","本地基础代码门禁","部署前先跑后端、前端、迁移和 CASHV focused 门禁,确认最新代码可构建、可迁移、可回归。","1) 工作区干净或仅本合同变更;2) prisma validate 通过;3) paymentBatches/apOperations/exports node --check 通过;4) paymentBatches/exports/financeLedger focused 单测通过;5) client typecheck/build 通过;6) git diff --check 通过。","受影响流程:付款批次回单附件、AP 台账、导出、报销付款、前端付款批次页;验证步骤:cd server && npm run prisma:validate;cd server && node --check src/routes/paymentBatches.js src/routes/apOperations.js src/routes/exports.js;cd server && npm test -- tests/unit/routes/paymentBatches.reimbursement.test.js tests/unit/routes/exports.apOperations.test.js tests/unit/services/financeLedger.test.js;cd client && npm run typecheck && npm run build;git diff --check。","npm|node|git","DONE","DONE","DONE","server/prisma/schema.prisma|server/prisma/migrations/20260517090437_cashier_payment_receipts/migration.sql|server/src/routes/paymentBatches.js|client/src/pages/PaymentBatchesPage.tsx|client/src/api/paymentBatches.ts","[""LDF-0""]","完成:prisma validate PASS;paymentBatches/apOperations/exports node --check PASS;focused 单测 3 files/12 tests passed;client typecheck/build PASS;仅本合同 CSV 为未提交变更。"
"LDF-2","本地正式启用范围业务流回归","在本地隔离临时库跑正式启用范围业务流,覆盖 PC 业务、审批、报销、付款批次回单、请假、采购、权限和企业微信入口自动化。","1) auth、reimbursement、approval、leave、procurement、governance 均通过;2) reimbursement 覆盖付款批次银行回单上传后执行;3) 权限直连无越权;4) 报告写入 artifacts/qa-flow;5) 如扩展模块失败但不属正式启用范围,必须记录为后续维护项,不能阻断本合同部署。","受影响流程:登录/企业微信入口 -> 报销/PDF OCR/mock -> 审批 -> 付款批次回单 -> 请假 -> 采购 -> 权限直连;验证步骤:QA_ISSUE_ID=LDF BUSINESS_FLOW_GROUPS=auth,reimbursement,approval,leave,procurement,governance bash scripts/qa/run-business-flow-gates.sh local。","bash|playwright","DONE","DONE","DONE","scripts/qa/run-business-flow-gates.sh|client/tests/e2e","[""LDF-1""]","完成:报告 artifacts/qa-flow/business-flow-20260517-094407/summary.txt;auth 12 passed;reimbursement 10 passed/1 skipped,含付款批次银行回单上传后执行;approval 3 passed;leave 6 passed;procurement 1 passed;governance 9 passed。"
"LDF-3","本地 PC、移动和企业微信页面矩阵","部署前跑本地 PC/移动/企业微信 UA 页面矩阵,确认页面布局、导航、移动入口和企业微信渲染无阻断。","1) 项目级视觉或核心页面矩阵通过;2) 移动 320/360/375/390/393/414/430 视口矩阵通过;3) 企业微信 UA/渲染矩阵通过;4) 无横向滚动、PC 壳误入移动页或关键按钮遮挡;5) 视觉报告或 Playwright 结果可追溯。","受影响流程:PC 工作台/财务/审批/报销页面,/mobile 首页、报销、审批、请假、采购、通知、企业微信 UA;验证步骤:QA_ISSUE_ID=LDF bash scripts/qa/run-web-gates.sh qg6-visual-matrix-local;cd client && E2E_BASE_URL=<local-url> npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts --workers=1 --reporter=list 或采用同等本地报告。","bash|playwright","DONE","DONE","DONE","client/src/layouts/AppShellLayout.tsx|client/src/lib/runtimeContext.ts|client/tests/e2e/r110-mobile-pc-routing.spec.ts|client/tests/e2e|scripts/qa/run-web-gates.sh","[""LDF-1""]","完成:QG6 视觉矩阵 PASS,报告 artifacts/qa-flow/LDF-visual-matrix-20260517-095505/summary.json;R108 移动企微视觉 PASS,修复 /mobile/approvals?taskId 深层页底部导航遮挡;R109 移动报销反馈 PASS;R110 手机/PC 路由分流 PASS,补充 /leave-requests?action=create -> /mobile/leave?view=form,普通 /leave-requests 保持请假记录默认视图;自动化不能替代未来真实企业微信最终确认。"
"LDF-4","受控部署最新代码到公网","本地门禁通过后,用部署脚本把 ab80d48 及本合同回填提交部署到公网,应用新增回单附件 migration,保持远端 env 不覆盖。","1) 部署脚本成功;2) 远端 compose config、init、Prisma migrate status、/ready、external deps smoke、runtime smoke 均通过;3) SYNC_ENV=0;4) 不打印远端 env 或 secret;5) 不执行数据库重置或生产恢复。","受影响流程:公网运行时、Prisma migration、Caddy 反代后的 OA 服务;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh;部署脚本内置 /ready、external deps smoke、runtime smoke 和 public bundle 检查。","bash|ssh|rsync|docker","TODO","TODO","TODO","deploy/trialrun/deploy.sh|server/prisma/migrations/20260517090437_cashier_payment_receipts/migration.sql","[""LDF-2"",""LDF-3""]","如部署失败,停止公网业务验证并保留部署日志;不做数据库重置。"
"LDF-5","公网部署后 readiness 与核心业务复检","部署后先跑公网 readiness、public bundle、live smoke、PDF live OCR 和移动/企业微信自动化,确认公网系统基础可用。","1) /ready 通过;2) public bundle 文案扫描通过;3) live smoke 和 PDF live OCR 通过或可解释 SKIP;4) 公网移动矩阵通过;5) 企业微信 UA/渲染矩阵通过。","受影响流程:公网登录、企业微信配置、PDF OCR、移动入口、企业微信 UA;验证步骤:set -a && source ~/.hyb-oa/live-smoke.env && set +a;QA_ISSUE_ID=LDF LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts --workers=1 --reporter=list。","bash|node|playwright","TODO","TODO","TODO","scripts/qa/run-live-smoke-readiness.sh|client/tests/e2e","[""LDF-4""]","公网真实企业微信真机最终确认可在 FIN-PROD-ENABLE 或启用公告前补。"
"LDF-6","公网 CASHV 受控验证","部署后用公网测试账号短窗口验证新回单附件能力:创建测试报销、审批、临时开启 payment_batch_v1、上传银行回单、执行付款、核验 AP/审计,并最终恢复关闭态。","1) 只使用测试账号和测试报销;2) 回单附件上传/下载或列表可用;3) 银行渠道执行前回单阻断已覆盖;4) 付款批次执行后报销 paid、票据 archived、AP 台账 paid、审计可查;5) 最终 payment_batch_v1 恢复 force_off,除非另有 FIN-PROD-ENABLE 批准。","受影响流程:公网报销审批 -> 出纳付款批次 -> 管理员/复核 -> 银行回单 -> OA 已付款标记 -> AP 导出/审计 -> flag 回滚;验证步骤:P2_FIN_LIVE_APPROVED=1 QA_ISSUE_ID=LDF P2_FIN_LIVE_MARKER_PREFIX=LDF LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-p2-fin-live-window.sh;必要时补手工确认回单附件区和审计动作。","bash|playwright","TODO","TODO","TODO","scripts/qa/run-p2-fin-live-window.sh|client/tests/e2e/manual/p2-fin-live-payment-batch.spec.ts|client/src/pages/PaymentBatchesPage.tsx","[""LDF-5""]","本合同只做部署后受控测试,默认最终关闭 payment_batch_v1;正式常开另建 FIN-PROD-ENABLE。"
"LDF-7","收口回填与提交","回填 LDF CSV、文档索引、事实源矩阵和人工试运行报告,提交中文 commit,明确部署状态和下一步 FIN-PROD-ENABLE/ACCOUNTING-HANDOFF-V1。","1) CSV 状态按证据回填;2) docs/文档索引.md、docs/文档事实源状态矩阵.md、docs/trialrun/人工试运行报告.md 更新;3) validate、audit-docs、rg、git diff --check 通过;4) 中文 commit 引用 LDF;5) 最终说明公网 commit、/ready、public bundle、live smoke、付款批次最终 flag 状态。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-17_09-38-55-launch-deploy-finance.csv;node scripts/qa/audit-docs.mjs --check-registry;rg -n 'LDF|LAUNCH-DEPLOY-FINANCE|CASHIER-VOUCHER|银行回单|payment_batch_v1|FIN-PROD-ENABLE|ACCOUNTING-HANDOFF' docs issues;git diff --check;git status --short。","python3|node|rg|git","TODO","TODO","TODO","issues/2026-05-17_09-38-55-launch-deploy-finance.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[""LDF-6""]","none"
"LDF-4","受控部署最新代码到公网","本地门禁通过后,用部署脚本把 ab80d48 及本合同回填提交部署到公网,应用新增回单附件 migration,保持远端 env 不覆盖。","1) 部署脚本成功;2) 远端 compose config、init、Prisma migrate status、/ready、external deps smoke、runtime smoke 均通过;3) SYNC_ENV=0;4) 不打印远端 env 或 secret;5) 不执行数据库重置或生产恢复。","受影响流程:公网运行时、Prisma migration、Caddy 反代后的 OA 服务;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh;部署脚本内置 /ready、external deps smoke、runtime smoke 和 public bundle 检查。","bash|ssh|rsync|docker","DONE","DONE","DONE","deploy/trialrun/deploy.sh|server/prisma/migrations/20260517090437_cashier_payment_receipts/migration.sql","[""LDF-2"",""LDF-3""]","完成:首次部署镜像构建成功但 Prisma status 发现 20260517090437_cashier_payment_receipts 未应用并安全停止;已修复 deploy.sh 使 init 显式执行 migrate/seed;重跑 SYNC_ENV=0 部署 PASS,远端 env 未同步,migration 应用成功,Prisma status up to date,部署后 live smoke 3 passed,public bundle scanned=57 focused=4 findings=0;部署 commit ab5ab4d。"
"LDF-5","公网部署后 readiness 与核心业务复检","部署后先跑公网 readiness、public bundle、live smoke、PDF live OCR 和移动/企业微信自动化,确认公网系统基础可用。","1) /ready 通过;2) public bundle 文案扫描通过;3) live smoke 和 PDF live OCR 通过或可解释 SKIP;4) 公网移动矩阵通过;5) 企业微信 UA/渲染矩阵通过。","受影响流程:公网登录、企业微信配置、PDF OCR、移动入口、企业微信 UA;验证步骤:set -a && source ~/.hyb-oa/live-smoke.env && set +a;QA_ISSUE_ID=LDF LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts --workers=1 --reporter=list。","bash|node|playwright","DONE","DONE","DONE","scripts/qa/run-live-smoke-readiness.sh|client/tests/e2e","[""LDF-4""]","完成:报告 artifacts/qa-flow/live-smoke-readiness-20260517-102904;publicReady=true,wecom=ready,liveSmokeReady=true,liveOcrReady=true;public bundle scanned=57 focused=4 findings=0;live smoke 3 passed;真实 PDF OCR 1 passed,样票重复为可解释终态;pending OCR 因本地 DATABASE_URL 未注入按规则 SKIP;公网移动/企业微信 UA 组合 14 passed,覆盖 320/360/375/390/393/414/430。"
"LDF-6","公网 CASHV 受控验证","部署后用公网测试账号短窗口验证新回单附件能力:创建测试报销、审批、临时开启 payment_batch_v1、上传银行回单、执行付款、核验 AP/审计,并最终恢复关闭态。","1) 只使用测试账号和测试报销;2) 回单附件上传/下载或列表可用;3) 银行渠道执行前回单阻断已覆盖;4) 付款批次执行后报销 paid、票据 archived、AP 台账 paid、审计可查;5) 最终 payment_batch_v1 恢复 force_off,除非另有 FIN-PROD-ENABLE 批准。","受影响流程:公网报销审批 -> 出纳付款批次 -> 管理员/复核 -> 银行回单 -> OA 已付款标记 -> AP 导出/审计 -> flag 回滚;验证步骤:P2_FIN_LIVE_APPROVED=1 QA_ISSUE_ID=LDF P2_FIN_LIVE_MARKER_PREFIX=LDF LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-p2-fin-live-window.sh;必要时补手工确认回单附件区和审计动作。","bash|playwright","DONE","DONE","DONE","scripts/qa/run-p2-fin-live-window.sh|client/tests/e2e/manual/p2-fin-live-payment-batch.spec.ts|client/src/pages/PaymentBatchesPage.tsx","[""LDF-5""]","完成:报告 artifacts/qa-flow/p2-fin-live-20260517-103450;pre flag-off PASS;临时 force_on 后测试报销 BX-20260517-0025 审批到 approved;银行渠道无回单执行返回 409;回单上传成功、列表命中、下载 200;付款批次 executed,报销 paid,票据 archived,AP 台账 paid,AP 导出 200,PAYMENT_BATCH_RECEIPT_UPLOADED/PAYMENT_BATCH_EXECUTED/REIMBURSEMENT_PAYMENT_MARKED/EXPORT_AP_OPERATIONS 审计可查;公网移动矩阵 6 passed、企业微信渲染矩阵 8 passed;最终 payment_batch_v1=flag_force_off。"
"LDF-7","收口回填与提交","回填 LDF CSV、文档索引、事实源矩阵和人工试运行报告,提交中文 commit,明确部署状态和下一步 FIN-PROD-ENABLE/ACCOUNTING-HANDOFF-V1。","1) CSV 状态按证据回填;2) docs/文档索引.md、docs/文档事实源状态矩阵.md、docs/trialrun/人工试运行报告.md 更新;3) validate、audit-docs、rg、git diff --check 通过;4) 中文 commit 引用 LDF;5) 最终说明公网 commit、/ready、public bundle、live smoke、付款批次最终 flag 状态。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-17_09-38-55-launch-deploy-finance.csv;node scripts/qa/audit-docs.mjs --check-registry;rg -n 'LDF|LAUNCH-DEPLOY-FINANCE|CASHIER-VOUCHER|银行回单|payment_batch_v1|FIN-PROD-ENABLE|ACCOUNTING-HANDOFF' docs issues;git diff --check;git status --short。","python3|node|rg|git","DONE","DONE","DONE","issues/2026-05-17_09-38-55-launch-deploy-finance.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/p2-fin-live-payment-batch.spec.ts","[""LDF-6""]","完成:CSV、索引、事实源矩阵和人工试运行报告已回填;部署 commit ab5ab4d;公网 https://oa.hyinda.com /ready、public bundle、live smoke、PDF live OCR、移动/企微矩阵和 CASHV 短窗口均通过;最终 payment_batch_v1=flag_force_off;下一步为 FIN-PROD-ENABLE 正式常开和 ACCOUNTING-HANDOFF-V1 代账交接 SOP。"
1 ID Title Description Acceptance Test_Method Tools Dev_Status Review1_Status Regression_Status Files Dependencies Notes
3 LDF-1 本地基础代码门禁 部署前先跑后端、前端、迁移和 CASHV focused 门禁,确认最新代码可构建、可迁移、可回归。 1) 工作区干净或仅本合同变更;2) prisma validate 通过;3) paymentBatches/apOperations/exports node --check 通过;4) paymentBatches/exports/financeLedger focused 单测通过;5) client typecheck/build 通过;6) git diff --check 通过。 受影响流程:付款批次回单附件、AP 台账、导出、报销付款、前端付款批次页;验证步骤:cd server && npm run prisma:validate;cd server && node --check src/routes/paymentBatches.js src/routes/apOperations.js src/routes/exports.js;cd server && npm test -- tests/unit/routes/paymentBatches.reimbursement.test.js tests/unit/routes/exports.apOperations.test.js tests/unit/services/financeLedger.test.js;cd client && npm run typecheck && npm run build;git diff --check。 npm|node|git DONE DONE DONE server/prisma/schema.prisma|server/prisma/migrations/20260517090437_cashier_payment_receipts/migration.sql|server/src/routes/paymentBatches.js|client/src/pages/PaymentBatchesPage.tsx|client/src/api/paymentBatches.ts ["LDF-0"] 完成:prisma validate PASS;paymentBatches/apOperations/exports node --check PASS;focused 单测 3 files/12 tests passed;client typecheck/build PASS;仅本合同 CSV 为未提交变更。
4 LDF-2 本地正式启用范围业务流回归 在本地隔离临时库跑正式启用范围业务流,覆盖 PC 业务、审批、报销、付款批次回单、请假、采购、权限和企业微信入口自动化。 1) auth、reimbursement、approval、leave、procurement、governance 均通过;2) reimbursement 覆盖付款批次银行回单上传后执行;3) 权限直连无越权;4) 报告写入 artifacts/qa-flow;5) 如扩展模块失败但不属正式启用范围,必须记录为后续维护项,不能阻断本合同部署。 受影响流程:登录/企业微信入口 -> 报销/PDF OCR/mock -> 审批 -> 付款批次回单 -> 请假 -> 采购 -> 权限直连;验证步骤:QA_ISSUE_ID=LDF BUSINESS_FLOW_GROUPS=auth,reimbursement,approval,leave,procurement,governance bash scripts/qa/run-business-flow-gates.sh local。 bash|playwright DONE DONE DONE scripts/qa/run-business-flow-gates.sh|client/tests/e2e ["LDF-1"] 完成:报告 artifacts/qa-flow/business-flow-20260517-094407/summary.txt;auth 12 passed;reimbursement 10 passed/1 skipped,含付款批次银行回单上传后执行;approval 3 passed;leave 6 passed;procurement 1 passed;governance 9 passed。
5 LDF-3 本地 PC、移动和企业微信页面矩阵 部署前跑本地 PC/移动/企业微信 UA 页面矩阵,确认页面布局、导航、移动入口和企业微信渲染无阻断。 1) 项目级视觉或核心页面矩阵通过;2) 移动 320/360/375/390/393/414/430 视口矩阵通过;3) 企业微信 UA/渲染矩阵通过;4) 无横向滚动、PC 壳误入移动页或关键按钮遮挡;5) 视觉报告或 Playwright 结果可追溯。 受影响流程:PC 工作台/财务/审批/报销页面,/mobile 首页、报销、审批、请假、采购、通知、企业微信 UA;验证步骤:QA_ISSUE_ID=LDF bash scripts/qa/run-web-gates.sh qg6-visual-matrix-local;cd client && E2E_BASE_URL=<local-url> npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts --workers=1 --reporter=list 或采用同等本地报告。 bash|playwright DONE DONE DONE client/src/layouts/AppShellLayout.tsx|client/src/lib/runtimeContext.ts|client/tests/e2e/r110-mobile-pc-routing.spec.ts|client/tests/e2e|scripts/qa/run-web-gates.sh ["LDF-1"] 完成:QG6 视觉矩阵 PASS,报告 artifacts/qa-flow/LDF-visual-matrix-20260517-095505/summary.json;R108 移动企微视觉 PASS,修复 /mobile/approvals?taskId 深层页底部导航遮挡;R109 移动报销反馈 PASS;R110 手机/PC 路由分流 PASS,补充 /leave-requests?action=create -> /mobile/leave?view=form,普通 /leave-requests 保持请假记录默认视图;自动化不能替代未来真实企业微信最终确认。
6 LDF-4 受控部署最新代码到公网 本地门禁通过后,用部署脚本把 ab80d48 及本合同回填提交部署到公网,应用新增回单附件 migration,保持远端 env 不覆盖。 1) 部署脚本成功;2) 远端 compose config、init、Prisma migrate status、/ready、external deps smoke、runtime smoke 均通过;3) SYNC_ENV=0;4) 不打印远端 env 或 secret;5) 不执行数据库重置或生产恢复。 受影响流程:公网运行时、Prisma migration、Caddy 反代后的 OA 服务;验证步骤:SYNC_ENV=0 bash deploy/trialrun/deploy.sh;部署脚本内置 /ready、external deps smoke、runtime smoke 和 public bundle 检查。 bash|ssh|rsync|docker TODO DONE TODO DONE TODO DONE deploy/trialrun/deploy.sh|server/prisma/migrations/20260517090437_cashier_payment_receipts/migration.sql ["LDF-2","LDF-3"] 如部署失败,停止公网业务验证并保留部署日志;不做数据库重置。 完成:首次部署镜像构建成功但 Prisma status 发现 20260517090437_cashier_payment_receipts 未应用并安全停止;已修复 deploy.sh 使 init 显式执行 migrate/seed;重跑 SYNC_ENV=0 部署 PASS,远端 env 未同步,migration 应用成功,Prisma status up to date,部署后 live smoke 3 passed,public bundle scanned=57 focused=4 findings=0;部署 commit ab5ab4d。
7 LDF-5 公网部署后 readiness 与核心业务复检 部署后先跑公网 readiness、public bundle、live smoke、PDF live OCR 和移动/企业微信自动化,确认公网系统基础可用。 1) /ready 通过;2) public bundle 文案扫描通过;3) live smoke 和 PDF live OCR 通过或可解释 SKIP;4) 公网移动矩阵通过;5) 企业微信 UA/渲染矩阵通过。 受影响流程:公网登录、企业微信配置、PDF OCR、移动入口、企业微信 UA;验证步骤:set -a && source ~/.hyb-oa/live-smoke.env && set +a;QA_ISSUE_ID=LDF LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readiness.sh;cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts tests/e2e/r6-wecom-mobile-rendering-hardening.spec.ts --workers=1 --reporter=list。 bash|node|playwright TODO DONE TODO DONE TODO DONE scripts/qa/run-live-smoke-readiness.sh|client/tests/e2e ["LDF-4"] 公网真实企业微信真机最终确认可在 FIN-PROD-ENABLE 或启用公告前补。 完成:报告 artifacts/qa-flow/live-smoke-readiness-20260517-102904;publicReady=true,wecom=ready,liveSmokeReady=true,liveOcrReady=true;public bundle scanned=57 focused=4 findings=0;live smoke 3 passed;真实 PDF OCR 1 passed,样票重复为可解释终态;pending OCR 因本地 DATABASE_URL 未注入按规则 SKIP;公网移动/企业微信 UA 组合 14 passed,覆盖 320/360/375/390/393/414/430。
8 LDF-6 公网 CASHV 受控验证 部署后用公网测试账号短窗口验证新回单附件能力:创建测试报销、审批、临时开启 payment_batch_v1、上传银行回单、执行付款、核验 AP/审计,并最终恢复关闭态。 1) 只使用测试账号和测试报销;2) 回单附件上传/下载或列表可用;3) 银行渠道执行前回单阻断已覆盖;4) 付款批次执行后报销 paid、票据 archived、AP 台账 paid、审计可查;5) 最终 payment_batch_v1 恢复 force_off,除非另有 FIN-PROD-ENABLE 批准。 受影响流程:公网报销审批 -> 出纳付款批次 -> 管理员/复核 -> 银行回单 -> OA 已付款标记 -> AP 导出/审计 -> flag 回滚;验证步骤:P2_FIN_LIVE_APPROVED=1 QA_ISSUE_ID=LDF P2_FIN_LIVE_MARKER_PREFIX=LDF LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-p2-fin-live-window.sh;必要时补手工确认回单附件区和审计动作。 bash|playwright TODO DONE TODO DONE TODO DONE scripts/qa/run-p2-fin-live-window.sh|client/tests/e2e/manual/p2-fin-live-payment-batch.spec.ts|client/src/pages/PaymentBatchesPage.tsx ["LDF-5"] 本合同只做部署后受控测试,默认最终关闭 payment_batch_v1;正式常开另建 FIN-PROD-ENABLE。 完成:报告 artifacts/qa-flow/p2-fin-live-20260517-103450;pre flag-off PASS;临时 force_on 后测试报销 BX-20260517-0025 审批到 approved;银行渠道无回单执行返回 409;回单上传成功、列表命中、下载 200;付款批次 executed,报销 paid,票据 archived,AP 台账 paid,AP 导出 200,PAYMENT_BATCH_RECEIPT_UPLOADED/PAYMENT_BATCH_EXECUTED/REIMBURSEMENT_PAYMENT_MARKED/EXPORT_AP_OPERATIONS 审计可查;公网移动矩阵 6 passed、企业微信渲染矩阵 8 passed;最终 payment_batch_v1=flag_force_off。
9 LDF-7 收口回填与提交 回填 LDF CSV、文档索引、事实源矩阵和人工试运行报告,提交中文 commit,明确部署状态和下一步 FIN-PROD-ENABLE/ACCOUNTING-HANDOFF-V1。 1) CSV 状态按证据回填;2) docs/文档索引.md、docs/文档事实源状态矩阵.md、docs/trialrun/人工试运行报告.md 更新;3) validate、audit-docs、rg、git diff --check 通过;4) 中文 commit 引用 LDF;5) 最终说明公网 commit、/ready、public bundle、live smoke、付款批次最终 flag 状态。 流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-17_09-38-55-launch-deploy-finance.csv;node scripts/qa/audit-docs.mjs --check-registry;rg -n 'LDF|LAUNCH-DEPLOY-FINANCE|CASHIER-VOUCHER|银行回单|payment_batch_v1|FIN-PROD-ENABLE|ACCOUNTING-HANDOFF' docs issues;git diff --check;git status --short。 python3|node|rg|git TODO DONE TODO DONE TODO DONE issues/2026-05-17_09-38-55-launch-deploy-finance.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md issues/2026-05-17_09-38-55-launch-deploy-finance.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md|client/tests/e2e/manual/p2-fin-live-payment-batch.spec.ts ["LDF-6"] none 完成:CSV、索引、事实源矩阵和人工试运行报告已回填;部署 commit ab5ab4d;公网 https://oa.hyinda.com /ready、public bundle、live smoke、PDF live OCR、移动/企微矩阵和 CASHV 短窗口均通过;最终 payment_batch_v1=flag_force_off;下一步为 FIN-PROD-ENABLE 正式常开和 ACCOUNTING-HANDOFF-V1 代账交接 SOP。