# 【🔴前端催办·管理后台】保险计划「使用分类（司机可用）」打标 UI 仍未做 —— 这是「司机投保」整条的卡点，后端端点齐全且已实测，只差前端这一个开关

> 端：hl-ui（保险管理 → 保险产品）| 服务：hl-order-service-v3 `AdminInsuranceController`（SRS §9.17.3）| **后端零改动（端点早已存在并实测可用）** | 测试服网关 9443 实测 2026-06-15
> ⚠️ 本条是**重复催办**：同一缺口已在 `13_…` / `15_司机投保保险计划下拉空…` 里作为"第 3 件事"提过，但至今未落实。wx 2026-06-15 再次确认「现在没有地方标记保险给司机用」，故单独拎出、升 P0 催办。

## ⚠️ 关键说明：为什么是卡点（一句话）

「保险订单 / 司机档案 → 投保下单 → 人员类型=司机」的「保险计划」下拉，**只列被标为"司机可用（DRIVER/BOTH）"的计划**（安全侧，防把客人计划误投给司机）。而所有保游同步进来的计划**默认都是 CUSTOMER（客人用）**——**没有任何 UI 能把计划标成司机可用 → 司机下拉永远空 → 司机投保功能运营层面用不起来**。

现在司机下拉里能看到「计划一 / 10万计划」，是后端排查时**临时手动标的 2 个测试样本**，不是运营能控的。**正式上线前，这个打标 UI 必须做**，否则运营每加一个司机险计划都得找后端改库。

## 1. 前端要补什么（唯一缺口，精确到位置）

在「**保险管理 → 保险产品**」里给**计划（plan）**加一个「使用分类」控件：

- **位置**：保险产品列表 → 点某产品（眼睛图标/详情）→ 该产品下的**计划列表**，每个计划一行加一个「使用分类」下拉或分段开关：**客人(CUSTOMER) / 司机(DRIVER) / 通用(BOTH)**。
- **粒度**：按**计划**标，不是按产品标（一个产品下不同计划可分别给客人/司机）。
- **默认**：未标的计划是 `CUSTOMER`，下拉显示"客人"。
- 标成 **司机** 或 **通用** 后，该计划立即出现在「司机投保」的保险计划下拉里。

## 2. 调这两个现成端点（后端零改动）

| 用途 | 方法 + 路径 | 入参 / 出参 |
|---|---|---|
| **打标（设使用分类）** | `PUT /v3/admin/insurance/plans/{planId}/usage-category` | body `{"usageCategory":"DRIVER"}`；白名单 **CUSTOMER/DRIVER/BOTH**，非法值返 **540223**；返回 `Result<Void>` |
| **回显（读当前分类）** | `GET /v3/admin/insurance/products/all` | 每个产品 `plans[].usageCategory` 即当前分类（用于渲染控件选中态）；也可用 `GET /v3/admin/insurance/products/{productId}/plans` 按产品取计划 |

网关 `/v3/admin/**` 已覆盖路由，无需后端/网关任何改动。

## 3. 关键注意（避免踩坑）

- **保游"同步产品"不会覆盖本标注**：后端 `syncProducts` 是增量护栏，运营标过的 `usageCategory` 在下次同步后**保留**，不会被重置回 CUSTOMER。放心标。
- **司机下拉口径**：司机投保下拉只列 `usageCategory ∈ {DRIVER, BOTH}`；客人端维持现状（全列、不收紧）。
- `planId` 是雪花 id，**当字符串透传**（别转 JS Number，参考今天另一条续签 targetDriverId 科学计数法踩坑）。

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

```bash
# 打标：把某计划标成司机可用
curl -k -X PUT "https://api.test.1814.love:9443/v3/admin/insurance/plans/2054773833342451714/usage-category" \
  -H "Authorization: Bearer <adminToken>" -H "Content-Type: application/json" \
  -d '{"usageCategory":"DRIVER"}'
# → {"code":200,"success":true}

# 回显：读各计划当前分类
curl -k "https://api.test.1814.love:9443/v3/admin/insurance/products/all" -H "Authorization: Bearer <adminToken>"
# → data[].plans[].usageCategory ∈ CUSTOMER/DRIVER/BOTH
```

## 验收

保险产品 → 某产品计划列表，把一个意外险计划「使用分类」改为「司机」→ 回到「投保下单 → 人员类型=司机 → 保险计划」下拉，该计划应出现。运营全程无需找后端。
