# 【功能落地·车辆/司机】常驻司机 1:1 车侧权威 — primaryDriverId 真实可用 + 详情回显 > **变更类型**:🟢 功能落地(原文档已描述、后端补实现;出入参字段不变) > **端类型**:管理后台 > **服务**:hl-fleet-service > **PR**:https://git.1814.love:8443/wx/HL/pulls/3602 > **日期**:2026-06-08 --- ## ⚠️ 关键说明 「常驻司机」`primaryDriverId` 之前文档已写、但后端是占位(详情 `primaryDriverName` 一直返 null)。本次**真实落地**: - **常驻严格 1:1·车侧权威**:一车一常驻司机、一司机一常驻车,权威落 `fleet_vehicle.primary_driver_id`。 - 与「派单 N:N」正交——常驻只是派单候选加权,实际派谁开哪台车仍可任意。 --- ## 1. 前端能用什么了 | 场景 | 说明 | |---|---| | 车辆**编辑**(`PUT /admin/fleet/vehicles/{id}`)设常驻 | 入参 `primaryDriverId` 传司机 ID = 设为常驻;传 `null`/不传 = **解绑**常驻 | | 设常驻**冲突** | 选的司机已是别车常驻 → 返 **`605022`**「该司机已是其它车辆的常驻司机,请先解绑后再指定」(不自动转移,需先去那台车解绑) | | 车辆**详情**(`GET /admin/fleet/vehicles/{id}`)回显 | `primaryDriverId` / `primaryDriverName` / `primaryDriverPhone`(脱敏)现在**真实返回**(无常驻则三者全 null),不再恒 null | --- ## 2. 出参示例(详情,有常驻司机) ```json { "code": 0, "data": { "id": "", "plate": "蒙A-88888", "primaryDriverId": "1234567890", "primaryDriverName": "王师傅", "primaryDriverPhone": "138****1234" }, "msg": "成功" } ``` 无常驻时:`primaryDriverId` / `primaryDriverName` / `primaryDriverPhone` 均为 `null`。 --- ## 3. 新增错误码 | code | msg | 触发场景 | |---|---|---| | 605022 | 该司机已是其它车辆的常驻司机,请先解绑后再指定 | 设常驻时所选司机已是别车常驻 | --- ## 4. 尚未包含(下一步) 「司机**自带车**审核通过 → 自动建车 + 自动设常驻本人 + 自动归个人所有」**未包含**——它依赖「自带车→自动建车」路径,该路径目前后端未实现(自带车审核当前只在司机档案记车牌字符串、未建车辆记录)。该路径落地后会自动完成上述联动,届时另发 changelog。当前车管可手动建车 + 手动设常驻。 --- ## 5. 验证 - `hl-fleet-service` 211 单测全绿。 - 已部署测试服(双实例 8087 + 8187 均 UP,Flyway 加列成功);运行态 OpenAPI 契约详情含 `primaryDriverId`/`primaryDriverName`/`primaryDriverPhone`、编辑入参含 `primaryDriverId`。 --- ## 6. 关联文档 | 文档 | 版本 | |---|---| | API-SPEC-FLEET | v1.5.18(§2.2 / §2.4 / §14.3 错误码 605022) | | DATABASE-SCHEMA-FLEET | v1.5.15(fleet_vehicle.primary_driver_id + uk_primary_driver) | | SRS-FLEET | v1.5(§9.15.4 常驻 1:1 车侧权威) |