验证OCR关闭后的报销闭环(07-27-yang-jun-reimbursement-readiness)

这个提交包含在:
2026-07-27 20:54:19 +08:00
父节点 68600ec2d5
当前提交 9694179c25
共修改 7 个文件,包含 206 行新增和 14 行删除
+2 -1
查看文件
@@ -76,6 +76,7 @@
- [ ] `docker-compose -p "$COMPOSE_PROJECT_NAME" -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env exec -T server node src/scripts/smoke-external-deps.js`
- [ ] 若 external deps smoke 通过,已确认通过前提不是“企微关闭 + OCR mock”误通过
- [ ] 若启用腾讯 OCR,已脱敏核查 `OCR_PROVIDER=tencent`、`TENCENT_SECRET_ID` 长度、`TENCENT_SECRET_KEY` 长度和 `TENCENT_OCR_REGION`
- [ ] 若真实 OCR 未配置,已使用 `OCR_PROVIDER=off` 而不是 mock,并确认实际作业拓扑中的 server/worker 已重建;真实票据由财务查看 PDF 原件人工核对
- [ ] 若本次包含前端体验修复,已在容器内确认 `/app/client/dist` 含关键 test id 或公网 asset hash 已更新
- [ ] 公网 bundle 扫描确认包含匹配的 12 位构建标识,且不包含完整提交 SHA
- [ ] 登录验证已由 live smoke 与 release gate 覆盖;仅首次接入或第三方后台配置变更时补做人工确认
@@ -102,7 +103,7 @@
- [ ] 重启并探活:
- [ ] `docker-compose -p "$COMPOSE_PROJECT_NAME" -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build server`
- [ ] 已重新用 `docker-compose -p "$COMPOSE_PROJECT_NAME" ... port server 3000` 解析实际宿主端口并执行 `/ready`
- [ ] 若仅为 OCR 应急降级,已把远端 `.env` 的 `OCR_PROVIDER` 临时切回 `mock`,重启 server,并在 Issue/发布记录中写明原因、影响范围和恢复时间
- [ ] 若仅为 OCR 应急降级,已把远端 `.env` 的 `OCR_PROVIDER` 切为 `off`,按实际作业拓扑重建 server/worker,并记录人工核对责任;不得把 mock 用于真实票据
+5 -4
查看文件
@@ -187,10 +187,11 @@ E2E_BASE_URL=https://oa.hyinda.com \
npx playwright test tests/e2e/manual/live-invoice-ocr.spec.ts --workers=1 --reporter=list --timeout=360000
```
回滚到 mock 只允许作为应急降级:
1. 在远端 `.env` 将 `OCR_PROVIDER=tencent` 改为 `OCR_PROVIDER=mock`。
2. 执行 `docker-compose -p "$COMPOSE_PROJECT_NAME" -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d server`。
3. 在 Issue/发布记录中写明降级原因、预计恢复时间和影响范围。
真实 OCR 不可用时降级到 off;mock 仅用于本地或明确隔离的合成测试:
1. 在远端 `.env` 将 `OCR_PROVIDER=tencent` 改为 `OCR_PROVIDER=off`。
2. 按现场作业拓扑重建服务:`JOBS_ENABLED=true` 且无独立 worker 时只重建 server;已有独立 worker 时同时重建 server 和 worker,不能凭空新增第二个作业执行器。
3. 验证新 PDF 直接进入 `available`、业务字段为空且 OCR 尝试为 0,并确认财务改为查看 PDF 原件人工核对。
4. 在当前 Trellis task 或发布记录中写明降级原因、预计恢复时间和影响范围。
## 1.5 备份与恢复演练(正式启用前必须完成)
> 数据库和文件存储必须使用同一批次成对备份;只有两份产物、完整性检查和 manifest 全部成功,才算一个可用恢复点。