文件
hl-api-changelog/changelogs-v2/2026-08/06_5589_HOLD通知派车组不存在修复-修改接口-管理后台.md
2026-08-06 13:23:55 +08:00

3.4 KiB

schema, ticket, title, consumer, change_type, author, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base, generated
schema ticket title consumer change_type author backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base generated
hl-changelog/v2 5589 HOLD 通知派车组不存在 500 修复(全程槽占位消费组 id 回填 + 单行组查询回退) admin 修改接口 wx(GIT) deployed verified not_required v2.1 2026-08-06 后端完成:PR #5590 已合并 dev-v3 并部署 TEST(13:20 滚动 DONE);网关验证全链路 PASS:batchCreate holdMode=1 200(修复前 500 派车组不存在)、组 id 回填=行 id、通知日志/outbox 正常、司机确认→确认执行 assigned。前端无需配合。 2026-08-06 dev-v3 2026-08-06T12:50:00+08:00

HOLD 通知派车组不存在 500 修复

服务: hl-fleet-service PR: #5590 Issue: #5589 日期: 2026-08-06 影响: 🟢 缺陷修复,无契约变更。管理后台 HOLD 通知派车(holdMode=1)此前 500「HOLD 通知派车组不存在」,本次修复后全链路可用。前端无需改代码。

背景

#5589(P1)协调台实测:batchCreate 派单 holdMode=0(直接 assigned)成功,holdMode=1(HOLD 通知)500 IllegalStateException: HOLD 通知派车组不存在: groupId=…。

根因:#5562 全程槽模型下,全程/单行占位行的 assignment_group_id 保持 NULL(有意设计),占位消费升级(consumePlaceholderToActive)也未回填。HOLD 通知链路对单行组使用「组 id=行 id」回退语义(effectiveGroupId),但组查询(selectByAssignmentGroupId)只按 assignment_group_id 匹配 → 查空 → 发送结果提交 500。

修复内容(内部,无接口/字段变化)

  1. 占位消费回填组 id:consumePlaceholderToActive 消费单行占位时 assignment_group_id=自身行 id(与历史行迁移回填约定一致,新数据根治);
  2. 组查询单行组回退:selectByAssignmentGroupId / selectByAssignmentGroupIdForUpdate 按组 id 查空时,回退 assignment_id=groupId AND assignment_group_id IS NULL(覆盖存量 NULL 组行,发送授权/结果提交/行程短信统一入口);
  3. CAS 回写回退:markHoldNotificationSent 按组更新 0 行时按行 id 回退更新(单行组 hold_sent_at 回写)。

受影响接口(行为修正,无字段增减)

POST /admin/fleet/assignments/batch-create        (holdMode=1 不再 500)
POST /admin/fleet/assignment-hold-notifications   (发送授权/重试对单行组可用)

验证

  • 定向:FleetAssignmentMapperTest 61/61(+4:组 id 回填/双回退)、AssignmentHoldNotificationResultServiceTest 16/16(+1:全程单行组 commitSent)、AssignmentServiceTest 372/372、HOLD 通知域 253/253;fleet 全量 3183 仅 2 个 MySQL 集成 Error 为 3306 端口竞争(其他会话容器),空闲窗口补跑全绿(MutationFence 2/2 + InsuranceCostFence 2/2 + ReleaseE 10/10)
  • 网关:TEST 13:20 部署 → batchCreate holdMode=1 200(修复前 500)→ 行 holding + 组 id 回填=行 id → HOLD 通知日志/outbox 正常(无行程短链产品降级为站内通知,非异常)→ 司机确认 driver_confirmed → 车务确认执行 assigned + confirmedAt → DB 对账全绿