From 32bc988a8a066f37a6f47e1864ac97b9adf7ddfc Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Fri, 21 Aug 2026 12:40:39 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20#6112=20=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=80=8F=E5=87=BA=E7=BB=88=E6=AD=A2=E8=A1=8C?= =?UTF-8?q?=E7=A8=8B=E5=8F=96=E6=B6=88=E5=8E=9F=E5=9B=A0=EF=BC=88=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E5=BE=85=E6=B8=B2=E6=9F=93=20canceled=20=E8=A1=8C=20c?= =?UTF-8?q?ancelReason=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...¯¦情透出终止行程取消原因-修改接口-管理后台.md | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 changelogs-v2/2026-08/21_6112_看板详情透出终止行程取消原因-修改接口-管理后台.md diff --git a/changelogs-v2/2026-08/21_6112_看板详情透出终止行程取消原因-修改接口-管理后台.md b/changelogs-v2/2026-08/21_6112_看板详情透出终止行程取消原因-修改接口-管理后台.md new file mode 100644 index 00000000..72edad74 --- /dev/null +++ b/changelogs-v2/2026-08/21_6112_看板详情透出终止行程取消原因-修改接口-管理后台.md @@ -0,0 +1,74 @@ +--- +schema: "hl-changelog/v2" +ticket: "6112" +title: "看板详情透出终止行程取消原因" +consumer: "admin" +author: "wx" +change_type: "修改接口" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "pending" +frontend_owner: "mmg" +frontend_ref: "" +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 SUCCESS(3846 测试),spotless 0 违规。 +- 部署:hl-fleet-service(8087/8187)、hl-order-service-v3(8086/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)