From e93980297946529a8e43e7fef7a6158cec4030dc Mon Sep 17 00:00:00 2001 From: Zhao Jianing <18910855655@163.com> Date: Thu, 22 Oct 2026 13:06:50 +0800 Subject: [PATCH] fix: Swagger resolveSchema drops every direct-$ref property (60 of 225 endpoints lose nested objects) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit resolveSchema 对 {$ref, description} 形状的属性没有任何分支——没有 type 字段,array/object 检查都不命中,引用的 schema 从未被解析。 对线上 /api/v2/docs 规范实测:60/225 个带 201 schema 的端点至少 丢失一个嵌套对象(66 个不同对象——所有 /api/v2/metrics/* 的 metric_detail + TpcItem.scorecard)。 ResponsesViewer 的 hasChildren 只检查 value.items,解析出的 properties 仍然渲染为叶子——value.items || value.properties 的回退不可达。 修复:resolveSchema 新增 $ref 分支(递归解析引用的 schema), 导出为可测纯函数;ResponsesViewer 用统一的 childData(items 或 properties)判定可展开性与渲染。 新增 useMenuContent.test.ts:$ref 解析/array-of-$ref 回归/ 未知 schema 三例。 --- .../APIDocumentation/ResponsesViewer.tsx | 17 +++--- .../components/SideBar/useMenuContent.test.ts | 52 +++++++++++++++++++ .../components/SideBar/useMenuContent.ts | 13 ++++- 3 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 apps/web/src/modules/dataHub/components/SideBar/useMenuContent.test.ts diff --git a/apps/web/src/modules/dataHub/DataView/APIDocumentation/ResponsesViewer.tsx b/apps/web/src/modules/dataHub/DataView/APIDocumentation/ResponsesViewer.tsx index 17a02bc8fa..215b547019 100644 --- a/apps/web/src/modules/dataHub/DataView/APIDocumentation/ResponsesViewer.tsx +++ b/apps/web/src/modules/dataHub/DataView/APIDocumentation/ResponsesViewer.tsx @@ -20,11 +20,17 @@ const ResponsesViewer: React.FC = ({ responses }) => {