归档 B2 提交错误恢复任务(08-30-b2-submit-error-ocr-fallback)
这个提交包含在:
+1
@@ -100,6 +100,7 @@ PC 和移动卡片在未归属时显示明细下拉框和“确认关联”。
|
|||||||
- 应用异常时回滚到本轮部署前生产候选;本轮无 schema/数据迁移,已存在票据关系无需补偿。
|
- 应用异常时回滚到本轮部署前生产候选;本轮无 schema/数据迁移,已存在票据关系无需补偿。
|
||||||
- 2026-08-31 首次发布在 init、应用切换、`/ready` 和 runtime smoke 通过后,被公网文案扫描拦截:4 处用户文案含内部术语 `OCR`。应用已按合同回滚至 `0f3ecfa`。根因不是公网扫描器,而是本地 `check-ui-design-rules.mjs --strict` 未进入本 task Test Plan;热修后把它提升为所有用户可见前端文案变更的提交前标准门禁,并以四词 E2E 断言防止同类回归。
|
- 2026-08-31 首次发布在 init、应用切换、`/ready` 和 runtime smoke 通过后,被公网文案扫描拦截:4 处用户文案含内部术语 `OCR`。应用已按合同回滚至 `0f3ecfa`。根因不是公网扫描器,而是本地 `check-ui-design-rules.mjs --strict` 未进入本 task Test Plan;热修后把它提升为所有用户可见前端文案变更的提交前标准门禁,并以四词 E2E 断言防止同类回归。
|
||||||
- 2026-09-01 第二次发布通过全部静态门禁、init、切换、版本和公网文案扫描,但合成草稿发现 `manual_review` 确认弹窗内触发 B2 后,提交 mutation 的 `onError` 未清空 `submitConfirmPrecheck`,模态遮罩持续拦截票据卡片的“确认关联”;应用再次按合同回滚至 `0f3ecfa`。PC/移动修复均在错误回调先关闭确认弹窗,再延后一帧调用既有问题聚焦函数;回归必须覆盖 `manual_review` 和 `warn` 两种进入同一弹窗的路径,不能从 `pass` 预检直接调用提交来替代。
|
- 2026-09-01 第二次发布通过全部静态门禁、init、切换、版本和公网文案扫描,但合成草稿发现 `manual_review` 确认弹窗内触发 B2 后,提交 mutation 的 `onError` 未清空 `submitConfirmPrecheck`,模态遮罩持续拦截票据卡片的“确认关联”;应用再次按合同回滚至 `0f3ecfa`。PC/移动修复均在错误回调先关闭确认弹窗,再延后一帧调用既有问题聚焦函数;回归必须覆盖 `manual_review` 和 `warn` 两种进入同一弹窗的路径,不能从 `pass` 预检直接调用提交来替代。
|
||||||
|
- 2026-09-01 第三次发布候选 `1f3c344` 完整通过:pre/post migration 均 `pending=none`,init、runtime/external smoke、`/ready`、公网 bundle marker、文案扫描和备份合同刷新均 PASS。公网实际 JS bundle 配合合成 API 响应的 PC/移动 `manual_review` 与 `warn` 四条完整恢复链均通过;当前环境没有 live-smoke 登录凭据,且本轮禁止账号重置,因此未冒充员工创建生产数据库草稿。真实服务端 payload 与前端解析器的最后一次端到端验证由 0016/0017/0018 员工重提时观察:若仍出现“参数校验失败”则重新开启缺陷处理,出现结构化票据提示则合同闭合。
|
||||||
|
|
||||||
## 风险控制
|
## 风险控制
|
||||||
|
|
||||||
+1
@@ -57,3 +57,4 @@
|
|||||||
## 8. 回滚
|
## 8. 回滚
|
||||||
|
|
||||||
- [x] 两次公网验收失败均停止员工测试并回滚到 `0f3ecfa`;本轮无 migration/seed/flag 写入,真人报销和票据关系未修改,合成草稿已删除、合成票据已归档。
|
- [x] 两次公网验收失败均停止员工测试并回滚到 `0f3ecfa`;本轮无 migration/seed/flag 写入,真人报销和票据关系未修改,合成草稿已删除、合成票据已归档。
|
||||||
|
- [x] 第三次发布 `1f3c344` 成功:strict UI preflight、13/13 聚合体检、init、pre/post migration、runtime/external smoke、`/ready`、公网 bundle/文案扫描及备份合同刷新通过;PC/移动 × `manual_review`/`warn` 公网实际 bundle 合成回归 4/4 PASS,B2 与三张 rejected 真人单状态未变。
|
||||||
+1
-1
@@ -73,7 +73,7 @@
|
|||||||
- [x] 所有关联票据金额完整时继续硬拦申报超额;混合“有金额 + 降级无金额”进入人工核对而非错误的部分金额比较。
|
- [x] 所有关联票据金额完整时继续硬拦申报超额;混合“有金额 + 降级无金额”进入人工核对而非错误的部分金额比较。
|
||||||
- [x] 两项免票补助、Tencent 正常金额路径、B2 flag off、既有关联关系和 owner/submitter 写权限保持兼容。
|
- [x] 两项免票补助、Tencent 正常金额路径、B2 flag off、既有关联关系和 owner/submitter 写权限保持兼容。
|
||||||
- [x] 后端聚焦测试、前端错误解析与 PC/移动测试、typecheck/build、Prisma 校验及 Trellis/governance 门禁通过。
|
- [x] 后端聚焦测试、前端错误解析与 PC/移动测试、typecheck/build、Prisma 校验及 Trellis/governance 门禁通过。
|
||||||
- [ ] 面向员工的改动只有部署和公网合成验收通过后才告知可测试;生产部署、flag 写入和真人数据修改分别取得明确授权。
|
- [x] 面向员工的改动已在取得独立部署授权后发布;生产 `/ready` 与 bundle marker 为 `1f3c34417fd2`,公网实际 bundle 的 PC/移动 `manual_review` 与 `warn` 四条合成回归通过,B2 保持 `force_on + global`,真人单据未被技术验收修改。
|
||||||
|
|
||||||
## Test Plan
|
## Test Plan
|
||||||
|
|
||||||
+4
-4
@@ -3,7 +3,7 @@
|
|||||||
"name": "b2-submit-error-ocr-fallback",
|
"name": "b2-submit-error-ocr-fallback",
|
||||||
"title": "B2 提交错误可解释性与 OCR 降级合同核验",
|
"title": "B2 提交错误可解释性与 OCR 降级合同核验",
|
||||||
"description": "先只读确认生产 OCR 状态和真实提交阻断;必要时经独立授权应急回退 B2,再修复三类提交错误呈现及 OCR off 降级合同。",
|
"description": "先只读确认生产 OCR 状态和真实提交阻断;必要时经独立授权应急回退 B2,再修复三类提交错误呈现及 OCR off 降级合同。",
|
||||||
"status": "in_progress",
|
"status": "completed",
|
||||||
"dev_type": "fullstack",
|
"dev_type": "fullstack",
|
||||||
"scope": "server reimbursement submit/invoice linking, client PC/mobile error recovery, reimbursement OCR facts/spec",
|
"scope": "server reimbursement submit/invoice linking, client PC/mobile error recovery, reimbursement OCR facts/spec",
|
||||||
"package": "hyb-oa",
|
"package": "hyb-oa",
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"creator": "shunli",
|
"creator": "shunli",
|
||||||
"assignee": "shunli",
|
"assignee": "shunli",
|
||||||
"createdAt": "2026-08-30",
|
"createdAt": "2026-08-30",
|
||||||
"completedAt": null,
|
"completedAt": "2026-09-01",
|
||||||
"branch": null,
|
"branch": null,
|
||||||
"base_branch": "main",
|
"base_branch": "main",
|
||||||
"worktree_path": null,
|
"worktree_path": null,
|
||||||
@@ -29,6 +29,6 @@
|
|||||||
"docs/报销发票附件规则.md",
|
"docs/报销发票附件规则.md",
|
||||||
".trellis/spec/hyb-oa/reimbursement-invoice-ocr.md"
|
".trellis/spec/hyb-oa/reimbursement-invoice-ocr.md"
|
||||||
],
|
],
|
||||||
"notes": "生产只读确认 OCR_PROVIDER=tencent;0014 已完成关联并成功提交,历史失败 details 不可事后恢复。frontend-design 当前不可用,本轮经批准采用 ui-ux-pro-max + Playwright 替代门;全局错误语义色 token 化及视觉裁决 skill 引用修订作为后续治理债处理。",
|
"notes": "技术侧完成并于 2026-09-01 成功发布 1f3c344:B2 错误可解释性、OCR 降级、未归属票据恢复、无障碍与确认弹窗恢复均上线,公网实际 bundle 四条合成恢复链通过。当前无 live-smoke 登录凭据且禁止账号重置,因此真实服务端 payload 与前端解析器的最终端到端证据由 0016/0017/0018 员工重提继续观察;真人单据未被技术验收修改。",
|
||||||
"meta": {}
|
"meta": {}
|
||||||
}
|
}
|
||||||
在新工单中引用
屏蔽一个用户