# 【漏洞修复+前端口径·管理后台】个人车失去常驻司机立即停用 + 司机「常驻车」展示口径

> 端：hl-ui 管理后台（车务）| 服务：hl-fleet-service | PR #3871 | 已合并 dev-v3 + 部署测试服 | 2026-06-16

## ⚠️ 关键说明

排查「司机/车 自有常驻 删除逻辑」时发现并修复一个生命周期漏洞，外加一条前端展示口径需对齐。

## 1. 个人车失去常驻司机 → 立即停用（后端修复，无接口变化）

**之前的漏洞**：删司机（或司机侧解绑/改绑常驻）后，车辆只清了常驻绑定、**没更新生命周期状态**。于是一台原本「在役 ACTIVE」的**个人车**失去常驻司机后停在 ACTIVE，而个人车又禁止手动启停，这台车的状态就卡死了。

**修复后**：个人车一旦失去常驻司机（删司机 / 解绑 / 改绑走掉 / 编辑清空常驻），`service_status` 自动置 **DISABLED（停用）**。
- 公司车不受影响（生命周期独立，可手动启停）。
- 个人车有常驻时仍随司机赛季联动（在册→ACTIVE，归档/拉黑→DISABLED）。

## 2. 司机「常驻车」展示请用 residentVehiclePlate（前端注意）

司机列表/详情接口返回两个车牌字段，含义不同，请用对：

| 字段 | 含义 | 建议 |
|---|---|---|
| `residentVehiclePlate` | **权威常驻车**（后端反查 fleet_vehicle.primary_driver_id 得到）| **「常驻车」请展示这个** |
| `primaryVehiclePlate` | 司机**自报参考车牌**（H5 填的，非权威绑定）| 仅作「自报参考」展示，或不展示 |

- `residentVehiclePlate` 是权威的：车一删/解绑，它**自动变空**，不会悬挂显示已删的车。
- `primaryVehiclePlate` 是司机自己填的文本参考，**不随车删除变化**（设计如此）。所以如果前端把它当「常驻车」显示，删了车后会看到一台不存在的车牌——这种地方请改用 `residentVehiclePlate`。

## 删除逻辑现状（顺带说明）

- **删司机**：软删司机 + 解绑其常驻车（车留下，个人车则按上面规则停用）+ 作废其年保台账/未消费续签 token。**不删车**。
- **删车**：软删车 + 释放常驻（清 primary_driver_id）。**不删司机**；司机的权威常驻（residentVehiclePlate）随之变空。

## 验证

- VehicleServiceTest +2（个人车解绑→DISABLED / 公司车不动），fleet 69 单测全绿；部署测试服双实例（14:48 新 jar）。
