Skip to content

[#5588 裁 C · 第二棒] build-openapi.ts 摘除 built-in 路由段生成 —— spec 静态产物只保留 components.schemas / info / securitySchemes #5744

Description

@baozhoutao

Part of #5588
Blocked-by: #5588

维护者 2026-08-06 对 #5588 裁定 C(裁决评论见该单):built-in 路由段的唯一产出方移交 packages/rest(ADR-0076 属主,#5078 确权)。本单是 contract-first 拆分的第二棒(spec 半边),落点 packages/spec,按跨座位转移协议转 spec 座位队列(domain:* 标签待分诊座位补)。

范围

  1. packages/spec/scripts/build-openapi.ts 摘除 generateCrudPaths / generateMetadataPaths / generateDiscoveryPaths 三个手写路由段生成函数及其调用 —— 发布的静态 openapi 产物不再携带任何 built-in 路由描述(它们 0/10 命中真实路由,见 发布出去的 /api/v1/openapi.json 描述的 built-in 路由一条都不存在 —— 10 个 operation 真实 boot 全部 404(证伪 #5456 的「当前未漂移」) #5588 正文对照表),只保留 spec 真正拥有的 components.schemas / info / securitySchemes;
  2. 发布出去的 OpenAPI 文档 components.schemas 是空的,而 6 个 $ref 全部悬空 —— lazySchema Proxy 撞上 typeof === 'object' 判据 #5168 的产物自洽门按新产物形状调整覆盖面($ref 可解析、契约 schema 真产出的断言保留,path 相关断言随段移除);
  3. check:generated 收尾台账里 gen:openapi 那条 why("no check gate compares it to the routes")随实施改写 —— C 之下无两方可对账,该缺口的表述已失准(gen:openapi 的 base spec 用 7 条手写 path 描述路由面,与 rest 真实路由无任何对账 —— 漂移了不会红(#5168 的剩余那一半) #5456 已依此关闭 not planned)。

为什么 Blocked-by #5588(第一棒先行)

服务出的 /api/v1/openapi.json = spec 静态产物 + rest serve 期 enrichment。若 spec 先摘段,rest 补齐落地前服务出的文档将缺失 built-in 段(比错误描述更糟的空窗)。第一棒(rest 在 serve 期丢弃静态旧段、自产正确段)合入后,静态段变为纯冗余,本单摘除才是零行为变化的清理。

验收

关联:#5588(裁决锚点)、#5456(已关,重开条件在其关闭评论)、#5168#5078、ADR-0076。

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions