--- author: "wx(GIT)" schema: "hl-changelog/v2" ticket: "5933" title: "生成 H5 录入 token 支持 requestId 幂等键(防双击)" consumer: "admin" change_type: "修改接口" backend_status: "deployed" gateway_status: "verified" frontend_status: "pending" frontend_owner: "mmg" frontend_ref: "pending" target_release: "v2.1" verified_at: "2026-08-12" updated_at: "2026-08-12" status_note: "后端已于 2026-08-12 合并 PR #5940 并部署测试服验证:同 requestId 首次成功、30s 内第二次返回 100502、不同 requestId 成功;旧客户端不传 requestId 连续两次均成功。API-SPEC §13.6 同步补声明 contractVersion/segmentDays/serviceDates/segmentRoute。" base: "dev-v3" --- # 生成 H5 录入 token 支持 requestId 幂等键(#5933) > **服务**:`hl-fleet-service` > > **Backend Issue**:[#5933](https://git.1814.love:8443/wx/HL/issues/5933) ## 变更接口 | 接口 | 方法 | 路径 | 变更类型 | |---|---|---|---| | 生成 H5 录入 token | `POST` | `/admin/fleet/h5/token` | additive 请求字段(可选 requestId) | ## 1. 变更内容 ### 1.1 新增可选入参 `requestId` `POST /admin/fleet/h5/token` 入参新增**可选** `requestId`: | 字段 | JSON 类型 | 必填 | 说明 | |---|---|---|---| | `requestId` | `String` | 否 | 前端稳定幂等键(1-64 位,仅字母数字与 `._-`,建议 UUID)。同 `requestId` **30s 窗口内**重复请求被拒(`100502 请勿重复提交`),防双击 / 弱网重试重复建链 | **前端适配(推荐)**:生成按钮点击时生成稳定唯一值(如 UUID),**重试沿用同一值**;作废后重新生成属不同业务动作,应换新 `requestId`。不传 `requestId` 完全兼容(后端跳过幂等,行为与旧版一致)。 **错误码新增触发场景**:`100502`(同 requestId 30s 内重复提交)。 ### 1.2 行程单 H5 契约补声明(无接口变更) `GET /app/h5/itinerary/{token}` 出参中的 `contractVersion` / `segmentDays` / `serviceDates[]` / `segmentRoute` 四字段随 #5364 已上线并交接(frontend_status=verified),本次仅补全 API-SPEC §13.6 文档声明,**接口与实现均无变化**,前端无需任何改动。 ## 2. 兼容性 - `requestId` 可选:旧前端不传时行为与旧版完全一致(线上实测验证)。 - 线上旧版本收到含 `requestId` 的请求体时忽略未知字段、正常生成(实测 200),前后端可异步上线。 ## 3. 验证证据 - 后端 PR:`#5940`,squash merge `0792b27c`。 - 测试服部署:Deploy Panel 任务 `d0c1a1ef`,`hl-fleet-service` / `dev-v3`,状态 `success`。 - 自动化:H5 定向测试 88/88、Fleet ArchTest 13/13、spotless 通过。 - 网关实测: - 同 `requestId` 首次调用 → `200/成功`; - 同键 30s 内第二次调用 → `100502/生成处理中,请勿重复提交`; - 不同 `requestId` → 各自成功; - 不传 `requestId` 连续两次 → 均成功。 ## 4. 验收要点 - 同 `requestId` 30s 内第二次调用 → `100502 生成处理中,请勿重复提交`(测试服网关已验证)。 - 不同 `requestId` 各自成功(测试服网关已验证)。 - 不传 `requestId` 连续两次调用均成功(兼容路径,测试服网关已验证)。