10 行
9.6 KiB
CSV
10 行
9.6 KiB
CSV
"ID","Title","Description","Acceptance","Test_Method","Tools","Dev_Status","Review1_Status","Regression_Status","Files","Dependencies","Notes"
|
|
"CASHV-0","CASHIER-VOUCHER-V1 合同建档","建立正式启用前财务闭环与代账交接第一轮合同;锁定银行回单附件、管理员复核、出纳执行、ERP 冻结。","1) CSV 校验通过;2) 本轮不接真实支付接口、不接 ERP、不开放图片 OCR、不导入银行流水、不重置数据库;3) wangzhiling 作为出纳执行,wangshunli 作为管理员复核;4) payment_batch_v1 仍通过 feature flag 控制;5) 后续部署、正式常开和代账交接另建合同。","受影响流程:PRELAUNCH 收口 -> CASHIER-VOUCHER-V1 实现准备 -> 后续正式启用前财务闭环;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-17_09-04-37-cashier-payment-voucher-v1.csv;人工核对本轮边界。","python3|manual","DONE","DONE","DONE","issues/2026-05-17_09-04-37-cashier-payment-voucher-v1.csv","[]","完成:CSV 初始校验通过;本轮边界固定为 OA 内付款批次 + 银行回单附件 + 代账交接前置,不接真实支付/ERP,不开放图片 OCR;后续部署、正式常开和代账交接另建合同。"
|
|
"CASHV-1","现状审计与实现边界确认","核对付款批次状态机、AP 导出、报销付款字段、附件存储和权限边界,确认最小改动范围。","1) 确认 PaymentBatch/PaymentBatchItem 当前状态机和权限;2) 确认报销付款字段可承载凭证号/日期/渠道;3) 确认现有 storage 和附件模式可复用;4) 确认 AP 导出不打印隐私或回单原件;5) 审计结论写入 Notes。","受影响流程:付款批次创建/复核/执行 -> 报销 paid -> AP 导出 -> 审计;验证步骤:rg -n 'PaymentBatch|payment_voucher_no|EXPORT_AP_OPERATIONS|storage_path|risk.review.manage|payment.batch.manage' server/src server/prisma client/src docs issues。","rg|manual","DONE","DONE","DONE","server/src/routes/paymentBatches.js|server/src/routes/exports.js|server/prisma/schema.prisma|client/src/pages/PaymentBatchesPage.tsx","[""CASHV-0""]","完成:现状确认 PaymentBatch 已有 maker-checker、payment.batch.manage/risk.review.manage、凭证号/付款日期/付款渠道、AP 导出和审计;storage/reimbursement attachment 模式可复用;AP 导出不输出回单原件。"
|
|
"CASHV-2","后端回单附件模型与 API","新增付款批次银行回单附件表与 API;复用现有 storage、上传大小限制和附件 MIME allowlist。","1) 新增 payment_batch_receipt_attachments Prisma 模型和 migration;2) GET/POST/GET file/DELETE 四个 API 受 payment_batch_v1 和权限保护;3) 支持 PDF/JPG/PNG/WEBP,遵守 maxUploadSizeBytes;4) 输出只含附件元数据,不直接输出 storage_path;5) 上传/下载/删除写审计。","受影响流程:出纳或管理员在付款批次详情上传银行回单 -> 查看附件列表 -> 下载回单 -> 删除未执行批次回单;验证步骤:cd server && npm run prisma:validate;cd server && node --check src/routes/paymentBatches.js;新增或扩展 paymentBatches 单测覆盖上传/下载/删除/MIME/大小/权限。","npm|node|vitest","DONE","DONE","DONE","server/prisma/schema.prisma|server/prisma/migrations/20260517090437_cashier_payment_receipts/migration.sql|server/src/routes/paymentBatches.js|server/tests/unit/routes/paymentBatches.reimbursement.test.js","[""CASHV-1""]","完成:新增 PaymentBatchReceiptAttachment 模型、migration 和四个 API;元数据不暴露 storage_path;审计动作 PAYMENT_BATCH_RECEIPT_UPLOADED/DOWNLOADED/DELETED;node --check 和 prisma validate 通过。"
|
|
"CASHV-3","付款凭证填写与执行硬化","调整付款批次 item 更新规则,允许出纳在批次 reviewed/failed 且 item 未 executed 前补填凭证号、付款日期和付款渠道;银行渠道执行前必须有回单附件。","1) draft/reviewed/failed 批次的 pending/failed item 可补凭证字段;2) executed/cancelled 批次不可改;3) bank 渠道执行前至少存在一份回单附件;4) 非 bank 渠道不强制回单;5) 错误返回可解释 409。","受影响流程:复核后网银付款 -> 补凭证 -> 上传回单 -> 执行 OA 已付款;验证步骤:cd server && npm test -- tests/unit/routes/paymentBatches.reimbursement.test.js;核对 invalid 状态和无回单阻断。","npm|vitest","DONE","DONE","DONE","server/src/routes/paymentBatches.js|server/tests/unit/routes/paymentBatches.reimbursement.test.js","[""CASHV-2""]","完成:PATCH item 支持 reviewed/failed 未执行项补凭证;bank 渠道执行前无回单返回 409 receiptAttachments=bank_receipt_required;paymentBatches 单测 7 passed。"
|
|
"CASHV-4","前端付款批次回单附件体验","在付款批次详情页增加银行回单附件上传、查看、下载、删除;文案明确先网银付款,再上传回单并执行 OA 已付款标记。","1) 批次详情显示银行回单附件区;2) 出纳/管理员可上传 PDF/JPG/PNG/WEBP;3) 可下载附件且不暴露 storage_path;4) 批次执行后不允许删除回单;5) reviewed/failed 批次仍可编辑未执行 item 的凭证字段。","受影响流程:付款批次详情 PC 财务操作;验证步骤:cd client && npm run typecheck && npm run build;必要时补付款批次 E2E 断言。","npm|playwright","DONE","DONE","DONE","client/src/api/paymentBatches.ts|client/src/pages/PaymentBatchesPage.tsx|client/tests/e2e/reimbursement-payment-batch-flow.spec.ts","[""CASHV-3""]","完成:PaymentBatchesPage 增加银行回单附件区,支持选择/上传/下载/删除;reviewed/failed 未执行项可补凭证;client typecheck/build 通过;E2E 已上传 r78-bank-receipt.pdf 后执行付款。"
|
|
"CASHV-5","权限审计与管理员复核口径","按用户确认,wangzhiling 出纳执行,wangshunli 管理员复核;员工/审批人不可访问付款批次和回单附件。","1) admin wildcard 可作为复核人但 maker-checker 仍阻止创建人自审;2) employee/manager 无付款批次回单访问权限;3) 上传/下载/删除/复核/执行/导出审计可查;4) 不因 admin 角色开放普通员工入口;5) Notes 明确管理员复核是业务选择。","受影响流程:权限直连 -> 管理员复核 -> 出纳执行 -> 审计;验证步骤:cd client && E2E_BASE_URL=<local-or-isolated-url> npx playwright test tests/e2e/permission-direct-access.spec.ts --workers=1 --reporter=list;单测覆盖回单权限负例。","playwright|vitest|manual","DONE","DONE","DONE","server/src/routes/paymentBatches.js|client/tests/e2e/reimbursement-payment-batch-flow.spec.ts|docs/trialrun/人工试运行报告.md","[""CASHV-4""]","完成:权限继续复用 payment.batch.manage/risk.review.manage;admin wildcard 可复核但 maker-checker 仍生效;employee/manager 无付款批次入口和回单 API 权限;管理员复核为用户明确业务选择,审计可追踪;governance 业务流 9 passed,报告 artifacts/qa-flow/business-flow-20260517-092824/summary.txt。"
|
|
"CASHV-6","回归与独立 review","因涉及 Prisma migration、权限、财务状态和审计,执行后端、前端和 reviewer 复核。","1) prisma validate 通过;2) node --check 通过;3) paymentBatches/exports/financeLedger focused 单测通过;4) client typecheck/build 通过;5) reviewer 无阻断或已修复。","受影响流程:付款批次、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。","npm|node|manual","DONE","DONE","DONE","server/src|client/src|server/tests|client/tests|artifacts/qa-flow/business-flow-20260517-091904|artifacts/qa-flow/business-flow-20260517-092824","[""CASHV-5""]","完成:prisma validate PASS;node --check PASS;focused 单测 3 files/12 tests passed;client typecheck/build PASS;本地隔离 reimbursement 业务域 10 passed/1 skipped,付款批次 E2E 覆盖回单上传后执行;governance 业务域 9 passed 覆盖权限直连和设置治理;自审未发现权限/状态机阻断。"
|
|
"CASHV-7","收口回填与提交","回填 CASHV CSV、索引、事实源矩阵和人工试运行报告,执行最终门禁并提交中文 commit。","1) 各行按证据回填 DONE 或保留 TODO 并说明原因;2) docs/文档索引.md、docs/文档事实源状态矩阵.md、docs/trialrun/人工试运行报告.md 状态更新;3) validate、audit-docs、rg、git diff --check 通过;4) 中文 commit 引用 CASHV;5) 明确未部署和后续 LAUNCH-DEPLOY-FINANCE/FIN-PROD-ENABLE/ACCOUNTING-HANDOFF-V1。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-17_09-04-37-cashier-payment-voucher-v1.csv;node scripts/qa/audit-docs.mjs --check-registry;rg -n 'CASHV|CASHIER-VOUCHER|银行回单|payment_batch_receipt|代账|payment_batch_v1|erp_sync' docs issues server client;git diff --check;git status --short。","python3|node|rg|git","DONE","DONE","DONE","issues/2026-05-17_09-04-37-cashier-payment-voucher-v1.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md","[""CASHV-6""]","完成:CSV/docs 已回填;validate、audit-docs、rg 和 git diff --check 已执行,audit-docs 仅保留既有 unregistered docs warning;未部署,公网 payment_batch_v1 状态未改变;后续固定为 LAUNCH-DEPLOY-FINANCE -> FIN-PROD-ENABLE -> ACCOUNTING-HANDOFF-V1。"
|