文件
hyb-oa/.trellis/tasks/archive/2026-07/07-16-legacy-portal-navigation-compat-cleanup/research/portal-compat-audit.md
T

3.1 KiB

旧 Portal 导航兼容审计

Summary

当前运行时已经不存在 Portal 导航双接受:前端、后端、fixture 和 smoke helper 均以 工作台 为唯一用户导航 label。剩余可清理项是部署规约的过时 fallback 描述,以及视觉报告中与 englishFound 重复的 navPortalCopy 字段。

Current Navigation Sources

  • 前端默认导航:NavLinks.tsx 使用 工作台。
  • 前端路由元数据:navigation schema 使用 工作台。
  • 后端 workspace 导航:workspace settings 使用 工作台。
  • 当前 E2E fixture 搜索未发现 label: "Portal"。
  • smokeAssertions.ts 对工作台链接使用精确中文断言。

History

  • Git blame 显示 smoke helper 在 2026-05-29 已从旧英文 label 迁移到 工作台。
  • 部署规约仍描述旧 fixture 和 .or(...Portal) fallback,已经落后于代码事实。
  • 归档只读视觉报告保留 navPortalCopy: false,属于当时的审计 schema,不应改写。

Visual Audit Field

  • ENGLISH_PRIMARY_TERMS 包含 Portal,页面出现该用户可见英文词时会进入 englishFound 并产生 finding。
  • readMetrics 另行计算 navPortalCopy: text.includes("Portal"),报告对象再次输出该布尔值。
  • 当前仓库除该测试文件和受保护归档报告外,没有现行消费者读取 navPortalCopy。
  • 因此删除未来报告的 navPortalCopy 不会降低检测能力,也不会破坏现行门禁;englishFound 是保留的单一信号。

Protected Internal Identifiers

  • /portal 是现行路由和 Enterprise WeChat return target。
  • Portal API、feature flag、数据库实体、组件和 helper 名仍有大量消费者。
  • 测试标题中的 Portal 多为内部场景名,不是导航 fallback。
  • Radix UI 的 DialogPrimitive.Portal / DropdownMenuPrimitive.Portal 是第三方渲染概念,与产品文案无关。

Current Documentation

  • 多份 CURRENT 用户、管理员、业务和部署手册仍用 Portal 指代工作台。
  • 这些文档混合了当前操作说明、历史结论、路由术语和内部模块名;若迁移必须按状态矩阵逐份审核。
  • 不建议把文档迁移与两处兼容清理自动捆绑,也不能全局替换。

采用最小方案:更新部署规约,删除重复报告字段,保留英文负向检测、内部标识、现行手册和历史证据。后续若用户希望统一手册术语,另建文档治理批次。

Validation

  • 精确搜索当前 mock label 和 navPortalCopy 消费者。
  • 前端 TypeScript 检查。
  • 两个相关 Playwright spec 使用 --list 加载。
  • 前端 production build。
  • Trellis governance、task validate 和 git diff --check。

2026-07-16 Execution Result

  • 用户选择最小方案;部署规约已收敛为精确中文导航合同。
  • 新视觉报告已移除重复 navPortalCopy 字段,Portal 英文负向检测保持不变。
  • 当前 fixture 的旧导航 label 和活跃重复字段消费者均为 0。
  • TypeScript、两个 Playwright spec 的 --list、production build 和 Trellis 治理通过。
  • 验证生成物已清理;未运行公网或带凭据检查。