docs: correct frontend slot acceptance for #5245
所有检测均成功
changelog-filename-gate / validate (pull_request) Successful in 1s

这个提交包含在:
wx 2026-07-25 19:40:47 +08:00
父节点 4a3ec16a3d
当前提交 da2707f63b

查看文件

@ -6,13 +6,13 @@ consumer: "admin"
change_type: "修改接口" change_type: "修改接口"
backend_status: "deployed" backend_status: "deployed"
gateway_status: "verified" gateway_status: "verified"
frontend_status: "implemented" frontend_status: "claimed"
frontend_owner: "hl-ui-codex" frontend_owner: "hl-ui-codex"
frontend_ref: "mmg/hl-ui@9f29b1eef42f48e98431caab67cc8a776541be3f" frontend_ref: ""
target_release: "" target_release: ""
verified_at: "" verified_at: ""
status_note: "后端已通过 PR #5249/#5250 合并、部署并完成网关验证;前端已实现多车多司机消费,待发布及页面验证。" status_note: "后端已部署并完成网关验证;用户验收发现排车页缺少新增车辆槽位入口,前端已退回 claimed 继续修复。"
updated_at: "2026-07-25T10:21:57.332Z" updated_at: "2026-07-25"
base: "dev-v3" base: "dev-v3"
--- ---
@ -36,6 +36,8 @@ base: "dev-v3"
active 派车组时继续返回 `605308` active 派车组时继续返回 `605308`
- 批量派单和详情多司机字段是既有契约,本次明确前端消费口径:一次提交 `items[]`,详情展示 - 批量派单和详情多司机字段是既有契约,本次明确前端消费口径:一次提交 `items[]`,详情展示
`activeAssignments[]`,不得只处理兼容代表字段 `currentAssignment` `activeAssignments[]`,不得只处理兼容代表字段 `currentAssignment`
- 排车页必须提供“+ 添加车辆槽位”入口。新增槽位不是替换“车辆槽位 1”,而是追加一个可独立
选择车辆和司机的草稿槽位;多个槽位统一映射为批量派单 `items[]`
## 变更接口 ## 变更接口
@ -123,6 +125,12 @@ items:
- `fleetItemIndex` 从 0 开始,对应需求展开后的稳定车辆槽位。 - `fleetItemIndex` 从 0 开始,对应需求展开后的稳定车辆槽位。
- `vehicleId``driverId` 必填;雪花 ID 全程按字符串处理。 - `vehicleId``driverId` 必填;雪花 ID 全程按字符串处理。
- `protocolPrice``messageTemplateId``customBody``confirmCrossResident` 是单槽位可选字段。 - `protocolPrice``messageTemplateId``customBody``confirmCrossResident` 是单槽位可选字段。
- 前端维护可编辑槽位列表。初始槽位来自当前有效派车组或订单用车需求;点击
“+ 添加车辆槽位”后追加一个空白草稿槽位,不得覆盖或复用既有槽位。
- 每个草稿槽位独立选择一辆车和一名司机;未提交的新槽位允许删除,已有
`holding` / `assigned` 槽位不得被“删除草稿”操作静默撤销。
- 进入下一步前校验所有可提交槽位均已选择车辆和司机,并为每个槽位生成唯一
`fleetItemIndex`。页面可见槽位数必须等于本次提交的 `items[]` 数量。
- 不得为每辆车循环调用单条 `POST /admin/fleet/assignments` 代替批量接口。 - 不得为每辆车循环调用单条 `POST /admin/fleet/assignments` 代替批量接口。
- 批量响应按 `data.assignments[].assignment.assignmentGroupId` 返回各槽位派车组 ID; - 批量响应按 `data.assignments[].assignment.assignmentGroupId` 返回各槽位派车组 ID;
前端逐项调用模板预览时传入对应 `assignmentGroupId`,不得只预览代表项。 前端逐项调用模板预览时传入对应 `assignmentGroupId`,不得只预览代表项。
@ -155,13 +163,20 @@ GET /admin/fleet/board/orders/<orderId>
| 通知预览传入有效派车组 | `assignmentGroupId` + `renderedBody` 中的 `itinerary.url` | 即时创建或复用并展示稳定短链 | | 通知预览传入有效派车组 | `assignmentGroupId` + `renderedBody` 中的 `itinerary.url` | 即时创建或复用并展示稳定短链 |
| 旧前端未传派车组但订单、车辆、司机唯一定位 | `orderId` + `vehicleId` + `driverId` | 兼容定位并返回同一稳定短链 | | 旧前端未传派车组但订单、车辆、司机唯一定位 | `orderId` + `vehicleId` + `driverId` | 兼容定位并返回同一稳定短链 |
| 派车组缺失、无效或定位不唯一 | “行程链接暂不可用,请联系车务确认” | 展示不可用态,不把文案当可发送链接 | | 派车组缺失、无效或定位不唯一 | “行程链接暂不可用,请联系车务确认” | 展示不可用态,不把文案当可发送链接 |
| 一单多个车辆槽位 | `items[]` | 每个槽位各选一辆车和一名司机,一次批量提交 | | 已有车辆槽位 | `activeAssignments[]` 或当前排车草稿 | 按稳定槽位逐项展示;允许重选当前槽位的车辆或司机 |
| 新增车辆槽位 | 前端草稿槽位列表 | 展示“+ 添加车辆槽位”;每次点击只追加一个空白槽位,不替换已有槽位 |
| 新增槽位未选完整 | 草稿槽位的 `vehicleId` / `driverId` | 槽位显示未完成警示,禁用“下一步”;不生成可发送通知 |
| 删除未提交槽位 | 前端草稿槽位列表 | 只删除新增且未提交的草稿槽位,不撤销已有有效派车组 |
| 一单多个车辆槽位 | `items[]` | 每个槽位各选一辆车和一名司机,一次批量提交;可见槽位数与 `items[]` 数量守恒 |
| 详情有多个 active 派车组 | `activeAssignments[]` | 按槽位逐项展示车辆、司机、脱敏电话和状态 | | 详情有多个 active 派车组 | `activeAssignments[]` | 按槽位逐项展示车辆、司机、脱敏电话和状态 |
| 详情无 active 派车组 | `activeAssignments=[]` | 展示无有效派单空态 | | 详情无 active 派车组 | `activeAssignments=[]` | 展示无有效派单空态 |
## 前端处理清单 ## 前端处理清单
- [ ] 派车弹窗支持选择多个车辆槽位,并为每个槽位选择司机。 - [ ] 排车页提供“+ 添加车辆槽位”入口,允许连续新增多个草稿槽位,不得只重选“车辆槽位 1”。
- [ ] 每个新增槽位分别选择一辆车和一名司机,并支持删除未提交的草稿槽位。
- [ ] “下一步”前校验所有槽位,按页面槽位顺序生成唯一 `fleetItemIndex`,可见槽位与
`items[]` 一一对应。
- [ ] 统一提交 `POST /admin/fleet/assignments/batch``items[]`,保留批次级 `requestId` - [ ] 统一提交 `POST /admin/fleet/assignments/batch``items[]`,保留批次级 `requestId`
- [ ] 批量派单响应逐项保存 `assignmentGroupId`;通知预览传入当前槽位的 - [ ] 批量派单响应逐项保存 `assignmentGroupId`;通知预览传入当前槽位的
`orderId``vehicleId``driverId``assignmentGroupId`,只把真实短链视为可发送链接。 `orderId``vehicleId``driverId``assignmentGroupId`,只把真实短链视为可发送链接。
@ -169,6 +184,13 @@ GET /admin/fleet/board/orders/<orderId>
- [ ] 司机电话使用后端脱敏值,雪花 ID 始终按字符串处理。 - [ ] 司机电话使用后端脱敏值,雪花 ID 始终按字符串处理。
- [ ] 覆盖无 active、多 active、短链不可用等空态/失败封闭场景。 - [ ] 覆盖无 active、多 active、短链不可用等空态/失败封闭场景。
## 前端验收反馈
- 2026-07-25 用户页面验收:排车页仅显示“车辆槽位 1”,只能在该槽位内重选车辆或司机,
无法新增第二个槽位;当前前端提交不满足多车辆、多司机批量派单要求。
- 状态因此由 `implemented` 回退为 `claimed`。前端完成新增槽位、逐槽位选择和批量提交后,
应填写新的 `frontend_ref` 再迁移为 `implemented`
## 验证证据 ## 验证证据
- OpenAPI/oasdiff`not_configured`。项目未配置可复现的 Swagger2 → OAS3 导出与 oasdiff 基线; - OpenAPI/oasdiff`not_configured`。项目未配置可复现的 Swagger2 → OAS3 导出与 oasdiff 基线;
@ -193,4 +215,4 @@ GET /admin/fleet/board/orders/<orderId>
- 不修改批量派单事务、价格、跨常驻确认、保险或通知冻结规则。 - 不修改批量派单事务、价格、跨常驻确认、保险或通知冻结规则。
- 不新增 DDL,不清理、不回填存量数据。 - 不新增 DDL,不清理、不回填存量数据。
> `frontend_status: implemented` 表示前端代码已有真实提交引用;尚不代表已发布或完成页面验证 > `frontend_status: claimed` 表示前端已领取但仍需修复“新增车辆槽位”;尚未形成可验收的完整实现