docs(changelog): 订正 #8576/#8601/#8577 三份交接件的编造内容与 frontend_status
changelog-filename-gate / validate (push) Failing after 2s

三份都是既有条目(#8576/#8601 由 da562f3 批次产出,#8577 单独产出),本次逐条对源码与
测试服实测记录核对后订正,不新增条目。

#8576
- frontend_status 由 not_required 改回 pending(ca26be4 批量置位)。依据:hl-ui
  origin/v2.1 确有 src/api/fleet/group-dispatch.js 消费 reconfigure / confirm 两个端点,
  而全仓 specWarnings 命中数为 0 —— 新字段目前无人渲染,车辆规格提醒对车务不可见。
  改判原因已按 FRONTEND_CONSUMPTION_STATUS_GUIDE 要求写进 status_note。
- 两处错误响应示例的 message 是编造的,换成 GroupDispatchAdminErrorCode 的真实模板。
- planVersion 出参类型 Integer/Long 统一为 Long(两张表)。

#8601
- 删掉四处「589535 适用于本端点」的错误断言。实证:RequirementService.java:4749 对
  resourceType=VEHICLE 硬编码 hasActiveAssignments=false,该码在车需求打回上结构性不可达。
- 编造的订单 ID 2099459272533323777 换成实测的 2105173274755534850(dispatch)与
  2105173313083080706(reject)。
- 错误码集合订正为 809000 / 809007(仅 dispatch)/ 582031 / 582083。

#8577
- 订正一处「POST requirement/confirm 零影响」的错误断言:doConfirm 与 confirm-check 共用
  已收窄的 classifyVehicleSubmission,该端点的 809122 触发条件同步收窄。
- 809121 / 809123 的错误响应示例换成测试服实测原文。
- frontend_status 保留 not_required,但把判定依据写进 status_note:三个码一律走拦截器透
  message、生产代码无一处按报文匹配、前端也无纯接送机户的规避需要撤除;同时列出五处现已
  陈旧的前端注释与一处 mock 报文,供 mmg 顺手清理。

门禁:validate-changelog-frontmatter.mjs --files 三个文件一次通过(PASS: 3 files)。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
这个提交包含在:
API Changelog Bot
2026-09-30 15:17:17 +08:00
共同撰写人 Claude Opus 5
父节点 dc080e389e
当前提交 e1ae777695
共修改 3 个文件,包含 25 行新增和 23 行删除
@@ -12,7 +12,7 @@ frontend_owner: ""
frontend_ref: ""
target_release: ""
verified_at: ""
status_note: "PR #8600 已 squash 合并 dev-v3(5b7074e691),hl-order-service-v3 dev-v3 分支已滚测试服。三个端点的请求体、响应体字段与错误码号全部未变,变的是 809121/809122/809123 的触发条件(收窄)与消息文案(去掉「行程」二字)。"
status_note: "PR #8600 已 squash 合并 dev-v3(5b7074e691),hl-order-service-v3 dev-v3 分支已滚测试服。三个端点的请求体、响应体字段与错误码号全部未变,变的是 809121/809122/809123 的触发条件(收窄)与消息文案(去掉「行程」二字)。【frontend_status 取 not_required 的依据,2026-09-30 对 hl-ui origin/v2.1 逐处查证】三个码的展示一律走拦截器透 message,生产代码无一处按报文字符串匹配;纯接送机户在前端也没有任何规避(按钮禁用/提示)需要撤除,故无强制前端动作。⚠️ 但有注释级陈旧需顺手清:src/api/orderV2GroupBatch.js:921,957,958 与 GroupVehicleRequirementEditModal.vue:377,874 仍写着「TRAVEL / 行程用车需求」,三个码现已按 TRAVEL ∪ TRANSFER 判「已提交」;GroupVehicleRequirementSection.spec.js:1000 的 mock 报文同样陈旧(该用例不断言文案,不会红)。"
updated_at: "2026-09-30"
base: "dev-v3"
---
@@ -232,12 +232,12 @@ base: "dev-v3"
#### 错误响应
809123(触发条件已收窄、文案已改写;`{0}` 是团期人话标识,`{2}` 按团号列户、无团号回落订单号、都缺时为「某子订单」,顿号分隔):
809123(触发条件已收窄、文案已改写;`{0}` 是团期人话标识,`{2}` 按团号列户、无团号回落订单号、都缺时为「某子订单」,顿号分隔;以下为测试服实测原文):
```json
{
"code": 809123,
"message": "团期「第3期 10月8日出发团」有 2 户尚未提交用车需求,暂不能保存正式用车需求:26-0480、26-0481",
"message": "团期「第22期 8月喀纳斯湖秋色三日游」有 1 户尚未提交用车需求,暂不能保存正式用车需求:26-6538",
"success": false,
"data": null
}
@@ -363,12 +363,12 @@ GET /v3/admin/order/group-batch/2099459272533000001/vehicle-requirement/aggregat
#### 错误响应
809121(触发条件已收窄、文案已改写;`{0}` 是团期名标识,`{2}` 是「户标识:原因」顿号分隔的清单,原因文案里的 `未提交行程用车需求` 已改为 `未提交用车需求`):
809121(触发条件已收窄、文案已改写;`{0}` 是团期名标识,`{2}` 是「户标识:原因」顿号分隔的清单,原因文案里的 `未提交行程用车需求` 已改为 `未提交用车需求`;以下为测试服实测原文):
```json
{
"code": 809121,
"message": "团期 「第3期 10月8日出发团」 有 1 户缺少可汇总的用车需求,暂不能自动汇总:26-0480:未提交用车需求",
"message": "团期 「第22期 8月喀纳斯湖秋色三日游」 有 1 户缺少可汇总的用车需求,暂不能自动汇总:26-6538:未提交用车需求",
"success": false,
"data": null
}
@@ -634,6 +634,7 @@ GET /v3/admin/order/group-batch/2099459272533000001/requirement/confirm-check
| 某户只提交了接送机,团级 PUT 保存 | 809123 整份拒绝,运营无干净出路 | 正常保存 |
| 某户只提交了接送机,点自动汇总 | 809121 整团出不来草稿 | 正常出草稿(该户不进草稿,也不进缺失清单) |
| 某户只提交了接送机,进确认预检 | 该户挂 `HOUSEHOLD_REQUIREMENT_NOT_SUBMITTED`,`ready=false` | 不产出该缺失项 |
| 某户只提交了接送机,点整体确认(`POST .../requirement/confirm`,真实派车/写库) | 809122 抛出,确认失败、零写入 | 正常确认,该户随团一起派车(前提其余条件都满足) |
| 某户只提交了接送机,是否要求被乘车分组覆盖 | 会走到 809109 | 不要求(它结构上在团级分组之外) |
| 809121 报文 | `团期 {0} 有 {1} 户缺少可汇总的**行程**用车需求…` | `…缺少可汇总的用车需求…` |
| 809122 报文 | `该户尚未提交**行程**用车需求,…` | `该户尚未提交用车需求,…` |
@@ -655,9 +656,10 @@ GET /v3/admin/order/group-batch/2099459272533000001/requirement/confirm-check
## 七、不影响范围
- **仅影响**: 团期需求管理 Tab 的三个端点里 809121 / 809122 / 809123 的触发条件与报文文案。
- **⚠️ `POST .../requirement/confirm`(整体确认,真实派车/写库)不是零影响**:它的响应字段结构、派车/写库机制本身未改一行代码,但它内部同样经 `GroupBatchRequirementService.doConfirm`(`GroupBatchRequirementService.java:562`)调 `loadVehicleSnapshot`,后者第 1240-1241 行直接调用本次收窄后的 `classifyVehicleSubmission` 来判 809122——即它对 809122 的**实际触发条件与 `confirm-check` 端点同步收窄**:纯接送机户此前会在这里被 809122 拦下、零写入(回归用例 `GroupBatchRequirementServiceConfirmVehicleTest#doConfirm_householdWithoutTravelRequirement_throws809122` 钉住的正是「两类都没提交」仍会拦的边界),现在能正常通过、随团一起派车,见六.6 行为级对比。前端若曾据「纯接送机户点确认必失败」写过分支或禁用逻辑,需按该行为级对比同步调整。
- **零影响**:
- 809109 逐日覆盖判定(仍只认 TRAVEL)
- 整体确认端点 `POST .../requirement/confirm` 自身的确认逻辑与响应字段
- `POST .../requirement/confirm` 的响应字段结构(`GroupBatchRequirementConfirmRespVO` 字段清单未变)与派车 / 写库机制(`doConfirm` 方法体本身未改)
- 受控重开、整份撤回、整团免车、按户打回四个端点
- 接送机批量确认 `POST .../requirement/transfer/batch-confirm`
- 户级用车需求的提交 / 编辑 / 打回链路