docs(changelog-v2): 团期配车/配房重配前置能力 (#3857 #3856 / PR #3862 #3863)

这个提交包含在:
API Changelog Bot 2026-06-16 11:29:46 +08:00
父节点 61ed527bf2
当前提交 6bebad8b50

查看文件

@ -0,0 +1,42 @@
# 【后端内部·无前端影响】团期整团逐日配车/配房重配前置能力PR #3862 #3863 / 工单 #3857 #3856
> 端:纯后端内部(内部 Feign 端点 + 进程内事件,无前端接口)| 服务hl-fleet-service + hl-order-service-v3 | PR #3862 #3863 已合并 dev-v3 + 双实例部署实测 | 2026-06-16
## ⚠️ 关键说明
订单调整 epic#3643)剩余阶段 **G-2「团期改人数/资源后,整团逐日配车/配房实际重配」** 卡在 fleet/house 两个前置域缺口。本批补齐这两侧的**前置能力**(消费方 order-v3 core P-G 后续才接,本批无运行时触发点,**对前端零影响**)。
## 1. fleet 团期配车领域 + 整团逐日重配端点PR #3862 / #3857
fleet 此前是纯主数据服务,无任何派车/配车业务。本次从 0 建配车前置能力:
| 项 | 内容 |
|----|------|
| 新表 | `fleet_group_dispatch`逐日派车group_batch_id + trip_date + vehicle_id + driver_id + status + version,雪花 PK,软删,唯一索引含 deleted_at 支持软删重派。Flyway `V20260616_002` |
| 新内部端点 | `POST /internal/fleet/dispatch/group-batch/reconfigure`(幂等):入参 groupBatchId + 逐日需求数组,出参 added/removed/kept/updated/aliveCount |
| 并发防护 | `@Idempotent` + `@Lock4j`(按 groupBatchId 串行)+ `@Version` 乐观锁 + 唯一索引兜底 |
| 差量语义 | 少补 / 多删软删留痕 / 同车换司机更新(不整团作废重配) |
> order-v3 侧 `FleetDispatchFeignClient` 对齐不在本批(由 order-v3 后续做)。内部端点走 Feign LB 不过网关,无网关路由变更。
## 2. house 团期整团逐日配房重配前置能力PR #3863 / #3856
house 域此前只有子订单(orderId)+逐日(dayNumber)粒度,无团期(groupBatchId)维度。本次补齐:
| 项 | 内容 |
|----|------|
| 新事件契约 | `GroupBatchBaselineChangedEvent`(进程内 Spring 事件,发布方 order-v3 core P-G 后续做) |
| 新监听器 | `HouseGroupBatchEventListener` AFTER_COMMIT 监听基准变更,失败只 log 不抛(降级) |
| 整团差量重配 | `reconcileGroupBatchAssignments(productBatchId, 新逐日需求)`:按 productBatchId 聚合子订单(剔已取消)、逐日按房数差量增减、减配拆行精确收敛 target 不过删、`@Lock4j` 按 productBatchId 串行 |
| ready 回填 | 新增 `GroupBatchService.markHotelReady`(跨域走 Service,house 不直写 groupbatch 表) |
> 无新增 Flyway复用 `house_hotel_assignment` / `order_group_batch.hotel_ready`)。
## 验证(测试服 2026-06-16
```
fleet 双实例 8087/8187 全新重启(11:25),flyway 20260616.002 success=1,fleet_group_dispatch 表已落库 ✅
order-v3 双实例 8086/8186 全新重启(11:22),新监听器/事件 bean 未致 context 失败 ✅
fleet 9 单测 + house 14 单测全绿;CR 两轮(含针对性复审)无 P0/P1
两侧均为前置能力,消费方未接,无运行时可触发行为可实测,boot 即闭环
```