---
schema: "hl-changelog/v1"
ticket: "5199"
title: "车务首页订单去重与字段补全"
consumer: "admin"
backend: "verified"
gateway: "verified"
frontend: "pending"
base: "dev-v3"
generated: "2026-07-24T09:46:00+08:00"
---

# 【修改接口·前端待处理·管理后台】车务首页订单去重与字段补全

## 目标前端

- 端类型：管理后台（Web）
- 目标仓库：`mmg/hl-ui`
- 目标分支：`v2.1`
- 联调/验收环境：<http://192.168.100.160:9527>
- 小程序：无需处理

> **服务**: hl-fleet-service、hl-user-service
>
> **工单**: [wx/HL#5199](https://git.1814.love:8443/wx/HL/issues/5199)
>
> **影响范围**: 车务角色首页的待安排车辆统计、即将用车订单表格和操作列

## 关键变化

`GET /admin/profile/dashboard?period=today` 在当前角色为 `VEHICLE_MANAGER` 时，`data.upcomingTrips` 的口径调整为：

- 只返回近 7 天仍存在未完成派车槽位的订单，未完成态为 `unassigned/unassigned_urgent/holding/holding_urgent`；
- 同一订单的多个车型、车辆或派车槽位按 `orderId` 合并为一行；
- 返回符合条件的完整订单集合，不再固定截断为 5 条；
- 全部派车槽位均已进入 `assigned` 的订单不再出现在待处理列表。

派车看板 `/admin/fleet/board/orders` 仍保持派车槽位维度和原分页规则，本次不修改。

## 响应字段

`data.upcomingTrips[]` 完整结构：

```json
{
  "orderId": "70123456789",
  "assignmentId": "80123456789",
  "orderNo": "HL202607010001",
  "teamNo": "26-7218",
  "productName": "呼伦贝尔 6 日",
  "customerName": "张先生",
  "contactName": "张先生",
  "plannerName": "苏日娜",
  "consultantName": "苏日娜",
  "consultantDisplayName": "苏日娜",
  "departureDate": "2026-07-10",
  "endDate": "2026-07-15",
  "headcount": 4,
  "status": "unassigned_urgent",
  "statusLabel": "待派车",
  "urgentBadge": "T-1",
  "canAssign": true,
  "canRejectRequirement": true
}
```

本次补齐的字段：

| 字段 | 类型 | 页面用途 |
| --- | --- | --- |
| `teamNo` | `String/null` | 团号列 |
| `contactName` | `String/null` | 联系人列，当前与 `customerName` 同值 |
| `plannerName` | `String/null` | 定制师兼容字段 |
| `consultantName` | `String/null` | 定制师兼容字段 |
| `consultantDisplayName` | `String/null` | 定制师优先展示字段 |
| `canAssign` | `Boolean` | 是否显示派车/调整入口 |
| `canRejectRequirement` | `Boolean` | 是否显示驳回需求入口 |

`orderId` 和 `assignmentId` 继续按字符串处理，不得转为 JavaScript `Number`。同订单存在多个未完成派车槽位时，`assignmentId/status/statusLabel/urgentBadge/操作权限` 来自后端排序最靠前的代表槽位。

## 前端处理清单

- [ ] 表格行以 `orderId` 为订单级唯一键，不按 `assignmentId` 重复渲染。
- [ ] 不在前端截取前 5 条，也不再自行做派车槽位去重。
- [ ] 团号列读取 `teamNo`。
- [ ] 定制师列优先读取 `consultantDisplayName`，为空时可回退 `consultantName/plannerName`。
- [ ] 操作列按 `canAssign/canRejectRequirement` 显示已有操作入口，不根据中文状态文案推断。
- [ ] 覆盖同订单多车型、多车、超过 5 个未完成订单、部分槽位已派和全部槽位已派场景。

## 不影响范围

- 不修改 `pendingArrangeVehicle` 字段名。
- 不修改派车看板、矩阵派单、车辆列表或司机列表的分页和展示维度。
- 不新增前端路由、权限码或请求参数。

## 后端验证

- 后端 PR：[wx/HL#5201](https://git.1814.love:8443/wx/HL/pulls/5201)。
- `FleetDashboardSummaryServiceTest` 覆盖 8 条派车槽位聚合为 6 个未完成订单、重复订单去重和 `assigned` 过滤。
- `LogisticsDashboardServiceTest` 覆盖团号、联系人、定制师与操作权限字段透传及 Feign 降级空态。
- `hl-fleet-service` 测试环境滚动部署任务 `0944b306` 成功，8087/8187 双实例健康。
- `hl-user-service` 测试环境滚动部署任务 `e306a054` 成功，8081/8181 双实例健康。
- PR 合并后以 `dev-v3` 再次滚动部署，fleet 任务 `d914f3fb`、user 任务 `3fde7f12` 均成功，
  部署仓库 HEAD 包含合并提交 `bab22a096d`。
- 经网关请求 `GET /admin/profile/dashboard?period=today` 返回 HTTP 200、业务码 200；`upcomingTrips`
  与相同日期和状态条件下的派单看板订单集合一致，共 4 个唯一订单，重复订单数 0，无已完成订单混入。
- `teamNo/contactName/plannerName/consultantName/consultantDisplayName/canAssign/canRejectRequirement`
  在 4 条记录中均存在且均有有效值；user-service 与 gateway 近期日志未发现本次调用异常。

> 本文是前端接入通知，不代表已修改或发布 `mmg/hl-ui`。
