越界发现,记录于 #3639 (宿主重定向改发规范拼法)期间,该单明确要求「枚举仓内还有谁在生成 component/metadata/...」。这 4 处落在 #3639 的围栏外 (其文件面只有 apps/console/src/AppContent.tsx),按纪律只报不改 、未认领 ,留给 PM 分诊。
观察类 :这些链接今天都能走通(别名 302 到规范路由),用户看不到任何异常,代价只是每次点击多一个 Navigate + 一次 re-render。故打 finding、不打 pm:queue。
实测基线:origin/main @ 54dd7ec1。
事实
packages/app-shell/src/console/AppContent.tsx:775-776(有 activeApp 分支)与 :646-647(零应用分支)把 component/metadata/directory 与 component/metadata/resource/* 声明为旧别名 ,element 是 LegacyMetadataRedirect —— 它把这两个拼法翻译成规范的 metadata[/:type[/:name]]。规范拼法是 metadata/:type。
PR #3658 (修 #3639 )已把 apps/console 的两个宿主重定向改成直发规范拼法。全仓 grep 后,仍在生成别名 URL 的还剩 4 处 :
#
位置
产出的 URL
1
apps/console/src/pages/system/SystemHubPage.tsx:118
${basePath}/component/metadata/directory
2
apps/console/src/pages/system/SystemHubPage.tsx:126
${basePath}/component/metadata/resource?type=datasource
3
packages/app-shell/src/layout/AppSidebar.tsx:330
/apps/setup/component/metadata/resource?type=datasource(sys-datasources)
4
packages/app-shell/src/layout/UnifiedSidebar.tsx:336
同上(sys-datasources)
1 和 2 是 SystemHub 的 "Metadata" / "Datasources" 两张卡片的 href;3 和 4 是两份系统导航里同一个 sys-datasources 条目(两个 sidebar 实现各持一份字面量)。
对应的规范落点(按 LegacyMetadataRedirect 的翻译逻辑推出,与 #3658 的做法一致):
component/metadata/directory → metadata
component/metadata/resource?type=datasource → metadata/datasource
为什么不在 #3658 里顺手改
另注:PR #3636 (修 #3610 )的 changeset 明写「with no navigation URL changed 」—— 当时是刻意不动导航、只在路由侧补别名声明,不是认定这些 URL 正确。
需要一并考虑的两件事
packages/app-shell/src/layout/__tests__/systemNavSettingsTarget.test.tsx:162 钉住了 3/4 的现有形态 (['Datasources', '/apps/setup/component/metadata/resource?type=datasource'])。改导航 URL 必须同步改这条钉,否则红。
别名路由本身仍应保留 —— 书签与外链需要它。本单只主张「自家导航不再喂别名」,不主张删别名(与 console(apps/console): MetadataRedirect / ObjectRedirect 改写到已废弃的 component/metadata/resource 别名,多绕一跳且 docblock 已过期 #3639 裁决第 3 条一致)。
关联
已就关键词(component/metadata / sys-datasources / SystemHubPage / AppSidebar / UnifiedSidebar / legacy alias / double redirect)与上述文件路径搜过本仓开放 issue 与 PR,除 #3639 外无同源单。
Generated by Claude Code
越界发现,记录于 #3639(宿主重定向改发规范拼法)期间,该单明确要求「枚举仓内还有谁在生成
component/metadata/...」。这 4 处落在 #3639 的围栏外(其文件面只有apps/console/src/AppContent.tsx),按纪律只报不改、未认领,留给 PM 分诊。观察类:这些链接今天都能走通(别名 302 到规范路由),用户看不到任何异常,代价只是每次点击多一个
Navigate+ 一次 re-render。故打finding、不打pm:queue。实测基线:
origin/main@54dd7ec1。事实
packages/app-shell/src/console/AppContent.tsx:775-776(有 activeApp 分支)与:646-647(零应用分支)把component/metadata/directory与component/metadata/resource/*声明为旧别名,element 是LegacyMetadataRedirect—— 它把这两个拼法翻译成规范的metadata[/:type[/:name]]。规范拼法是metadata/:type。PR #3658(修 #3639)已把
apps/console的两个宿主重定向改成直发规范拼法。全仓 grep 后,仍在生成别名 URL 的还剩 4 处:apps/console/src/pages/system/SystemHubPage.tsx:118${basePath}/component/metadata/directoryapps/console/src/pages/system/SystemHubPage.tsx:126${basePath}/component/metadata/resource?type=datasourcepackages/app-shell/src/layout/AppSidebar.tsx:330/apps/setup/component/metadata/resource?type=datasource(sys-datasources)packages/app-shell/src/layout/UnifiedSidebar.tsx:336sys-datasources)1 和 2 是 SystemHub 的 "Metadata" / "Datasources" 两张卡片的
href;3 和 4 是两份系统导航里同一个sys-datasources条目(两个 sidebar 实现各持一份字面量)。对应的规范落点(按
LegacyMetadataRedirect的翻译逻辑推出,与 #3658 的做法一致):component/metadata/directory→metadatacomponent/metadata/resource?type=datasource→metadata/datasource为什么不在 #3658 里顺手改
apps/console,但不在 console(apps/console): MetadataRedirect / ObjectRedirect 改写到已废弃的 component/metadata/resource 别名,多绕一跳且 docblock 已过期 #3639 派发单列明的文件面里(只有AppContent.tsx);packages/app-shell,console(apps/console): MetadataRedirect / ObjectRedirect 改写到已废弃的 component/metadata/resource 别名,多绕一跳且 docblock 已过期 #3639 的裁决对该包挂了 ⛔(console: isSystemRoute / isMetadataRoute 的子串判断把 /apps/未知app/system_log 认成伪路由,静默回退渲染另一个 app #3638 在途);href/url字面量。改法应当一次性统一决定,而不是拆成两半。另注:PR #3636(修 #3610)的 changeset 明写「with no navigation URL changed」—— 当时是刻意不动导航、只在路由侧补别名声明,不是认定这些 URL 正确。
需要一并考虑的两件事
packages/app-shell/src/layout/__tests__/systemNavSettingsTarget.test.tsx:162钉住了 3/4 的现有形态(['Datasources', '/apps/setup/component/metadata/resource?type=datasource'])。改导航 URL 必须同步改这条钉,否则红。关联
已就关键词(
component/metadata/sys-datasources/SystemHubPage/AppSidebar/UnifiedSidebar/ legacy alias / double redirect)与上述文件路径搜过本仓开放 issue 与 PR,除 #3639 外无同源单。Generated by Claude Code