文件
hyb-oa/issues/2026-05-16_10-15-21-p2-ocr-image-sample-governance.csv
T

11 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2P2OCRS-0P2-OCR-SAMPLE 合同建档建立图片 OCR 样票治理和实现前置确认合同;范围限定 Issue CSV、既有事实源状态回填和只读核对,不开放图片 OCR,不改业务 API/schema/UI,不部署。1) CSV 校验通过;2) 本轮不新增业务 API、schema、feature flag、前端入口或 OCR 能力;3) 发票/OCR 正式入口继续 PDF-only;4) 不保存真实票据或敏感字段;5) 后续 P2-OCR-V1 必须另建实现合同。受影响流程:员工上传发票、附件图片上传、真实 OCR 样票回归和后续 P2-OCR 派工;验证步骤:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_10-15-21-p2-ocr-image-sample-governance.csv;人工核对本 CSV 不包含业务代码、API/schema、部署、生产恢复、数据库重置或 secret/env 打印。python3|manualDONEDONEDONEissues/2026-05-16_10-15-21-p2-ocr-image-sample-governance.csv[]ScopeLock=DONE; CSV initial validation passed; scope limited to issues/docs read-only evidence; no API/schema/UI/feature flag/runtime/deploy/prod restore/db reset/secret or env print; rollback=delete this CSV and doc status updates before commit.
3P2OCRS-1当前 OCR 边界审计只读核对当前 OCR 边界:PDF-only 上传入口、附件图片规则、腾讯云 image_native 分支、live OCR 脚本和批量样票回归口径。1) PDF-only 当前验收口径清楚;2) 图片仍作为普通附件,不参与 OCR 或查重;3) 代码存在 image_native 不等于产品已开放;4) live OCR 批量脚本当前仅采集 PDF;5) 结论写入 Notes。受影响流程:PC/移动发票上传 -> OCR -> 查重 -> 报销添加;附件图片上传 -> 仅作为材料;验证步骤:rg -n '图片 OCR|PDF-only|SAMPLE-IMG|授权图片|image_native|PLAYWRIGHT_OCR_LIVE|真实 OCR|SKIP' docs issues server/src client/tests scripts;人工核对 docs/需求-报销发票OCR规约.md、docs/报销发票附件规则.md、client/tests/e2e/manual/live-invoice-ocr-batch.spec.ts 和 server/src/services/ocr/tencent.js。rg|manualDONEDONEDONEdocs/需求-报销发票OCR规约.md|docs/报销发票附件规则.md|server/src/services/ocr/tencent.js|client/tests/e2e/manual/live-invoice-ocr-batch.spec.ts|scripts/qa["P2OCRS-0"]Audit=DONE; docs keep PDF-only current acceptance and images as normal attachments; server Tencent transport has image_native branch for non-PDF but product入口未开放; live-invoice-ocr and batch scripts require/collect PDF files; no provider call was made.
4P2OCRS-2授权图片样票登记口径确认图片样票治理登记口径:使用 SAMPLE-IMG-* 稳定别名,仓库外保存真实文件名映射、来源授权、用途、授权人和有效期;仓库内只写摘要。1) 样票别名规则明确;2) 真实文件名和原件不进入 git;3) Issue/报告只记录授权摘要或外部登记位置;4) 无授权图片样票时真实图片 OCR 只能 SKIP;5) 不读取或输出真实票面内容。受影响流程:后续 P2-OCR 图片样票准备 -> 真实 provider 回归 -> 证据归档;验证步骤:人工核对 docs/报销发票附件规则.md 的样票授权规则和 P2D-3 前置条件;如仓库内无授权图片样票登记,记录 HOLD_FOR_SAMPLE,不伪造 PASS。manual|rgDONEDONEDONEdocs/报销发票附件规则.md|issues/2026-05-16_00-19-21-p2-decision-followup.csv["P2OCRS-1"]SampleAlias=DONE; rule confirmed: use SAMPLE-IMG-* alias and keep real filename/source/authorization mapping outside repo; repo-visible evidence has authorized PDF sample baseline but no authorized image sample registry; do not read or print invoice content.
5P2OCRS-3脱敏与证据规则固定图片 OCR 样票脱敏和证据输出规则,禁止提交真实票面、手机号、税号明文、二维码、完整截图或敏感业务备注。1) 脱敏字段最小化规则清楚;2) 报告只允许记录别名、格式、大小、类别、OCR 状态、字段命中摘要和失败原因;3) artifacts/output 不得包含未脱敏票面;4) 自动截图如含敏感信息必须移出仓库外;5) 规则写入 Notes。受影响流程:样票脱敏 -> OCR 回归 -> 报告归档;验证步骤:人工核对 docs/报销发票附件规则.md 样票脱敏和授权章节;rg -n '脱敏|SAMPLE-IMG|真实票据|敏感字段|不得提交' docs/报销发票附件规则.md docs/需求-报销发票OCR规约.md。manual|rgDONEDONEDONEdocs/报销发票附件规则.md|docs/需求-报销发票OCR规约.md["P2OCRS-2"]EvidencePolicy=DONE; reports may contain alias/format/size/category/status/field-hit summary/failure reason only; no raw invoice, sensitive field plaintext, QR code or full invoice screenshot; no new sample artifact in this round.
6P2OCRS-4provider 回归设计设计图片 OCR provider 回归口径,区分 mock、腾讯云真实 provider、PDF 基线和图片样票结论;本轮不调用真实图片 OCR。1) mock 与真实 provider 结论分离;2) PDF live OCR 基线不代表图片 OCR 通过;3) provider 图片回归必须使用授权图片样票;4) 无授权图片样票记 SKIP;5) 字段归一化、失败、重复和人工复核均有后续验收口径。受影响流程:图片样票 -> provider 识别 -> 字段归一化 -> 查重 -> 人工复核;验证步骤:人工核对 docs/试运行与自动化验证手册.md 批量样票 OCR 回归设计和 docs/需求-报销发票OCR规约.md BIZ8 图片 OCR 可行性设计;不执行真实 provider 图片调用。manual|rgDONEDONEDONEdocs/试运行与自动化验证手册.md|docs/需求-报销发票OCR规约.md|client/tests/e2e/manual/live-invoice-ocr-batch.spec.ts["P2OCRS-3"]ProviderPlan=DONE; mock/PDF live/image real provider conclusions must be separated; current PDF live baseline remains valid but does not prove image OCR; real image provider regression requires authorized image sample and must be SKIP without it; no image provider call was made.
7P2OCRS-5图片 OCR flag 与回滚方案仅设计图片 OCR 入口控制、feature flag 和回滚口径;本轮不创建或启用新 flag。1) 当前 PDF-only allowlist 保持不变;2) 后续实现必须能关闭图片入口和图片 OCR flag;3) 回滚后图片按识别失败或人工复核处理,不自动转为附件;4) 不恢复拍照直传或 capture 默认入口;5) 不影响现有附件图片规则。受影响流程:后续图片 OCR 实现 -> 开关启停 -> 回滚 -> PDF-only 恢复;验证步骤:人工核对 OCR 规约中入口控制和回滚建议;rg -n 'feature flag|PDF-only|capture|回滚|图片入口' docs/需求-报销发票OCR规约.md docs/报销发票附件规则.md client/src server/src。manual|rgDONEDONEDONEdocs/需求-报销发票OCR规约.md|docs/报销发票附件规则.md|client/src|server/src["P2OCRS-4"]FlagPlan=DONE; keep PDF-only allowlist; future implementation needs controlled image invoice entry, feature flag and rollback to PDF-only; no capture default restoration; no new flag or runtime behavior in this round.
8P2OCRS-6PDF-only 兼容验收确认图片样票治理不改变现有 PDF-only 上传、查重、OCR 失败、重复票据和人工复核口径。1) 正式发票上传仍只接受 PDF;2) 图片附件不参与 OCR/查重;3) PDF live OCR 基线继续独立;4) 未运行真实图片 OCR;5) 如后续实现触及代码,必须补前后端回归。受影响流程:PDF 发票上传 -> OCR -> 查重 -> 添加报销;图片附件上传 -> 材料查看;验证步骤:rg -n 'pdf_invoice_required|accept|application/pdf|image/png|附件不参与 OCR|file_sha256' server/src client/src client/tests docs;本轮不跑会写公网数据的图片 OCR。rg|manualDONEDONEDONEserver/src|client/src|client/tests|docs["P2OCRS-5"]Compatibility=DONE; server invoicePool keeps application/pdf and pdf_invoice_required; client invoice inputs use PDF_FILE_ACCEPT while attachment inputs still allow images; docs state attachment images do not participate in OCR/dedup; no code change and no public write.
9P2OCRS-7样票治理决策输出输出 P2-OCR-SAMPLE 结论:GO_TO_IMPLEMENT、HOLD_FOR_SAMPLE 或 FREEZE;只有授权图片样票、脱敏、provider 回归和回滚方案都具备时才能进入 P2-OCR-V1。1) 结论使用统一枚举;2) GO_TO_IMPLEMENT 必须列出已具备前置;3) HOLD_FOR_SAMPLE 必须列出缺口;4) FREEZE 必须说明业务冻结理由;5) 结论不得自动启动实现。受影响流程:P2-OCR 后续派工;验证步骤:人工核对 P2OCRS-1..6 结论,按 Decision=<GO_TO_IMPLEMENT|HOLD_FOR_SAMPLE|FREEZE>; Rationale=<原因>; Prereq=<前置>; NextContract=<P2-OCR-V1|N/A>; Rollback=<回滚口径>; TestScope=<验收口径> 写入 Notes。manualDONEDONEDONEissues/2026-05-16_10-15-21-p2-ocr-image-sample-governance.csv["P2OCRS-1","P2OCRS-2","P2OCRS-3","P2OCRS-4","P2OCRS-5","P2OCRS-6"]Decision=HOLD_FOR_SAMPLE; Rationale=PDF live OCR baseline, employee OCR credentials and Tencent image_native technical path are available, but authorized image sample registry and real image provider regression evidence are not yet present in repo-safe evidence; Prereq=authorized SAMPLE-IMG alias, desensitization confirmation, provider image regression account/window, field normalization evidence, image OCR flag proposal and PDF-only regression; NextContract=P2-OCR-V1 only after prereq pass; Rollback=do not implement/enable image OCR now, keep PDF-only; TestScope=PDF no regression, image mock and real provider separated, no authorized image sample means SKIP not PASS.
10P2OCRS-8收口回填与中文提交回填 P2-OCR-SAMPLE CSV、文档索引、事实源矩阵和人工试运行报告,执行最终校验并提交中文 commit。1) CSV 状态真实回填;2) docs/文档索引.md、docs/文档事实源状态矩阵.md、docs/trialrun/人工试运行报告.md 必要状态已更新;3) validate、audit-docs、rg 和 git diff --check 通过;4) 中文 commit 引用 P2OCRS;5) 明确未部署。流程级验证:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-16_10-15-21-p2-ocr-image-sample-governance.csv;node scripts/qa/audit-docs.mjs --check-registry;rg -n 'P2OCRS|P2-OCR-SAMPLE|图片 OCR|PDF-only|SAMPLE-IMG|HOLD_FOR_SAMPLE|GO_TO_IMPLEMENT|FREEZE|image_native|真实 OCR|SKIP' docs issues server/src client/tests scripts;git diff --check;git status --short。python3|node|rg|git|manualDONEDONEDONEissues/2026-05-16_10-15-21-p2-ocr-image-sample-governance.csv|docs/文档索引.md|docs/文档事实源状态矩阵.md|docs/trialrun/人工试运行报告.md["P2OCRS-7"]Closeout=PASS; docs index/matrix/trial report updated; validate_issues_csv passed; audit-docs errors=0 warnings=1 with existing unregistered docs files=24; rg keywords可解释; git diff --check passed; not deployed; no public runtime change.