Back to Fastgpt

账号页 UI 改造设计

.agents/design/support/account-page-ui-redesign.md

4.16.27.6 KB
Original Source

账号页 UI 改造设计

背景

账号模块当前所有路由都复用 AccountContainer,但桌面端仍使用带外边距、圆角和阴影的通用 PageContainer,各路由又分别维护不一致的 padding、滚动容器和标题样式。新 Figma 设计统一了账号侧栏和主内容区域,但各页面 Header 的业务内容差异明显。

本次改造覆盖以下路由:

  • 个人信息
  • 团队管理
  • 使用记录
  • 第三方账号
  • 模型提供商
  • 自定义域名
  • API 密钥
  • 通知
  • 语言与时区
  • 账单与发票(页面 Header)

账单页没有对应的完整新设计稿,本次沿用原有业务布局,并补齐与其他账号页一致的页面 Header。

设计目标

  1. 桌面端账号区域与 Figma 一致,采用全高、无外层卡片的两栏结构。
  2. 账号侧栏固定为 220px,主内容区自适应占满剩余宽度。
  3. 只抽象稳定的视觉和结构,不把不同业务 Header 强行统一成万能组件。
  4. 保留现有权限、配置开关、数据请求和交互逻辑。
  5. 移动端保留现有横向导航和纵向内容布局;只有标题文案的页面 Header 不显示,包含操作或辅助信息的特殊 Header 保留。

布局模型

桌面端:

text
全局导航 64px
└── 账号区域
    ├── 账号侧栏 220px
    └── 主内容 flex: 1; min-width: 0

账号侧栏:

  • 宽度固定 220px。
  • 左右内边距 11px,导航项可用宽度 198px。
  • 顶部内边距 16px。
  • 导航项高度约 37px,项间距 8px。
  • 版本信息固定在底部。
  • 当 OpenAI 账号和外部工作流变量均未开放时,不显示“第三方账号”导航。

主内容区:

  • flex: 1min-width: 0,不设置固定宽度或最大宽度。
  • 路由负责自身 Header、内容 padding 和滚动边界。
  • 桌面端去掉通用 PageContainer 的 16px 外边距、圆角、阴影和灰色背景。

抽象边界

共享部分

  • AccountContainer:账号侧栏、移动端导航、主内容容器和权限过滤。
  • accountTitleTextStyles:账号页标题和个人信息分组标题的文字视觉样式。

标题文字样式:

ts
{
  color: 'myGray.900',
  fontSize: '16px',
  fontWeight: 500,
  lineHeight: '24px',
  letterSpacing: '0.15px'
}

该抽象只提供视觉属性。页面标题使用 h1,个人信息分组标题使用 h2,避免视觉复用破坏语义层级。

不共享部分

不创建通用 Header 组件。各路由分别维护 Header,因为其结构和职责不同:

路由Header 结构
个人信息无页面级 Header,直接展示内容分组
团队管理标题、团队选择器、编辑入口、成员数量
使用记录页面标题;内容区包含 Tab、积分入口、筛选和导出
第三方账号页面标题
模型提供商页面标题;内容区包含模型 Tab、筛选和表格
自定义域名页面标题;内容区包含表格和业务操作
API 密钥标题、数量、教程入口;内容区包含筛选和操作
通知页面标题和通知列表
语言与时区页面标题和设置表单
账单与发票页面标题;内容区保留 Tab、开票入口和业务表格

个人信息页的字段行、快捷入口和用量展示只在该页面内部使用,局部 helper 保留在页面文件中,不提升为跨模块组件。

个人信息页

桌面端内容使用可用宽度,不设置 1080px1180px 最大宽度:

text
主内容宽度
├── 左右 padding:24px
└── 内容
    ├── 左栏:330px
    ├── 间距:45px
    └── 右栏:flex: 1; min-width: 0

Figma 画布下测得的 1180px 内容宽度和 805px 右栏宽度只是 1512px 视口中的计算结果,不是布局约束。

