From 6daaf40faa2befab258c8e5301b33ed7cee34df8 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Sat, 8 Aug 2026 14:41:12 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20#5693=20=E8=A1=A5=E5=85=85wx?= =?UTF-8?q?=E4=B8=80=E6=AD=A5=E6=8B=96=E6=8B=BD=E6=94=B9=E6=B4=BE=E5=8F=A3?= =?UTF-8?q?=E5=BE=84=EF=BC=88=E5=89=8D=E7=AB=AF=E4=BA=A4=E4=BA=92=E5=8F=A6?= =?UTF-8?q?=E8=A1=8C=E5=88=86=E6=B5=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...槽位评估与候选排除语义锁定-修改接口-管理后台.md | 4 +- ...效+清除司机车辆后槽位空态待重选-修改接口-管理后台.md | 89 +++++++++++++++++++ 2 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 changelogs-v2/2026-08/08_5698_改派修复已派全程行改派生效+清除司机车辆后槽位空态待重选-修改接口-管理后台.md diff --git a/changelogs-v2/2026-08/08_5693_矩阵拖拽改派多槽位评估与候选排除语义锁定-修改接口-管理后台.md b/changelogs-v2/2026-08/08_5693_矩阵拖拽改派多槽位评估与候选排除语义锁定-修改接口-管理后台.md index 398feea..6f371f1 100644 --- a/changelogs-v2/2026-08/08_5693_矩阵拖拽改派多槽位评估与候选排除语义锁定-修改接口-管理后台.md +++ b/changelogs-v2/2026-08/08_5693_矩阵拖拽改派多槽位评估与候选排除语义锁定-修改接口-管理后台.md @@ -12,7 +12,7 @@ frontend_owner: "" frontend_ref: "" target_release: "" verified_at: "" -status_note: "评估结论:多槽位拖拽改派端到端已实现且槽位语义正确,零行为变更;本次仅补回归测试锁定「候选排除只作用当前槽位,同订单其他槽位仍计目标车/司机冲突」。无前端交接事项——现有交互(拖哪条改哪辆、弹窗可换槽位)已符合预期。" +status_note: "评估结论:多槽位拖拽改派端到端已实现且槽位语义正确,零行为变更;本次仅补回归测试锁定「候选排除只作用当前槽位,同订单其他槽位仍计目标车/司机冲突」。补充口径(wx,工单评论 id=37195):拖拽改派交互要一步到位(拖到目标车/司机直接改派,不再弹窗重选)——后端一步改派能力已齐备(change 接口 newVehicleId/newDriverId 均可空,详见工单评论 id=37196),属前端交互改造,由协调台另行前端 changelog 分流。" updated_at: "2026-08-08" base: "dev-v3" generated: "2026-08-08T13:40:00+08:00" @@ -56,7 +56,7 @@ generated: "2026-08-08T13:40:00+08:00" ## 前端交接 -无。现有矩阵拖拽改派交互(拖哪条改哪辆 + 弹窗内可换槽位)已符合多槽位预期,无需前端改动。 +本单后端变更(回归测试)无需前端配合。另:wx 后续口径(工单评论 id=37195)要求拖拽改派交互**一步到位**——拖到目标车/司机直接改派(该车常驻司机或拖到的司机),不再打开改派弹窗手选槽位+重选车/司机;该需求为纯前端交互改造(后端契约依据见工单评论 id=37196),由协调台另行前端 changelog 跟踪,与本后端 changelog 的 frontend_status=not_required 不冲突。 ## 前端实证确认(2026-08-08 mmg,hl-admin) diff --git a/changelogs-v2/2026-08/08_5698_改派修复已派全程行改派生效+清除司机车辆后槽位空态待重选-修改接口-管理后台.md b/changelogs-v2/2026-08/08_5698_改派修复已派全程行改派生效+清除司机车辆后槽位空态待重选-修改接口-管理后台.md new file mode 100644 index 0000000..0ada89f --- /dev/null +++ b/changelogs-v2/2026-08/08_5698_改派修复已派全程行改派生效+清除司机车辆后槽位空态待重选-修改接口-管理后台.md @@ -0,0 +1,89 @@ +--- +schema: "hl-changelog/v2" +ticket: "5698" +title: "改派修复:已派全程行改派生效(计费日期整段校验)+ 清除司机/车辆后槽位空态待重选" +consumer: "admin" +author: "wx(GIT)" +change_type: "修改接口" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "pending" +frontend_owner: "hl-ui" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "后端接口行为修复:POST /admin/fleet/assignments/{id}/change 对已派全程行(service_date 为空、start/end 覆盖整个服务期)改派时,计费日期/费用快照/组派冲突检查按整段服务期展开——此前 serviceDateOf 只回退生效日第一天,前端按全部服务日提交计费日期即报「计费日期必须属于本派车组服务日期」,改派完全不生效(TEST 操作日志 13:59 连续 7 次 change_failed 实证)。修复后网关实证改派成功(双向往返均生效)。前端配合项见正文「前端交接」。" +updated_at: "2026-08-08" +base: "dev-v3" +generated: "2026-08-08T15:00:00+08:00" +--- + +# 改派修复:已派全程行改派生效 + 清除司机/车辆后槽位空态 + +> 后端完成:PR #5699 已合并 dev-v3(fb8945e97)并部署 TEST,网关验证通过(改派双向往返生效、现场已还原)。 + +## 关联 / 联系人 + +### 链接 + +- **Issue**: [#5698](https://git.1814.love:8443/wx/HL/issues/5698) +- **PR**: [#5699](https://git.1814.love:8443/wx/HL/pulls/5699) +- **关联**: [#5676](https://git.1814.love:8443/wx/HL/issues/5676)(按天改派)、[#5691](https://git.1814.love:8443/wx/HL/issues/5691)(回显全部服务日) + +### 联系人 + +- 后端:wx(GIT) +- 前端配合:mmg / 协调台 + +--- + +## 背景(wx 实测) + +改派页两个 bug: + +1. **清除司机没清空**:点「清除车辆/司机」后槽位仍显示原车蒙A-E2E99+王信(已生效派车),用户以为没清空。 +2. **统一改派确认后司机没变**:选新司机→确认→还是原司机,改派完全不生效("完全不懂")。 + +## 后端修复(#5698,已部署 TEST) + +### Bug 2 根因 + +TEST 操作日志实证:订单 HL20260808105342627(蒙A-E2E99+王信,8/17-8/20 **全程行** service_date=NULL)13:59 连续 7 次 `change_failed`,报错均为: + +> `参数非法: 计费日期必须属于本派车组服务日期` + +已派全程行改派按整槽替换(#5595 语义),但 `resolveChargeableServiceDates` 用 `serviceDateOf()` 对全程行只回退到 **startDate 一天**;前端按全部服务日提交计费日期(#5691 回显全部服务日后的真实载荷)→ 校验失败 → change 抛异常回滚 → 改派不生效(前端静默失败)。 + +### 修复 + +`AssignmentService#changeTargetServiceDates`:全程行按 [startDate..endDate] **整段展开**,逐日切片行取自身 serviceDate;应用于改派 4 处——计费日期校验、对账期检查、组派冲突检查、替换行费用快照报价(quote 从只报第一天改为整段)。 + +**接口契约不变**(无新增/变更字段),仅修复既有行为。守卫不放宽:计费日期超出服务期仍拒绝;跨常驻组合仍要求确认(605036);无变化载荷仍拒绝(605029)。 + +### 验证 + +- 定向测试 `AssignmentServiceTest` 400 项全绿(新增 2 项:整段计费日期改派成功 + 越界日期仍拒绝);回归 210 项全绿;fleet verify 3293 项全绿;spotless 通过 +- 网关实证(TEST,wx 实测现场):统一改派(effectiveDate=第一天 + 整段计费日期)到新司机/新车辆 **业务成功**(修复前 7 连败),替换行 assigned 全程形态 8/17-8/20;换回原派同样成功;现场已还原为 蒙A-E2E99+王信 + +## 前端交接(pending,需前端配合) + +### 1. 清除司机/车辆后槽位显示空态(协调台定口径 B) + +现状:改派页「清除车辆/司机」(#5662)只清**本次改派草稿**(不触发后端),槽位行继续显示已生效派车(蒙A-E2E99+王信)——用户误以为"没清空"。 + +期望(口径 B):清除后该槽位行显示**空态(待重选)**,用户明确"已清空",随后重新选择车/司机,提交改派生效。后端派单必须车+司机的终态不变(**改派提交前仍是原值**),清除只是前端进入"待重选"展示态。 + +- 相关代码:`src/views/fleet/board/components/AssignModal.vue`(`clearChangeAssignmentDraft` / `changeDraftCleared` / 槽位表「当前车辆/当前司机」列) +- 交互参考:清除后已有「已清除草稿,可重新选择」提示与「选择车辆/司机」入口,仅需将槽位表两列在 `changeDraftCleared=true` 时改为空态展示(如「待重新选择」占位) +- 验收:清除后槽位行不再显示原车/原司机;重选新司机提交后列表展示新司机 + +### 2. 统一改派链路 + +后端修复后,前端现有提交链路(`useAssignFlow.js` `buildAssignmentSubmission`:单次调 change、effectiveDate=第一天、不传 serviceDates、携带整段 chargeableServiceDates)可直接生效,无需改动。按天改派(serviceDates)不受影响。 + +## 验收清单(本单) + +- [x] 清除司机正常清空(司机+车辆都清)——口径 B 已定:前端清除后槽位空态待重选(**前端交接 pending**);后端终态语义不变 +- [x] 统一改派确认后司机改成新选的(生效)——后端修复完成,TEST 网关实证双向往返生效 +- [x] 定向测试 + PR 合并 + 部署 TEST + 网关验证——PR #5699 合并 dev-v3(fb8945e97),TEST 滚动部署双实例 UP,网关验证通过 +- [x] changelog(yst 完整格式)——本文件