5.1 KiB
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 并部署 TEST(hl-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 路径(无派车方案代际)的「通知结果确认中」校验;有代际的确认走需求级原子引擎路径(confirmSingletonThroughRequirementEngine → confirmRequirement),其中 isRequiredHoldingGroup 分支残留同类校验,AMBIGUOUS 仍 605042。
实证对照(TEST):26-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 2086077201060397057):holding + AMBIGUOUS(通知日志 delivery_status=dispatching)+ 司机已确认(21:20:15)+ 有代际 finalized=1 →
confirm(sendItinerarySms=false)→ 200 confirmed=true status=assigned(修复前 605042) - 回归 26-8917(AID 2086050105051250690):同 AMBIGUOUS + 有代际 → confirm 200 confirmed=true status=assigned
- 实证后通知日志恢复原状(canceled),两单保持 assigned 正常业务流转
- 26-5484(订单 2086077200523558914,AID 2086077201060397057):holding + AMBIGUOUS(通知日志 delivery_status=dispatching)+ 司机已确认(21:20:15)+ 有代际 finalized=1 →
- 测试:新增
confirmRequirement_holdNotificationAmbiguous_proceedsToAssigned;AssignmentServiceTest 404/404 全绿;fleet verify 仅基线 ReleaseEOccupancyMysql8033RecoveryTest 失败(与本案无关)
前端交接
无接口契约变化(响应结构、字段、错误码集合均不变,仅 605042 出现场景收敛到既有口径)。
前端实证确认(2026-08-08 mmg,hl-admin)
确认 not_required 属实,零代码改动:
- 全
src/零 605042 引用:grep 无任何 605042 特判/重试引导;confirm 业务错误统一走request.js弹后端 message,后端不再返回即前端不再展示。 - confirm 两路径前端入口均无 605042 处理:单段
useAssignFlow.js:1095 confirmAssignment与整组/原子引擎路径useAssignFlow.js:1088 confirmRequirementAssignments都无错误码特判,后端解除拦截后天然受益。 - AMBIGUOUS 前端展示与 confirm 拦截无关:仅
HoldNotificationStatus.vue:178/231(发送结果标签 + canRetry fail-closed 守卫)与OrderDrawer.vue:708(状态标签)消费 AMBIGUOUS,属通知发送结果展示,本变更(confirm 执行拦截)不触碰,行为不变。 - 与 #5701(登记确认解除 605042)/#5716(confirm 单段 legacy 路径解除)同系列收尾:本条把原子引擎整组路径对齐到同一口径,前端无对应差异逻辑。