其他调整:

  • 移除“通用信息”“团队信息”“套餐与用量”标题前的图标。
  • 桌面内容 padding 为 24px。
  • 团队选择器高度调整为 34px。
  • 合并分割线与分组标题的重复垂直间距。
  • 套餐卡片和资源用量卡片随右栏宽度自适应。

路由改造原则

  • 页面 Header 在桌面端高度为 64px,左右 padding 为 24px,底部使用 myGray.200 边框;个人信息页除外。
  • Header 背景为白色,不显示旧版标题图标。
  • 内容区默认从 Header 下方 24px 开始;具体间距由路由根据表格、Tab 或表单结构控制。
  • 表格型页面使用页面内部滚动,避免整个账号侧栏跟随滚动。
  • 表格滚动容器占满主内容区宽度,左右留白放在滚动容器内部,使桌面端纵向滚动条贴合主内容区最右侧。使用记录、账单与发票、自定义域名和模型提供商均以 API 密钥页的滚动结构为准。
  • 团队管理的成员、群组、权限和审计 Tab 同样使用全宽滚动容器;部门 Tab 保留独立布局,因为它包含左右分栏和右侧固定内容。
  • 审计日志使用手动分页,默认每页 50 条,可切换 20、50、100、200 条;表格不产生横向滚动,详情列使用剩余宽度并自动换行。
  • 现有空状态、按钮和权限逻辑保持不变,设计稿中的示例数据不写入代码。

响应式策略

  • 桌面端按 Figma 实现。
  • 移动端继续使用 LightRowTabs
  • 语言与时区、使用记录、模型提供商、通知、第三方账号、账单与发票页面的 Header 只有标题文案,移动端隐藏整个 Header,不保留高度和底部分隔线。
  • 团队管理、自定义域名和 API 密钥的 Header 包含选择器、操作按钮或教程入口,移动端继续显示。
  • 个人信息页在移动端继续纵向排列,避免固定 330px 左栏造成横向滚动。
  • 移动端只有 AccountContainer 中 navbar 下方的主内容区负责纵向滚动;页面 Header、筛选区、表格、分页和其他内容作为一个整体滚动。各页面内部的独立纵向滚动仅在桌面端启用,表格仍可按需横向滚动。

验证方式

  1. 对涉及文件运行 ESLint。
  2. 运行 app TypeScript 检查。
  3. 启动本地页面后,至少检查 1512×715 桌面视口下的账号侧栏、个人信息页和各路由 Header。
  4. 检查第三方资源全部关闭时导航项隐藏。
  5. 检查窄桌面和移动端没有固定宽度溢出。

TODO

  • 调整 AccountContainer 桌面账号骨架和侧栏尺寸。
  • 新增共享标题文字样式。
  • 调整个人信息页自适应双栏和分组细节。
  • 调整团队管理 Header。
  • 调整使用记录 Header 和内容区。
  • 调整第三方账号 Header 和空资源表现。
  • 调整模型提供商 Header。
  • 调整自定义域名 Header 和内容区。
  • 调整 API 密钥 Header 和内容区。
  • 调整通知 Header 和列表区。
  • 调整语言与时区 Header 和表单区。
  • 补齐移动端 Header 显隐规则,隐藏仅含标题文案的页面 Header。
  • 统一使用记录、账单与发票、自定义域名、模型提供商的桌面端表格滚动层级,使滚动条贴合内容区右侧。
  • 统一账号页移动端滚动所有权,navbar 下方内容整体滚动并移除页面内部嵌套纵向滚动。
  • 统一团队管理成员、群组、权限、审计表格的桌面端滚动条位置,部门布局保持不变。
  • 将审计日志从触底加载改为手动分页,并调整列宽与详情换行规则。
  • 补齐账单与发票页面 Header,并保证原有业务布局在新骨架中可用。
  • 运行局部 lint,并执行 app TypeScript 检查;类型检查仅剩当前分支基线中的 19 个 i18n 错误,本次文件无报错。
  • 对照 Figma 截图复核关键布局。