# 【行为变更·管理后台+司机H5】司机驾驶证号必填（四入口收口）+ 驾驶证等级请补渲染（字段一直在返）

> 服务:hl-fleet-service(8087/8187) | 分支:dev-v3 | PR:#3783 | 工单:#3781 | 已部署测试服并 8 项 E2E 实测通过(2026-06-12)
> 背景:wx——「司机的驾驶证号必填 现有的司机数据都需要补 还有驾驶证等级也没显示」。

## ⚠️ 关键说明(前端动作)

1. **新增司机表单:驾驶证号/准驾车型/驾照有效期 三项改必填**(加 `*` 必填标记,对齐原型;发证机关仍选填)。缺任一项后端返 **400**(message 指明哪项)。
2. **编辑司机:新错误码 600207**「驾驶证号不能为空，请在编辑时补录」——只对**库内证号为空的存量档案**触发(编辑时必须补录明文证号才能保存,这就是存量补数机制);证号已有值的司机,编辑回传详情拿到的脱敏值(含 `*`)或干脆不传 license 块都照常放行(=未修改)。前端 toast message 即可,无需特判。
3. **驾驶证等级「没显示」是前端渲染缺口,后端字段一直在返,请补渲染**:
   - 列表行:`licenseType`(如 "A2",测试服 20/20 司机有值)
   - 详情:`license.type`;编辑表单等级下拉数据源=**字典 driving_license_class**(16 国标类:A1/A2/A3/B1/B2/C1/C2/C3/C4/C5/C6/D/E/F/M/N,sys_dict 已种,labels 如「A1（大型客车）」)
4. **批量导入**:新建行(身份证号未命中)驾照号/准驾车型/驾照有效期三列必填,缺→该行报错不阻断他行;**续签行留空=保持原值**(但库内证号也为空时该行报错);模板「填写说明」已同步。
5. **司机自助 H5 新招提交**:`licenseNo` 必填(缺失 400)——OCR 识别本就回填证号,正常流程无感;H5 表单驾驶证号输入框请加必填标记。

## 实测(测试服,8 项)

| 场景 | 结果 |
|---|---|
| 创建缺 license 块 / 缺证号 | 400 |
| 三件套齐全创建 | 200 |
| 存量缺号档案编辑不补号 / 回传脱敏串 | **600207** |
| 补明文证号编辑 | 200 |
| 证号有值后不传 license 块编辑 | 200(放行) |
| H5 submit/new 缺 licenseNo | 400 |

注:测试服现有 20 个司机证号/等级数据完整,600207 在真实缺号数据出现前不会触发。
