# 【前端调整·管理后台】司机自助录入「发短信」按钮应直接发短信（调 resend 端点），别只复制链接

> 端：hl-ui（车务 → 司机自助录入 → 新招专属链接卡片「发短信」按钮）| 服务：hl-fleet-service `H5TokenAdminController`（§4.6.4，端点早已存在）| **后端零改动，且已端到端验证过真发到手机** | wx 2026-06-15 反馈「应该在页面中直接发送短信」

## ⚠️ 关键说明：现状 vs 应该

- **现状**：点「发短信」只是**前端把短链复制到剪贴板**（toast「短链已复制，可粘贴到短信/微信发送」），还要人工再粘到短信里发。
- **应该**：点「发短信」**后端直接把入职短信发到司机手机**——这个能力后端早就有（走通知中心 + 阿里云 SMS_508070093，短信内含短链）。**上次已端到端验证：真发到 185****2756（18547062756），收件人确认收到。**

设计上 generate 只生成不发短信，「发短信」(=§4.6.4 重发端点) 才真发。所以前端把「发短信」按钮接到下面这个现成端点即可。

## 1. 前端要改什么

把「发短信」按钮的点击动作**从「复制到剪贴板」改成「调 resend 端点真发短信」**，发送成功后弹 toast（如「短信已发送至 185****2756」）。

- URL 旁那个独立的「复制」按钮**保留**（人工粘到微信用），只改「发短信」这一个按钮的行为。

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

| 项 | 内容 |
|---|---|
| 方法 + 路径 | `POST /admin/fleet/h5/tokens/{pendingId}/resend` |
| pendingId | 取自「生成 token」(`POST /admin/fleet/h5/token`) 或列表项的 `pendingId`（雪花，**字符串**透传） |
| body（可选） | `{"phone":"13800001111"}` 覆盖默认收件号；**不传则用该链接生成时录入的手机号**（新招生成时手机号已必填，正常不用传） |
| 出参 | `Result<SendOnboardLinkRespVO>`：成功返**脱敏收件号**（用于 toast）；短信经通知中心 afterCommit 异步发，出参不回投递结果（到达由 notification_send_log 承载） |
| 可发状态 | 仅 `VALID_UNSUBMITTED`（有效·未提交）/ `REJECTED`（已驳回）可发；其它状态返 600308 |
| 网关 | `/admin/fleet/**` 已覆盖，无需改网关 |

## 3. 错误码（前端按 code 提示）

- **600307** 该链接无可用手机号 → 提示「请先补录手机号」（可弹输入框，把手机号塞进 body.phone 重试）
- **600308** 当前状态不可发送（已提交/已通过/已作废）→ 提示对应状态
- **600402** 记录不存在
- 401 未登录

## curl 实测（测试服网关 9443，真 admin token；截图那条链接就是可发状态）

```bash
# 截图链接 token=5ce987cc... 对应 pendingId=2066367115152986113, status=VALID_UNSUBMITTED, phone=185****2756
curl -k -X POST "https://api.test.1814.love:9443/admin/fleet/h5/tokens/2066367115152986113/resend" \
  -H "Authorization: Bearer <adminToken>" -H "Content-Type: application/json" -d '{}'
# → {"code":200,"success":true,"data":{... 脱敏收件号 ...}}  且司机手机真实收到入职短信(含短链)
# ⚠️ 联调注意: 这会真发一条短信(走阿里云,计费)，请用你自己的测试号、别狂点
```

## 验收

点「发短信」→ 不再是复制提示，而是「短信已发送至 1xx****xxxx」；对应手机收到「【呼籁旅行】师傅您好，请点击完成司机入职信息录入：https://…/s/{码}，N天内有效。」短信，点链接进司机入职登记表单。
