H1-H10 优化OCR实时体验闭环

这个提交包含在:
2026-05-09 11:48:57 +08:00
父节点 549bd81e30
当前提交 c26cf9b954
共修改 34 个文件,包含 1217 行新增和 184 行删除
+15 -6
查看文件
@@ -104,12 +104,21 @@ LIVE_SMOKE_BASE_URL=https://oa.hyinda.com bash scripts/qa/run-live-smoke-readine
1. 上传接口是否成功返回 invoice id。
2. 发票是否进入 `pending_ocr`。
3. OCR job 是否运行。
4. OCR provider 是否为腾讯而不是 mock。
5. OCR 是否返回结构化字段。
6. 查重是否把发票转为不可添加。
7. 前端状态查询是否轮询并刷新。
8. 报销详情是否自动添加到明细。
3. 单票识别任务是否立即入队,周期任务是否只作为兜底。
4. OCR job 是否运行。
5. OCR provider 是否为腾讯而不是 mock。
6. OCR 是否返回结构化字段。
7. 查重是否把发票转为不可添加。
8. 前端事件流或轮询兜底是否触发刷新。
9. 报销详情是否自动添加到明细。
发布前可执行 pending OCR 扫描,定位卡住的票据:
```bash
node scripts/qa/check-pending-ocr.mjs --thresholds=2,5,10
```
脚本只输出票据 ID、上传时间、尝试次数和最后错误摘要,不读取票据文件内容。缺少 `DATABASE_URL` 时应输出 `SKIP`,不视为真实数据库健康检查通过。
## 公网与部署
+11
查看文件
@@ -0,0 +1,11 @@
"ID","Flow","Trigger","CurrentFeedback","AutoRefresh","TerminalStates","FailureReason","RetryEntry","IndustryBenchmark","Risk","SuggestedIssue","Notes"
"AUX-01","报销详情发票识别","员工上传 PDF/图片发票","上传成功后显示单一识别状态,识别完成后自动添加;事件流失败时轮询兜底","fetch-stream/SSE + 3s 轮询兜底","已添加、识别失败、重复、已用于报销","通过 availabilityMessage 展示业务原因","失败发票可重新识别或人工修正","合思/分贝通/每刻均强调票据识别、验真、查重和电子档案","真实腾讯 OCR 耗时和公网链路仍需 live smoke 证据","保留 H10 live OCR gate","本轮已作为主链路优化"
"AUX-02","票据中心发票验真","财务或有权限用户触发验真","详情页显示验真记录,pending 时轮询记录列表","React Query 轮询 pending 验真记录","通过、失败、异常","展示 provider 返回的 resultMessage 或 errorMessage","失败记录可重试验真","国内费控系统通常把识别、验真、查重作为连续可追踪流程","普通员工不应看到过多 provider 细节;财务侧可保留","新增验真 UX 断言 Issue","不在本轮改业务代码"
"AUX-03","支付批次执行","财务创建、复核并执行付款批次","批次页显示状态和操作结果 toast","依赖页面 refetch 和 focused regression","待复核、已复核、执行中、已执行、失败","失败路径由批次路由和回归脚本覆盖","失败后按批次状态重新处理","分贝通/合思强调企业支付、对账、归档闭环","执行中长耗时缺少实时进度和失败明细聚合","新增支付批次执行进度 Issue","需防 maker-checker 权限回归"
"AUX-04","ERP 凭证/主数据同步","付款、报销或主数据变更后进入 outbox","管理页和预览可查看 pending outbox","当前以后台 job 和页面刷新为主","pending、sent、failed、dead-letter","outbox 错误摘要可查","管理端可 retry outbox","同类系统强调 OA/HRM/ERP 连接和三流合一","普通业务页对同步中/同步失败提示较弱","新增 ERP 同步状态外显 Issue","外部 ERP live 回执仍是专项"
"AUX-05","用户/主数据导入","管理员上传导入文件","导入接口返回成功/失败摘要","通常一次 HTTP 完成;批量大时缺少任务化反馈","完成、部分失败、失败","行级错误摘要","修正文件后重新导入","国内 OA 常见批量导入需行级错误与可下载失败清单","大批量导入可能阻塞且反馈不连续","新增导入任务化与错误清单 Issue","需先盘点现有导入入口"
"AUX-06","审批处理与移动离线队列","审批人在 PC/移动端通过、驳回、转交","操作后 toast 和列表刷新;移动离线队列有回放机制","页面 refetch;离线队列恢复后重放","已处理、待处理、失败、冲突","权限/状态冲突显示错误","失败后重新提交操作","国内 OA 强调移动审批效率和全程留痕","多人并发和代理审批 live 证据不足","新增审批并发与代理 live smoke Issue","不在本轮改 workflow 状态机"
"AUX-07","附件材料上传","报销草稿或驳回状态上传附件","显示上传结果和附件列表","上传完成后 refetch 详情","已上传、失败、已删除","上传失败显示错误","重新选择文件上传","行业实践区分发票凭证和附件材料","移动弱网下缺分片/重试进度;PDF 与图片入口需清楚","新增附件弱网与视觉断言 Issue","需保持附件不参与发票识别和查重"
"AUX-08","通知与 IM 投递","审批、报销状态变化或系统消息触发","站内通知列表显示未读;外部 IM 依赖配置","前端查询通知;外部投递后台处理","未读、已读、投递失败","后台日志或 outbox 错误","管理端/脚本重试","国内 OA 强调消息可达和待办闭环","真实企业微信消息投递证据不足","新增 IM 投递 live smoke Issue","真实企业微信登录由人工验收"
"AUX-09","预算/费用标准预检","提交报销或采购前触发预检","页面展示预算、标准和风险提示","多为提交前即时计算","通过、提示、阻断","以业务文案展示不合规原因","修改明细后重新预检","费控最佳实践强调事前管控","普通用户对阻断原因和修改建议仍可增强","新增提交前预检解释 Issue","不顺手改当前费用规则"
"AUX-10","公网 live smoke 与发布门禁","部署后执行公网 ready、资源扫描、OCR 样本和网页 smoke","脚本输出 pass 或明确 SKIP 缺项","命令式检查,不依赖页面自动刷新","通过、失败、跳过","缺账号/缺样本/公网异常","补齐环境变量后重跑","上线前必须保留真实链路证据","缺账号或样本时容易误以为已覆盖真实链路","保留 H10 发布门禁","本轮脚本已加入 pending OCR 扫描"
1 ID Flow Trigger CurrentFeedback AutoRefresh TerminalStates FailureReason RetryEntry IndustryBenchmark Risk SuggestedIssue Notes
2 AUX-01 报销详情发票识别 员工上传 PDF/图片发票 上传成功后显示单一识别状态,识别完成后自动添加;事件流失败时轮询兜底 fetch-stream/SSE + 3s 轮询兜底 已添加、识别失败、重复、已用于报销 通过 availabilityMessage 展示业务原因 失败发票可重新识别或人工修正 合思/分贝通/每刻均强调票据识别、验真、查重和电子档案 真实腾讯 OCR 耗时和公网链路仍需 live smoke 证据 保留 H10 live OCR gate 本轮已作为主链路优化
3 AUX-02 票据中心发票验真 财务或有权限用户触发验真 详情页显示验真记录,pending 时轮询记录列表 React Query 轮询 pending 验真记录 通过、失败、异常 展示 provider 返回的 resultMessage 或 errorMessage 失败记录可重试验真 国内费控系统通常把识别、验真、查重作为连续可追踪流程 普通员工不应看到过多 provider 细节;财务侧可保留 新增验真 UX 断言 Issue 不在本轮改业务代码
4 AUX-03 支付批次执行 财务创建、复核并执行付款批次 批次页显示状态和操作结果 toast 依赖页面 refetch 和 focused regression 待复核、已复核、执行中、已执行、失败 失败路径由批次路由和回归脚本覆盖 失败后按批次状态重新处理 分贝通/合思强调企业支付、对账、归档闭环 执行中长耗时缺少实时进度和失败明细聚合 新增支付批次执行进度 Issue 需防 maker-checker 权限回归
5 AUX-04 ERP 凭证/主数据同步 付款、报销或主数据变更后进入 outbox 管理页和预览可查看 pending outbox 当前以后台 job 和页面刷新为主 pending、sent、failed、dead-letter outbox 错误摘要可查 管理端可 retry outbox 同类系统强调 OA/HRM/ERP 连接和三流合一 普通业务页对同步中/同步失败提示较弱 新增 ERP 同步状态外显 Issue 外部 ERP live 回执仍是专项
6 AUX-05 用户/主数据导入 管理员上传导入文件 导入接口返回成功/失败摘要 通常一次 HTTP 完成;批量大时缺少任务化反馈 完成、部分失败、失败 行级错误摘要 修正文件后重新导入 国内 OA 常见批量导入需行级错误与可下载失败清单 大批量导入可能阻塞且反馈不连续 新增导入任务化与错误清单 Issue 需先盘点现有导入入口
7 AUX-06 审批处理与移动离线队列 审批人在 PC/移动端通过、驳回、转交 操作后 toast 和列表刷新;移动离线队列有回放机制 页面 refetch;离线队列恢复后重放 已处理、待处理、失败、冲突 权限/状态冲突显示错误 失败后重新提交操作 国内 OA 强调移动审批效率和全程留痕 多人并发和代理审批 live 证据不足 新增审批并发与代理 live smoke Issue 不在本轮改 workflow 状态机
8 AUX-07 附件材料上传 报销草稿或驳回状态上传附件 显示上传结果和附件列表 上传完成后 refetch 详情 已上传、失败、已删除 上传失败显示错误 重新选择文件上传 行业实践区分发票凭证和附件材料 移动弱网下缺分片/重试进度;PDF 与图片入口需清楚 新增附件弱网与视觉断言 Issue 需保持附件不参与发票识别和查重
9 AUX-08 通知与 IM 投递 审批、报销状态变化或系统消息触发 站内通知列表显示未读;外部 IM 依赖配置 前端查询通知;外部投递后台处理 未读、已读、投递失败 后台日志或 outbox 错误 管理端/脚本重试 国内 OA 强调消息可达和待办闭环 真实企业微信消息投递证据不足 新增 IM 投递 live smoke Issue 真实企业微信登录由人工验收
10 AUX-09 预算/费用标准预检 提交报销或采购前触发预检 页面展示预算、标准和风险提示 多为提交前即时计算 通过、提示、阻断 以业务文案展示不合规原因 修改明细后重新预检 费控最佳实践强调事前管控 普通用户对阻断原因和修改建议仍可增强 新增提交前预检解释 Issue 不顺手改当前费用规则
11 AUX-10 公网 live smoke 与发布门禁 部署后执行公网 ready、资源扫描、OCR 样本和网页 smoke 脚本输出 pass 或明确 SKIP 缺项 命令式检查,不依赖页面自动刷新 通过、失败、跳过 缺账号/缺样本/公网异常 补齐环境变量后重跑 上线前必须保留真实链路证据 缺账号或样本时容易误以为已覆盖真实链路 保留 H10 发布门禁 本轮脚本已加入 pending OCR 扫描
@@ -43,9 +43,9 @@
## 票据上传
- 拍照上传入口打开摄像头。
- 选择图片入口打开相册或文件选择,支持 JPG、PNG、WEBP。
- 选择 PDF 入口不应直接打开摄像头,应允许选择 PDF 文件。
- 报销详情“添加发票”上传页应同时提供“拍照或选图片”和“选择 PDF/文件”两个入口。
- “拍照或选图片”入口可打开摄像头或相册,支持 JPG、PNG、WEBP。
- “选择 PDF/文件”入口不应直接打开摄像头,应允许选择 PDF 文件;在企业微信里重点记录是否能进入系统文件选择器。
- 上传后显示当前文件名、上传进度或失败原因。
- 网络中断或失败时有明确提示,可重试。