hl-api-changelog/changelogs-v2/2026-08/08_5698_改派修复已派全程行改派生效+清除司机车辆后槽位空态待重选-修改接口-管理后台.md
Mimingguang fee1e9a5aa
所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s
chore(changelog): #5698 前端交接项1 implemented (hl-admin@106aa658)
2026-08-08 14:54:23 +08:00

7.2 KiB

schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base, generated
schema ticket title consumer author change_type backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base generated
hl-changelog/v2 5698 改派修复:已派全程行改派生效(计费日期整段校验)+ 清除司机/车辆后槽位空态待重选 admin wx(GIT) 修改接口 deployed verified implemented mmg 106aa658 后端接口行为修复POST /admin/fleet/assignments/ID/change 对已派全程行service_date 为空、start/end 覆盖整个服务期)改派时,计费日期/费用快照/组派冲突检查按整段服务期展开——此前 serviceDateOf 只回退生效日第一天,前端按全部服务日提交计费日期即报「计费日期必须属于本派车组服务日期」,改派完全不生效TEST 操作日志 13:59 连续 7 次 change_failed 实证)。修复后网关实证改派成功(双向往返均生效)。前端配合项见正文「前端交接」。 2026-08-08 dev-v3 2026-08-08T15:00:00+08:00

改派修复:已派全程行改派生效 + 清除司机/车辆后槽位空态

后端完成PR #5699 已合并 dev-v3fb8945e97并部署 TEST,网关验证通过改派双向往返生效、现场已还原

关联 / 联系人

链接

联系人

  • 后端wxGIT
  • 前端配合mmg / 协调台

背景wx 实测)

改派页两个 bug

  1. 清除司机没清空:点「清除车辆/司机」后槽位仍显示原车蒙A-E2E99+王信(已生效派车),用户以为没清空。
  2. 统一改派确认后司机没变:选新司机→确认→还是原司机,改派完全不生效("完全不懂")。

后端修复(#5698,已部署 TEST

Bug 2 根因

TEST 操作日志实证:订单 HL20260808105342627蒙A-E2E99+王信,8/17-8/20 全程行 service_date=NULL13:59 连续 7 次 change_failed,报错均为:

参数非法: 计费日期必须属于本派车组服务日期

已派全程行改派按整槽替换(#5595 语义),但 resolveChargeableServiceDatesserviceDateOf() 对全程行只回退到 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.vueclearChangeAssignmentDraft / changeDraftCleared / 槽位表「当前车辆/当前司机」列)
  • 交互参考:清除后已有「已清除草稿,可重新选择」提示与「选择车辆/司机」入口,仅需将槽位表两列在 changeDraftCleared=true 时改为空态展示(如显示「待重新选择」)
  • 验收:清除后槽位行不再显示原车/原司机;重选新司机提交后列表展示新司机

2. 统一改派链路

后端修复后,前端现有提交链路(useAssignFlow.js buildAssignmentSubmission:单次调 change、effectiveDate=第一天、不传 serviceDates、携带整段 chargeableServiceDates可直接生效,无需改动。按天改派serviceDates不受影响。

变更接口

POST /admin/fleet/assignments/ID/change(行为修复,接口契约不变)

  • 已派全程行(service_date 为空、start_date/end_date 覆盖整个服务期)改派时,入参 chargeableServiceDates 允许携带该行覆盖的全部服务日(此前只认生效日第一天,其余日期报「计费日期必须属于本派车组服务日期」导致改派失败回滚)
  • chargeableServiceDates 超出目标行服务期仍拒绝(守卫不放宽);其余入参语义不变(effectiveDate 必填、serviceDates 空=连续后缀整体改派、newVehicleId/newDriverId 可空=保留原值)
  • 响应结构不变;替换行费用快照/报价按整段服务期计算(不再只算第一天)

前端/调用方动作

  • 后端无动作:现有提交链路(单次调 change + effectiveDate=第一天 + 整段计费日期)修复后直接生效
  • 前端配合项pending:改派页「清除车辆/司机」后槽位行显示空态(待重选),不再显示原车/原司机——见上文「前端交接」

验证证据

  • 定向测试:AssignmentServiceTest 400 项全绿(新增 2 项全程行整段计费日期改派成功/越界拒绝);回归 FleetAssignmentMapper 61 + 候选 50 + 快照 11 + 看板 88 全绿;fleet verify 3293 项全绿;spotless 通过
  • 部署TEST 滚动部署 hl-fleet-service 双实例 UP8087/8187,dev-v3 @ fb8945e97
  • 网关实证wx 实测现场 HL20260808105342627统一改派到新司机/新车辆业务成功(修复前 7 连败),替换行 assigned 全程形态 8/17-8/20;换回原派同样成功;现场已还原

验收清单(本单)

  • 清除司机正常清空(司机+车辆都清)——口径 B 已定:前端清除后槽位空态待重选(前端交接 pending);后端终态语义不变
  • 统一改派确认后司机改成新选的生效——后端修复完成,TEST 网关实证双向往返生效
  • 定向测试 + PR 合并 + 部署 TEST + 网关验证——PR #5699 合并 dev-v3fb8945e97,TEST 滚动部署双实例 UP,网关验证通过
  • changelogyst 完整格式)——本文件