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

80 行
5.1 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

---
schema: "hl-changelog/v2"
ticket: "5725"
title: "confirm 确认执行两路径一致解除「通知结果确认中」拦截(含原子引擎整组路径)"
consumer: "admin"
author: "wx(GIT)"
change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "not_required"
frontend_owner: ""
frontend_ref: ""
target_release: ""
verified_at: ""
status_note: "后端完成PR #5726 已合并 dev-v3 并部署 TESThl-fleet-service 双实例。confirm 单段与整组(需求级原子引擎)两路径一致解除 AMBIGUOUS 605042 拦截;实证 26-5484修复前 605042与回归 26-8917 均 confirm 200 assigned。接口响应结构不变,无前端消费变化。"
updated_at: "2026-08-08"
base: "dev-v3"
generated: "2026-08-08T21:45:00+08:00"
---
# confirm 确认执行两路径一致解除「通知结果确认中」拦截(含原子引擎整组路径)
> 后端完成PR [#5726](https://git.1814.love:8443/wx/HL/pulls/5726) 已合并 dev-v3 并部署 TEST,网关全链路验证通过。
## 关联 / 联系人
### 链接
- **Issue**: [#5725](https://git.1814.love:8443/wx/HL/issues/5725)
- **PR**: [#5726](https://git.1814.love:8443/wx/HL/pulls/5726)
- **Merge commit**: [483cfd1ba](https://git.1814.love:8443/wx/HL/commit/483cfd1ba)
### 联系人
- **后端负责人**: @wx
## 背景
#5716 修复时只移除了单段 confirm **legacy 路径**(无派车方案代际)的「通知结果确认中」校验;**有代际的确认走需求级原子引擎路径**`confirmSingletonThroughRequirementEngine` → `confirmRequirement`),其中 `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 → `confirm`sendItinerarySms=false**200 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 路径解除)同系列收尾:本条把原子引擎整组路径对齐到同一口径,前端无对应差异逻辑。