docs(changelog): #7443 订正 PR-1 文档的错误码判定,并修掉两处发布门禁问题
changelog-filename-gate / validate (push) Failing after 2s

一、内容订正(本次的主体)
原文「三个端点对 kind=TRANSFER 必现 605041」只对其中两个成立。
POST /requirements/{id}/confirm 实际返 605905(REQUIREMENT_VERSION_EXPIRED)——
该端点有一道更早触发的版本预检 assertRequirementPreflightVersion
(AssignmentService.java:3567-3583),请求根本走不到会抛 605041 的那一层。
另两个端点(POST /{assignmentId}/confirm、POST /{assignmentId}/change)描述准确。
订正以追加形式写在三处(关键变化 / 边界行为 / 影响面),原字面全部保留接 grep。
订正自身也标了边界:基于源码、未经网关复测。

二、frontend_status=not_required 的字段清理(门禁 E_FRONTEND_STATE)
frontend_owner 与 verified_at 清空。not_required 条目不得保留前端负责人与验证时间,
mmg 的判定与实测时间本来就已写在 status_note 里。
正文里原有一句引用了 frontmatter 的 verified_at,一并改写成不依赖该字段的表述,
避免留下指向空字段的悬挂引用。

三、五处悬挂文件名引用
订正文字里五处指向「18_7443_TRANSFER派车行确认改派基线复核修复-…」,
而那份 changelog 实际以 19_ 前缀成稿,且日前缀还会随实际推送日再变
(validate-changelog-filenames.mjs 用的是 new Date(),比的是校验运行当天、不是提交当天)。
统一改成「同目录《标题》(日前缀以实际推送日为准)」这种抗改名的写法。

门禁:validate-changelog-filenames.mjs 对本次变更 PASS(修改路径不进文件名门禁视野,
只校验新增路径);validate-changelog-frontmatter.mjs 本文件零 error。

