hl-api-changelog/changelogs-v2/2026-08/21_6112_看板详情透出终止行程取消原因-修改接口-管理后台.md
Mimingguang 163ba33516
一些检查失败了
changelog-filename-gate / validate (push) Failing after 2s
docs(changelog): #6112 前端 verified(mmg, ref d58ad932)
2026-08-21 12:54:30 +08:00

75 行
3.8 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

---
schema: "hl-changelog/v2"
ticket: "6112"
title: "看板详情透出终止行程取消原因"
consumer: "admin"
author: "wx"
change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "verified"
frontend_owner: "mmg"
frontend_ref: "d58ad932"
target_release: ""
verified_at: "2026-08-21"
status_note: "终止行程的真实原因(如「客户中止」)此前在 order 侧,fleet 落库的是写死文案。本次全链路透传order → Feign DTO 加可选字段 → fleet 落库 → 看板详情 VO 透出。前端只需在已取消行渲染 cancelReason。"
updated_at: "2026-08-21"
base: "dev-v3"
generated: "2026-08-21T12:38:23+08:00"
---
# 看板详情透出终止行程取消原因(#6112
## 背景
订单**终止行程**出行中中止时运营会填真实原因如「客户中止」,但车务看板已取消派单只显示「已取消」,看不到原因——fleet 侧落库的是固定文案「订单终止行程,自终止生效日起截断未来派单」。
本次把真实原因全链路透传到看板详情,前端补渲染即可。与房务侧 #6111(异常原因透出)对齐。
## 变更接口
| 接口 | 变更 |
| --- | --- |
| `GET /admin/fleet/board/orders/{orderId}` | **响应新增可选字段**`vehicleSlots[].cancelReason``currentAssignment.cancelReason`。已取消(`slotStatus==="canceled"`)的槽位/派单返回终止或取消原因;其他状态为 `null` |
内部链路前端无需关心,仅供联调排查order 侧 `terminateTrip``cancelReason``TruncateOrderAssignmentsRequest`(内部 Feign DTO,新增可选字段传给 fleet,fleet 终止截断时落库 `fleet_assignment.cancel_reason`
## 前端动作(本次唯一要改的地方)
在车务看板 → 订单详情抽屉 → 已取消派单行/车辆执行段:
1. **渲染条件**`vehicleSlots[]``slotStatus === "canceled"``cancelReason` 非空时,在「已取消」badge 旁展示原因文本(如「客户中止」)。
2. **空态**:历史已取消派单 `cancelReason``null` → 不渲染原因区,不报错。
3. 非 canceled 行不展示(字段为 `null`)。
4. 无新增颜色/状态标签,纯文本。
## 取值示例TEST 实测返回)
```json
{
"assignmentSlotId": "348032503497494528",
"slotStatus": "canceled",
"slotStatusLabel": "已取消",
"cancelReason": "客户中止(#6112 网关验收)",
"assignmentId": "2089642687186563073"
}
```
## 兼容性
- 旧版 order 不传 `cancelReason` → fleet 收到 `null`,落库保留原固定文案兜底(双向兼容,可独立发布)。
- 历史已取消派单 `cancel_reason` 为 NULL → VO 原样透传 `null`,前端不渲染即可。
- 手动取消(人工填的 cancelReason写入路径未改动,不受影响。
## 验证证据
- 单测fleet `AssignmentServiceTest`(透传落库/空值兜底)、`BoardOrderServiceTest`(已取消槽位透出/在途槽位 null、order `OrderServiceTest`(透传断言)、`FleetAssignmentExpandFeignContractTest`DTO wire 往返)全绿;`mvn -pl hl-fleet-service -am verify` BUILD SUCCESS3846 测试,spotless 0 违规。
- 部署hl-fleet-service8087/8187、hl-order-service-v38086/8186已滚动部署 TEST。
- 网关实测TEST 9443,真 SUPER_ADMIN token对出行中订单 `HL20260818171654688` 以「客户中止」终止行程 → fleet 派单截断为 canceled → `GET /admin/fleet/board/orders/2089642686163128322` 返回 `vehicleSlots[].cancelReason="客户中止(#6112 网关验收)"`;历史终止单 `2090093100083904514` 返回原固定文案,无报错。
## 关联
- Issue: [#6112](https://git.1814.love:8443/wx/HL/issues/6112)
- PR: [#6124](https://git.1814.love:8443/wx/HL/pulls/6124)
- Merge commit: [a373d5be2](https://git.1814.love:8443/wx/HL/commit/a373d5be2)