BIZ8 设计批量OCR样票回归

这个提交包含在:
2026-05-13 18:52:10 +08:00
父节点 234d342466
当前提交 4dd7c73203
共修改 2 个文件,包含 36 行新增和 1 行删除
+35
查看文件
@@ -138,6 +138,41 @@ node scripts/qa/check-pending-ocr.mjs --thresholds=2,5,10
脚本只输出票据 ID、上传时间、尝试次数和最后错误摘要,不读取票据文件内容。缺少 `DATABASE_URL` 时应输出 `SKIP`,不视为真实数据库健康检查通过。
### BIZ8 批量样票 OCR 回归设计
批量样票回归用于判断真实 OCR provider、异步终态和失败复核路径是否稳定,不替代 PDF-only 当前验收,也不代表图片 OCR 已开放。
推荐分层:
| 层级 | 用途 | 通过口径 |
| --- | --- | --- |
| mock OCR | 验证上传、pending、状态刷新、失败提示和报销绑定流程 | 本地自动化通过;不得宣称真实 provider 通过 |
| pending OCR 扫描 | 识别卡住的 `pending_ocr` 票据 | `check-pending-ocr.mjs` 输出计数和摘要;缺 `DATABASE_URL` 记录 `SKIP` |
| 单张真实 OCR | 验证 live provider、凭据、网络和字段归一化 | 授权样票上传后进入可解释终态;重复票据可算可解释终态 |
| 批量真实 OCR | 验证多样票稳定性、失败率和错误分类 | 仅使用授权或脱敏样票;失败逐张记录并人工复核 |
批量真实 OCR 只能在满足以下条件后执行:
1. 样票已按 [报销发票附件规则](./报销发票附件规则.md) 完成授权、脱敏和别名登记。
2. 文件名使用样票别名,不使用真实供应商、客户、员工姓名或业务说明。
3. `PLAYWRIGHT_OCR_LIVE_FILE`、`PLAYWRIGHT_OCR_LIVE_FILES` 或 `PLAYWRIGHT_OCR_LIVE_DIR` 指向仓库外安全目录。
4. 批量报告只作为本地辅助复核;未经脱敏的 `artifacts/r70/live-ocr-batch-report.md` 不得提交。
5. 如缺少样票、凭据、授权或网络,只能记录 `SKIP` 和补测条件,不得标记 PASS。
示例命令:
```bash
cd client
PLAYWRIGHT_MANUAL=1 PLAYWRIGHT_OCR_LIVE=1 PLAYWRIGHT_OCR_LIVE_BATCH=1 PLAYWRIGHT_OCR_LIVE_DIR=<safe-sample-dir> npx playwright test tests/e2e/manual/live-invoice-ocr-batch.spec.ts --workers=1 --reporter=list
```
结果判读:
- `available` 或可解释的重复票据终态表示 OCR 链路可继续人工复核。
- `pending_ocr` 超过阈值必须结合 pending 扫描和 worker 日志排查,不能直接算失败或通过。
- `ocr_failed` 必须记录错误摘要、provider、样票别名和是否可重试,不记录完整票面字段。
- 批量样票结论必须区分 PDF、图片、mock 和真实 provider;图片 OCR 仍是后续候选,不进入当前 R7E 验收。
## 发布候选本地门禁
首轮主线 A8 复跑本地门禁时,需要先用本地回归参数启动服务,再执行回归脚本。推荐参数: