From 4c8ee07abb9cb20e53bc180f736b8aa95f443cec Mon Sep 17 00:00:00 2001 From: shunli Date: Tue, 1 Sep 2026 14:34:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=92=E6=A1=A3=20B2=20=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=81=A2=E5=A4=8D=E4=BB=BB=E5=8A=A1=EF=BC=88?= =?UTF-8?q?08-30-b2-submit-error-ocr-fallback=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../08-30-b2-submit-error-ocr-fallback/check.jsonl | 0 .../2026-09}/08-30-b2-submit-error-ocr-fallback/design.md | 1 + .../08-30-b2-submit-error-ocr-fallback/implement.jsonl | 0 .../08-30-b2-submit-error-ocr-fallback/implement.md | 1 + .../2026-09}/08-30-b2-submit-error-ocr-fallback/prd.md | 2 +- .../2026-09}/08-30-b2-submit-error-ocr-fallback/task.json | 8 ++++---- 6 files changed, 7 insertions(+), 5 deletions(-) rename .trellis/tasks/{ => archive/2026-09}/08-30-b2-submit-error-ocr-fallback/check.jsonl (100%) rename .trellis/tasks/{ => archive/2026-09}/08-30-b2-submit-error-ocr-fallback/design.md (92%) rename .trellis/tasks/{ => archive/2026-09}/08-30-b2-submit-error-ocr-fallback/implement.jsonl (100%) rename .trellis/tasks/{ => archive/2026-09}/08-30-b2-submit-error-ocr-fallback/implement.md (95%) rename .trellis/tasks/{ => archive/2026-09}/08-30-b2-submit-error-ocr-fallback/prd.md (97%) rename .trellis/tasks/{ => archive/2026-09}/08-30-b2-submit-error-ocr-fallback/task.json (70%) diff --git a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/check.jsonl b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/check.jsonl similarity index 100% rename from .trellis/tasks/08-30-b2-submit-error-ocr-fallback/check.jsonl rename to .trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/check.jsonl diff --git a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/design.md b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/design.md similarity index 92% rename from .trellis/tasks/08-30-b2-submit-error-ocr-fallback/design.md rename to .trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/design.md index fa8a8f0c..6b1f1b69 100644 --- a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/design.md +++ b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/design.md @@ -100,6 +100,7 @@ PC 和移动卡片在未归属时显示明细下拉框和“确认关联”。 - 应用异常时回滚到本轮部署前生产候选;本轮无 schema/数据迁移,已存在票据关系无需补偿。 - 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 第三次发布候选 `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 员工重提时观察:若仍出现“参数校验失败”则重新开启缺陷处理,出现结构化票据提示则合同闭合。 ## 风险控制 diff --git a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/implement.jsonl b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/implement.jsonl similarity index 100% rename from .trellis/tasks/08-30-b2-submit-error-ocr-fallback/implement.jsonl rename to .trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/implement.jsonl diff --git a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/implement.md b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/implement.md similarity index 95% rename from .trellis/tasks/08-30-b2-submit-error-ocr-fallback/implement.md rename to .trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/implement.md index 5bfdbf84..ac793732 100644 --- a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/implement.md +++ b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/implement.md @@ -57,3 +57,4 @@ ## 8. 回滚 - [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 真人单状态未变。 diff --git a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/prd.md b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/prd.md similarity index 97% rename from .trellis/tasks/08-30-b2-submit-error-ocr-fallback/prd.md rename to .trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/prd.md index 49841e27..e0321f05 100644 --- a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/prd.md +++ b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/prd.md @@ -73,7 +73,7 @@ - [x] 所有关联票据金额完整时继续硬拦申报超额;混合“有金额 + 降级无金额”进入人工核对而非错误的部分金额比较。 - [x] 两项免票补助、Tencent 正常金额路径、B2 flag off、既有关联关系和 owner/submitter 写权限保持兼容。 - [x] 后端聚焦测试、前端错误解析与 PC/移动测试、typecheck/build、Prisma 校验及 Trellis/governance 门禁通过。 -- [ ] 面向员工的改动只有部署和公网合成验收通过后才告知可测试;生产部署、flag 写入和真人数据修改分别取得明确授权。 +- [x] 面向员工的改动已在取得独立部署授权后发布;生产 `/ready` 与 bundle marker 为 `1f3c34417fd2`,公网实际 bundle 的 PC/移动 `manual_review` 与 `warn` 四条合成回归通过,B2 保持 `force_on + global`,真人单据未被技术验收修改。 ## Test Plan diff --git a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/task.json b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/task.json similarity index 70% rename from .trellis/tasks/08-30-b2-submit-error-ocr-fallback/task.json rename to .trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/task.json index 5a10b9e9..2df5bb66 100644 --- a/.trellis/tasks/08-30-b2-submit-error-ocr-fallback/task.json +++ b/.trellis/tasks/archive/2026-09/08-30-b2-submit-error-ocr-fallback/task.json @@ -3,7 +3,7 @@ "name": "b2-submit-error-ocr-fallback", "title": "B2 提交错误可解释性与 OCR 降级合同核验", "description": "先只读确认生产 OCR 状态和真实提交阻断;必要时经独立授权应急回退 B2,再修复三类提交错误呈现及 OCR off 降级合同。", - "status": "in_progress", + "status": "completed", "dev_type": "fullstack", "scope": "server reimbursement submit/invoice linking, client PC/mobile error recovery, reimbursement OCR facts/spec", "package": "hyb-oa", @@ -11,7 +11,7 @@ "creator": "shunli", "assignee": "shunli", "createdAt": "2026-08-30", - "completedAt": null, + "completedAt": "2026-09-01", "branch": null, "base_branch": "main", "worktree_path": null, @@ -29,6 +29,6 @@ "docs/报销发票附件规则.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": {} -} +} \ No newline at end of file