hl-api-changelog/changelogs-v2/2026-08/07_5649_holdMode0直派兼容全程占位行拓扑校验(修复既有缺口)-修改接口-管理后台.md
API Changelog Bot 987d468cac
所有检测均成功
changelog-filename-gate / validate (push) Successful in 1s
docs(changelog): holdMode=0直派兼容全程占位行拓扑校验(#5649)
2026-08-07 17:07:34 +08:00

3.8 KiB

schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base, generated
schema ticket title consumer author change_type backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base generated
hl-changelog/v2 5649 holdMode=0直派兼容全程占位行拓扑校验修复既有缺口 admin wx(GIT) 修改接口 deployed verified not_required 后端完成PR #5653 已合并 dev-v3 并部署 TESThl-fleet-service 双实例)。修复 holdMode=0 直派+全程占位行需求拓扑校验必挂(既有缺口,#5643 发现非回归)。无请求/响应契约变化,仅派单 finalize 内部拓扑校验逻辑兼容全程形态。 2026-08-07 dev-v3 2026-08-07T17:10:00+08:00

holdMode=0 直派兼容全程占位行拓扑校验(修复既有缺口)

后端完成PR #5653 已合并 dev-v3 并部署 TEST,网关验证通过。

关联 / 联系人

链接

联系人

  • 后端负责人: @wx

背景

#5643 发现的既有缺口非回归holdMode=0 直派的 batch dailyPlan 在全程占位行需求上必挂——finalizeDailyBatchDispatchPlan 期望逐日切片(isSingleDaySlice),但全程占位行(#5562 全程槽模型:service_date NULL、startDate~endDate 覆盖整个服务期)被整段消费后保持全程形态,只产生 slot:startDate 一个拓扑 key,与逐日 itemsslot:start..slot:end)不匹配,单行 isSingleDaySlice 校验也必挂,拓扑校验误报「最终实派方案写入不完整」。考古 274b03561288#5595 前基线同样逻辑。holdMode=1 HOLD 路径跳过 finalize 不受影响。

修复

finalizeDailyBatchDispatchPlan 拓扑校验兼容全程占位行:

  1. key 展开:将 isFullTripRow 的全程行按服务期逐日展开为多个逻辑 keyslot:start..slot:end 全部映射到同一物理行),与逐日 items 的 key 集合对齐
  2. 单行校验:合法形态从「仅 isSingleDaySlice」放宽为「isSingleDaySlice || isFullTripRow」——整段消费的全程行不再误判为写入不完整
  3. ID 去重:全程行跨多天展开为多个逻辑 key 但对应同一物理行,finalizedAssignmentIds 按物理行去重(只收一次 ID,避免 markDispatchPlanGeneration 的 distinct 校验误报

变更接口

无请求/响应契约变化——仅派单 finalize 内部拓扑校验逻辑修复(POST /admin/fleet/assignments/batch 的 dailyPlan 直派路径行为修正:全程占位行需求从「必挂报错」变为「正常冻结」)。

行为变化

  • holdMode=0 直派 + 全程占位行需求:从「拓扑校验必挂、报『最终实派方案写入不完整』」修复为「正常冻结最终实派方案」
  • holdMode=1 HOLD 路径:跳过 finalize,完全不受影响
  • 逐日切片路径isFullTripRow 为 false 走原逻辑,行为不变
  • 拓扑真缺失仍正确报「写入不完整」key 集合不匹配时不放松校验)

前端/调用方动作

无需改动(仅修复了直派路径在全程占位行需求上的误报,前端调用方式不变)。

验证证据

  • 新增 3 用例:直派全程占位行不误报 / 直派逐日切片不受影响 / 直派拓扑缺失仍报不完整
  • AssignmentServiceTest 386/386 全绿;fleet spotless:check 通过
  • fleet verifymvn-throttle 错峰3243 测试仅 ReleaseEOccupancyMysql8033RecoveryTest(需 MySQL 8.0.33 环境)基线失败,与本案无关
  • 部署hl-fleet-service 双实例 UP17:05
  • 网关验证VEHICLE_MANAGER 调 /admin/fleet/board/summary/admin/fleet/reconciliation/cars 均 200,服务健康