From d2f16b9e9657b74f5efd4a1af8dc72ce25aaa301 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 5 Aug 2026 20:28:36 +0800 Subject: [PATCH] =?UTF-8?q?chore(changelog):=20=E6=B4=BE=E8=BD=A6=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E6=8C=89=E8=BD=A6=E5=9E=8B=E8=81=9A=E5=90=88=E4=B8=BA?= =?UTF-8?q?=E5=85=A8=E7=A8=8B=E6=A7=BD=EF=BC=88#5562=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...详情按车型聚合为全程槽-修改接口-管理后台.md | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 changelogs-v2/2026-08/05_5562_派车详情按车型聚合为全程槽-修改接口-管理后台.md diff --git a/changelogs-v2/2026-08/05_5562_派车详情按车型聚合为全程槽-修改接口-管理后台.md b/changelogs-v2/2026-08/05_5562_派车详情按车型聚合为全程槽-修改接口-管理后台.md new file mode 100644 index 0000000..558b74f --- /dev/null +++ b/changelogs-v2/2026-08/05_5562_派车详情按车型聚合为全程槽-修改接口-管理后台.md @@ -0,0 +1,67 @@ +--- +schema: "hl-changelog/v2" +ticket: "5562" +title: "派车详情按车型聚合为全程槽(详情页 2 条全程槽,可删除,删除意图持久化)" +consumer: "admin" +change_type: "修改接口" +author: "wx(GIT)" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "pending" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "后端完成:PR #5564 已合并 dev-v3 并部署 TEST;网关验证通过(详情页 2 条全程槽 + 整组删 + 按天派车不回归)。前端详情页默认用 vehicleSlots[] 呈现按车型聚合的全程槽并接入删除入口。" +updated_at: "2026-08-05" +base: "dev-v3" +--- + +# 车务: 派车详情按车型聚合为全程槽 + +> **服务**: hl-fleet-service +> **PR**: #5564 +> **Issue**: [#5562](https://git.1814.love:8443/wx/HL/issues/5562) +> **日期**: 2026-08-05 + +## 背景 + +定制师提用车需求(例:1 SUV + 1 商务,服务 4 天),车务详情页此前按 `dailyVehiclePlan` 逐日×车型展示 8 条散装切片。本次在详情接口新增**按车型聚合的全程槽** `vehicleSlots[]`(SUV 一条管全程、商务一条管全程),并支持整组删除;删除后同一需求的重新展开不会复活被删槽位。按天派车细节 `dailyVehiclePlan` 保留不变(按天派不同车/司机能力不回归)。 + +## 变更接口 + +| 方法 | 路径 | 来源 | +|---|---|---| +| `GET` | `/admin/fleet/board/orders/{orderId}` | `BoardController`(fleet) | + +路径前缀 `/admin/fleet/**` 已由网关登录/角色校验与 `FleetAdminRoleGuardInterceptor`(VEHICLE_MANAGER / SUPER_ADMIN)收口,无需新增网关规则。响应**新增字段** `vehicleSlots[]`,其余字段不变。 + +## 1. 详情接口新增 `vehicleSlots[]`(按车型聚合的全程槽) + +响应 `data.vehicleSlots[]` 每项: + +| 字段 | JSON 类型 | 说明 | +|---|---|---| +| `assignmentSlotId` | string(Long) | 稳定车辆槽位 ID(删除接口入参) | +| `fleetItemIndex` | int | 需求车辆槽位序号(0 起) | +| `assignmentGroupId` | string(Long) | 当前派车组 ID;同槽位跨段换车时每段一条 | +| `requiredVehicleType` | string | 要求车型编码(小写 key,如 `suv`/`mpv`) | +| `requiredVehicleTypeLabel` | string | 要求车型标签(如 `SUV`/`商务车`) | +| `requiredSeats` | int | 要求座位数 | +| `serviceStartDate` / `serviceEndDate` | string(date) | 本段槽位全程服务区间(如 4 天全程) | +| `serviceDays` | int | 服务天数(闭区间) | +| `slotStatus` | string | 槽位聚合落库态:`unassigned`/`holding`/`assigned`/`completed`/`canceled` | +| `slotStatusLabel` | string | 聚合状态中文标签 | +| `assignmentId` | string(Long) | 代表派单 ID | +| `vehicleId`/`vehiclePlate`/`vehicleModel` | string | 代表车辆(未派为 null) | +| `driverId`/`driverName`/`driverPhone` | string | 代表司机(未派为 null,手机号脱敏) | +| `canDelete` | bool | 本槽位是否可整组删除(无已派/已确认/已完结/finalized 取消行且订单未只读) | +| `deleteBlockReason` | string | 不可删除原因;可删除时为 null(`槽位已派车或已确认,请先取消派车后再删除` / 只读原因) | + +**删除规则与口径**:与 `DELETE /admin/fleet/assignments/slots/{slotId}`(#5550)完全一致;删除成功即整组删(软删全部未派切片 + Step2 快照收敛)。**新增持久化**:删除意图写入 `fleet_assignment_slot_removal`(按 requirement_id + fleet_item_index 唯一),同一需求后续重新展开(reconcile 重放/补缺)自动跳过被删槽位,不再复活;需求换版(新 requirementId)按新需求重新展开不受影响。 + +## 前端配合 + +1. 详情页**默认以 `vehicleSlots[]` 呈现槽位列表**(2 条全程槽),替代按天切片展示; +2. `canDelete=true` 时提供「删除槽位」入口,调 `DELETE /admin/fleet/assignments/slots/{slotId}`(body `{"reason":"..."}`);605007/605012 错误提示沿用; +3. 逐日细节(每日车/司机/价格/接送)继续用 `dailyVehiclePlan`(按天派车、改派、确认能力不变)。