hl-api-changelog/changelogs-v2/2026-08/10_5788_换版保留派单可改派与槽位标旧-修改接口-管理后台.md
2026-08-10 16:29:53 +08:00

5.9 KiB

schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
schema ticket title consumer author change_type backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base
hl-changelog/v2 5788 换版保留派单可改派:候选排除放行 superseded 行 + vehicleSlots 新增标旧字段 admin wx(GIT) 修改接口 deployed not_required implemented mmg a75efc05 2026-08-10 前端已实现(范围:槽位标旧+撞号过滤):resolveFleetRequirementSlots 过滤 vehicleSlots superseded=true 行(不进当前需求槽位展开防 fleetItemIndex 撞号污染,实测 HL20260809095540216 旧行 fleetItemIndex=1 与当前 SUV 槽撞号),单独收 supersededSlots;AssignModal 槽位区上方渲染「旧数据·需求已改版」标旧只读行(车/司机+待人工核对 hint,改派/取消引导去详情)。实证 TEST 详情 superseded 行在 vehicleSlots(assignmentSlots 全空)、2 单 pendingCount=1 有真实保留行。spec 17/17、关联 426/426、checkpoint 全过。【fleetItemIndex 同源修正押后】useAssignFlow.js:294/candidates 排除的 fleetItemIndex 同源:#5798 后端已放宽校验兜底非阻塞,且同源数据源选择(操作槽 vs order 顶层 vs currentAssignment)涉 candidates 排除正确性,另开工单深扣。 2026-08-10 dev-v3

车务: 需求换版保留派单可改派 + 槽位视图标旧(#5788

服务: hl-fleet-service (8087/8187) PR: #5796 Issue: #5788 日期: 2026-08-10 影响范围: 派单看板订单详情 vehicleSlots 结构(新增 3 字段)、派单候选查询排除校验语义 背景: #5784 换版保留行此前点「重新配置车辆」必报「参数非法: 排除派单不属于当前订单、当前用车需求或当前车型项」(26-9313 实测),改派通路被拦死;且槽位视图无法区分新旧行。


1. 详情接口 vehicleSlots 新增 3 字段

GET /admin/fleet/board/orders/{orderId}vehicleSlots[] 每行新增:

字段 类型 说明
requirementId string(Long) 槽位行所属用车需求ID;与顶层 requirementId 不等且 superseded=true 时为换版保留的旧需求行
superseded boolean 是否换版保留的旧派单行。true=旧数据,仅供人工核对后改派/取消,不参与当前方案日格进度与车费计数
supersededByRequirementId string(Long) 取代该行的新需求ID;superseded=true 时非空

排序约定: 当前需求槽位行在前(顺序不变),换版保留行追加在尾部。保留行固定 canDelete=false,deleteBlockReason="需求已改版保留行,请改派或取消,不支持直接删除槽位"

前端要做: 保留行渲染「旧数据/需求已改版」标识(区别于当前槽位),操作只留「改派 / 取消」;顶部黄条(supersededAssignments)保持现状作提醒入口。注意保留行的 fleetItemIndex 是旧版展开序,可能与当前需求槽位撞号,渲染分组请以 superseded 标志区分,勿再单靠 fleetItemIndex

2. 候选查询排除校验放宽(保留行改派入口打通)

POST /admin/fleet/assignments/candidates:

  • excludeAssignmentId 现在允许两类:①当前需求本身的派单(原口径,仍须 requirementId+fleetItemIndex 精确匹配);②换版保留派单(supersededByRequirementId 非空,属当前订单即可)。
  • 排除保留行时 fleetItemIndex 可不传(旧版序号在新需求下无语义,后端不再校验);座位匹配自动锚保留行自身座位快照(requiredSeats),不再按新需求车型项定位。
  • 保留行自身占用会被正确排除:实测 exclude 后原车 available=true、conflicts=
  • 防护不回归:非本订单/不存在的 assignmentId、普通行 fleetItemIndex 不匹配 → 仍报「参数非法」。

2.5 跟进(PR #5798,2026-08-10):排除未派车占位行也不校验序号

现版前端槽位上下文缺 fleetItemIndex 时回退 0(useAssignFlow.js:294),排除 SUV 占位行(实际序号 1)时被后端精确匹配拒绝(26-9313 复现)。后端已放宽:排除当前需求的 unassigned 占位行时不校验 fleetItemIndex(需求归属仍校验),座位按占位行自身 requiredSeats 快照。现版前端不改也能选车,但仍建议槽位上下文与 vehicleSlots[].fleetItemIndex/assignmentId 同源取值,消除序号错位。

2.6 展示布局建议(wx 2026-08-10 口径)

场景:原需求商务车×2(两辆均已派),改为商务×1+SUV×1。期望车务再派车时看到:

  1. 商务槽(当前): 沿用原车回显(换版时签名匹配自动沿用,如 26-9313 的蒙A-E5555)——可加「沿用」小徽标(判定见 #5784 changelog);
  2. SUV 槽(当前): 待选车,点选车走候选接口(本次已修通);
  3. 旧数据行: 被取代的原商务车(蒙A-S6666)从 vehicleSlotssuperseded=true 的行渲染,标「旧数据/需求已改版」。操作能力与普通行一致(可改派/取消),不要禁用——旧数据与新数据无本质区别,只要日期对得上;仅改出发日期场景下旧车/司机日期不符时,车务需先取消旧行再进行下一步(此时给出引导提示)。

即"原来的两辆商务车都可见(一辆沿用在新槽、一辆标旧),新需求两个槽位齐全"。

3. 实测数据样例(测试服 26-9313)

// vehicleSlots 尾部保留行
{"fleetItemIndex":1, "requiredVehicleType":"mpv", "slotStatus":"assigned",
 "vehiclePlate":"蒙A-S6666", "superseded":true,
 "requirementId":"2086270153913225218",
 "supersededByRequirementId":"2086700635972915201",
 "canDelete":false, "deleteBlockReason":"需求已改版保留行,请改派或取消,不支持直接删除槽位"}

关联 / 联系人

链接

联系人

  • 后端负责人: @wx
  • 前端负责人: @mmg