docs(changelog): #5912 改期后旧实派车栅格不可见——栅格并入旧行日期+改期残留标记字段(PR #5918)
所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s
所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
这个提交包含在:
父节点
0329ca28ac
当前提交
0d2122d4b6
@ -0,0 +1,91 @@
|
||||
---
|
||||
schema: "hl-changelog/v2"
|
||||
ticket: "5912"
|
||||
title: "改期后旧实派车(旧日期)派车页栅格不可见——栅格并入旧行日期+新增改期残留标记字段"
|
||||
consumer: "admin"
|
||||
change_type: "修改接口"
|
||||
author: "wx(GIT)"
|
||||
backend_status: "deployed"
|
||||
gateway_status: "verified"
|
||||
frontend_status: "pending"
|
||||
frontend_owner: "mmg"
|
||||
frontend_ref: ""
|
||||
target_release: ""
|
||||
verified_at: "2026-08-12"
|
||||
status_note: "后端已修复并部署测试服,订单 HL20260809095537293(26-0821,改期 08-18→08-21) API 实测通过:Step2 栅格 editableServiceDates 并入旧行日期后返回 [08-18..08-24] 全 7 天,旧实派行 08-18/19/20 恢复 USED+实车+rescheduleResidue=true+canDelete=true,08-21(在新窗内)不误标,新窗 08-22~24 待派占位。新增透出字段 rescheduleResidue/canDelete/deleteBlockReason 需前端消费:挂「改期残留/待清理」徽标 + 醒目删除/取消入口。"
|
||||
updated_at: "2026-08-12"
|
||||
base: "dev-v3"
|
||||
---
|
||||
|
||||
# 改期后旧实派车(旧日期)派车页栅格不可见(#5912 / PR #5918)
|
||||
|
||||
> **服务**: hl-fleet-service
|
||||
> **PR**: #5918
|
||||
> **日期**: 2026-08-12
|
||||
> **背景**: 订单改期(出发日期变更)后,已配车完成的旧实派车(assigned,旧 service_date)在派车页 Step2 排车栅格里消失,观感像旧配车日期被错平移。产品裁决:栅格=新需求窗 ∪ 旧派车行日期,旧行保留原日期可见 + 带改期残留标记 + 醒目删除/取消入口;取消后司机/车辆自动恢复空闲;旧行不删干净订单无法推进下一步。
|
||||
|
||||
---
|
||||
|
||||
## 根因(简述)
|
||||
|
||||
改期触发 fleet 需求换版 + #5810 整槽平移(仅改 requirement_id、旧 service_date 原样保留,数据本身正确);而 Step2 栅格 `editableServiceDates` 以「需求 serviceDates(新日期窗)」为权威短路返回,旧日期行落在窗外、按 `slotId:serviceDate` 索引无 cell 键命中 → 渲染不到。**数据没错,是栅格日期窗脱钩。**
|
||||
|
||||
## 变更接口
|
||||
|
||||
| 接口 | 说明 |
|
||||
|---|---|
|
||||
| `POST /admin/fleet/assignments/candidates` | 派单弹窗候选(Step2 排车栅格 canonical snapshot) |
|
||||
| `GET /admin/fleet/board/orders/{orderId}` | 看板订单详情(vehicleSlots 槽位 + dailyVehiclePlan 逐日行) |
|
||||
|
||||
## 改动一:栅格日期窗并入旧派车行日期(核心)
|
||||
|
||||
`canonicalSnapshot.editableServiceDates` 由「仅新需求窗」改为「**新需求窗 ∪ 在途(unassigned/holding/assigned)旧行覆盖日期**」,确定性幂等;completed/canceled 终态行不并入。旧实派行保留原日期重新在栅格可见、可手动取消。
|
||||
|
||||
**实测**(26-0821,改期 08-18→08-21):
|
||||
|
||||
```
|
||||
editableServiceDates = [08-18, 08-19, 08-20, 08-21, 08-22, 08-23, 08-24]
|
||||
08-18 USED · rescheduleResidue=true · canDelete=true · 带实车 ← 旧实派行恢复可见
|
||||
08-19 USED · rescheduleResidue=true · canDelete=true · 带实车
|
||||
08-20 USED · rescheduleResidue=true · canDelete=true · 带实车
|
||||
08-21 USED · rescheduleResidue=false · canDelete=true · 带实车 ← 新旧窗重叠日,在窗内不标残留
|
||||
08-22 待派(used=null) · canDelete=true ← 新窗新增日待派占位
|
||||
08-23 待派(used=null) · canDelete=true
|
||||
08-24 待派(used=null) · canDelete=true
|
||||
```
|
||||
|
||||
## 改动二:新增透出字段(前端需消费)
|
||||
|
||||
Step2 栅格 cell(`canonicalSnapshot.cells[]`)、看板详情槽位(`vehicleSlots[]`)、看板详情逐日行(`dailyVehiclePlan[]`)三处同步新增:
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|---|---|---|
|
||||
| `rescheduleResidue` | boolean | 是否改期残留旧日期行(true=本行/本 cell 服务日期越出当前需求日期窗,属改期后待清理的旧实派车)。与 605062 越窗门禁同口径。 |
|
||||
| `canDelete` | boolean | 是否可删除/取消。改期残留行恒 true(只能改派或取消释放占用);受只读窗口约束时 false。**残留行即使「服务日期已过去/已关账」只读也保留取消入口**(取消是处置不是推进)。 |
|
||||
| `deleteBlockReason` | string | 不可删除原因;可删除时为 null。 |
|
||||
|
||||
**判定收口**:三处共用 `AssignmentDailyPlanFacts.isRescheduleResidue` 同一判定(§15.7 单一口径),与 #5788 详情页 superseded 语义对齐。
|
||||
|
||||
**前端展示建议**:
|
||||
- `rescheduleResidue=true` 的行/槽位挂「**改期残留/待清理**」徽标(醒目色),与正常新窗行区分。
|
||||
- `canDelete=true` 提供**醒目的删除/取消入口**;点击调既有 `DELETE /admin/fleet/assignments/{assignmentId}`,取消后该日期司机/车辆 occupancy 自动释放恢复空闲。
|
||||
- 存在未清理残留行时,推进(确认执行)被 605062 阻断,前端把 605062 渲染成「请先清理改期残留旧派车」的阻断提示。
|
||||
|
||||
## 改动三:看板纯改期残留分流(无字段变化,行为修复)
|
||||
|
||||
纯改期残留(当前需求全部在途行日期都越出当前日期窗)不再被「换版改车型」口径覆写成「待派车」、不计入待派缺口;卡片态与进度计数口径一致。一旦有落在新窗内的行(换版/新派)即回到常规换版口径。
|
||||
|
||||
## 验证证据(测试服 API 实测,订单 HL20260809095537293 / 2086270141158346754)
|
||||
|
||||
- `editableServiceDates` 返回 7 天(旧 08-18~21 ∪ 新 08-21~24)。
|
||||
- 旧实派行 08-18/19/20 恢复 `USED + vehicleId/driverId + rescheduleResidue=true + canDelete=true`。
|
||||
- 08-21 在新窗内 `rescheduleResidue=false`(不误标)。
|
||||
- 新窗 08-22~24 待派占位 `used=null + canDelete=true`。
|
||||
- 编译 / ArchTest 13·13 / spotless / 全量 `mvn -pl hl-fleet-service test` 3671 跑 0 错。
|
||||
|
||||
## 关联 / 联系人
|
||||
|
||||
### 联系人
|
||||
|
||||
- **后端负责人**: @wx
|
||||
- **前端消费**: @mmg(`rescheduleResidue`/`canDelete`/`deleteBlockReason` 三处透出)
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户