---
schema: "hl-changelog/v2"
ticket: "5592"
title: "需求变更后一键按新需求重派（删除旧派车后自动推荐车辆+司机）"
consumer: "admin"
author: "wx(GIT)"
change_type: "新增接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "implemented"
frontend_owner: "mmg"
frontend_ref: "hl-admin@790e76ab1cadf44d81e610152432fb806144d898"
target_release: ""
verified_at: ""
status_note: "后端完成：PR #5597 已合并 dev-v3（99baa37a8）并部署 TEST；网关验证 3/3（推荐车/司机+备选、只读确认无写操作、605012）。wx 口径：系统只做推荐填充，所有写操作车务手动点击（确认走既有派车接口）。前端需在派车弹窗接入一键重派入口（新接口仅返回推荐数据）。"
updated_at: "2026-08-07"
base: "dev-v3"
generated: "2026-08-06T14:48:09+08:00"
---

# 需求变更后一键按新需求重派（删除旧派车后自动推荐车辆+司机）

> 后端完成：PR #5597 已合并 dev-v3 并部署 TEST，网关验证 3/3 通过。

## ⚠️ 口径最终确认（wx，2026-08-07）：要的是【一键清空】

**不是"一键重派"，是"一键清空"**——定制师改出发日期/人数/用车需求后，车务点【一键清空】把之前配置完的车辆清空。

**前端实现**：
- 【一键清空】按钮 = 调**既有接口** `DELETE /admin/fleet/assignments/slots/{slotId}`（Body: `{"reason":"需求变更，一键清空"}`），**不需要新接口**
- 删除联动取消已派车、日切片/快照/看板自动一致；返回 removedRowCount/cancelledAssignmentCount/retainedSlotIds
- 清空后：车务按新需求**手动**重新派（`auto-recommend` 仅推荐参考，**不自动配**）
- 错误码：605012 槽位不存在 / 605007 已最终确认不可删 / 605027 已出发不可删

下文的 auto-recommend 仅作推荐数据源（可选），清空动作走 DELETE /slots/{slotId}。

## 关联 / 联系人

### 链接

- **Issue**: [#5592](https://git.1814.love:8443/wx/HL/issues/5592)
- **PR**: [#5597](https://git.1814.love:8443/wx/HL/pulls/5597)
- **Merge commit**: [99baa37a8](https://git.1814.love:8443/wx/HL/commit/99baa37a8)

### 联系人

- **后端负责人**: @wx

## 背景与口径（wx 2026-08-06 工单评论明确）

定制师改需求后车务手动删旧配置太麻烦 → 要"一键按新需求重派"。**关键约束**：系统不得自动取消/改派/重派任何派车——所有写操作必须车务手动点击；系统只做推荐/填充。**不是**自动标记待调整方案。

## 变更接口

| 方法 | 路径 | 来源 |
|---|---|---|
| `POST` | `/admin/fleet/assignments/slots/{slotId}/auto-recommend` | `AssignmentController`（fleet） |

**只读接口，不产生任何写操作**：按槽位车型/座位/日期/人数复用既有候选查询，推荐可用·车型匹配·座位充足的车辆 + 可用司机（常驻匹配优先）。

**请求**：无 Body（仅 PathVar slotId，空缺待派槽位）。
**响应**（`SlotAutoRecommendRespVO`）：
- `recommendedVehicle`：推荐车辆（vehicleId/plate/modelName/seats/passengerCapacity/vehicleTypeName/fleetTeamName/residentMatch）
- `recommendedDriver`：推荐司机（driverId/name/maskedPhone/years/rating/driverStatus/residentMatch）
- `vehicleAlternatives` / `driverAlternatives`：备选列表（各前 5）
- `recommendNote`：推荐说明；`noRecommendation`：无可用推荐时 true
- **错误码**：605012 槽位不存在

## 前端/调用方动作

1. 派车页（需求变更后）：车务删除旧派车（既有 `DELETE /slots/{slotId}`）后，空缺槽位展示【一键重派】入口
2. 点击调用 `auto-recommend` → 展示推荐车辆+司机与备选（可切换）
3. 车务确认后走**既有派车接口**（candidates + create/assign 流程）提交——**系统绝不自动写**，确认必须车务手动点击

## 验证证据

- 定向测试：AssignmentServiceTest +3（推荐 top 匹配车/司机与备选；无可用候选返回 noRecommendation；槽位不存在 605012；**只读断言**：insert/update 均未调用）；回归 421 用例全绿
- 网关验证（TEST）：HL20260806115413191（mpv 7 座 6 人，unassigned 槽 343603476254822400）→ 推荐 蒙A-G8888 别克GL8 7 座 + 司机 巴雅尔（8 年）+ 备选 5+5 + note"车型匹配·座位充足·档期可用"；**DB 复核槽位仍 unassigned（无写操作）**；不存在槽位 → 605012
- 兼容性结论：新增只读接口，无既有行为变更；verify 3170 用例全绿
