docs(changelog): 整程行改期换版stale详情回拨成待派车(#6052 / PR #6053)

这个提交包含在:
API Changelog Bot 2026-08-18 21:17:50 +08:00
父节点 1cf12fc336
当前提交 4130f26911

查看文件

@ -0,0 +1,89 @@
---
schema: "hl-changelog/v2"
ticket: "6052"
title: "整程行改期换版 stale 详情回拨成待派车(详情 activeAssignments/vehicleSlots 补 stale 覆写)"
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-18"
status_note: "后端完成PR #6053 已合并 dev-v3a433bfb7fa并部署 TESThl-fleet-service jar 21:07、双实例 21:08 重启)。根因=C详情组装路径activeAssignments/vehicleSlots不经 stale 覆写——#6014 只修了列表卡片,详情未覆盖;本单给详情两组装点补 stale 覆写(逐日/全程同判据。board 域 238 全绿 + ArchTest 13 + spotless。网关实测复现单详情 activeAssignments/vehicleSlots 回拨 unassigned。"
updated_at: "2026-08-18"
base: "dev-v3"
generated: "2026-08-18T21:15:00+08:00"
---
# 整程行改期换版 stale 详情回拨成待派车(#6052
## 背景
#6014 修了「改期换版后纯改期残留回拨成待派车」,但只覆盖了**看板列表卡片**`GET /admin/fleet/board/orders``assignmentStatus`)。**订单详情接口**`GET /admin/fleet/board/orders/{orderId}`)的 `activeAssignments` / `vehicleSlots` 是**另一条组装路径,没走 stale 覆写**——整程行全程槽,service_date=NULL改期换版后,详情接口仍显示「已派车assigned」,与列表卡片/订单侧「待配」分叉。
## 根因
详情组装(`activeAssignments` / `vehicleSlots`)只用落库状态走状态派生,**没有应用「陈旧定稿stale覆写」**;stale 覆写此前只存在于列表卡片与早筛。逐日切片行与整程行在详情路径共用同一断点。
## 变更接口
| 接口 | 变更 |
| --- | --- |
| `GET /admin/fleet/board/orders/{orderId}``activeAssignments[]` | **行为变更**。该需求存在陈旧定稿(`plan_finalized_requirement_id` ≠ 当前需求 ID且可进配车流程时,`assignmentStatus` 由落库态回拨为「待派车unassigned」;`baseAssignmentStatus` 保留落库态(如 assigned`availableActionCodes``ASSIGN` |
| `GET /admin/fleet/board/orders/{orderId}``vehicleSlots[]` | **行为变更**。同上口径,`slotStatus` 回拨 unassigned;`rescheduleResidue` 徽标、`canDelete`(取消/改派入口)保留 |
## 行为口径
- **状态回拨**:详情 `activeAssignments[].assignmentStatus` / `vehicleSlots[].slotStatus` 在「陈旧定稿 + 可进配车流程」时回拨成待派车,与列表卡片、订单侧对齐。
- **落库不改**:回拨只改读侧派生,`baseAssignmentStatus` 保留落库态;旧派车**不自动清除**(残留徽标 `rescheduleResidue`、取消/改派入口 `canDelete` 全保留,由车务手动清理)。
- **缺口不虚高**列表缺口进度纯改期残留分流unassigned=0未动。
- **当代定稿不误伤**`plan_finalized_requirement_id` = 当前需求 ID 时保持 assigned 不回拨。
- **V2 新槽机制**#5810 槽位人工制——平移行保持人工现状不自动补槽,车务取消旧行后按新日期重派(同逐日切片机制)。
## 响应示例
`GET /admin/fleet/board/orders/{orderId}``data.activeAssignments[]`(修复后,整程行 stale 场景):
```json
{
"assignmentId": null,
"serviceDate": null,
"assignmentStatus": "unassigned",
"baseAssignmentStatus": "assigned",
"rescheduleResidue": true,
"canDelete": true,
"availableActionCodes": ["ASSIGN", "REJECT_REQUIREMENT"]
}
```
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `assignmentStatus` | String | **回拨后状态**:陈旧定稿可进配车流程时 = `unassigned`(待派车) |
| `baseAssignmentStatus` | String | 落库真实状态(如 `assigned`),不受回拨影响 |
| `rescheduleResidue` | Boolean | 是否改期残留旧日期行true 挂「改期残留/待清理」徽标) |
| `canDelete` | Boolean | 是否可删除/取消(残留行恒 true,车务手动清理入口 |
| `availableActionCodes` | String[] | 可执行动作(回拨成待派车后含 `ASSIGN` |
`vehicleSlots[]` 同口径:`slotStatus` 回拨 unassigned,`rescheduleResidue` / `canDelete` 保留。
## 前端动作
- 详情页 `activeAssignments` / `vehicleSlots` 直接消费 `assignmentStatus` / `slotStatus`(已是回拨后状态),`baseAssignmentStatus` 可用于显示落库真实态。
- 残留行 `rescheduleResidue=true` 时挂「改期残留」徽标,`canDelete=true` 时保留取消/改派入口。
- 列表卡片(#6014)行为不变。
## 验证证据
- 单测BoardOrderServiceTest +2整程行 stale 回拨 unassigned + baseAssignmentStatus=assigned + 车辆信息保留;当代定稿保持 assigned 防误伤;board 域 238 全绿 + ArchTest 13 + spotless。
- 部署PR #6053 squash 合并 dev-v3merge commit a433bfb7fa,Deploy Panel task c87ac963 successjar 21:07、双实例 21:08 重启)。
- 网关实测TEST复现单 `2089664548595240962`(改期 V1→V2,整程行 plan_finalized_requirement_id=V1→ 详情 `activeAssignments[0].assignmentStatus=unassigned`(待派车)、`baseAssignmentStatus=assigned``vehicleSlots[0].slotStatus=unassigned``rescheduleResidue=true``canDelete=true`
## 关联 / 联系人
- Issuehttps://git.1814.love:8443/wx/HL/issues/6052
- PRhttps://git.1814.love:8443/wx/HL/pulls/6053
- Commitmergehttps://git.1814.love:8443/wx/HL/commit/a433bfb7fa
- 后端负责人wx