diff --git a/changelogs-v2/2026-06/16_个人车失去常驻立即停用-常驻车显示口径-管理后台.md b/changelogs-v2/2026-06/16_个人车失去常驻立即停用-常驻车显示口径-管理后台.md new file mode 100644 index 0000000..55ece0f --- /dev/null +++ b/changelogs-v2/2026-06/16_个人车失去常驻立即停用-常驻车显示口径-管理后台.md @@ -0,0 +1,36 @@ +# 【漏洞修复+前端口径·管理后台】个人车失去常驻司机立即停用 + 司机「常驻车」展示口径 + +> 端: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)。