# 【前端接线·管理后台】司机自助录入「已发放链接」等整块是前端写死/mock——后端 6 个端点早已存在，请直接接，无需后端补

> 服务：hl-fleet-service（H5TokenAdminController，FLEET v1.5 §4.1/§4.6） | 无 PR（后端端点早已存在并部署） | 测试服网关 9443 实测返回真实数据（2026-06-15）
> 背景：wx 在「车务管理→司机自助录入」页看「已发放链接」列表，指出这块是前端写死的，要求改走后端接口、没有就补。经核实**后端接口早已存在且可用**，前端当前展示的是 mock 数据未接线。

## ⚠️ 关键判定：前端在用写死数据，不是后端缺接口

截图「已发放链接」里 token 是 `kx7m9qz` / `ab3d8fh`（6–7 位短串）、二维码域名 `hr.elujiwo.com/driver-intake/kx7m9qz`（路径式）。而**后端真实数据**是：

```
GET /admin/fleet/h5/tokens?page=1&pageSize=5   （测试服实测 code=200）
records[0] = {
  "pendingId": "2066323803964637186",
  "mode": "new", "modeLabel": "新招",
  "token": "18bf0d0208a7459684621727c4511109",   // 32 位 UUID，不是 kx7m9qz
  "name": "", "phone": "138****0000",
  "createTime": "2026-06-15 08:56:00", "expireAt": "2026-07-15 08:56:00",
  "status": "VALID_UNSUBMITTED", "statusLabel": "...",
  "url": "https://hr.1814.love/driver-intake?t=18bf0d02...",   // hr.1814.love + ?t=，不是 elujiwo.com
  "shortUrl": "https://web.test.1814.love:9443/s/tRE4y8bc7"     // 真实短链
}
```

token 长度、域名、链接格式全对不上 → **前端那几行是写死/mock 的，请替换为下列现成端点**。

## 现成端点全清单（base `/admin/fleet/h5`，网关 `/admin/fleet/**` 已覆盖，全部无需后端改动）

| # | 用途 | 方法 + 路径 | 关键说明 |
|---|------|-----------|---------|
| 1 | 生成录入 token（二维码/链接）| `POST /admin/fleet/h5/token` | 入参 mode(new/renew)/targetDriverId(renew必填)/phoneHint/expireDays；返回 token/url/**shortUrl**/qrCodeUrl(300×300 PNG Base64)/expireAt |
| 2 | **已发放链接列表**（红框这块）| `GET /admin/fleet/h5/tokens` | 过滤 mode/status(6派生态)/keyword(姓名或token)；分页 page/pageSize；返回 `PageResult<H5TokenListItemRespVO>` |
| 3 | 导出 CSV | `GET /admin/fleet/h5/tokens/export` | 同列表入参无分页，返回 text/csv（UTF-8 BOM）|
| 4 | 作废链接 | `POST /admin/fleet/h5/tokens/{pendingId}/void` | 仅 APPROVED 不可作废；已 VOIDED 幂等；600402 不存在/600304 已通过 |
| 5 | 重发录入短信 | `POST /admin/fleet/h5/tokens/{pendingId}/resend` | 仅 VALID_UNSUBMITTED/REJECTED 可重发；走短链；600307 无手机号/600308 状态不可重发 |
| 6 | 重新生成链接 | `POST /admin/fleet/h5/tokens/{pendingId}/regenerate` | SUBMITTED/APPROVED 不可重生；作废旧+建新返新 token/qr；600309 已提交/已通过 |

## 列表项字段（H5TokenListItemRespVO，端点 #2 返回）

`pendingId`(String雪花) / `mode`+`modeLabel`(new=新招·renew=续签) / `token`(32位) / `name`(未提交为空串) / `phone`(脱敏 138****2345) / `createTime` / `expireAt` / `submittedAt`(未提交 null) / `reviewStatus`(pending/approved/rejected) / `status`(6派生态 VOIDED/APPROVED/REJECTED/SUBMITTED/EXPIRED/VALID_UNSUBMITTED) / `statusLabel`(中文) / `url`(可复制转发的完整长链) / `shortUrl`(短信实投短链，旧行无短码时 null，前端降级显示 url)。

## 前端动作

1. 「生成专属链接 + 二维码」改调 #1，二维码用返回的 `qrCodeUrl`、复制用 `url`、短信用 `shortUrl`（别再用 elujiwo.com 域名/短假 token）。
2. 「已发放链接」表改调 #2（替换写死的 3 行 mock），列直接映射上面字段；操作列「作废/重发/重新生成」接 #4/#5/#6，「导出」接 #3。
3. 状态列直接用后端 `statusLabel`（已是中文，6 态实时派生），不要前端自己算。

## 实测

`GET /admin/fleet/h5/tokens?page=1&pageSize=5` → code=200，返回多条真实 VALID_UNSUBMITTED 记录（32 位 token + hr.1814.love?t= 链接 + web.test 短链），数据真实可用。**后端无需任何改动。**
