hl-api-changelog/changelogs-v2/2026-08/08_5676_改派支持按天改派+统一选择单次整体改派修复交接-修改接口-管理后台.md
Mimingguang 61bf4a46f4
一些检查失败了
changelog-filename-gate / validate (push) Failing after 2s
chore(v2): 标记 #5676 admin 前端已实现(统一选择 f4223996 + 按天改派 3df533a5)
2026-08-08 12:11:37 +08:00

4.3 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 5676 改派支持按天改派(排车表逐行改派按钮)+ 统一选择修复交接 admin wx 修改接口 deployed verified implemented mmg 3df533a5 后端完成PR #5686 合并 dev-v34e993920440cad0b6105a5f7682d6b33d1444bad并部署 TEST,网关验证按天改派只改指定天+统一选择单次全改均通过。统一选择「只改第一天」bug 实证为前端逐日循环互覆盖(后端无 bug,修复=前端改单次调 change。待前端接入按天改派+统一选择单次调用。 2026-08-08 dev-v3 2026-08-08T11:10:00+08:00

改派支持按天改派 + 统一选择修复交接(#5676

需求

  1. 排车表**每行(每个服务日)**有【改派】按钮——单独改某天的车/司机(按天改派,每天可不同)
  2. 统一选择按钮=整体改派(所有日期),保留
  3. wx 实测补充:统一选择现在不好使,只能改第一天(选的车/司机只应用到第一天)

统一选择「只改第一天」bug 根因(后端无 bug,前端修复

根因 = 前端「统一选择」逐日循环调 change 互相覆盖,非后端问题:

  • 改派操作日志实证order 2080600006514872322 在 2026-08-06 17:25 对同一槽位连续两次调 changeeffectiveDate=2026-08-292026-08-28 分开、每天一行)——前端对「统一选择」逐日循环(每天调一次)。
  • change 语义 = 「effectiveDate 起连续后缀」eff=8/29 改 8/29 起后缀,eff=8/28 又改 8/28 起后缀(覆盖 8/29…… 逐日循环互相覆盖 → 只有部分天生效(表现为「只改第一天」)。
  • 后端单次 change 正确全改:单测证明逐日槽位 3 天,单次 change(effectiveDate=第一天, 不传 serviceDates) → 取消整段后缀 + 重建 3 行全新车/司机。

修改接口:POST /admin/fleet/assignments/{assignmentId}/change

新增可选字段 serviceDatesList<LocalDate>,其余字段不变):

字段 说明
serviceDates 按天改派限定的服务日期集。非空=按天改派模式:只改这些日期的行(其余天保留);空/不传=现状effectiveDate 起连续后缀整体改派)。

前端交接(两种改派的正确调用方式)

1. 统一选择(整体改派)——修复点

{
  "effectiveDate": "<第一天>",
  "newVehicleId": ..., "newDriverId": ...,
  "holdMode": 0, "reason": "...", "requestId": "<唯一>"
}
  • 单次调用effectiveDate=第一天,不传 serviceDates → 一次整体改派所有天。
  • 不要再逐日循环调 change(会互相覆盖)。
  • 每次操作生成唯一 requestId(幂等)。

2. 按天改派(新增,每行改派按钮)

{
  "effectiveDate": "<该天>",
  "serviceDates": ["<该天>"],
  "newVehicleId": ..., "newDriverId": ...,
  "holdMode": 0, "reason": "...", "requestId": "<唯一>"
}
  • 某天【改派】→ effectiveDate=该天 + serviceDates=[该天]只改该天,其他天不变
  • 每天可不同车/司机(逐行各调一次,每天独立 requestId)。
  • assignmentId 路径参数=该槽位任一派单行 ID。

行为说明

  • 校验按天:按天改派的档期/占用/常驻/保险校验只针对 serviceDates 指定的天(某天换车/司机只需该天资源空闲,不影响其他天)。
  • 逐日价格:按天改派后逐日车费按各天价格日历/车型分别算(resolveDaily 按子集日期逐日取价)。
  • 兼容serviceDates 不传时行为与现状完全一致(统一选择整体改派)。

验证

  • AssignmentServiceTest 397/397(新增 3按天单天只改该天/按天非连续子集其余保留/统一选择单次全改对照;dev-v3 全量 verify 3273/0F/0E。
  • 网关实证TEST,槽位 344052387587166208,order 2085662570479304706,8/21-8/23 三天):
    • 按天改派change(serviceDates=[8/22]) 换车 → 只 8/22 变,8/21/8/23 保留原车;
    • 统一选择单次change(effectiveDate=8/21, 不传 serviceDates) 换车 → 3 天全改。