hl-api-changelog/changelogs-v2/2026-08/08_5725_confirm确认执行两路径一致解除AMBIGUOUS拦截(含原子引擎整组路径)-修改接口-管理后台.md
Mimingguang a0b43444db
一些检查失败了
changelog-filename-gate / validate (push) Failing after 2s
chore(changelog): #5725 not_required 前端实证(confirm两路径无605042特判天然受益)
2026-08-08 21:48:16 +08:00

5.1 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 5725 confirm 确认执行两路径一致解除「通知结果确认中」拦截(含原子引擎整组路径) admin wx(GIT) 修改接口 deployed verified not_required 后端完成PR #5726 已合并 dev-v3 并部署 TESThl-fleet-service 双实例。confirm 单段与整组(需求级原子引擎)两路径一致解除 AMBIGUOUS 605042 拦截;实证 26-5484修复前 605042与回归 26-8917 均 confirm 200 assigned。接口响应结构不变,无前端消费变化。 2026-08-08 dev-v3 2026-08-08T21:45:00+08:00

confirm 确认执行两路径一致解除「通知结果确认中」拦截(含原子引擎整组路径)

后端完成PR #5726 已合并 dev-v3 并部署 TEST,网关全链路验证通过。

关联 / 联系人

链接

联系人

  • 后端负责人: @wx

背景

#5716 修复时只移除了单段 confirm legacy 路径(无派车方案代际)的「通知结果确认中」校验;有代际的确认走需求级原子引擎路径confirmSingletonThroughRequirementEngineconfirmRequirement),其中 isRequiredHoldingGroup 分支残留同类校验,AMBIGUOUS 仍 605042。

实证对照TEST26-5484单代 finalized=1 → 原子路径confirm 被 605042 拦;26-8917成功时刻为旧行 finalized=0/orphaned 代际 → legacy 路径)放行——同一 AMBIGUOUS 状态结果不一致的根因。

变更内容

POST /admin/fleet/assignments/{assignmentId}/confirm(单段确认执行)与需求级整组确认(内部共用原子引擎 confirmRequirement)在 HOLD 通知结果仍确认中AMBIGUOUS,短信已发未回执时,一律不再返回 605042,确认执行正常推进 assigned——与 #5701/#5716 已解除的单段 legacy 路径口径一致。

行为变化

场景 变更前 变更后
HOLD 通知结果确认中AMBIGUOUS+ 司机已登记确认 + 单段 legacy 路径 200#5716 已解除) 200
HOLD 通知结果确认中AMBIGUOUS+ 司机已登记确认 + 有代际(原子引擎/整组)路径 605042 200 推进 assigned

保留不变的保护

  • 司机确认登记缺失(未确认/无有效来源):仍拦截(DRIVER_CONFIRMATION_REQUIRED)。
  • NOTIFICATION 来源(司机回复系统通知)仍需通知 SENT 事实;AMBIGUOUS 下 NOTIFICATION 来源返回 400 提示人工联系来源(#5701 口径,assertAtomicReplySourceIdentity)。
  • 其余 605042 保护点expand 换版 / cancel / change / undo / 拒接 / 恢复通知等通知代际推进与身份失效场景)保留原拦截。

验证证据

  • 网关实证TEST,VEHICLE_MANAGER
    • 26-5484订单 2086077200523558914,AID 2086077201060397057holding + AMBIGUOUS通知日志 delivery_status=dispatching+ 司机已确认21:20:15+ 有代际 finalized=1 → confirmsendItinerarySms=false200 confirmed=true status=assigned(修复前 605042
    • 回归 26-8917AID 2086050105051250690同 AMBIGUOUS + 有代际 → confirm 200 confirmed=true status=assigned
    • 实证后通知日志恢复原状canceled,两单保持 assigned 正常业务流转
  • 测试:新增 confirmRequirement_holdNotificationAmbiguous_proceedsToAssigned;AssignmentServiceTest 404/404 全绿;fleet verify 仅基线 ReleaseEOccupancyMysql8033RecoveryTest 失败(与本案无关)

前端交接

无接口契约变化(响应结构、字段、错误码集合均不变,仅 605042 出现场景收敛到既有口径)。

前端实证确认2026-08-08 mmg,hl-admin

确认 not_required 属实,零代码改动:

  1. src/ 零 605042 引用grep 无任何 605042 特判/重试引导;confirm 业务错误统一走 request.js 弹后端 message,后端不再返回即前端不再展示。
  2. confirm 两路径前端入口均无 605042 处理:单段 useAssignFlow.js:1095 confirmAssignment 与整组/原子引擎路径 useAssignFlow.js:1088 confirmRequirementAssignments 都无错误码特判,后端解除拦截后天然受益。
  3. AMBIGUOUS 前端展示与 confirm 拦截无关:仅 HoldNotificationStatus.vue:178/231(发送结果标签 + canRetry fail-closed 守卫)与 OrderDrawer.vue:708(状态标签)消费 AMBIGUOUS,属通知发送结果展示,本变更confirm 执行拦截)不触碰,行为不变。
  4. 与 #5701登记确认解除 605042/#5716confirm 单段 legacy 路径解除)同系列收尾:本条把原子引擎整组路径对齐到同一口径,前端无对应差异逻辑。