From 81e6d3aa44d012efa21b94cf1972dee24aab13ad Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Fri, 7 Aug 2026 20:27:00 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20=E6=94=B9=E6=B4=BE=E6=97=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A2=9E=E5=8A=A0/=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=A7=BD=E4=BD=8D=EF=BC=88#5665=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...加删除槽位(调整车辆数量)-新增接口-管理后台.md | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 changelogs-v2/2026-08/07_5665_改派时支持增加删除槽位(调整车辆数量)-新增接口-管理后台.md diff --git a/changelogs-v2/2026-08/07_5665_改派时支持增加删除槽位(调整车辆数量)-新增接口-管理后台.md b/changelogs-v2/2026-08/07_5665_改派时支持增加删除槽位(调整车辆数量)-新增接口-管理后台.md new file mode 100644 index 0000000..e1b0b63 --- /dev/null +++ b/changelogs-v2/2026-08/07_5665_改派时支持增加删除槽位(调整车辆数量)-新增接口-管理后台.md @@ -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 并部署 TEST(hl-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 | 是 | 归属需求 ID(active 用车需求) | +| vehicleType | String | 是 | 新槽位车型(如 suv/mpv) | +| seats | Integer | 是 | 新槽位座位需求(1-60) | +| reason | String | 否 | 新增原因(≤200 字,操作日志留痕) | + +**响应**(`SlotAddRespVO`): + +| 字段 | 类型 | 说明 | +|------|------|------| +| slotId | Long(字符串) | 新槽位 ID(assignmentSlotId) | +| 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 verify(mvn-throttle 错峰):3251 测试仅 `ReleaseEOccupancyMysql8033RecoveryTest`(需 MySQL 8.0.33 环境)基线失败,与本案无关 +- **部署**:hl-fleet-service 双实例 UP(20:24) +- **网关验证**:VEHICLE_MANAGER 调 `POST /admin/fleet/assignments/slots`:缺 requirementId → 400(参数校验生效);不存在需求 → 605012(业务校验生效);端点部署成功