From e69a5b955046af02141c85482a7e5b895a739dee Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Sat, 8 Aug 2026 14:53:35 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=205697=20=E8=A1=8C=E7=A8=8B?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E9=A2=84=E8=A7=88=E6=81=A2=E5=A4=8D=E7=9C=9F?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=EF=BC=88=E7=AE=A1=E7=90=86=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...97_行程链接预览恢复真链接-修复-管理后台.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 changelogs-v2/2026-08/08_5697_行程链接预览恢复真链接-修复-管理后台.md diff --git a/changelogs-v2/2026-08/08_5697_行程链接预览恢复真链接-修复-管理后台.md b/changelogs-v2/2026-08/08_5697_行程链接预览恢复真链接-修复-管理后台.md new file mode 100644 index 0000000..e1e7509 --- /dev/null +++ b/changelogs-v2/2026-08/08_5697_行程链接预览恢复真链接-修复-管理后台.md @@ -0,0 +1,55 @@ +--- +schema: "hl-changelog/v2" +ticket: "5697" +title: "行程链接预览恢复真链接(确认执行组级冻结派车方案代际)" +consumer: "admin" +author: "wx" +change_type: "修复" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "pending" +frontend_owner: "mmg" +frontend_ref: "" +target_release: "" +verified_at: "2026-08-08" +status_note: "后端完成:PR #5700 已合并 dev-v3(e95cfc89a)并部署 TEST(hl-fleet-service 双实例 UP 14:52)。根因两层:①26-8778 确认执行(08-08 11:27)早于 #5681 finalize 逻辑部署(11:40)→ 存量遗留中间态(assigned+generation NULL+finalized=0)→ 预览/短链身份缺失(#5689 已把 500 降级为暂不可,本单恢复真链接);②confirm 的 finalize 依赖需求级 publishDailySnapshotIfComplete 条件(拓扑全派+无既有代),需求内存在 legacy 遗留行/非最终拓扑时新确认组不冻结。修复:确认执行组级冻结(markDispatchPlanFinalizedForRows:仅确认组、finalized=0 幂等、不退休同需求其他组;legacy 分支锁内重解析当前代,无代签发新代;confirmRequirement 多组沿用 expected 代或一次新代)+ TEST 存量数据修复(26-8778 原行补 generation/finalized)。网关验证:26-8778 渲染 200 返回真链接(改派后新组 t6wpsPy,8/17-8/20,有效期至 08-27)+ render-batch success=true + H5 解析 200(新旧链均正常)。" +updated_at: "2026-08-08" +base: "dev-v3" +generated: "2026-08-08T15:00:00+08:00" +--- + +# 行程链接预览恢复真链接(#5697) + +## 背景 + +#5675/#5689 修复部署后,26-8778 派单预览行程详情仍显示「行程链接暂不可,联系车务确认」。 + +## 根因(库表+代码+时间线定位) + +1. **存量遗留中间态**:26-8778 确认执行(08-08 11:27:31)早于 #5681 finalize 逻辑部署(11:40)——行保持 assigned + dispatch_plan_generation NULL + finalized=0 → 预览/短链解析身份缺失(#5689 已把 500 降级为「暂不可」,本单恢复真链接)。 +2. **代码缺口**:confirm 的 finalize 依赖需求级 `publishDailySnapshotIfComplete` 条件(拓扑全派 + 无既有代)——需求内存在 legacy 遗留行或非最终拓扑时,新确认组不会冻结 → 确认组预览/短链身份仍缺失。 + +## 修复(PR #5700) + +1. `FleetAssignmentMapper.markDispatchPlanFinalizedForRows`:组级冻结——仅确认组行、finalized=0 幂等、不退休同需求其他组(改派/换版仍由 retire/clear 全需求退休)。 +2. `confirm` legacy 分支:锁内重解析需求当前代(并发组先冻结则沿用同代),无代签发新 snowflake 代,确认组组级冻结。 +3. `confirmRequirement` 原子引擎:多组确认沿用 `expectedPlanGeneration` 或循环外签发一次新代(多组共用),逐个确认组组级冻结。 +4. **存量数据修复(TEST)**:26-8778 原行补写 generation/finalized(精确单行 UPDATE + 前后 SELECT 对比);该行后续(14:33-14:37)被测试改派流程取消,改派新组已带代际(finalized=1)。 + +## 行为变化 + +- 确认执行后的派车组(含与 legacy 遗留行共存的场景)预览返回可点行程链接,不再「暂不可」。 +- 新 HOLD/DIRECT 派单创建即冻结代际(#5681 既有行为不变);本修复补充确认执行组级冻结,需求级最终快照事件语义不变。 +- 短链解析侧代际升级兼容(哨兵→真实代)不变;取消派车后旧短链随身份失效(既有语义)。 + +## 前端动作 + +- 预览区「行程链接暂不可用,请联系车务确认」为业务降级文案:确认执行后(dispatchPlan 冻结前窗口)或派车组身份失效时展示;正常确认后展示可点链接(h5 行程契约页)。 +- 无需字段适配;模板渲染接口行为与错误码口径不变。 + +## 验证证据 + +- 定向测试:+2(render 确认后已冻结全程行返回真实链接;legacy 遗留行共存时新组确认组级冻结且不误发需求级快照);confirm 相关 4 用例回归;保险并发确认测试补 stub 回归。 +- 全量 verify 3294 tests 0 失败 4 skipped + spotless:check 通过。 +- 网关实测(TEST,26-8778):渲染 200 返回真链接(https://web.test.1814.love:9443/s/t6wpsPy,8/17-8/20,有效期至 08-27);render-batch 200 + item success=true;H5 短链解析 200(行程契约 V2 全 4 天)。 +- 部署:hl-fleet-service dev-v3=e95cfc89a 双实例 UP(14:52)。