From a6ff2dc3b18a9a3d0be50726142bace2a256d140 Mon Sep 17 00:00:00 2001 From: shunli Date: Sun, 27 Sep 2026 11:50:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B0=E5=BD=9570af0c6b=E9=97=A8=E7=A6=81PAS?= =?UTF-8?q?S=E4=B8=8E=E7=94=9F=E4=BA=A7=E5=8F=91=E5=B8=83=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=20[09-26-approve-success-state-unchanged][09-06-relea?= =?UTF-8?q?se-gate-integrity]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 生产由 b1d25d3c 更新为 70af0c6b:两个新迁移已应用(pending=none), 合同 refresh 与只读复核 13/13 通过,源码属主正确,公网免凭据检查通过。 SSH 断线后补跑包装器尾部步骤的过程已记入任务。 Co-Authored-By: Claude Opus 5.5 --- .../tasks/09-06-release-gate-integrity/implement.md | 4 ++++ .../implement.md | 13 ++++++++++--- .../09-26-approve-success-state-unchanged/prd.md | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.trellis/tasks/09-06-release-gate-integrity/implement.md b/.trellis/tasks/09-06-release-gate-integrity/implement.md index c081ca24..7dcf34cd 100644 --- a/.trellis/tasks/09-06-release-gate-integrity/implement.md +++ b/.trellis/tasks/09-06-release-gate-integrity/implement.md @@ -1,3 +1,7 @@ +## 2026-09-27 首个受管完整门禁 PASS 并发布(当前) + +候选 `70af0c6b` 在本机(2 核/8G,4 worker)经 6 轮 verify-candidate 取得 PASS(372/372,`artifacts/release-gate/20260926-202856`)。期间处理:付款主链路 300→420s、视觉组 180→240s(`34675e1a`,项目默认 180s 回执校验不变);采购「审批后页面旧状态」查明为 SW 3s 网络超时回退缓存的产品缺陷并修复(`0931b1ea`,任务 09-26-approve-success-state-unchanged);资产 E2E 后退前等 `data-unsaved-changes=false`(`70af0c6b`)。浏览器源缓存/BIFF8 venv 位于用户级缓存目录并按 copy-browser-cache 复制独占副本。已经 deploy 入口消费回执发布至生产,详见 09-26 任务 implement 顶部。本机负载下另见采购提交事务偶发 P2028(生产同写法,待另立任务)。 + ## 2026-09-19 R101补验已接收,保存新候选并准备独立完整请求(当前) Claude报告claude-focused-5m9p8_o7:copy/focused/wrapper均0,351.918秒,3/3 expected、零失败/跳过/重试;实际1worker(全局4未改)。原失败用例两张截图及全部响应/页面断言走完,native/guest、owner清理通过。主会话实算112输入、5份after/before一致;原报告“稳定通过”仅按单次通过接收,不扩大因果结论。 diff --git a/.trellis/tasks/09-26-approve-success-state-unchanged/implement.md b/.trellis/tasks/09-26-approve-success-state-unchanged/implement.md index 6d070f32..f633f2f0 100644 --- a/.trellis/tasks/09-26-approve-success-state-unchanged/implement.md +++ b/.trellis/tasks/09-26-approve-success-state-unchanged/implement.md @@ -1,10 +1,17 @@ -## 2026-09-26 根因确认与修复(当前) +## 2026-09-27 已上线(当前) + +- [x] `verify-candidate` 在 `70af0c6b` PASS(372/372);push 到 origin/main。 +- [x] 生产部署:生产由 `b1d25d3c` 更新为 `70af0c6b`,`/ready` buildSha `70af0c6b9aa3`。发布期间本地 SSH 在 build-init 阶段断开,远端 deploy.sh 继续完成;随后补跑包装器尾部两步:forced-command 合同 refresh PASS,只读复核 13/13 PASS、`migration_reconciliation pending=none`(loan/numbering 两个迁移已应用)、回滚窗口 OPEN;远端同步源码属主等于部署 UID。 +- [x] 公网免凭据检查:登录页/入口脚本 200;线上 `sw.js` 的 `app-api-runtime` 不含 `networkTimeoutSeconds`;`/api/me`、`/api/workflow/tasks/summary`、`/api/company-loans`、`/api/reimbursements` 未登录均 401。 +- [ ] 带账号的公网业务 smoke(smoke 身份验收窗口外为 disabled,未执行);企微手机端慢网络下审批后状态由真人使用观察。 + +## 2026-09-26 根因确认与修复 - [x] 带诊断复现命中(CG-20260926-0006,任务 48d14805):浏览器 01.973 发 GET,**05.049 收到 pending**;服务端 02.255 收到同一 GET,**05.598 才读库且读到 completed**。浏览器拿到的响应早于服务端读库,来源只能是 Service Worker 缓存。 - [x] 根因:`client/vite.config.ts` 的 `app-api-runtime` 规则对 `/api/me`、`/api/workflow/tasks*`、`/api/workflow/approvers*`、`/api/notifications*` 用 `NetworkFirst` + `networkTimeoutSeconds: 3`;网络响应超过 3 秒时 SW 返回审批前缓存的旧响应,真实响应被丢弃。自 2026-03 P21PWA2(9112383d)起存在,生产同样受影响(慢网络/企微手机下审批后页面显示未通过,再点报「已处理」,待办列表可能显示已处理单据)。审批写入本身从未丢失。 - [x] 修复:去掉 `networkTimeoutSeconds`,仅网络失败(离线)才回退缓存;退出登录清理该缓存(`client/src/pwa.ts:201`)不变。新增 `server/tests/unit/utils/client-pwa-api-cache.test.js`(有修复通过、去掉修复失败);构建产物 `dist/sw.js` 已无超时。 -- [ ] 修复后复现脚本 3 轮验证(修复前 3 轮命中 2 轮)。 -- [ ] 通过后 `verify-candidate` 取得 PASS 回执。 +- [x] 修复后复现脚本 3 轮验证:0 命中(修复前 3 轮命中 2 轮)。 +- [x] 通过后 `verify-candidate` 取得 PASS 回执。 - 后续另议:`/api/workflow/tasks*` 含报销审批内容仍会被 SW 缓存供离线读取,与「报销审批证据不进入离线缓存」口径是否冲突待确认;采购提交事务 P2028 见下方。 ## 2026-09-26 调查进度 diff --git a/.trellis/tasks/09-26-approve-success-state-unchanged/prd.md b/.trellis/tasks/09-26-approve-success-state-unchanged/prd.md index 67993bb2..ac354154 100644 --- a/.trellis/tasks/09-26-approve-success-state-unchanged/prd.md +++ b/.trellis/tasks/09-26-approve-success-state-unchanged/prd.md @@ -27,7 +27,7 @@ - [x] 在保留库的环境复现至少一次,并记录失败单据任务/实例/历史的库内真实状态 - [x] 给出有证据支撑的根因(代码位置 + 机制),区分测试问题与产品缺陷 - [x] 若为产品缺陷:说明影响实体范围,及 `b1d25d3c` 是否同样存在(SW 规则覆盖 /api/me、workflow/tasks、approvers、notifications;自 2026-03 9112383d 起存在,生产同样受影响) -- [ ] 修复后 `verify-candidate` 完整通过(取得 PASS 回执) +- [x] 修复后 `verify-candidate` 完整通过(取得 PASS 回执):`70af0c6b` 372/372,`artifacts/release-gate/20260926-202856`,`require` 离线复核通过 ## Test Plan