diff --git a/changelogs-v2/2026-08/05_5562_派车详情按车型聚合为全程槽-修改接口-管理后台.md b/changelogs-v2/2026-08/05_5562_派车详情按车型聚合为全程槽-修改接口-管理后台.md deleted file mode 100644 index 8f820f1..0000000 --- a/changelogs-v2/2026-08/05_5562_派车详情按车型聚合为全程槽-修改接口-管理后台.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -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`(按天派车、改派、确认能力不变)。 - -## 关联/联系人 - -### 链接 - -- [后端工单 #5562](https://git.1814.love:8443/wx/HL/issues/5562) -- [后端 PR #5566](https://git.1814.love:8443/wx/HL/pulls/5566) -- Merge commit: `17baf071d3` - -### 联系人 - -- **后端负责人**: @wx diff --git a/changelogs-v2/2026-08/05_5562_用车需求槽位模型改为全程槽(expand-生成按车型全程行,车务每槽派-1-辆管全程)-修改接口-管理后台.md b/changelogs-v2/2026-08/05_5562_用车需求槽位模型改为全程槽(expand-生成按车型全程行,车务每槽派-1-辆管全程)-修改接口-管理后台.md new file mode 100644 index 0000000..4b411f0 --- /dev/null +++ b/changelogs-v2/2026-08/05_5562_用车需求槽位模型改为全程槽(expand-生成按车型全程行,车务每槽派-1-辆管全程)-修改接口-管理后台.md @@ -0,0 +1,67 @@ +--- +schema: "hl-changelog/v2" +ticket: "5562" +title: "用车需求槽位模型改为全程槽(expand 生成按车型全程行,车务每槽派 1 辆管全程)" +consumer: "admin" +author: "wx(GIT)" +change_type: "修改接口" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "pending" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "后端完成:PR #5568(全程槽模型)+ #5569(换版沿用修复)已合并 dev-v3 并部署 TEST;网关验证通过(全新展开 2 条全程行 / 换版保持全程行 / 每槽派 1 辆管全程 / 整组删 removedRowCount=1 / 按天派生展示不回归)。前端槽位列表与派车交互按全程槽语义适配。" +updated_at: "2026-08-05" +base: "dev-v3" +generated: "2026-08-05T22:45:18+08:00" +--- + +# 用车需求槽位模型改为全程槽(expand 生成按车型全程行,车务每槽派 1 辆管全程) + +> 后端完成:PR #5568/#5569 已合并 dev-v3 并部署 TEST,网关验证 7/7 通过。 + +## 关联 / 联系人 + +### 链接 + +- **Issue**: [#5562](https://git.1814.love:8443/wx/HL/issues/5562) +- **PR**: [#5568](https://git.1814.love:8443/wx/HL/pulls/5568)(全程槽模型)、[#5569](https://git.1814.love:8443/wx/HL/pulls/5569)(换版沿用修复) +- **Merge commit**: [e051fb93d](https://git.1814.love:8443/wx/HL/commit/e051fb93d)、[41792d8b9](https://git.1814.love:8443/wx/HL/commit/41792d8b9) + +### 联系人 + +- **后端负责人**: @wx + +## 背景(wx 口径) + +槽位**数据模型本身**改为全程槽:定制师需求(例 1 SUV + 1 商务 × 4 天)→ `expand` 默认生成 **2 条全程行**(SUV 全程槽 + 商务全程槽,各覆盖整个服务期),车务在每槽派 1 辆管全程的车,槽可修改/删除。**不是**按天 8 条散装切片 + 展示层聚合。存量按天数据不迁移(兼容运行),对账/逐日展示/行程/矩阵等按天界面从全程行派生,保持不变。 + +## 变更接口 + +| 方法 | 路径 | 来源 | +|---|---|---| +| `PUT` | `/v3/admin/order/{id}/vehicle-requirement` | `VehicleRequirementAdminController`(order-v3)→ 触发 fleet expand | + +路径前缀 `/v3/admin/**` 与 `/admin/fleet/**` 已由网关登录/角色校验收口,无需新增网关规则。**契约字段无变化**:需求提交 VO(fleet[] 车型组合)与既有看板/详情/候选/派车/删除接口字段全部不变,变化在 Fleet 落库模型与派生行为。 + +## 模型行为(fleet_assignment) + +- **新展开**:每需求×车型 1 条全程行——`start_date`/`end_date` 覆盖整个服务期,`service_date`/`assignment_group_id` 均为 NULL(1SUV+1商务×4天 = 2 条 unassigned 行) +- **派车**:create/batchCreate 在全程行上直接升级为 1 条 `assigned` 全程行(每槽 1 辆管全程);改派在槽上换车/司机 +- **删除**:`DELETE /admin/fleet/assignments/slots/{slotId}` 整组删(removedRowCount=1)+ `fleet_assignment_slot_removal` 持久化防展开复活 +- **换版**:服务期一致时全程行沿用(rebind 保持 group_id IS NULL);日期变化取消重建 +- **按天派生**(显示/对账/快照层不变):看板 `dailyVehiclePlan`、矩阵、DAILY_V3 快照、Step2 canonical 候选、对账/保险均从全程行按服务期展开逐日 + +## 前端/调用方动作 + +1. 车务槽位列表默认呈现"一条管全程"的槽位(详情 `vehicleSlots[]`、看板 `assignmentSlots[]` 已是全程区间语义);**删除按钮**调 `DELETE /admin/fleet/assignments/slots/{slotId}`(605007 已派拒绝/605012 不存在) +2. 派车弹窗按全程区间提交(`startDate`=服务开始、`endDate`=服务结束、每槽 1 辆 1 司机);最终方案提交仍按逐日 `dailyPlan[]`(同槽各日须同一车/司机,后端整槽聚合) +3. 逐日细节(每日车/司机/价格/接送)继续用 `dailyVehiclePlan`,展示不变 + +## 验证证据 + +- 定向测试:fleet verify 全绿(3159 用例 + Testcontainers);新增全程行展开/派车/换版沿用/DAILY_V3 派生/看板派生测试 +- 网关验证(TEST):全新展开 2 条全程行落库 → 换版保持全程行 → 每槽派 1 辆管全程(assigned 全程行)→ 整组删 removedRowCount=1 → 详情 1 条全程槽(canDelete/阻断原因)→ dailyVehiclePlan 派生 6 天不回归 +- 兼容性结论:存量按天数据兼容运行(不迁移);legacy 区间行迁移逻辑保留 diff --git a/changelogs/2026-08/2_5562_用车需求槽位模型改为全程槽(expand-生成按车型全程行,车务每槽派-1-辆管全程).md b/changelogs/2026-08/2_5562_用车需求槽位模型改为全程槽(expand-生成按车型全程行,车务每槽派-1-辆管全程).md new file mode 100644 index 0000000..6d94bb7 --- /dev/null +++ b/changelogs/2026-08/2_5562_用车需求槽位模型改为全程槽(expand-生成按车型全程行,车务每槽派-1-辆管全程).md @@ -0,0 +1,55 @@ +--- +schema: "hl-changelog/v2" +ticket: "5562" +title: "用车需求槽位模型改为全程槽(expand 生成按车型全程行,车务每槽派 1 辆管全程)" +consumer: "admin" +author: "wx(GIT)" +change_type: "修改接口" +backend_status: "pending" +gateway_status: "pending" +frontend_status: "pending" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "" +updated_at: "2026-08-05" +base: "dev-v3" +generated: "2026-08-05T22:44:55+08:00" +--- + +# 用车需求槽位模型改为全程槽(expand 生成按车型全程行,车务每槽派 1 辆管全程) + +> 自动草稿不会代表已验证;完成实际测试后再更新 frontmatter。 + +## 关联 / 联系人 + +### 链接 + +- **Issue**: [#5562](https://git.1814.love:8443/wx/HL/issues/5562) +- **PR**: 待补充(合并后填 [#N](https://git.1814.love:8443/wx/HL/pulls/N)) +- **Merge commit**: 待补充(合并后回填 [https://git.1814.love:8443/wx/HL/commit/sha](https://git.1814.love:8443/wx/HL/commit/sha)) + +### 联系人 + +- **后端负责人**: @wx + +## 变更接口 + +| 方法 | 路径 | 来源 | +|---|---|---| +| TODO | 待补充 | 根据以下契约文件确认 | + +## 契约影响文件 + +- 未从当前 diff 检测到 Controller/DTO/VO/Feign 文件,请确认是否需要 changelog。 + +## 前端/调用方动作 + +- 待补充:说明调用方需要新增、删除或调整的字段与行为。 + +## 验证证据 + +- 定向测试:待补充 +- 网关验证:待补充 +- 兼容性结论:待补充