--- schema: "hl-changelog/v2" ticket: "5592" title: "需求变更后一键按新需求重派(删除旧派车后自动推荐车辆+司机)" consumer: "admin" author: "wx(GIT)" change_type: "新增接口" backend_status: "deployed" gateway_status: "verified" frontend_status: "verified" frontend_owner: "mmg" frontend_ref: "hl-admin@790e76ab1cadf44d81e610152432fb806144d898" target_release: "" verified_at: "" status_note: "2026-08-07 协调台实测:26-6457 改需求(SUV→商务车)后从 assigned 回「待派车」(旧派单清空待重派),页面含「一键清空」入口,改需求→重派流程通,标 verified。" updated_at: "2026-08-07" base: "dev-v3" generated: "2026-08-06T14:48:09+08:00" --- # 需求变更后一键按新需求重派(删除旧派车后自动推荐车辆+司机) > 后端完成:PR #5597 已合并 dev-v3 并部署 TEST,网关验证 3/3 通过。 ## ⚠️ 口径最终确认(wx,2026-08-07):要的是【一键清空】 **不是"一键重派",是"一键清空"**——定制师改出发日期/人数/用车需求后,车务点【一键清空】把之前配置完的车辆清空。 **前端实现**: - 【一键清空】按钮 = 调**既有接口** `DELETE /admin/fleet/assignments/slots/{slotId}`(Body: `{"reason":"需求变更,一键清空"}`),**不需要新接口** - 删除联动取消已派车、日切片/快照/看板自动一致;返回 removedRowCount/cancelledAssignmentCount/retainedSlotIds - 清空后:车务按新需求**手动**重新派(`auto-recommend` 仅推荐参考,**不自动配**) - 错误码:605012 槽位不存在 / 605007 已最终确认不可删 / 605027 已出发不可删 下文的 auto-recommend 仅作推荐数据源(可选),清空动作走 DELETE /slots/{slotId}。 ## 关联 / 联系人 ### 链接 - **Issue**: [#5592](https://git.1814.love:8443/wx/HL/issues/5592) - **PR**: [#5597](https://git.1814.love:8443/wx/HL/pulls/5597) - **Merge commit**: [99baa37a8](https://git.1814.love:8443/wx/HL/commit/99baa37a8) ### 联系人 - **后端负责人**: @wx ## 背景与口径(wx 2026-08-06 工单评论明确) 定制师改需求后车务手动删旧配置太麻烦 → 要"一键按新需求重派"。**关键约束**:系统不得自动取消/改派/重派任何派车——所有写操作必须车务手动点击;系统只做推荐/填充。**不是**自动标记待调整方案。 ## 变更接口 | 方法 | 路径 | 来源 | |---|---|---| | `POST` | `/admin/fleet/assignments/slots/{slotId}/auto-recommend` | `AssignmentController`(fleet) | **只读接口,不产生任何写操作**:按槽位车型/座位/日期/人数复用既有候选查询,推荐可用·车型匹配·座位充足的车辆 + 可用司机(常驻匹配优先)。 **请求**:无 Body(仅 PathVar slotId,空缺待派槽位)。 **响应**(`SlotAutoRecommendRespVO`): - `recommendedVehicle`:推荐车辆(vehicleId/plate/modelName/seats/passengerCapacity/vehicleTypeName/fleetTeamName/residentMatch) - `recommendedDriver`:推荐司机(driverId/name/maskedPhone/years/rating/driverStatus/residentMatch) - `vehicleAlternatives` / `driverAlternatives`:备选列表(各前 5) - `recommendNote`:推荐说明;`noRecommendation`:无可用推荐时 true - **错误码**:605012 槽位不存在 ## 前端/调用方动作 1. 派车页(需求变更后):车务删除旧派车(既有 `DELETE /slots/{slotId}`)后,空缺槽位展示【一键重派】入口 2. 点击调用 `auto-recommend` → 展示推荐车辆+司机与备选(可切换) 3. 车务确认后走**既有派车接口**(candidates + create/assign 流程)提交——**系统绝不自动写**,确认必须车务手动点击 ## 验证证据 - 定向测试:AssignmentServiceTest +3(推荐 top 匹配车/司机与备选;无可用候选返回 noRecommendation;槽位不存在 605012;**只读断言**:insert/update 均未调用);回归 421 用例全绿 - 网关验证(TEST):HL20260806115413191(mpv 7 座 6 人,unassigned 槽 343603476254822400)→ 推荐 蒙A-G8888 别克GL8 7 座 + 司机 巴雅尔(8 年)+ 备选 5+5 + note"车型匹配·座位充足·档期可用";**DB 复核槽位仍 unassigned(无写操作)**;不存在槽位 → 605012 - 兼容性结论:新增只读接口,无既有行为变更;verify 3170 用例全绿