# 【🔴前端必改·管理后台】司机自助录入「生成专属链接」需加「手机号(必填)+姓名(选填)」输入框 —— 后端已合并部署测试服并四路实测通过（PR #3815 / 工单 #3814）

> 端：hl-ui（车务管理 → 司机自助录入；保险订单/司机档案投保区同源生成入口）| 服务：hl-fleet-service `H5TokenAdminController` §4.1 | PR #3815 已合并 dev-v3 + 部署测试服 | 实测 2026-06-15
> ⚠️ **破坏性改动**：新招生成 token **手机号已变必填**。前端当前若仍不带手机号调生成接口 → 返 **100001**，新招生成会用不了，**请尽快加输入框**。

## ⚠️ 关键说明

司机自助录入「已发放链接」列表姓名/手机长期为「-」、「发短信」无号可发。后端已补：生成 token 时落库联系人，列表显示、「发短信」可直达。**前端需在生成入口加录入框并带参**。设计（wx 2026-06-15 拍）：**手动发短信 / 手机号必填、姓名选填 / 新招录入、续签自动取档案**。

## 1. 前端要做（两个 tab）

**新招(new)**：生成区加输入框
- 「手机号」**必填**（11 位，建议前端先做 `^1\d{10}$` 校验）
- 「姓名」选填
- 点「生成专属链接」时把 `phone` + `name` 一起传（见下端点）。

**续签(renew)**：**不要让车管重录**
- 选中司机后，姓名/手机由后端从所绑档案自动取，前端**无需传 phone/name**（传了也被后端忽略）。
- 如要展示，可只读/置灰显示该司机档案的姓名+脱敏手机（来源：司机列表项已有 name/phone）。

## 2. 端点契约（已部署实测）

`POST /admin/fleet/h5/token`（生成 token，base `/admin/fleet/h5`，网关 `/admin/fleet/**` 已覆盖）

| 字段 | 说明 |
|---|---|
| `mode` | `new`/`renew`（必填）|
| `phone` | 🆕 司机手机号。**新招必填(11位)**；续签可不传(取所绑档案) |
| `name` | 🆕 司机姓名。选填(新招录入)；续签忽略(取所绑档案) |
| `targetDriverId` | 续签必填(老档案 id，字符串透传防精度丢失) |
| `expireDays` | 选填(new=7/renew=14) |

错误码：**100001** 新招缺手机号「新招生成必须录入手机号」 / **400** 手机号格式不正确 / 600205 续签司机不存在。

返回不变：`pendingId/token/url/shortUrl/expireAt/qrCodeUrl`。

## 3. 配套（已就绪，前端零额外改动）

- 「已发放链接」列表（`GET /admin/fleet/h5/tokens`）的 `name`/`phone`(脱敏) 现在会有值，直接显示即可。
- 「发短信」（`POST /admin/fleet/h5/tokens/{pendingId}/resend`）端点未变；因生成时已落手机号，现在能直接发到该号、短信问候语带姓名。

## 实测（测试服网关 9443）

```
新招 {"mode":"new","phone":"13812340001","name":"测试新招ABC"} → 200；列表 name=测试新招ABC phone=138****0001
新招 {"mode":"new"}（缺手机号） → 100001「新招生成必须录入手机号」
新招 {"mode":"new","phone":"123"}（格式错） → 400「手机号格式不正确」
续签 {"mode":"renew","targetDriverId":"<司机id>"} → 200；列表显示该司机档案 name/phone（巴特尔 135****5020）
```

## 验收

新招：填手机号(必填)+姓名(选填) → 生成 → 「已发放链接」显示姓名/手机 → 点「发短信」发到该号。续签：选司机 → 生成 → 自动显示档案姓名/手机，无需重录。
