docs(changelog): #7442 订正两份交接件的部署顺序结论——按单算的"顺序无所谓"在并集里是错的
changelog-filename-gate / validate (push) Failing after 3s

两份文档各有一句部署顺序结论:
- reconfigure 补登:「万一要分批,order-v3 先滚风险更低」
- 就绪回写补登:「本单不强制要求特定先后顺序」

两句按各自那次改动算都是对的,分析段也都标了范围(reconfigure 那份甚至
明写「本单与 #7957 的『fleet 必须先滚』不同」)。错的是结论句把限定丢了,
读起来像是对这次部署的建议。

而 PR-C2(#7957)后来在同一个 GroupBatchDispatchBaselineDTO 上加了
reconfigureWindow,它强制 fleet 先于 order-v3:order-v3 先滚时旧 fleet
收到 dispatchable=true 直接放行重配,不读 reconfigureWindow、不校验令牌
与范围,「受控重开」当场退化成「不受控重开」——而两端日志都正常、
没有任何报错。今天要部署的人面对的是这些改动的并集,不是某一单。

⇒ 两份都补了订正框,并把实操答案写死:同批滚;必须分批时 fleet 先、
order-v3 后。同时立了一条规矩:写部署顺序结论一律带上「截至某日期/commit,
这个 DTO / 这批部署单位上还有哪些已合入的改动」这个限定——按单写的部署
结论会在下一次改动落到同一个对象上时变成陷阱,而它不报错,也没有人会
回来改它。

原分析段逐字保留,只给结论句补范围。

Refs #7442

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
这个提交包含在:
API Changelog Bot
2026-09-19 14:30:07 +08:00
共同撰写人 Claude Opus 5
父节点 cad5dcd021
当前提交 0eecbce1ab
共修改 2 个文件,包含 34 行新增和 8 行删除
@@ -300,8 +300,23 @@ POST /admin/fleet/group-dispatch/batches/1934567890123456800/reconfigure
乘车分组清单」),**这是本单与 PR-C2 最大的不同**:PR-C2 的 `dispatchable` 放宽会被旧 fleet 静默忽略、
放行了本不该放行的请求;本单缺 `groups[]` 则是**整个新端点在这段时间内全部请求都报 602009**——响应是
**明确的错误码,不是静默放行**,运营/车务会立刻发现"这功能用不了"而不是"这功能用了但结果不对"。
- **结论**:两个方向都不会产生数据错乱,区别只是"功能完全不可用一段时间"(fleet 先滚)还是"零影响"
(order-v3 先滚)。**仍然建议同批滚**(消除过渡期报错),但万一要分批,**order-v3 先滚风险更低**。
- **结论(⚠️ 只对本单这一次改动成立,不要拿它指导今天的部署)**:**单看本单**,两个方向都不会产生
数据错乱,区别只是"功能完全不可用一段时间"(fleet 先滚)还是"零影响"(order-v3 先滚)。
> 🔴 **2026-09-19 订正:上面那句"order-v3 先滚风险更低"是按本单单独算的,拿它指导实际部署会出事。**
> PR-C2(#7957,2026-09-18 合入)**后来在同一个 `GroupBatchDispatchBaselineDTO` 上又加了
> `reconfigureWindow`**,而今天要部署的人面对的是**两次改动的并集**,不是本单。
> 对并集而言正确答案是 **fleet 必须先于 order-v3**:order-v3 先滚 ⇒ 旧 fleet 收到 `dispatchable=true`
> 直接放行重配,它不读 `reconfigureWindow`、不校验令牌与范围 ⇒ **「受控重开」当场退化成「不受控重开」,
> 而两端日志都正常、没有任何报错**(详见 `19_7442_团期配车受控重开窗口计划刷新状态收口…md`「部署清单」
> 与 PR [#7957](https://git.1814.love:8443/wx/HL/pulls/7957) 正文「⚠️ 部署:fleet 必须先于 order-v3」)。
>
> ⚠️ 上面那段按单分析**本身没错、也标了范围**(见本节标题与开头那句「本单与 #7957 的『fleet 必须先滚』
> 不同」)——错的是**结论句把限定丢了**,读起来像是对这次部署的建议。
> **按单写的部署结论会在下一次改动落到同一个 DTO 上时变成陷阱**,而它不会报错、也没有人会回来改它。
> ⇒ 今后写部署顺序结论,一律带上「**截至 &lt;日期/commit&gt;,本 DTO 上还有哪些已合入的改动**」这个限定。
**⇒ 今天的实操答案:同批滚;必须分批时 `fleet` 先、`order-v3` 后。**
### 消费方清单不能按 `pom.xml` 直接依赖关系查
@@ -309,8 +324,9 @@ POST /admin/fleet/group-dispatch/batches/1934567890123456800/reconfigure
`grep -rl 'hl-common-core' */pom.xml` 只命中 `hl-gateway`/`hl-finance`,order-v3 与 fleet 都经
`hl-common-web` 传递引入,不在直接依赖清单里,但正是本单真正改了代码的两个服务。
⇒ **实际部署单位共 7 个**:gateway / user / resource / product-v2 / order-v3 / mp / fleet;
本单不强制要求特定先后顺序,但**同批滚**仍是最稳妥的做法。
⇒ **实际部署单位共 7 个**:gateway / user / resource / product-v2 / order-v3 / mp / fleet。
**同批滚**;必须分批时 **`fleet` 先、`order-v3` 后**(理由见上方 2026-09-19 订正框——
本单自身不强制顺序,但同一个 DTO 上的 PR-C2 强制了,今天部署的是两者的并集)。
---
@@ -396,8 +396,17 @@ POST /v3/internal/group-batch/1934567890123456800/vehicle-ready-reset
不会报错也不会解析失败,等价于"这个请求体被忽略了",order-v3 仍按改动前的无身份逻辑处理。**净效果**:
两级判定这项保护在这段过渡期内**还没有生效**(旧漏洞——乱序/旧版回调污染就绪状态——仍然存在),
但不会比改动前更糟,也不会报错或崩溃。
- **结论**:两个方向都不会比"改动前"更差,区别只是"保护何时开始生效"。**仍建议同批滚**,让两级判定
尽快对新回调生效,避免过渡期内继续吃"旧漏洞"的亏。
- **结论(⚠️ 只对本单这一次改动成立,不要拿它指导今天的部署)**:**单看本单**,两个方向都不会比
"改动前"更差,区别只是"保护何时开始生效"。
> 🔴 **2026-09-19 订正:不要据此认为"顺序无所谓"。**本单自身确实不挑顺序,但**同期还有别的改动**
> 落在同一批部署单位上——PR-C2(#7957)在 `GroupBatchDispatchBaselineDTO` 上加了 `reconfigureWindow`,
> 它**强制 `fleet` 先于 `order-v3`**(order-v3 先滚 ⇒ 旧 fleet 不校验窗口令牌,「受控重开」静默退化成
> 「不受控重开」,两端日志都正常)。今天部署的是这些改动的**并集**。
> ⚠️ **按单写的"顺序无所谓",在并集里就是错的**,而且它不会报错、没有人会回来改它。
> ⇒ 写部署顺序结论一律带限定:「**截至 &lt;日期/commit&gt;,这批部署单位上还有哪些已合入的改动**」。
**⇒ 今天的实操答案:同批滚;必须分批时 `fleet` 先、`order-v3` 后。**
### 消费方清单不能按 `pom.xml` 直接依赖关系查
@@ -405,8 +414,9 @@ POST /v3/internal/group-batch/1934567890123456800/vehicle-ready-reset
`grep -rl 'hl-common-core' */pom.xml` 只命中 `hl-gateway`/`hl-finance`,order-v3 与 fleet 都经
`hl-common-web` 传递引入,不在直接依赖清单里,但正是本单真正改了代码的两个服务。
⇒ **实际部署单位共 7 个**:gateway / user / resource / product-v2 / order-v3 / mp / fleet;本单不强制
要求特定先后顺序,但**同批滚**仍是最稳妥的做法。
⇒ **实际部署单位共 7 个**:gateway / user / resource / product-v2 / order-v3 / mp / fleet。
**同批滚**;必须分批时 **`fleet` 先、`order-v3` 后**(本单自身不挑顺序,但同期 PR-C2 挑,
今天部署的是并集——见上方 2026-09-19 订正框)。
### 🔧 2026-09-19 补充取证:PR 正文与本节结论的矛盾判定依据