--- schema: "hl-changelog/v2" ticket: "6022" title: "一键清空槽位后需求回待派车可重派 + 逐日车费按天拆分" consumer: "admin" author: "wx" change_type: "修改接口" backend_status: "deployed" gateway_status: "verified" frontend_status: "verified" frontend_owner: "mmg" frontend_ref: "c157cde4" target_release: "2026-08-18" verified_at: "2026-08-18" status_note: "后端完成:PR #6029 已合并 dev-v3(bf80a6f2ac)并部署 TEST(hl-fleet-service jar 15:29 更新、双实例重启)。bug1 看板状态派生识别「槽位清空需求」回待派车;bug2 逐日 vehicle_fee_total 按天拆分 + Flyway V20260818_001 回填存量。测试随 PR 自证。" updated_at: "2026-08-18" base: "dev-v3" generated: "2026-08-18T15:40:00+08:00" --- # 一键清空槽位后需求回待派车可重派 + 逐日车费按天拆分(#6022) ## 背景 两个 fleet 车务 bug: - **bug1**:车务派单看板对改期/重配的订单点「一键清空已派车辆槽位」后,整个用车需求被误判成「已取消」,从看板消失、无法重新派车。弹窗本意是「清空后请按新需求重新派车」,但需求消失导致车务失去重派入口。 - **bug2**:确认执行页「逐日车费」只显示 1 天、最终总车费只算 1 天——每条逐日派车行的 `vehicle_fee_total` 被写成了整槽总价(平铺到每一天),而非该天单日价。 ## 变更接口 | 接口 | 变更 | | --- | --- | | `GET /admin/fleet/board/orders`(看板列表/各 status 分面) | **行为变更**。新增识别「槽位清空需求」:需求下全部行 canceled 且取消来源**非**订单真取消(非 `order_cancelled`)时,记录级覆写回「待派车」(可见、可重派),不再误判「已取消」。已取消 tab 仍只显示订单真取消(#5923 口径零回归) | | 确认执行页「逐日车费」数据源 | **行为变更**。逐日派车行 `vehicle_fee_total` 落该天**单日协议价**(不再平铺整槽总价),逐日车费显示全部天数、最终总车费=各天单日价之和 | ## 行为口径 - **bug1**:清空=清掉派车占用让重派,不等于把需求作废。清空后需求回「待派车」、被清行的车/司机占用正确释放、订单状态不受影响;stale 陈旧定稿场景同样回待派车。 - **bug2**:核单一致性校验改为 **Σ(求和)口径**——逐日费累加 = 总车费;存量写错的逐日行由 **Flyway `V20260818_001`** 回填为单日价(仅影响展示/司机端总费,核单快照独立落库不受影响)。 ## 响应示例(逐日车费,bug2) 确认执行页「逐日车费」接口返回里,**逐日单元格数组**的每个元素 = 一天的派车明细(字段名见下,前端按字段名取)。关键是 **`protocolPrice`(当天派车价/协议价)现在=该天单日价**,不再是整槽总价平铺: ```json { "slotId": "2089597158683455490", "serviceDate": "2026-08-24", "assignmentId": "2089595940254986242", "used": "USED", "readOnly": false, "vehicleId": "2085539421276286978", "driverId": "2067084362829979650", "rescheduleResidue": false, "canDelete": true, "vehiclePlate": "蒙A-E2E99", "driverName": "王信", "protocolPrice": "1000.00" } ``` | 字段 | 类型 | 说明 | | --- | --- | --- | | `slotId` | Long(字符串) | 稳定槽位 ID(当天逐日切片) | | `serviceDate` | Date | 服务日期(逐日) | | `assignmentId` | Long(字符串) | 当天逐日派车行 ID(取消/改派按此 ID) | | `used` | String | `USED`=实际用车 / `UNUSED`=显式不用车 / `null`=未编辑 | | `readOnly` / `canDelete` | Boolean | 该 cell 只读 / 可删除(取消)标记 | | `vehicleId` / `driverId` | Long(字符串) | 当天车辆/司机 ID(未派为 null) | | `rescheduleResidue` | Boolean | 是否改期残留旧日期行(true 挂「改期残留/待清理」徽标) | | `vehiclePlate` / `driverName` | String | 当天车牌/司机明文(行冻结快照,未派为 null) | | **`protocolPrice`** | BigDecimal(字符串) | **当天派车价**:`= 该天单日协议价`(chargeable=0→0;缺协议价回退日历参考价,再无则 0)。**改动前=整槽总价平铺到每天,改动后=当天单日价** | **前端渲染要点**:逐日车费把每一行 `serviceDate` 的 `protocolPrice` 全部列出(3 天=3 行),最终总车费 = 各行 `protocolPrice` 之和(Σ 口径),不要再取单一行或按 `vehicle_fee_total` 旧值。 ## 前端动作 - 看板「待派车」分面会正确出现被一键清空的需求,可点入重派;「已取消」分面不再混入清空需求。 - 确认执行页逐日车费正常显示全部行程天数与正确合计。 ## 验证证据 - 单测随 PR 自证(一键清空回待派车 + 已取消 tab 口径零回归;逐日费按天拆分 + Σ 校验 + Flyway 回填)。 - PR #6029 squash 合并 dev-v3(merge commit bf80a6f2ac),Deploy Panel 部署 hl-fleet-service(jar 15:29 更新、双实例重启生效)。 ## 关联 / 联系人 - Issue:https://git.1814.love:8443/wx/HL/issues/6022 - PR:https://git.1814.love:8443/wx/HL/pulls/6029 - Commit(merge):https://git.1814.love:8443/wx/HL/commit/bf80a6f2ac - 后端负责人:wx