hl-api-changelog/changelogs-v2/2026-08/11_frontend_派单Step2下一步置灰与日格未完成误判-前端缺陷-管理后台.md
API Changelog Bot 2490021161
所有检测均成功
changelog-filename-gate / validate (push) Successful in 1s
docs(changelog): 派单 Step2 下一步置灰——后端实测已排除,收敛到前端判定(#5849 前端部分)
2026-08-11 18:28:25 +08:00

7.0 KiB

schema, ticket, title, consumer, change_type, author, 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 author backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base
hl-changelog/v2 frontend 派单 Step2「下一步·发送给司机」置灰后端实测判定可用可选无冲突,日格「未通过候选校验」为前端侧误判 admin 前端缺陷 wx(GIT) not_required not_required pending mmg 对应后端工单 #5849。本条只交付「后端侧已排除」这一部分的实测证据测试服 26-3698 网关真实 API + DB 双向核实),前端判定表达式的精确定位仍在进行中,定位完成后会更新本文件。后端若需要为前端补充推进态字段,另发接口类 changelog,不在本条。 2026-08-11 dev-v3

派单 Step2「下一步」置灰 —— 后端侧已排除(#5849 前端部分)

页面:车务管理 → 派单看板 → 订单派车弹窗 → Step2「排车」 后端:本条无后端改动。下面全部是测试服实测结论,用于把排查范围收敛到前端。


一、现象

订单 26-369808/17→08/19,成人 10

  • 车辆槽位 1 已选车 蒙A-E5555 丰田埃尔法、司机 阿木古愣三天全部「已规划用车」、全部勾了「用车」,日历价 ¥2500、本次派车价 ¥2500 都已填
  • 8月18日 那一行挂橙色提示「2026-08-18 车辆槽位1 尚未通过当前日期、车辆和司机的候选校验」
  • 顶部「排车方案 1 个槽位 · 1/3 个日格已完成
  • 底部「已完成 0/1 个最终方案槽位」
  • 「下一步 · 发送给司机1 辆)」置灰不可点

同一现象在 26-5067 上表现为 8月21日 报同样的提示、「已完成 0/1」。


二、 已确认事实:后端判定这三天全部可用、可选、无冲突

2.1 真实 API 实测(测试服网关,车务 admin token,2026-08-11

报错的那一天 8/18 单独查候选:

POST /admin/fleet/assignments/candidates
Authorization: Bearer <admin token>
Content-Type: application/json

{
  "orderId": 2086270138171994114,
  "requirementId": 2087111726523617282,
  "fleetItemIndex": 0,
  "startDate": "2026-08-18",
  "endDate": "2026-08-18",
  "headcount": 10,
  "excludeAssignmentId": 2086270138708844545,
  "vehicleKeyword": "E5555"
}

响应中该车(节选,原样

{
  "plate": "蒙A-E5555",
  "vehicleTypeKey": "mpv",
  "vehicleTypeName": "商务车",
  "seats": 7,
  "seatsEnough": true,
  "requirementMatched": true,
  "vehicleStatus": "busy",
  "serviceStatus": "ACTIVE",
  "selected": false,
  "available": true,
  "selectable": true,
  "availabilityReasonCode": "AVAILABLE",
  "availabilityReasonMessage": "所选服务日期内可用",
  "availabilityWindows": [{ "startDate": "2026-08-18", "endDate": "2026-08-18" }],
  "conflicts": [],
  "primaryDriverId": "2065272145633591298",
  "primaryDriverName": "阿木古愣",
  "vehicleFeePriceComplete": true,
  "missingVehicleFeeDates": []
}

后端对 8/18 的判定是:可用 + 可选 + 无冲突 + 需求匹配 + 车费价格完整。

2.2 三种 excludeAssignmentId 传法结果一致

我们曾怀疑「逐日行传了组锚点 id,导致该日行没被排除、车被自己占用判成冲突」。该猜测已被证伪

excludeAssignmentId 传法 8/18 结果
组锚点 id2086270138708844545 available: true / selectable: true
该日行真实 id345501044920422400 available: true / selectable: true
完全不传 available: true / selectable: true

2.3 数据层核实:不存在任何真实资源冲突

槽位 0 的三行逐日切片完全同质,唯一差异是日期与「接机/参与」勾选:

服务日 状态 司机 协议价 日历价 接机/参与
2026-08-17 holding 蒙A-E5555 阿木古愣 2500 2500 勾选
2026-08-18 holding 蒙A-E5555 阿木古愣 2500 2500 未勾
2026-08-19 holding 蒙A-E5555 阿木古愣 2500 2500 未勾

跨订单全库核查:该车与该司机在 08/17~08/19 除本单外零占用


三、⚠️ 待确认推测(尚未定位到表达式,供参考不要直接照做)

三行数据里唯一的差异是「接机/参与」勾选8/17 勾了,另两天没勾),而「日格已完成」正好是 1/3

推测:前端的「日格完成」判定可能把「接机/参与」勾选当成了必要条件。

这条尚未验证,请以你那边的实际表达式为准。我们仍在定位「尚未通过当前日期、车辆和司机的候选校验」这句话的判定链路,定位完成后会更新本文件。

其它候选怀疑点(同样未验证):

  • vehicleStatus === "busy" 当成不可用(该车全局状态确实是 busy,因为正被本单占着,这是正常的)
  • selected 字段做当前选中回显匹配(逐日查询返回的是 selected: false
  • availabilityWindows 要求覆盖整个服务期,而逐日查询只返回当天那一格

四、目标行为wx 2026-08-11 拍板)

只要槽位里有司机、有车辆,且日期是对的,就可以进行下一步。定制师的需求变了,但车务可以不改派车;和需求数对不上也可以。

与 #5810「换版槽位人工制」、#5824「车型/数量不符只提示不做门禁」一脉相承。

硬约束 vs 软约束

类别 处理
(仍须拦) 同车/同司机同日期被别单占用(真实资源冲突) 阻断
派车日期越出当前行程窗 阻断(后端 605062
车辆维保/停用605037、司机休假/未激活605038 阻断
(应降级为提示) 车型不匹配 只提示
座位数不足 只提示
槽位数与需求数量不符 只提示
日格「未完成」(在已有车 + 有司机 + 日期正确的前提下) 只提示

提醒:车型不匹配不会影响 selectable。后端 selectable = available && conflicts 全部非阻断requirementMatched / seatsEnough 均不参与该计算。请不要把车型不匹配纳入按钮启用条件。


五、后端侧的后续(不在本条,另发)

  • 前端放开门禁后,后端提交链路上是否还有会拒的守卫,正在核;需要后端改的部分由 #5849 处理,涉及契约变化会另发接口类 changelog。
  • 若确认需要后端为前端补一个「本槽位是否可推进 + 不可推进原因」的字段,会在那份 changelog 里给出字段名与口径,届时前端可从「自己推导」改为「读后端结论」,避免两边口径再次劈叉。

六、关联

  • 后端工单 #5849
  • selectable 字段口径:11_5850_候选接口显式返回selectable-修改接口-管理后台.md
  • 换版后车型陈旧快照(会让候选列表误标「需求不匹配」):#5871,修复后另发