---
author: "wx(GIT)"
schema: "hl-changelog/v2"
ticket: "5479"
title: "看板列表同槽位跨段换车 assignmentSlots 按派车组拆分"
consumer: "admin"
change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "implemented"
frontend_owner: "pi-main-session"
frontend_ref: "hl-admin@e0c5f4f75087107fd0d82fbdc104c76d732292dc"
target_release: ""
verified_at: "2026-08-04"
status_note: "看板列表 assignmentSlots 修复：同槽位跨段换车（同 slot 多 assignment_group_id）时由仅返回首段改为按派车组返回多段（每段含各自区间/车辆/司机/司机手机号）；slotSummary 各段区间合计覆盖全槽；单段槽位行为不变。前端若按单条槽位渲染需适配多段展示。"
updated_at: "2026-08-04"
base: "dev-v3"
---

# 【修改接口·管理后台】看板列表同槽位跨段换车 assignmentSlots 按派车组拆分 (#5479)

> **PR**: #5484 | **服务**: fleet | **更新时间**: 2026-08-04

## 1. 接口背景

车务看板列表（`GET /admin/fleet/board/orders`）的 `assignmentSlots[]` 原实现按稳定槽位（`assignment_slot_id`）聚合，同槽位跨段换车（同一槽位内前后两段使用不同车辆/司机，如 7 天行程前 3 天蒙A-H7777/阿拉坦 + 后 4 天蒙A-T1557/朝鲁门）时后段被折叠，列表只显示首段车辆/司机，与 matrix/grid 分段结果不一致。本次修复为按派车组（`assignment_group_id`）拆分，每段独立返回。

## 变更接口清单

| # | 接口名 | 方法 | 路径 | 变更类型 | 说明 |
|---|--------|------|------|----------|------|
| 1 | 车务看板列表 | GET | `/admin/fleet/board/orders` | 修改 | `assignmentSlots[]` 同槽跨段换车时由 1 条变为多段（每段独立 assignmentId/assignmentGroupId/区间/车辆/司机） |

## 2. 行为变化

| 场景 | 原来 | 现在 |
|------|------|------|
| 同槽位跨段换车（同 slot 多 group，如 08-10~12 H7777/阿拉坦 + 08-13~16 T1557/朝鲁门） | `assignmentSlots` 仅 1 条（首段车辆/司机，区间覆盖全槽 7 天） | 按派车组返回 2 段：段1 slotSummary 08-10~08-12/3天/H7777/阿拉坦；段2 slotSummary 08-13~08-16/4天/T1557/朝鲁门（各自 `assignmentGroupId`/`assignmentId`） |
| 单段槽位（同一槽位单派车组，绝大多数） | 1 条 | 1 条（不变） |
| canceled 历史段 | 不展示（整槽全 canceled 时展示 canceled 视图） | 不独立成段（整槽全 canceled 时行为不变） |
| 槽位区间覆盖 | 单条区间=全槽 | 各段区间合计覆盖全槽（不因拆分缩短） |

## 3. 接口详情

- **方法/路径**：`GET /admin/fleet/board/orders?teamNo=&page=&pageSize=`
- **响应**：`records[].assignmentSlots[]` 现可为多条（同槽跨段）；每条结构不变（`assignmentId`/`assignmentGroupId`/`assignmentSlotId`/`slotSummary{assignmentSlotId, slotIndex, totalSlots, serviceStartDate, serviceEndDate, serviceDays, requiredVehicleType, ...}`/`vehiclePlate`/`vehicleModel`/`driverName`/`driverPhone`(掩码)/`assignmentStatus` 等），其中 `slotSummary.serviceStartDate/serviceEndDate/serviceDays` 为该段自身区间；`slotIndex/totalSlots` 为槽位维度（跨段时同一槽位多条共享相同 slotIndex/totalSlots）
- **不变**：顶层 record 仍按 requirementId 聚合一条，代表槽位取排序首条；分页/筛选/排序不变

## 4. 前端需要做什么

看板列表若按 `assignmentSlots` 渲染车辆/司机卡片：**需支持同一槽位（相同 `assignmentSlotId`/`slotIndex`）多条段卡片**（展示各自区间、车牌、司机）；跨段换车场景现可正确展示后段，勿再按首条截断。单段槽位展示无变化。`slotSummary.serviceStartDate/serviceEndDate/serviceDays` 为段区间（多段合计为全槽）。

## 5. 后端测试、部署与验证

- 单元测试：新增同槽跨段换车拆分用例（H7777/阿拉坦 3 天 + T1557/朝鲁门 4 天 → 2 段各自区间/车辆/司机正确）；更新同槽多组状态冲突、最终不用车混合、全最终不用车 3 个既有用例为按段拆分语义；AssignmentServiceTest 360 + Board* 107 用例全通过。
- 模块验证：`mvn -pl hl-fleet-service -am verify` 3078 用例 0 失败（Testcontainers 集成测试本机无 Docker 环境失败，基线同失败非本次引入）。
- 部署：TEST hl-fleet-service rolling 完成（task_id=1226b3fd，双实例 UP）。
- 验证（TEST 2026-08-04）：订单 2081633366993494017（teamNo=26-2830）`assignmentSlots` 由修复前 1 条（仅 H7777/阿拉坦）变为 2 段：08-10~12 蒙A-H7777/丰田汉兰达/阿拉坦/135****5019 + 08-13~16 蒙A-T1557/丰田普拉多/朝鲁门/199****1557（均 assigned）；DB fleet_assignment 7 行 2 组（340035264187600896/340023199221813248）与两段一一对应；单段槽位回归（26-1427 订单 3 槽位各 1 条）正常。

## 关联 / 联系人

### 链接

- **Issue**: [#5479](https://git.1814.love:8443/wx/HL/issues/5479)
- **PR**: [#5484](https://git.1814.love:8443/wx/HL/pulls/5484)
- **Merge commit**: [631ebb259858](https://git.1814.love:8443/wx/HL/commit/631ebb259858)

### 联系人

- **后端负责人**: @wx
