Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

console: #3660 把 sys-datasources 改指规范路由,却漏了紧挨一行的 sys-objects 与 QuickActions —— 三个调用点仍走 legacy 别名,每次点击多绕一跳 #3739

Closed

Description

@yinlianghui

越界发现,记录于 #3712(ROADMAP.md 单文件改写)期间,只报不改,单独立单,未认领。

基线:origin/main @ 4e93e40d7。

事实

#3660 把两个侧边栏的 sys-datasources 从 legacy 别名改指引擎的规范路由,并在代码里留了完整判词——packages/app-shell/src/layout/AppSidebar.tsx:330-337:

#3660 — sys-datasources names the metadata-admin engine's CANONICAL route /apps/setup/metadata/datasource, not the legacy …/component/metadata/resource?type=datasource alias it used to carry. That alias is not a page: its route element is LegacyMetadataRedirect, which Navigates onto exactly the URL spelled here, so every click paid a redundant hop plus a re-render.

但同一个数组里紧挨上一行的 sys-objects 没有一起改。今天仍有三个调用点发出 legacy 别名:

packages/app-shell/src/layout/AppSidebar.tsx:329       url: '/apps/setup/system/metadata/object'
packages/app-shell/src/layout/UnifiedSidebar.tsx:335   url: '/apps/setup/system/metadata/object'
packages/app-shell/src/console/home/QuickActions.tsx:39  href: '/apps/setup/system/metadata/object'

而 system/metadata/:metadataType 正是别名:

  • console host 侧 apps/console/src/AppContent.tsx:190 的 route element 是 MetadataRedirect;
  • app-shell 侧同名别名亦为重定向(packages/app-shell/src/console/AppContent.tsx:645-662 的注释自述这些别名「serving bookmarks and external links, the arrivals that can never be re-pointed」)。

规范目标是 /apps/setup/metadata/object(packages/app-shell/src/console/AppContent.tsx:641 的 metadata/:type,元素 MetadataResourceListPage)。apps/console/src/__tests__/AppContent.legacyRedirects.test.tsx:105-113 已把这条改写钉成「ONE hop」:/apps/x/system/metadata/object → /apps/x/metadata/object。

所以现状是:内部导航自己把流量喂进为「无法改指的外部到达」保留的别名——正是 #3639 与 #3660 分别为 console host 的两个 redirect、以及 System Hub 卡片消除掉的形态(SystemHubPage.tsx:180-188 的注释:「this only stops the hub feeding its own traffic through them」)。

血缘(为什么是漏掉而不是有意保留)

git log -L 显示这三处的拼法都早于那轮清理、之后未被触碰:

  • AppSidebar.tsx:329 最后一次改动是 97c68317c(i18n polish,只包了 t(),URL 原样);
  • QuickActions.tsx:39 最后一次改动是 152bd4561(setup app,只加了 /apps/setup 前缀),其上一次是 f9f9f5157,即把 /system/objects 改成 /system/metadata/object 的那次。

代码里没有任何注释为 sys-objects 保留别名拼法作辩解——与它下一行 sys-datasources 的长注释形成对照。

复核方式

grep -rn "system/metadata/object" --include='*.ts' --include='*.tsx' apps/ packages/ | grep -v __tests__
sed -n '320,345p' packages/app-shell/src/layout/AppSidebar.tsx
sed -n '328,345p' packages/app-shell/src/layout/UnifiedSidebar.tsx
sed -n '30,45p' packages/app-shell/src/console/home/QuickActions.tsx
sed -n '105,113p' apps/console/src/__tests__/AppContent.legacyRedirects.test.tsx

影响面

用户可感,但轻:点「Object Manager」/「Manage Objects」会先落别名再 Navigate 到规范 URL —— 多一跳、多一次 re-render,浏览器历史里多一格(Back 键行为因此与 sys-datasources 不一致)。落地页正确,所以不是死链。

严重度按纪律不自评,留给分诊:#3660 已经把同一形态判为值得修,而这三处是它围栏外的同族残余。

关联

已就关键词(sys-objects、system/metadata/object、QuickActions、redundant hop、sidebar / 别名)搜过本仓 issue:相关单(#3610 / #3639 / #3661 / #3669)均已关闭,无同源开放单。


Generated by Claude Code

Activity

  1. self-assigned this
    on Aug 8, 2026
  2. yinlianghui commented on Aug 8, 2026

    @yinlianghui
    ContributorAuthor

    分诊 + 认领:PM 循环批 180(objectui 整仓席位,登记表 objectstack#4604)

    分诊:具体缺陷、三个具名调用点、方法已有 #3660 同数组先例与 legacyRedirects 一跳钉 → auto-queue(bug + pm:queue),不需维护者。

    会话:session_01GTRjn8xBqp75dk7kFupVRt
    分支:claude/issue-3739-sys-objects-canonical-route
    Worktree:objectui-3739
    文件面:packages/app-shell/src/layout/{AppSidebar,UnifiedSidebar}.tsx、packages/app-shell/src/console/home/QuickActions.tsx 及相应测试(越界即停)


    Generated by Claude Code

  3. yinlianghui commented on Aug 8, 2026

    @yinlianghui
    ContributorAuthor

    验收:PR #3748 ACCEPT(会话 session_01GTRjn8xBqp75dk7kFupVRt,PM 循环批 180)。

    交付内容:三个生产者(AppSidebar/UnifiedSidebar/QuickActions)全部改指规范路由,判词注释逐文件循 #3660 的 sys-datasources 同款惯用形;别名路由原样保留(书签/外部到达不受影响);顺手改掉了被本次修改证伪的那句注释("Every sibling below already spells /apps/setup/system/...")——留着它会诱导下一个 agent 为前缀一致性把 URL 改回去,这是防重新上膛的正确处置。QuickActions 如实定性:零 JSX 调用点(休眠前置断言证明),第三处是护栏不是用户可见修复,changeset 里写明。

    证据:消费半径按规则调用方扫(26 文件 160 测试全绿,legacyRedirects 别名钉未触碰);逆向验证预测 5/9 红且精确到失败位置(hop 链在 precondition 处死亡、链断言不可达——由此说明 hop 测量的价值在 CONTROL 方向)——实测逐字命中;CI 18 项全绿;app-shell src 内零残留 legacy 发射点(PM 复核)。

    新立 #3749(console 两个测试文件的叙述性注释在 #3660/本 PR 后过期,断言本身仍正确——comment-only,循 #3666 先例独立立单)入分诊池。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions