# 【后端内部·无前端影响】团期整团逐日配车/配房重配前置能力（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 即闭环
```
