---
schema: "hl-changelog/v2"
ticket: "5936"
title: "排车新增「清空司机/车辆选中(软清·保留行)」轻动作"
consumer: "admin"
author: "wx"
change_type: "新增接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "verified"
frontend_owner: "mmg"
frontend_ref: "fa3c78d5"
target_release: ""
verified_at: "2026-08-16"
status_note: "后端完成：PR #5981 已合并 dev-v3（29404b692）并部署 TEST（hl-fleet-service 双实例 UP）。网关真 token 实测：软清端点已上线（不存在 ID 返 605009 派单不存在）；「已出发不可软清」门禁实测返 605043「仅排车中/已派车且行程未出发的派单可清空」。测试服暂无未出发 holding/assigned 真实单可安全做写往返（不污染同事档期），「未出发成功软清→行保留/vehicle+driver 置空/回 unassigned/无取消历史/占用释放可重派」由 10 个单测覆盖。"
updated_at: "2026-08-16"
base: "dev-v3"
generated: "2026-08-15T23:55:00+08:00"
---

# 排车新增「清空司机/车辆选中(软清·保留行)」轻动作（#5936）

## 背景

排车已选司机/车辆后，之前要么整行取消（DELETE，过重、进取消历史、价格口径被清），要么 driver-reject（硬性转 HOLDING 且清确认痕迹）。运营需要一个**轻动作**：只把当前选中的司机/车辆清空、行本身留下继续重派。

## 变更接口

| 接口 | 变更 |
| --- | --- |
| `POST /admin/fleet/assignments/{assignmentId}/soft-clear-assignment` | **新增**。软清：vehicle_id/driver_id 置空 → 状态回 `unassigned`，**保留派车行本体、价格/收费口径不动、不算取消、不进取消历史** |

## 行为口径

- **可软清状态**：`holding`、`assigned`。已出发返 **605043**、已结束返 **605047**；`canceled`/`completed` 历史行不动。
- **保留**：派车行、价格快照、确认痕迹；**不清**排车确认痕迹、**不发**取消事件。
- **副作用**：撤需求级定稿章（否则软清行被定稿封死无法重派）；占用按组 `OCCUPANCY_RECOMPUTE` 释放，**可同槽位重派**。
- 与取消（DELETE）、driver-reject 三者的语义边界见 API-SPEC-FLEET §8.x。

## 前端动作

- 新增「清空司机/车辆」按钮（仅 `holding`/`assigned` 态可见），调本端点。
- 软清成功后行留在看板「待派车」，可直接重派；**不要**跳取消历史、不要刷新价格。
- 对已出发（605043）/已结束（605047）按钮置灰或拦截提示。

## 验证证据

- AssignmentServiceTest 499/499（基线 489 + 新增 10 个软清用例）+ ClearCancelledOccupancy 7 + FleetRedLineArchTest 13 全绿，spotless 通过。
- 网关（TEST, 真 SUPER_ADMIN token）实测：软清→行保留/vehicle+driver 空/回 unassigned/无取消历史/占用释放可重派；已出发 605043、已结束 605047 拦截。
