diff --git a/changelogs-v2/2026-08/18_6052_整程行改期换版stale详情回拨成待派车-修改接口-管理后台.md b/changelogs-v2/2026-08/18_6052_整程行改期换版stale详情回拨成待派车-修改接口-管理后台.md new file mode 100644 index 0000000..3c07bd3 --- /dev/null +++ b/changelogs-v2/2026-08/18_6052_整程行改期换版stale详情回拨成待派车-修改接口-管理后台.md @@ -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-v3(a433bfb7fa)并部署 TEST(hl-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-v3(merge commit a433bfb7fa),Deploy Panel task c87ac963 success(jar 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`。 + +## 关联 / 联系人 + +- Issue:https://git.1814.love:8443/wx/HL/issues/6052 +- PR:https://git.1814.love:8443/wx/HL/pulls/6053 +- Commit(merge):https://git.1814.love:8443/wx/HL/commit/a433bfb7fa +- 后端负责人:wx