hl-api-changelog/changelogs-v2/2026-08/08_5701_登记司机确认不被通知结果确认中拦截(人工确认直接成功)-修改接口-管理后台.md
Mimingguang 40e47b1b6a
一些检查失败了
changelog-filename-gate / validate (push) Failing after 1s
chore(changelog): #5701 补修实证 confirm解除605042+已冻结组605020 前端not_required维持
2026-08-08 18:18:21 +08:00

7.0 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 5701 登记司机确认不被「通知结果正在确认」拦截(人工确认直接成功) admin wx(GIT) 修改接口 deployed verified not_required 后端完成PR #5705/#5716/#5719 已合并 dev-v3 并部署 TESThl-fleet-service 双实例。登记司机确认MANUAL_CONTACT与 confirm 确认执行均不再被 605042 拦截;已冻结 HOLD 组 confirm 不再误判 605020。全链路「登记确认→confirm assigned」网关实证走通AMBIGUOUS+已冻结组 confirm 200 assigned。前端交接见下605042 场景收敛与错误提示口径)。 2026-08-08 dev-v3 2026-08-08T18:15:00+08:00

登记司机确认不被「通知结果正在确认」拦截(人工确认直接成功)

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

关联 / 联系人

链接

联系人

  • 后端负责人: @wx

背景

派单页点「登记司机已确认」报 605042「司机通知结果正在确认,请稍后重试」——HOLD 通知异步发送结果仍 AMBIGUOUS短信网关未回执时,人工登记被拦;连锁导致 confirm 确认执行报 605020司机确认没登记上,状态未到可确认执行。口径wx车务点确认就是确认——系统不知道司机线下结果,人工登记与异步通知结果应解耦。

变更说明(无接口契约变化,行为修正)

POST /admin/fleet/assignments/{assignmentId}/driver-confirmation 行为变化

场景 变更前 变更后
通知结果确认中AMBIGUOUS+ MANUAL_CONTACT 人工联系登记 605042 拦截 直接登记成功
通知结果确认中AMBIGUOUS+ NOTIFICATION 通知回复来源 605042 拦截 400「无系统通知发送成功事实时必须显式选择人工联系来源」更准确的引导
通知结果确认中 + 未显式指定来源 605042 拦截 400「无系统通知发送成功事实时必须显式选择人工联系来源」
通知已发送SENT/未发送NOT_SENT/失败/取消) 不变 不变

POST /admin/fleet/assignments/{assignmentId}/confirm 行为变化(补修)

场景 变更前 变更后
通知结果确认中AMBIGUOUS+ 已登记司机确认 605042 拦截 直接推进 assigned(同登记确认口径,与异步通知结果解耦)
已冻结 HOLD 组dispatch_plan_finalized=1,#5697 冻结方案常态) 605020 误判(组级冻结 CAS 对已冻结行幂等跳过,但断言要求全量更新,自相矛盾) 正常推进 assigned断言只覆盖未冻结行

不变的保护

  • 其余 605042 保护点expand 换版 / cancel / change / undo 等通知代际推进与身份失效场景)保留原拦截。
  • NOTIFICATION 来源仍需通知 SENT 事实(原有校验不变)。

前端交接

  1. 人工登记路径:司机线下确认后,登记请求传 driverReplySource=MANUAL_CONTACT+操作人)即可直接成功,不再需要等通知结果回执或重试。
  2. 605042 在该端点不再出现:前端可移除 driver-confirmation 的 605042 重试引导;通知未回执时若用户选「通知回复」来源,会收到 400 提示「请选择人工联系来源」,按文案展示即可。
  3. 全链路:登记确认成功后,POST /{assignmentId}/confirm(确认执行)即可走通 assigned605020 连锁消除)。

验证证据

  • 网关全链路补修实证,TEST,holding 派单 2085978741208481793:通知 AMBIGUOUSdelivery_status=dispatching+ 已冻结组dispatch_plan_finalized=1+ 已登记 MANUAL_CONTACT 司机确认 → confirm 确认执行 → 200 成功,confirmed=true、status=assigned、返回行程 H5 链接(一次实证同时覆盖 AMBIGUOUS 放行与已冻结组 605020 修复)

  • 单测:新增 2 用例AMBIGUOUS+MANUAL_CONTACT 登记成功并写凭证;AMBIGUOUS+未显式来源拒绝并提示人工联系),替换原 605042 拦截用例;AssignmentServiceTest 402/402 全绿;spotless 通过

  • fleet verifymvn-throttle 错峰,Docker 原生 TestcontainersReleaseEOccupancyMysql8033RecoveryTest 10 个基线失败frozen Release E V002 SHA-256 发布产物缺失,与本案无关),其余 3286 全绿

  • 部署hl-fleet-service 双实例 UP15:29

  • 网关全链路TEST,VEHICLE_MANAGER,holding 派单 2085662146632224770

    • 构造通知 AMBIGUOUSdelivery_status=dispatchingdriver-confirmation MANUAL_CONTACT 登记 → 200 直接成功(修复前 605042
    • 通知恢复终态后 confirm 确认执行 → 200,confirmed=true、status=assigned、返回行程 H5 链接、车辆/司机状态置 busy ✓605020 连锁消除)

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

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

  1. 前端唯一登记路径即 MANUAL_CONTACTuseAssignFlow.js:121 buildDriverConfirmationSubmission 硬编码 driverReplySource: 'MANUAL_CONTACT',注释明确「此入口只供后台人工电话/微信登记;必须与通知回执事实显式隔离」。后端变更后该路径在 AMBIGUOUS 时直接成功(修复前 605042 拦截),正是本修复目标,前端天然受益。
  2. 无 605042 特判可移除grep 全 src/ 无任何 605042 处理或「正在确认请稍后重试」重试引导;业务错误统一走 request.jsbody.message,后端返回文案原样展示(交接项 2 的「可移除重试引导」前端本就不存在)。
  3. 不会触发新 400:新 400「请选择人工联系来源」仅在 NOTIFICATION 来源或未显式指定来源时出现;前端永远显式 MANUAL_CONTACT,不会命中。
  4. confirm 确认执行2026-08-08 补修后更新后端补修PR #5716/#5719已让 confirm 在 AMBIGUOUS + 已登记司机确认时也不再被 605042 拦截(与登记确认同口径解耦),并修复已冻结 HOLD 组dispatch_plan_finalized=1confirm 误判 605020。前端实证src/ 无任何 605042 业务处理;唯一 605020 引用是 baselineDifference.spec.js:47 断言它不是基线差异错误即不特殊处理;confirm 提交链 useAssignFlow.js:1095 confirmAssignment 无错误码特判,错误统一走 request.js 弹后端 message。补修属后端行为放宽,前端天然受益,零改动——not_required 维持不变。