3.4 KiB
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。
修复内容(内部,无接口/字段变化)
- 占位消费回填组 id:
consumePlaceholderToActive消费单行占位时assignment_group_id=自身行 id(与历史行迁移回填约定一致,新数据根治); - 组查询单行组回退:
selectByAssignmentGroupId/selectByAssignmentGroupIdForUpdate按组 id 查空时,回退assignment_id=groupId AND assignment_group_id IS NULL(覆盖存量 NULL 组行,发送授权/结果提交/行程短信统一入口); - 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 对账全绿