纯后端复核闭环修复,无接口契约变化;前端 dispatchPlanGeneration 透传回 confirm、 staleFinalizedPlan/finalizedByFleet 系后端派生状态,零改动自动受益。 frontend_status 补 frontend_owner/ref=db1f3507 + 前端复核说明。
4.2 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 | 5910 | 修复改订单人数后车务复核确认无法闭环——复核confirm按全需求行判定满派并重新盖章 | admin | 修复 | wx(GIT) | deployed | not_required | not_required | mmg | db1f3507 | 2026-08-12 | 后端已修复并部署测试服,API 实测闭环通过。改订单人数换版打回待派车后,车务核对沿用原车/司机,对派车点「确认执行」复核即可:复核时按整个需求判定满派并重新盖章(归属→当前需求)发 finalPlan,订单正确回到「配车完成」。此前复核后订单永久卡「处理中」的死锁已解除。前端 2026-08-12 复核 not_required:无接口契约变化、零新字段消费;dispatchPlanGeneration 系详情快照透传回 confirm 乐观锁(useAssignFlow.js:136-148/449-462),后端重盖章后下发新值前端直读最新;staleFinalizedPlan/finalizedByFleet 系后端派生状态(BoardSlotSummary.vue:189-194),复核闭环后由后端翻正,前端展示逻辑不变自动受益,无需联调改动。 | 2026-08-12 | dev-v3 |
修复:改订单人数后车务复核确认无法闭环——复核confirm按全需求行判定满派并重新盖章(#5910)
服务: hl-fleet-service PR: #5911(已合并 dev-v3 并部署测试服) 日期: 2026-08-12 背景: 承接 #5851(换版即作废定稿)+#5899(守卫防自动重新盖章)。改订单人数换版打回待派车后,车务复核 confirm 无法把订单推回「配车完成」。
修复内容(对前端透明,无接口契约变化)
根因:AssignmentService.revalidateAssignedAfterBaselineChange(复核 confirm 走的分支)两处叠加:
- 用单组行
isRequirementFinalizedTopologyRows(groupRows,...)对整个需求拓扑,多车订单单组行数 ≠ 槽位×日期,必 false → 永不发 finalPlan。 - 复核 confirm 全程不调
markDispatchPlanFinalized重新盖章,plan_finalized_requirement_id永留旧需求 → #5899 守卫hasStaleFinalizedPlanRows永命中 → 即便拓扑齐全也不发 finalPlan。
旁证死锁:batchCreate 重新提交原方案被 605014 拒、change 改派被 605029 强制真换车/司机,车务「确认沿用原方案」无出口。
修复:复核 confirm 改用需求下全部行 isRequirementFullyAssignedRows 判满派(内部已含陈旧定稿降级 + 载客量校验,部分派单/缺车/容量不足返回 false,防 #5824 误标 DONE),满派时先 markDispatchPlanGeneration 重新盖章(归属→当前需求)再发 finalPlan。车务逐组复核,最后一组复核完即闭环,订单回「配车完成」,车/司机沿用原方案不用换。
行为变化
| 场景 | 旧 | 新 |
|---|---|---|
| 多车订单改人数后复核 confirm | ❌ 永久卡「处理中」,不盖章不发 finalPlan,无 API 可救 | ✅ 复核即整需求重新盖章发 finalPlan,订单回「配车完成」 |
| 部分派单/缺车/容量不足复核 | ✅ 不盖章不发 finalPlan | ✅ 不变(防 #5824 误标 DONE) |
| 单车订单改人数后复核 | ❌ 同样卡死 | ✅ 正常闭环 |
验证证据(测试服 API 实测,订单 2086270141158346754,2 组多车)
换版作废后(两组 assigned + finalized=0 + generation=NULL + 归属旧 v3,需求 PROCESSING,订单「配车 处理中」):
- 车务对第一组复核 confirm → 触发整需求重新盖章:两组
dispatch_plan_finalized=1、新generation=345816481176621056、归属全部 → 当前 v4 - 发 finalPlan:订单「配车」
PROCESSING 处理中→DONE 已完成,需求PROCESSING→DONE - 车务看板:
dispatchPlanGeneration=345816481176621056一致、两组「已派车」、执行全确认
单测:新增多车满派重新盖章+发finalPlan、部分派单不盖章不发finalPlan(防 #5824 回归)、单车回归 3 例;调整容量不足/行程中换版 2 例断言。AssignmentServiceTest 480 + ArchTest 13 + spotless 全绿,反向验证有效。前端无改动,无需联调。