文件
hyb-oa/issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv
T

20 行
18 KiB
CSV

ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
BIZ8-0,BIZ8 连续合同建档,"建立报销、OCR、财务和项目轻量增强连续型合同,避免 OCR、票据、财务导出、费用提示和项目关联散落到多个小 CSV。","1) 本 CSV 校验通过;2) 文档索引和状态矩阵指向本合同;3) 不进入 ERP 实时集成或重预算;4) 不改业务代码;5) 真实 OCR 和样票需授权。","流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv;rg -n 'BIZ8|OCR|财务|项目' docs/文档索引.md docs/文档事实源状态矩阵.md issues/README.md。",python3|rg|manual,DONE,DONE,DONE,issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|issues/README.md,[],CSV validator 和索引 rg 均通过;本次仅合同建档和入口登记,未改业务代码,真实 OCR 和样票仍需授权。
BIZ8-1,业务增强需求规约更新,"复核报销、发票、OCR、财务、费用提示和项目轻管理规约,明确 BIZ8 当前做与不做。","1) PDF-only 当前口径清楚;2) 图片 OCR 仅做可行性设计或明确不做;3) ERP 和重预算冻结;4) 财务和项目权限边界清楚。","流程级验证:rg -n 'PDF|图片 OCR|发票|财务|费用|项目|ERP|预算' docs/报销发票附件规则.md docs/需求-报销发票OCR规约.md docs/需求-项目轻管理规约.md docs/海音达OA-MVP需求规格说明书.md。",rg|manual,DONE,DONE,DONE,docs/报销发票附件规则.md|docs/需求-报销发票OCR规约.md|docs/需求-项目轻管理规约.md|docs/海音达OA-MVP需求规格说明书.md,"[""BIZ8-0""]",rg 复核通过;PRD、报销 OCR 规约、报销附件规则和项目轻管理规约已覆盖 PDF-only、图片 OCR 后续设计、ERP/预算冻结、财务付款导出和项目轻量权限边界;未改业务代码。
BIZ8-2,PDF-only 当前口径复核,"复核当前 OCR 是否仍以 PDF-only 为验收口径,避免把未实现图片 OCR 误报为能力。","1) 当前支持格式清楚;2) 页面提示和后端校验一致;3) 测试样例可复现;4) 不承诺未实现格式。","流程级验证:上传 PDF 和非 PDF 样例 -> 检查校验、提示和 OCR 状态;rg 当前 OCR 文档口径。",manual|node|playwright,DONE,DONE,DONE,docs/需求-报销发票OCR规约.md|server/src|client/src,"[""BIZ8-1""]",后端 npm test -- tests/unit/routes/invoicePool.upload.test.js 通过 6 tests,覆盖 PDF 上传和 image/png 发票拒绝 pdf_invoice_required;前端 npx playwright test tests/e2e/r111-invoice-reimbursement-guard.spec.ts --workers=1 --reporter=list 通过 2 tests,覆盖 PC 和企业微信移动端 PDF 发票上传、图片附件分离和无拍照发票入口;rg 已确认文档继续保持 PDF-only 和图片 OCR 后续能力口径;未改业务代码。
BIZ8-3,图片 OCR 可行性设计,"设计图片 OCR 是否进入当前阶段,评估 provider、成本、准确率、样票授权和回滚路径。","1) provider 和 SDK 选择清楚;2) 样票授权和脱敏规则明确;3) 不影响 PDF OCR;4) 不做 AI 自动处理。","流程级验证:人工审查可行性设计;必要时用脱敏样票在非生产环境验证。",manual,DONE,DONE,DONE,docs/需求-报销发票OCR规约.md|docs/报销发票附件规则.md,"[""BIZ8-2""]",已在 docs/需求-报销发票OCR规约.md 增加 BIZ8 图片 OCR 可行性设计;官方资料复核腾讯云、阿里云、百度均支持图片或 PDF 发票识别,当前结论为技术可行但不开放正式能力;优先复用现有腾讯云通道,真实样票授权、脱敏、feature flag、字段归一化、审计和回滚条件满足后再开发;未改业务代码。
BIZ8-4,样票脱敏和授权规则,"定义真实 OCR 和批量回归所需样票的授权、脱敏、存放和引用规则。","1) 样票来源合法;2) 票据、公司、金额和个人信息按需脱敏;3) 仓库不提交敏感原件;4) 证据只记录路径和摘要。","流程级验证:人工核对样票授权记录和脱敏规则;rg 确认仓库未新增真实票据原件。",manual|rg,DONE,DONE,DONE,docs/报销发票附件规则.md|artifacts|output,"[""BIZ8-3""]",已在 docs/报销发票附件规则.md 增加样票脱敏和授权规则;要求授权登记在仓库外、真实票据原件不入 git、证据只记录别名摘要和路径、无授权样票时真实 OCR 回归只能 SKIP;本次未新增样票文件或业务代码。
BIZ8-5,批量样票回归设计,"设计 OCR 批量样票回归,区分 mock、真实 provider、pending OCR 和失败重试。","1) mock 与真实 provider 结论分离;2) pending OCR 不等于失败或通过;3) 阈值和样本数清楚;4) 失败有复核路径。","流程级验证:node scripts/qa/check-pending-ocr.mjs --thresholds=2,5,10;真实样票缺失时记录 SKIP。",node|manual,DONE,DONE,DONE,scripts/qa|docs/需求-报销发票OCR规约.md,"[""BIZ8-4""]",已在 docs/试运行与自动化验证手册.md 增加 BIZ8 批量样票 OCR 回归设计,区分 mock、pending 扫描、单张真实 OCR 和批量真实 OCR;node scripts/qa/check-pending-ocr.mjs 阈值 2/5/10 输出 [pending-ocr][SKIP] missing DATABASE_URL,按规则记录为非阻断 SKIP;当前无授权样票和凭据,未执行真实批量 OCR。
BIZ8-6,OCR 异步终态体验,"优化或验证 OCR 异步处理中、成功、失败、pending 和重试的页面体验。","1) 异步状态可解释;2) 用户知道是否需要等待或重试;3) 失败不阻塞无关流程;4) 移动端不重叠。","流程级验证:上传发票 -> 观察 OCR pending/success/failure -> PC 和移动查看报销详情状态。",playwright|node|manual,DONE,DONE,DONE,server/src|client/src|docs/产品设计规则.md,"[""BIZ8-5""]",npx playwright test tests/e2e/r111-invoice-reimbursement-guard.spec.ts --workers=1 --reporter=list 通过 2 tests;覆盖 PC 发票上传后 pending 轮询并自动添加、企业微信移动端 pending 提示、识别失败发票显示可删除后重新上传、图片附件分离和移动布局指标;未改业务代码或页面代码。
BIZ8-7,重复票据例外流程,"设计重复票据发现后的例外处理流程,避免误拦截合法场景或放过风险。","1) 重复提示清楚;2) 人工例外有权限和记录;3) 不绕过财务复核;4) 审计可追溯。","流程级验证:提交重复票据 -> 检查拦截或例外路径 -> 财务复核 -> 查看审计记录。",node|playwright|manual,DONE,DONE,DONE,server/src|client/src|docs/报销发票附件规则.md,"[""BIZ8-2""]",npm test -- tests/unit/invoiceGovernance.dedup.test.js tests/unit/routes/invoicePool.upload.test.js 通过 2 files 11 tests,覆盖重复可用票据复用、他人或已使用票据阻断和可理解提示;一次性 Fastify 注入验证 /api/invoice-pool/:id/override-duplicate 无 expense.finance.override_duplicate 权限返回 403,有权限时写 is_duplicate_override、原单号、原因和 INVOICE_DUPLICATE_OVERRIDDEN 审计;未改业务代码。
BIZ8-8,财务台账扫读性,"提升财务台账的扫读性,优先解决状态、金额、申请人、项目和票据提示的扫描效率。","1) 财务能快速识别待处理项;2) 状态和金额不混乱;3) 权限不泄露;4) PC 和移动布局可用。","流程级验证:财务查看台账 -> 筛选或扫读待付款报销 -> 检查状态、金额、申请人和票据提示。",playwright|npm|manual,DONE,DONE,DONE,client/src|server/src|docs/产品设计规则.md,"[""BIZ8-1""]",完成:财务台账读取链路补 project select/map;关键字搜索支持项目编号和名称;AP 台账表格展示项目名称和项目编号;AP 导出财务台账段增加项目列;不改付款状态机 不改权限 不引入 ERP 不改移动入口;验证 prisma validate 通过;node --check financeLedger apOperations exports 通过;server unit 2 files 3 tests passed;client typecheck/build 通过;Playwright biz8-ap-ledger-project 1 passed。
BIZ8-9,付款和导出增强,"增强或验证财务付款标记和导出路径,保证权限、状态和审计一致。","1) 只有财务可执行付款或导出;2) 状态转换合法;3) 导出不泄露无权限数据;4) 操作可追溯。","流程级验证:财务付款或导出 -> 普通员工和管理员直连复核 -> 检查状态和权限。",node|bash|manual,DONE,DONE,DONE,server/src|client/src|server/scripts,"[""BIZ8-8""]",完成:仅补强 AP export 权限单测和测试错误契约 不改业务代码;覆盖财务导出成功并写 EXPORT_AP_OPERATIONS 审计 普通员工和 admin-only 无财务权限导出 403 且不写审计;付款批次报销流保持 reviewed 到 paid invoice archived ERP outbox notification audit followup 一致;验证 prisma validate 通过;node --check exports paymentBatches financeLedger 通过;npm test exports.apOperations paymentBatches.reimbursement financeLedger 3 files 8 tests passed;继续冻结直接付款按钮 ERP 实时集成和新付款状态机。
BIZ8-10,费用提示轻量规则,"设计轻量费用提示规则,作为填报辅助而非重预算控制。","1) 提示不阻断合法报销;2) 规则来源清楚;3) 不承诺预算控制;4) 用户可理解。","流程级验证:填写不同金额或类型报销 -> 检查费用提示 -> 提交和审批不被误阻断。",manual|playwright,DONE,DONE,DONE,docs/报销发票附件规则.md|client/src|server/src,"[""BIZ8-1""]",已在 docs/需求-报销发票OCR规约.md 增加 BIZ8 费用提示轻量规则,明确材料提示、金额提示、费用标准 warn、费用标准 block 和预算提示边界;npm test -- tests/unit/services/expenseStandards.check.test.js tests/unit/routes/reimbursements.expense-standards.test.js 通过 2 files 9 tests,覆盖 warn 不阻断、block 阻断和 manual_review 优先级;未改业务代码。
BIZ8-11,项目关联增强,"增强报销、采购或合同与项目轻管理的关联,保持轻量不扩展成重型项目管理。","1) 项目选择和展示清楚;2) 无项目时可解释;3) 项目权限不泄露;4) 不扩展复杂 WBS。","流程级验证:创建或选择项目 -> 保存采购草稿 -> 项目负责人查看项目采购摘要 -> 采购详情权限直连复核;自动化覆盖 projectId 列表过滤 归档项目新关联拦截 已有关联不重复阻断 项目成员不能越过采购详情权限。",node|npm|git|manual,DONE,DONE,DONE,server/prisma|server/src|server/tests|client/src,"[""BIZ8-1""]",完成:采购新增 nullable project_id 外键 ON DELETE SET NULL 和索引;采购列表详情草稿更新补项目字段;新关联校验项目可读且未归档;已有项目无关编辑不重复阻断;项目详情新增轻量采购摘要;前端采购表单列表详情和项目详情补展示;验证 npm run prisma:validate 通过;node --check purchaseRequests projects 通过;npm test purchase.project-link projects purchase.submit-budget-precheck 3 files 12 tests passed;client typecheck 和 build 通过;git diff --check 通过;reviewer 已复核并修复阻断问题;回滚:代码回滚可保留 nullable 列,物理回滚需先 drop constraint purchase_requests_project_id_fkey 再 drop index idx_purchase_requests_project 再 drop column purchase_requests.project_id 且关联数据会丢失;继续冻结复杂 WBS 重预算 ERP 实时集成。
BIZ8-12,移动端业务入口评估,"评估报销、OCR、财务和项目轻量能力在移动端和企业微信入口的可用性。","1) 移动入口不重复;2) 企业微信入口回 OA;3) 财务敏感能力不误暴露;4) 新增入口进入移动矩阵。","流程级验证:员工和财务角色在移动端进入业务入口 -> 检查报销/OCR/项目状态和权限。",playwright|manual,DONE,DONE,DONE,client/src|docs/产品设计规则.md|docs/trialrun/真机公网测试清单.md,"[""BIZ8-8"",""BIZ8-11""]",自动化和代表真机均已完成:代码路径显示移动首页按权限裁剪报销 OCR 采购 资产入口 财务摘要仅财务角色可见 PC 财务路由在移动上下文回 /mobile;2026-05-14 修复 5491e92 已部署 public bundle findings=0 DG7+R124 公网移动矩阵 6 passed R7E_BROWSER_FLOW=mobile 通过并确认员工 审批人 财务移动入口可见且无横向滚动;2026-05-15 企业微信消息 deeplink 代表设备已可免登录回 OA;2026-05-15 19:31 f945c0b 已部署 /ready public bundle live smoke env 和 DG7+R124 公网移动矩阵通过;用户确认财务入口从 /mobile/me 直接定位到财务卡片并显示付款批次未启用;SMOKE301/SMOKE302 无企业微信不可作为企微成员。
BIZ8-12A,财务移动入口和付款未启用空态,"在移动首页和我的页补财务角色入口,并在 payment_batch_v1 关闭时展示付款批次未启用的明确状态,不启用付款能力。","1) 财务角色可在 /mobile 和 /mobile/me 找到财务入口;2) 非财务角色不显示财务入口;3) payment_batch_v1 关闭时不显示误导性待付款 0 或台账导出可用;4) 不改变权限和付款状态机。","流程级验证:cd server && node --check src/routes/portal.js;cd client && npm run typecheck && npm run build;cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list。",node|npm|playwright,DONE,DONE,DONE,client/src/pages/MobilePortalPage.tsx|client/src/pages/MobileMePage.tsx|client/src/api/portal.ts|server/src/routes/portal.js|client/tests/e2e,"[""BIZ8-12""]",本轮只开入口和解释性空态 不开启 payment_batch_v1 不修改 AP/payment-batches API 权限或状态机;公网付款闭环仍待功能门禁决策。
BIZ8-12B,财务移动入口定位修复,"修复财务角色在 /mobile/me 点击财务入口后只像回首页一样无法定位付款未启用提示的问题。","1) 财务入口仅财务角色可见;2) 点击后进入或定位到 /mobile 的财务卡片;3) 付款批次关闭时 mobile-finance-disabled-state 可见且文案清楚;4) 不开启付款批次或修改财务权限。","流程级验证:cd client && npm run typecheck && npm run build;cd client && npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts tests/e2e/r124-mobile-entry-matrix.spec.ts --workers=1 --reporter=list;wangzhiling 真机从 /mobile/me 点击财务入口。",npm|playwright|manual,DONE,DONE,DONE,client/src/pages/MobilePortalPage.tsx|client/src/pages/MobileMePage.tsx|client/tests/e2e,"[""BIZ8-12A""]",已部署并真机通过:2026-05-15 19:31 CST f945c0b 已通过 deploy/trialrun/deploy.sh 发布到 https://oa.hyinda.com 且 SYNC_ENV=0 未覆盖远端 .env;部署后 /ready 通过 public bundle findings=0 live smoke env ready DG7+R124 公网移动矩阵 6 passed;用户确认财务入口从 /mobile/me 直接定位到财务卡片并显示付款批次未启用。回滚路径:恢复财务入口旧跳转;不改后端 API 权限 payment_batch_v1 或付款状态机。
BIZ8-13,财务和项目权限回归,"回归财务台账、付款导出、项目关联和报销详情的权限边界。","1) 普通员工只能看自己的数据;2) 财务只看授权财务数据;3) 管理员不自动获得财务处理;4) 项目关联不越权。","流程级验证:不同角色直连财务、项目、报销详情和导出 API -> 检查允许和拒绝结果。",bash|node|manual,DONE,DONE,DONE,scripts/qa|server/src|client/src,"[""BIZ8-9"",""BIZ8-11"",""BIZ8-12"",""BIZ8-12A""]",2026-05-15 权限回归完成且无运行时代码变更:cd server && npm run prisma:validate 通过;cd server && npm test -- tests/unit/routes/exports.apOperations.test.js tests/unit/routes/paymentBatches.reimbursement.test.js tests/unit/routes/purchase.project-link.test.js tests/unit/routes/projects.test.js tests/unit/routes/workflow.permissions.test.js tests/unit/services/financeLedger.test.js 6 files 27 tests passed;cd client && E2E_BASE_URL=https://oa.hyinda.com npx playwright test tests/e2e/biz8-ap-ledger-project.spec.ts --workers=1 --reporter=list 1 passed。覆盖 AP 导出权限、付款批次门禁、项目关联权限、项目摘要可读性、workflow 权限映射和财务台账项目搜索;付款批次仍按 P2 延期且不启用。
BIZ8-14,BIZ8 收口准备,"整理 BIZ8 验证摘要、OCR 边界、财务和项目权限结论、未完成项。","1) DONE 行均有证据;2) OCR 真实与 mock 结论分离;3) 权限回归通过或有阻断;4) 未完成项不伪装完成。","流程级验证:人工核对 BIZ8 CSV 状态、验证摘要、OCR 证据和权限回归结果。",manual|git,DONE,DONE,DONE,issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv|docs/文档索引.md,"[""BIZ8-13""]",BIZ8 收口摘要完成:OCR/PDF-only 和重复票据可解释终态已分离记录;财务移动入口 BIZ8-12B 已由 wangzhiling 真机确认;权限回归 BIZ8-13 已通过;付款批次 payment_batch_v1 继续延期到 P2 不作为 BIZ8 阻断;不做 ERP 实时集成或重预算。
BIZ8-CLOSE,BIZ8 阶段 CLOSE,"阶段性关闭 BIZ8,完成状态回填、验证摘要和中文提交。","1) CSV 校验通过;2) git diff --check 通过;3) 所有 DONE 有命令或人工证据;4) 中文提交引用 BIZ8;5) 后续风险有归属。","流程级验证:validate_issues_csv.py 本 CSV;git diff --check;人工核对最终摘要。",python3|git|manual,DONE,DONE,DONE,issues/2026-05-13_18-23-53-biz8-finance-ocr-project.csv,"[""BIZ8-14""]",BIZ8 阶段关闭:报销/OCR/发票、财务台账/入口、费用提示和项目轻量关联均已完成并有证据;后续风险归属 P2:付款批次启用窗口、图片 OCR、ERP 实时集成和重预算控制均不得混入 R7E 收口。