Files
planet/docs/technical/frontend-admin-frontend-context.md
2026-04-21 22:49:39 +08:00

6.1 KiB

Admin Frontend Context

本文件描述当前控制台前端的真实结构,目标是帮助后续页面开发、表格改造、布局治理和状态收口时快速找到正确入口。

相关规则建议一起参考:

当前目标

控制台前端承担的是后台工作台,而不是展示型大屏。当前约束是:

  • 页面默认遵循单屏工作区
  • 主交互在内部模块滚动,而不是依赖整页无限变长
  • 列表、表格、分析页优先保证主工作区可见
  • 通用布局、滚动条、表格滚动行为尽量复用,不要每页各写一套

当前路由入口

主入口在:

当前后台相关路由包括:

  • /admin
  • /users
  • /datasources
  • /data
  • /alerts/system
  • /alerts/bgp
  • /alerts/situational
  • /bgp
  • /playground
  • /settings

/earth 是独立展示页,不属于控制台骨架。

当前页面骨架

控制台公共壳层在:

职责:

  • 左侧导航
  • 折叠与展开
  • 当前账号/版本信息
  • 内容区高度闭合
  • 全站统一侧边栏滚动条

当前结构是:

<Layout className="dashboard-layout">
  <Sider className="dashboard-sider">...</Sider>
  <Layout>
    <Content className="dashboard-content">
      <div className="dashboard-content-inner">{children}</div>
    </Content>
  </Layout>
</Layout>

后续控制台页面应优先适配这套壳层,而不是重新定义全页高度语义。

当前共享组件

1. Scrollbar

文件:

用途:

  • 控制台侧边栏这类普通内容容器
  • 组件内部管理可见性、thumb 尺寸、拖拽和双轴 overflow 判定

当前约束:

  • 滚动条必须是浮层,不参与布局
  • 无 overflow 时不应留下可见痕迹
  • 真实滚动仍交给原生容器,只替换可见层和交互层

2. ScrollbarOverlay

文件:

用途:

  • Ant Table 这类内部已有滚动容器的区域
  • 不接管滚动语义,只叠加新的滚动条可见层

当前使用场景:

  • 数据源
  • 采集数据
  • 用户管理
  • 设置页
  • 告警页
  • BGP 页面

3. TableScrollRegion

文件:

用途:

  • 为表格滚动区提供统一包裹层
  • 后续新表格页优先复用,不要重复写“表格区域 + overlay scrollbar”样板

4. 其他共享组件

当前状态来源

1. 认证状态

文件:

职责:

  • token
  • 当前用户
  • 登录/退出

App.tsx 用它判断是否进入登录页。

2. 业务数据网关

目前 AI / 态势感知相关服务集中在:

约束:

  • 页面不要直接散落拼 URL
  • 先通过 port/types 定义边界
  • 再由 http/mock gateway 实现

当前页面分层建议

1. 仪表盘和摘要型页面

例如:

优先目标:

  • 页头稳定
  • 摘要卡片先紧凑化
  • 主工作区占据主要高度

2. 表格型页面

例如:

约束:

  • 优先内部滚动
  • 不要让表格撑爆整页
  • 新表格区域优先复用 TableScrollRegion / ScrollbarOverlay

3. 复杂工作区页面

例如:

约束:

  • Tabs 里的内容不能套同一套高度逻辑
  • 表格 tab、Markdown tab、配置 tab 要各自定义滚动责任
  • AI 结果区、长文本区优先保证最小可读高度

当前布局约束

这些原则已经在项目里反复验证过:

  1. 父容器高度链要闭合
  2. min-height: 0 不能漏
  3. overflow 责任必须明确
  4. 不要用 overflow: hidden 掩盖结构问题
  5. 不要为了摘要卡完整显示去压缩主工作区
  6. 自定义滚动条必须是浮层,不得挤压内容宽度

详细经验见:

当前推荐改动方式

如果后续继续改后台页面,建议按这个顺序:

  1. 先确认页面属于摘要页、表格页还是复杂工作区
  2. 先接入现有壳层和滚动语义
  3. 优先复用共享滚动组件
  4. 最后再改视觉和细节交互

不要先写局部 CSS 补丁,再回头补结构。

当前明显边界

控制台前端和 Earth 前端不是一套系统:

  • 控制台前端是 React + Ant Design 工作台
  • Earth 前端是 public/earth 下的独立原生 HUD 系统

因此:

  • 不要把 Earth 的 HUD/动画/状态机直接挪进控制台
  • 不要把控制台表格/滚动策略硬套到 Earth HUD

Earth 相关结构见: