docs(changelog): 改派时支持增加/删除槽位(#5665)
一些检查失败了
changelog-filename-gate / validate (push) Failing after 2s

这个提交包含在:
API Changelog Bot 2026-08-07 20:27:00 +08:00
父节点 bbd6d7b864
当前提交 81e6d3aa44

查看文件

@ -0,0 +1,100 @@
---
schema: "hl-changelog/v2"
ticket: "5665"
title: "改派时支持增加/删除槽位(调整车辆数量)"
consumer: "admin"
author: "wx(GIT)"
change_type: "新增接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "pending"
frontend_owner: ""
frontend_ref: ""
target_release: ""
verified_at: ""
status_note: "后端完成PR #5669 已合并 dev-v3 并部署 TESThl-fleet-service 双实例)。新增 POST /admin/fleet/assignments/slots 增槽位;删除槽位复用既有 DELETE /slots/{slotId}。前端需在改派页加【增加槽位】【删除槽位】操作并编排现有接口(见前端交接)。"
updated_at: "2026-08-07"
base: "dev-v3"
generated: "2026-08-07T20:26:00+08:00"
---
# 改派时支持增加/删除槽位(调整车辆数量)
> 后端完成PR #5669 已合并 dev-v3 并部署 TEST,网关验证通过。**前端需在改派页增加【增加槽位】【删除槽位】操作**。
## 关联 / 联系人
### 链接
- **Issue**: [#5665](https://git.1814.love:8443/wx/HL/issues/5665)
- **PR**: [#5669](https://git.1814.love:8443/wx/HL/pulls/5669)
- **Merge commit**: [c3f0f8fac](https://git.1814.love:8443/wx/HL/commit/c3f0f8fac)
### 联系人
- **后端负责人**: @wx
## 背景
改派change原本只能换车/换司机(同槽位内换),不能增加/删除槽位调整车辆数量。wx 要改派时可增删槽位。对齐 #5562 槽位模型(派车时可增删)。按协调台口径走 A 方案:复用 expand/slots 机制,**只增删差异、保留已派**,不新建独立重派流程、不侵入 change 主流程。
## 变更接口
### 新增:`POST /admin/fleet/assignments/slots`(增加槽位)
在 active 用车需求上新增 1 个全程槽位unassigned 全程占位行覆盖整个服务期),新槽位待确认按初次派车。**保留已有槽位(含已派)完全不动**。
**请求**`SlotAddReqVO`
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| requirementId | Long | 是 | 归属需求 IDactive 用车需求) |
| vehicleType | String | 是 | 新槽位车型(如 suv/mpv |
| seats | Integer | 是 | 新槽位座位需求1-60 |
| reason | String | 否 | 新增原因≤200 字,操作日志留痕) |
**响应**`SlotAddRespVO`
| 字段 | 类型 | 说明 |
|------|------|------|
| slotId | Long(字符串) | 新槽位 IDassignmentSlotId |
| assignmentId | Long(字符串) | 新槽位全程占位行派单 ID |
| requirementId | Long(字符串) | 归属需求 ID |
| orderId | Long(字符串) | 归属订单 ID |
| fleetItemIndex | Integer | 新槽位需求内项次序 |
| retainedSlotIds | Long[](字符串) | 新增后 Step2 快照保留槽位集合 |
| snapshotVersion | Long(字符串) | 新增后快照版本(无快照时 null |
**错误码**400 参数校验失败(需求 ID/车型/座位数缺失)/ **605012** 需求无派单行 / **605007** 需求不可派(非 active/已取消/不可派)/ 605008 抢锁超时 / 401 未登录 / 403 非车务角色。
**行为**
- 新槽位生成 1 条 unassigned 全程占位行(`service_date`/`assignment_group_id` 为 NULL,`start_date~end_date` 覆盖整个服务期),车务在该槽派 1 辆管全程的车(候选/价格日历/校验同初次派车 create
- 保留已有槽位(含 holding/assigned 已派)完全不动——只增差异槽位,不重置/重派
- **确认状态**:清最终确认标记(改派需重新冻结方案);保留槽位确认状态不变
- Step2 快照 retained 追加 + 版本递增 + digest 重算;FleetBoardChangedEvent + 操作日志 SLOT_ADDED
### 复用:`DELETE /admin/fleet/assignments/slots/{slotId}`(删除槽位,零改动)
既有端点(#5550/#5572,删除已派holding/assigned槽位时联动取消派单释放占用+退保意图+取消事件,行程已出发拒绝605027
## 前端交接(改派页)
在改派页增加两个操作,**编排现有接口**(后端已就绪):
1. **【增加槽位】**(多派一辆):
- 调 `POST /admin/fleet/assignments/slots`(传 requirementId + vehicleType + seats + reason
- 成功后新槽位出现在看板/改派页,车务对新槽位按初次派车(候选/价格/校验)派 1 辆车
2. **【删除槽位】**(少派一辆):
- 调既有 `DELETE /admin/fleet/assignments/slots/{slotId}`(有派单时后端联动取消)
- 行程已出发的槽位不可删605027;已完成的槽位不可删605007
3. **换车/换司机**:仍调既有 `POST /{assignmentId}/change`(不变)
**展示/交互提示**:增删槽位后改派方案需重新冻结(后端已清最终确认标记);保留槽位的确认状态/车辆/司机不变。座位数校验在派车 create 时进行(座位不足进 warnings
## 验证证据
- 新增 3 用例:增槽位成功生成全程行+保留已派+Step2 追加 / 需求无派单行 605012 / 需求不可派抛错
- AssignmentServiceTest **394/394 全绿**;fleet spotless:check 通过
- fleet verifymvn-throttle 错峰3251 测试仅 `ReleaseEOccupancyMysql8033RecoveryTest`(需 MySQL 8.0.33 环境)基线失败,与本案无关
- **部署**hl-fleet-service 双实例 UP20:24
- **网关验证**VEHICLE_MANAGER 调 `POST /admin/fleet/assignments/slots`:缺 requirementId → 400参数校验生效;不存在需求 → 605012业务校验生效;端点部署成功