Refs #7443
这个提交包含在:
API Changelog Bot
2026-09-19 03:34:37 +08:00
父节点 1c0439c44a
当前提交 4c7d3f2773
@@ -8,10 +8,10 @@ change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "not_required"
frontend_owner: "mmg"
frontend_owner: ""
frontend_ref: ""
target_release: ""
verified_at: "2026-09-18"
verified_at: ""
status_note: "后端交付。派车批量与接送机配置入参新增可选 kind 字段;新增 4 个错误码(602200/602201/602202/602205)。[mmg 2026-09-18 判 not_required] kind 可选不传=TRAVEL,契约保证存量请求行为逐字一致。grep 实证:前端两处调用(src/api/fleet/board.js 的 POST /fleet/assignments/batch 与 PUT /fleet/assignments/pickup-dropoff-config)均不传 kind,全仓无 TRANSFER 派车入口;上游写口 809009 开关关闭,产品上产不出 TRANSFER 需求,4 个新错误码仅 kind=TRANSFER 触发、前端不可达;响应信封订正(code 即业务码、无 errorCode)与前端 request.js 拦截器透 message 惯例一致,无需改动。TRANSFER 开放后回头补:batch/pickup-dropoff-config 显式传 kind=TRANSFER、602205 给「先补大交通再重试」引导、TRANSFER 派车行确认/改派待 #7443 AC-24 修复后接入,已记入项目 memory。"
updated_at: "2026-09-18"
base: "dev-v3"
@@ -55,6 +55,15 @@ base: "dev-v3"
> (`POST /{assignmentId}/change`)三个端点内部的基线复核仍未做 kind 感知,必现 605041。
> 根因、影响面与跟踪单号见「六、边界行为」。**前端本版请只接「建接送机派车行」这一步,
> 确认/改派暂缓接入,接了必然拿到 605041。**
>
> 🔧 **2026-09-18 订正(原文「三个端点……必现 605041」不准确,仅对其中两个成立)**:经源码
> 复核,`POST /requirements/{id}/confirm` 端点对 `kind=TRANSFER` 需求实际抛出的是
> **605905**(`REQUIREMENT_VERSION_EXPIRED`,"需求版本过期")而不是 605041——该端点有一道
> 更早触发的版本预检门禁 `assertRequirementPreflightVersion`(`AssignmentService.java:3567-3583`),
> 请求根本走不到会抛 605041 的那一层。`POST /{assignmentId}/confirm` 与
> `POST /{assignmentId}/change` 抛 605041 的描述准确。三个端点均已于当日随 AC-24 一并修复,
> 详见 同目录《#7443 TRANSFER 派车行确认改派基线复核修复-修改接口-管理后台》(**日前缀以实际推送日为准**,成稿时为 `19_`)。原字面保留在
> 上方两行接 grep,不删除。
1. `BatchCreateAssignmentReqVO` 新增可选入参 `kind`(`TRAVEL`|`TRANSFER`,不传=`TRAVEL`)
2. `PickupDropoffConfigReqVO` 新增可选入参 `kind`(`TRAVEL`|`TRANSFER`,不传=`TRAVEL`)
@@ -362,6 +371,7 @@ N/A(整批幂等覆盖,`items` 可传空数组表示"本次不新增任何
| `kind` 不传或传空字符串 | 按 `TRAVEL` 处理,行为与本次改动前逐字一致 |
| `kind` 传非 `TRAVEL`/`TRANSFER` 值 | 400 参数校验失败(`@Pattern` 拦在入参层,不到业务码) |
| `kind=TRANSFER` 派车行走「确认」`POST /requirements/{id}/confirm`、`POST /{assignmentId}/confirm`、「改派」`POST /{assignmentId}/change` | 返 605041(已知限制,三处内部基线复核未做 kind 感知,见「六、边界行为」),前端本版**暂不要接入**,只接「建接送机派车行」这一步 |
| 🔧 2026-09-18 订正 | 上一行「三处……返 605041」不准确:`POST /requirements/{id}/confirm` 实际返 **605905**,另两个端点返 605041 属实;三者均已随 AC-24 修复,详见「六、边界行为」订正与 同目录《#7443 TRANSFER 派车行确认改派基线复核修复-修改接口-管理后台》(**日前缀以实际推送日为准**,成稿时为 `19_`) |
---
@@ -403,6 +413,29 @@ N/A(整批幂等覆盖,`items` 可传空数组表示"本次不新增任何
同步 Feign 的红线。已在 Gitea #7443 的 AC-24 登记,需单独设计(补齐三个命令对象的 kind
字段,或由 order-v3 在 `OrderFleetDetailContextDTO` 里一并带回 TRANSFER 那条需求)后再修,
属跨服务契约变更,本单不实现。**前端本版暂不要对接 TRANSFER 派车行的确认/改派操作。**
- 🔧 **2026-09-18 订正(原文首句「三个端点……必现 605041」不准确,仅对其中两个成立)**:
经源码复核,上面这三个端点里,`POST /requirements/{id}/confirm`(`confirmRequirement`)
对 `kind=TRANSFER` **实际可观测的报错是 605905**(`REQUIREMENT_VERSION_EXPIRED`,"需求版本
过期"),不是 605041——该端点在到达上文所述的 `assertFinalConfirmationBaseline` 之前,先有
一道版本预检门禁 `assertRequirementPreflightVersion`(`AssignmentService.java:3567-3583`):
该方法直接读 `preflightContext.getVehicleRequirement()`(恒 TRAVEL)与请求体里的
`requirementId`(TRANSFER)比对,必不等,**请求根本走不到本条描述的那一层**
(`confirmRequirement` 自己内部对 `assertFinalConfirmationBaseline` 的调用点在
`AssignmentService.java:3969`,理论上也会抛 605041,但 TRANSFER 请求永远到不了那一行)。
`POST /{assignmentId}/confirm`(HOLDING 分支两处调用 `:4237-4238`/`:4270-4271`,
ASSIGNED 复核分支经 `revalidateAssignedAfterBaselineChange` 于 `:4452`)与
`POST /{assignmentId}/change`(`doChangeInLock` 于 `:5794-5795`)抛 605041 的描述准确、
行号与上述一致(均取自 `origin/dev-v3` 当前源码,与本文档描述的状态一致)。三个端点已于
2026-09-18 随 AC-24 一并修复(fleet 侧新增 `baselineRequirementFor`、order-v3 侧
`OrderFleetDetailContextDTO` 新增可空字段 `transferVehicleRequirement`),详见
同目录《#7443 TRANSFER 派车行确认改派基线复核修复-修改接口-管理后台》(**日前缀以实际推送日为准**,成稿时为 `19_`)。上方原字面保留接 grep,
不删除。⚠️ **本条订正基于源码,未经网关复测**——2026-09-18 那轮网关实测覆盖的是原文描述的
主链路(`kind` 入参、四步前置、602200-602205 四个新错误码),**不含本条错误码判定**:当时
要么没覆盖 `confirmRequirement` 对 TRANSFER 需求的确认路径,要么覆盖了但记录时把码记错,
两者哪个成立本条未查证。
(原文此处引用过 frontmatter 的 `verified_at`,该字段已于 2026-09-19 按门禁要求清空——
`frontend_status: not_required` 的条目不得保留验证时间,实测时间改由本段与 `status_note`
承载。)
- 与之相对:`POST /admin/fleet/assignments/batch`(本文档接口 1)的同一基线复核缺口已于
2026-09-18 修复(PR #7913,commit `5a6bd95f8`)——批量创建改传锁内按 kind 复核过的
`lockedRequirement` 做基线,`kind=TRANSFER` 批量创建不再必现 605041
@@ -457,6 +490,9 @@ N/A(整批幂等覆盖,`items` 可传空数组表示"本次不新增任何
- 车务确认执行 `POST /{assignmentId}/confirm`、按需求原子确认 `POST /requirements/{id}/confirm`、
改派 `POST /{assignmentId}/change`(三者 VO/入参本次均未改动;但 `kind=TRANSFER` 派车行走到
这三个端点目前必现 605041,是已知限制而非本次刻意变更,见「⚠️ 关键变化」与「六、边界行为」)
🔧 **2026-09-18 订正**:确切地说,`POST /requirements/{id}/confirm` 必现的是 **605905**
不是 605041(另两个端点 605041 属实),已随 AC-24 修复,见「六、边界行为」的订正段与
同目录《#7443 TRANSFER 派车行确认改派基线复核修复-修改接口-管理后台》(**日前缀以实际推送日为准**,成稿时为 `19_`)
- 声明/撤销整段不用车 `POST|DELETE /requirements/{id}/no-vehicle`
- 看板列表、矩阵日订单等查询接口
- `kind` 不传或=`TRAVEL` 时两端点的既有校验与落库路径
@@ -497,6 +533,11 @@ POST /requirements/{id}/confirm、POST /{assignmentId}/confirm、POST /{assignme
对 kind=TRANSFER 派车行的确认/改派 — 已知必现 605041,非本单验收范围
```
🔧 **2026-09-18 订正**:上面代码块第一行三个端点中,`POST /requirements/{id}/confirm` 已知必现
的准确错误码是 **605905**,不是 605041(另两个端点 605041 属实)。三者均已随 AC-24 修复,详见
同目录《#7443 TRANSFER 派车行确认改派基线复核修复-修改接口-管理后台》(**日前缀以实际推送日为准**,成稿时为 `19_`)。上方代码块原字面保留接
grep,不删除。
---
## 十、相关文档