changelog: 车辆档案对齐修复(PR #3653/#3656) + 车型大类不分页新接口(PR #3654)

这个提交包含在:
API Changelog Bot 2026-06-10 18:45:42 +08:00
父节点 2d7ffb0cb1
当前提交 f061e1b7e0
共有 2 个文件被更改,包括 89 次插入0 次删除

查看文件

@ -0,0 +1,52 @@
# 【修改·管理后台】车辆档案:列表新增常驻司机字段、详情补 typeKey/准驾/驾龄、keyword 支持搜车型、批量导入大修(CSV/警告档/局部更新)
> 存放目录: changelogs-v2/2026-06/
> 涉及服务: hl-fleet-service(8087)
> PR: #3653 + #3656(均已合并 dev-v3,**测试服已部署并 API 实测通过**) | 无关联工单 | 日期: 2026-06-10
> 影响范围: 管理后台**车辆档案**页面(`/admin/fleet/vehicles/*` 6 端点)+ 全文档级勘误自查项
## ⚠️ 关键说明(前端必看 4 点)
1. **车辆列表(§2.1)新增常驻司机三字段**:`primaryDriverId`/`primaryDriverName`/`primaryDriverLicenseType`(无常驻=null)。派单弹窗车卡显示常驻司机、车辆卡准驾徽章不用再反查司机侧。
2. **keyword 现在真的能搜车型了**:原来只搜车牌(文档一直写「车牌/车型」但代码只搜车牌,按车型名搜会静默返回空列表),现在车牌 OR 车型名模糊均命中。
3. **批量导入行为变化(重要)**:
- **更新已有车牌的行=11 个导入列的局部更新,空白列保持原值**——原来会把该车的附件全部清掉、解绑常驻司机、清空 VIN(已修复,放心重导);
- **CSV 真的可用了**(原来上传 .csv 直接 500;.xlsx 此前部署缺 POI 依赖实际也不可用,已一并修复);
- **新增警告档**:出参多 `warnedCount`/`warnings[{row,plate,field,msg}]`(保险不足 30 天/年检临期或已过期——**行仍然导入**,只是提醒;`warnedCount` 是 inserted+updated 的子集不是加法项);
- 文件解析失败现在返回业务错误码 **100001**(原来静默返回成功 0 行)。
4. **包络字段勘误(纯文档,后端行为没变)**:响应包络真实字段是 **`message`** 不是文档原来写的 `msg`(完整真形 `{code, data, message, success, traceId}`);如前端有按 `res.msg` 取提示文案的代码请自查(取不到值)。注意:**导入出参 errors/warnings 行内的 `msg` 是真实字段名,不受影响**。
## 1. 列表/详情新增字段
| 接口 | 新字段 | 说明 |
|------|--------|------|
| `GET /admin/fleet/vehicles/page` | `primaryDriverId`(String)/`primaryDriverName`/`primaryDriverLicenseType` | 常驻司机,无=null;司机未填准驾时也是 null(不会给空串) |
| `GET /admin/fleet/vehicles/{vehicleId}` | `typeKey`(大类Key,原来文档有代码没返)/`primaryDriverLicenseType`/`primaryDriverYears`(驾龄·年) | 详情主司机块徽章数据源;驾龄未填=null(不会给 0) |
## 2. 批量导入出参示例(测试服实测)
```json
{
"code": 200,
"data": {
"totalRows": 1, "insertedCount": 1, "updatedCount": 0, "errorCount": 0,
"errors": [],
"warnedCount": 1,
"warnings": [ { "row": 2, "plate": "蒙A·T7777", "field": "insureDue", "msg": "保险不足 30 天" } ]
},
"message": "成功"
}
```
## 3. 契约细节订正(文档侧,代码行为如此)
- §2.2 详情「车辆不存在」错误码是 **600110**(原文档误写 404001,前端按 404001 匹配永不命中);
- `seats` 恒随车型冗余(入参不收、传了忽略;型号座位数变更自动回刷已绑车辆)——原文档「可选,默认取自车型」有歧义;
- 编辑(§2.4)入参必须带 `vehicleModelId`(原示例漏了,照抄会 400);附件保留项(带 id)可以不传 `mimeType` 了(原来会 400);**新增附件 mimeType 必填且白名单 jpeg/png/webp/pdf,不命中报 601005**(新校验);
- 附件混插排序修复:编辑时新图插在保留图前面,落库顺序现在与入参数组顺序一致(原来新增项会被挤到末尾);
- 601002/601003(类目/张数校验)确认废弃,类目走字典 `vehicle_attachment_category`;
- 600109(有未完成派单禁删)为契约先行,守卫随派单模块落地,当前删除不拦。
## 4. 文档版本
FLEET API → **v1.5.51 + v1.5.53**,文档站已同步:https://web.test.1814.love:9443/hl-docs/order-v3/api/API-SPEC-FLEET-V1.5.html(HOUSE/主文档的 msg→message 同步勘误见各自变更记录)

查看文件

@ -0,0 +1,37 @@
# 【新增·管理后台】车型大类全量列表(不分页) GET /admin/fleet/vehicle-types/list
> 存放目录: changelogs-v2/2026-06/
> 涉及服务: hl-fleet-service(8087)
> PR: #3654(已合并 dev-v3,**测试服已部署并 API 实测通过**) | 无关联工单(wx 2026-06-10 提出) | 日期: 2026-06-10
> 影响范围: 管理后台车型下拉/筛选场景(新接口,纯增量)
## ⚠️ 关键说明
下拉/筛选要全量大类时不用再调分页接口拼页了:新接口一次返回**全部大类**(不分页、不含 models 数组),单条结构与 `GET /admin/fleet/vehicle-types/page` 的 records **完全一致**(含 `modelCount`/`inUseCount` 计数),按 sort_order 升序。
- 要型号树 → 用 `GET /admin/fleet/vehicle-types`(§1.1,大类+models 全量);
- 要分页检索大类 → 用 `/page`(§1.5);
- 只要大类轻量全量(下拉) → **用本接口**
## 1. 接口定义
`GET /admin/fleet/vehicle-types/list` —— 入参:无
**响应示例**(测试服实测):
```json
{
"code": 200,
"data": [
{ "id": "1929151481086734337", "typeKey": "suv2", "typeName": "SUV 越野", "icon": "🚙",
"description": "高底盘 / 沙漠越野", "sortOrder": 1, "modelCount": 1, "inUseCount": 0 },
{ "id": "1930561885327036417", "typeKey": "mpv", "typeName": "MPV 商务", "icon": "🚐",
"description": "", "sortOrder": 2, "modelCount": 0, "inUseCount": 0 }
],
"message": "成功"
}
```
## 2. 文档
FLEET API → **v1.5.52** 新增 §1.7 小节(§1 章 10 端点),文档站已同步:https://web.test.1814.love:9443/hl-docs/order-v3/api/API-SPEC-FLEET-V1.5.html