# 【性能·管理后台】投保下单「选择司机」搜索下拉改调轻量端点 GET /admin/fleet/drivers/options（别再用 /page）

> 端：hl-ui（保险订单 / 投保下单 → 人员类型=司机 → 「选择司机」搜索下拉）| 服务：hl-fleet-service `DriverController`（新增端点）| **后端已实现 + 部署测试服双实例 + 网关 9443 实测通过** | PR #3817 已合并 dev-v3 | 2026-06-15
> 背景：wx 反馈「选择司机」搜索下拉太慢、需限 10 条。排查发现下拉复用了**重型档案分页列表** `/admin/fleet/drivers/page`，作类型搜索框（每敲字一次请求）开销过大。已新增专用轻量端点，请前端切过去。

## ⚠️ 关键说明：为什么 /page 慢（一句话）

`/admin/fleet/drivers/page` 是司机**档案分页列表**，每次调用都干一堆下拉用不到的活：

1. **全表 `GROUP BY season` 聚合**（seasonCounts，和返回几条无关，每次必跑全表）；
2. **N+1 标签查询**（每个司机单独查一次 tags）；
3. 常驻车反查 IN 查 + 每行 activeYears 解析。

下拉只需要「姓名 + 脱敏手机号」，上面全是浪费。**光传 `pageSize=10` 治标不治本**（全表 seasonCounts + N+1 标签每次还在跑）。

## 1. 前端要改什么（只换数据源）

把「选择司机」搜索下拉的数据源**从 `/admin/fleet/drivers/page` 换成 `GET /admin/fleet/drivers/options`**。投保提交、保险计划下拉等其它逻辑都不变。

## 2. 新端点契约

| 项 | 内容 |
|---|---|
| 方法 + 路径 | `GET /admin/fleet/drivers/options` |
| 入参 | `keyword`（可选）：**姓名模糊**；输入**完整 11 位手机号**则**精确匹配**（手机号 AES 加密存储、密文等值，**不支持手机号模糊/前缀搜**——这就是搜索框提示「11 位手机号」的原因）。`limit`（可选）：默认 **10**，上限 **20**（超出封顶）。 |
| 出参 | `Result<List<{driverId, name, phone}>>`：`driverId`（雪花，**字符串**，别转 JS Number）/ `name` / `phone`（**脱敏** 135****5020）。**仅这三字段**，不再返 tags / 常驻车 / seasonCounts 等。 |
| 网关 | `/admin/fleet/**` 已覆盖，无需改网关。 |

## 3. 注意

- 下拉口径与原 `/page` 一致：返回全部未软删司机（不按赛季/状态收紧），keyword 同语义。
- 类型搜索框建议**输入时带 keyword 调用**（如防抖 300ms）；不传 keyword 也会返回最新 10 条作首屏候选。
- 手机号要精确命中必须输满 11 位（密文等值），输前几位**搜不到**——属设计限制，请在交互上明确（提示已写「搜索司机姓名或11位手机号」即可）。

## curl 实测（测试服网关 9443，真 admin token）

```bash
# 默认 10 条
curl -k "https://api.test.1814.love:9443/admin/fleet/drivers/options?limit=10" \
  -H "Authorization: Bearer <adminToken>"
# → code=200, data 10 条: [{"driverId":"2065272153565020161","name":"巴特尔","phone":"135****5020"}, ...]

# 姓名模糊
curl -k "https://api.test.1814.love:9443/admin/fleet/drivers/options?keyword=巴" -H "Authorization: Bearer <adminToken>"
# → code=200, 4 条（含 巴特尔/135****5020）

# limit 超限封顶 20
curl -k "https://api.test.1814.love:9443/admin/fleet/drivers/options?limit=999" -H "Authorization: Bearer <adminToken>"
# → code=200, 20 条
```

## 验收

「投保下单 → 司机 → 选择司机」下拉改调 `options` 后：键入姓名片段即时返候选（≤10 条，秒回，不再卡）；输入完整 11 位手机号能精确命中；选中后 driverId 正确带入投保提交。
