hl-api-changelog/changelogs-v2/2026-07/28_5305_逐日方案重提与完成闭环不变量-修改接口-管理后台.md
wx 58fc5437e6
所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s
docs(changelog): 交接逐日方案重提与完成闭环修复 (#5305) (#53)
2026-07-28 02:26:41 +08:00

4.3 KiB

schema, ticket, title, consumer, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
schema ticket title consumer change_type backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base
hl-changelog/v2 5305 逐日方案重提与完成闭环不变量 admin 修改接口 deployed verified not_required 仅修正既有逐日派车保存与需求完成事务语义;接口路径、方法、请求响应字段和前端交互均不变 2026-07-28 dev-v3

Fleet逐日方案重提与完成闭环不变量

服务hl-fleet-service Issue#5305 影响页面:管理后台车务管理 → 逐日逐车派车方案保存 兼容性:接口路径、方法、请求/响应字段、错误码和数据库结构不变,仅修正既有事务语义

问题与目标

逐日派车支持重复提交最终方案。旧实现存在五类边界:全程不用车或没有实际创建命令时会绕过最终订单基线;留车/直派模式变化可能被误判为无变化;混合方案中的历史已完结切片可能因旧冻结标记缺失阻断需求完成;仅修改逐日价格原因不会落库;同槽索引的旧取消版本可能抢占当前稳定槽位。

本次后端统一修复上述重提、冻结和完成闭环,不新增前端参数或返回字段。

变更接口(既有语义修正)

POST /admin/fleet/assignments/batch

请求和响应形状不变:

  1. 包含 dailyPlan 的保存会在资源锁内完成写入后、冻结最终方案和生成需求完成 Outbox 前,再次读取当前订单详情、行程和 active 用车需求;日期、人数、行程或需求版本漂移时整批事务回滚。
  2. 即使全部 dailyPlan[].used=false,或本次没有实际创建车辆/司机派单,也执行同一最终基线门禁。
  3. 重提时同时比较目标 holdMode、派单状态、车辆、司机、接机参与、逐日价格和逐日价格调整原因:
    • holding → direct 会按直派目标重新落地;
    • assigned → hold 会按留车目标重新落地;
    • 原因新增、修改和在不再偏离日历价时清空不再被忽略;偏离日历价时原因必填规则保持不变。
  4. 历史 completed 逐日切片即使来自旧数据、没有 dispatchPlanFinalized=1,在同一矩阵已有显式冻结切片时也按不可变的已完成权威日处理;不修改其业务状态,也不会把纯旧版未冻结拓扑误认成新最终方案。
  5. 同一 fleetItemIndex 同时存在旧 canceled 版本和当前在途/非取消版本时,稳定槽位优先沿用当前版本,避免重写命中历史槽位。

所有失败仍沿用现有错误响应结构;事务失败不产生需求完成事件。

前端处理

无需修改前端代码:

  • 继续提交现有 dailyPlanholdMode 和逐日价格原因;
  • 基线漂移时继续展示后端现有失败提示并刷新后重试;
  • 不需要新增字段、状态分支或页面组件。

因此 frontend_status=not_required

不影响范围

  • 不修改 Controller、VO/DTO/BO、Feign 或 shared Java 契约。
  • 不修改数据库字段、迁移、Long ID 字符串和手机号脱敏规则。
  • 不改变已完成/已取消业务状态,不放宽历史、完结或关账只读门禁。
  • 不修改 hl-ui 仓库。

验证证据

  • 后端 PR [wx/HL#5306](https://git.1814.love:8443/wx/HL/pulls/5306) 已 squash 合并至 dev-v3,合并提交 594d932db
  • hl-fleet-service 已滚动部署测试环境,8087/8187 双实例健康。
  • 定向 AssignmentServiceTest,FleetAssignmentMapperTest328 tests,0 failures,0 errors,0 skipped。
  • Fleet reactor verify2480 tests,0 failures,0 errors,1 skipped;Spotless 628 Java files clean。
  • 独立 Reviewer 无未解决 P0–P1。
  • 真实测试网关通过登录和车务矩阵只读查询确认部署后网关、认证及 Fleet 服务链路正常;本次内部事务修正没有可安全构造的写侧正例,核心五类边界由定向测试覆盖,探针不产生业务写入。
  • 网关证据:D:/work2/HL-v3/.tmp/5305-gateway.json,SHA-256 4698b3b8b1765715f6dc823664b3d24df2e977d26e6e19da08b5e298c6b6b0f6
  • 契约审查:not_required;当前 diff 无 Controller、请求响应模型、Feign 或 shared Java 变化。

当前状态:后端已部署、网关兼容探针已通过,前端无需改造。

关联:#5305。