changelog(5589): HOLD通知派车组不存在500修复(后端完成,网关验证通过)
一些检查失败了
changelog-filename-gate / validate (push) Failing after 2s
一些检查失败了
changelog-filename-gate / validate (push) Failing after 2s
这个提交包含在:
父节点
5aa3c55dc2
当前提交
cfe34b9439
@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
schema: "hl-changelog/v2"
|
||||||
|
ticket: "5589"
|
||||||
|
title: "HOLD 通知派车组不存在 500 修复(全程槽占位消费组 id 回填 + 单行组查询回退)"
|
||||||
|
consumer: "admin"
|
||||||
|
change_type: "修改接口"
|
||||||
|
author: "wx(GIT)"
|
||||||
|
backend_status: "deployed"
|
||||||
|
gateway_status: "verified"
|
||||||
|
frontend_status: "not_required"
|
||||||
|
frontend_owner: ""
|
||||||
|
frontend_ref: ""
|
||||||
|
target_release: "v2.1"
|
||||||
|
verified_at: "2026-08-06"
|
||||||
|
status_note: "后端完成:PR #5590 已合并 dev-v3 并部署 TEST(13:20 滚动 DONE);网关验证全链路 PASS:batchCreate holdMode=1 200(修复前 500 派车组不存在)、组 id 回填=行 id、通知日志/outbox 正常、司机确认→确认执行 assigned。前端无需配合。"
|
||||||
|
updated_at: "2026-08-06"
|
||||||
|
base: "dev-v3"
|
||||||
|
generated: "2026-08-06T12:50:00+08:00"
|
||||||
|
---
|
||||||
|
|
||||||
|
# HOLD 通知派车组不存在 500 修复
|
||||||
|
|
||||||
|
> **服务**: hl-fleet-service
|
||||||
|
> **PR**: [#5590](https://git.1814.love:8443/wx/HL/pulls/5590)
|
||||||
|
> **Issue**: [#5589](https://git.1814.love:8443/wx/HL/issues/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 对账全绿
|
||||||
正在加载...
x
在新工单中引用
屏蔽一个用户