Skip to content

Latest commit

 

History

History
376 lines (304 loc) · 9.86 KB

File metadata and controls

376 lines (304 loc) · 9.86 KB

设置页面合并方案

📋 调整概述

根据用户反馈,个人设置和系统设置功能存在重叠和混淆。采用方案A,将所有设置合并到一个统一的设置页面。

❌ 调整前的问题

问题1:路由重复定义

router/index.ts 中,/settings 路由被定义了两次(第 222 行和第 427 行),导致路由冲突。

问题2:功能重叠

  • 个人设置 (/settings):包含用户级配置和系统级配置
  • 系统管理 (/system):包含系统级管理功能
  • 功能边界不清晰,用户容易混淆

问题3:命名混淆

  • Settings/index.vue 的页面标题是"系统设置"
  • 路由的 meta.title 是"个人设置"
  • 侧边栏显示的是"个人设置"

问题4:菜单分散

用户需要在两个不同的菜单项之间切换才能完成所有设置操作。

✅ 调整后的结构

统一的设置页面 (/settings)

设置 (/settings)
├─ 个人设置
│  ├─ 通用设置(用户名、邮箱、语言、时区)
│  ├─ 外观设置(主题、字体、布局)
│  ├─ 分析偏好(默认市场、分析深度)
│  ├─ 通知设置(邮件、系统通知)
│  └─ 安全设置(密码、API密钥)
│
├─ 系统配置
│  ├─ 配置管理(LLM、数据源、市场分类)
│  └─ 缓存管理(缓存清理、过期数据)
│
├─ 系统管理
│  ├─ 数据库管理(连接、备份、恢复)
│  ├─ 操作日志(审计记录)
│  └─ 多数据源同步(同步配置和状态)
│
└─ 关于系统(版本信息、系统状态)

🔧 技术实现

1. 路由调整

删除重复的路由定义

删除router/index.ts 第 427-456 行的重复 /settings 路由

合并路由

修改前

// 个人设置
{
  path: '/settings',
  children: [
    { path: '', component: Settings },
    { path: 'config', component: ConfigManagement }
  ]
}

// 系统管理
{
  path: '/system',
  children: [
    { path: 'database', component: DatabaseManagement },
    { path: 'logs', component: OperationLogs },
    { path: 'sync', component: MultiSourceSync }
  ]
}

修改后

// 统一的设置
{
  path: '/settings',
  name: 'Settings',
  meta: {
    title: '设置',
    icon: 'Setting'
  },
  children: [
    { path: '', name: 'SettingsHome', component: Settings },
    { path: 'config', name: 'ConfigManagement', component: ConfigManagement },
    { path: 'database', name: 'DatabaseManagement', component: DatabaseManagement },
    { path: 'logs', name: 'OperationLogs', component: OperationLogs },
    { path: 'sync', name: 'MultiSourceSync', component: MultiSourceSync },
    { path: 'cache', name: 'CacheManagement', component: CacheManagement }
  ]
}

2. 设置页面菜单结构

使用子菜单分组

<el-menu>
  <!-- 个人设置 -->
  <el-sub-menu index="personal">
    <template #title>
      <el-icon><User /></el-icon>
      <span>个人设置</span>
    </template>
    <el-menu-item index="general">通用设置</el-menu-item>
    <el-menu-item index="appearance">外观设置</el-menu-item>
    <el-menu-item index="analysis">分析偏好</el-menu-item>
    <el-menu-item index="notifications">通知设置</el-menu-item>
    <el-menu-item index="security">安全设置</el-menu-item>
  </el-sub-menu>

  <!-- 系统配置 -->
  <el-sub-menu index="system-config">
    <template #title>
      <el-icon><Tools /></el-icon>
      <span>系统配置</span>
    </template>
    <el-menu-item index="config">配置管理</el-menu-item>
    <el-menu-item index="cache">缓存管理</el-menu-item>
  </el-sub-menu>

  <!-- 系统管理 -->
  <el-sub-menu index="system-admin">
    <template #title>
      <el-icon><Monitor /></el-icon>
      <span>系统管理</span>
    </template>
    <el-menu-item index="database">数据库管理</el-menu-item>
    <el-menu-item index="logs">操作日志</el-menu-item>
    <el-menu-item index="sync">多数据源同步</el-menu-item>
  </el-sub-menu>

  <!-- 关于 -->
  <el-menu-item index="about">
    <el-icon><InfoFilled /></el-icon>
    <span>关于系统</span>
  </el-menu-item>
</el-menu>

3. 添加导航按钮

对于系统配置和系统管理的功能,在设置页面中显示导航按钮:

<!-- 配置管理 -->
<el-card v-show="activeTab === 'config'">
  <el-alert
    title="配置管理"
    description="管理 LLM 配置、数据源配置和市场分类配置"
  />
  <el-button type="primary" @click="goToConfigManagement">
    进入配置管理
  </el-button>
</el-card>

<!-- 数据库管理 -->
<el-card v-show="activeTab === 'database'">
  <el-alert
    title="数据库管理"
    description="管理数据库连接、备份和恢复"
  />
  <el-button type="primary" @click="goToDatabaseManagement">
    进入数据库管理
  </el-button>
</el-card>

4. 导航函数

const goToConfigManagement = () => {
  router.push('/settings/config')
}

const goToCacheManagement = () => {
  router.push('/settings/cache')
}

const goToDatabaseManagement = () => {
  router.push('/settings/database')
}

const goToOperationLogs = () => {
  router.push('/settings/logs')
}

const goToMultiSourceSync = () => {
  router.push('/settings/sync')
}

📊 调整效果

优点

  1. 统一入口

    • 所有设置在一个地方,用户不需要在多个菜单项之间切换
  2. 清晰分组

    • 使用子菜单将功能分为:个人设置、系统配置、系统管理
    • 功能边界清晰,易于理解
  3. 减少菜单项

    • 侧边栏菜单更简洁
    • 减少一个顶级菜单项(系统管理)
  4. 避免路由冲突

    • 删除重复的路由定义
    • 所有设置相关路由统一在 /settings
  5. 更好的扩展性

    • 未来添加新的设置功能,只需在对应分组下添加菜单项
    • 不需要考虑应该放在"个人设置"还是"系统管理"

用户体验提升

方面 调整前 调整后
菜单项数量 2个(个人设置 + 系统管理) 1个(设置)
功能查找 需要在两个菜单间切换 在一个页面内切换
功能分组 不清晰 清晰(3个子菜单)
路由冲突 存在重复定义 无冲突
命名一致性 不一致 统一为"设置"

📝 修改的文件

前端

文件 修改内容
frontend/src/router/index.ts ✅ 删除重复的 /settings 路由定义
✅ 合并 /system 路由到 /settings
✅ 添加缓存管理路由
frontend/src/views/Settings/index.vue ✅ 更新页面标题为"设置"
✅ 重构菜单结构(使用子菜单)
✅ 添加系统配置和系统管理面板
✅ 添加导航函数
✅ 更新图标导入
frontend/src/components/Layout/SidebarMenu.vue ✅ 删除"个人设置"菜单项
✅ 删除"系统管理"子菜单
✅ 添加统一的"设置"菜单项

🧪 测试步骤

测试1:路由验证

  1. 访问 /settings
    • ✅ 显示统一的设置页面
  2. 访问 /settings/config
    • ✅ 显示配置管理页面
  3. 访问 /settings/database
    • ✅ 显示数据库管理页面
  4. 访问 /settings/logs
    • ✅ 显示操作日志页面
  5. 访问 /settings/sync
    • ✅ 显示多数据源同步页面
  6. 访问 /settings/cache
    • ✅ 显示缓存管理页面
  7. 访问 /system
    • ❌ 路由不存在(已删除)

测试2:菜单功能

  1. 打开设置页面
  2. 验证左侧菜单显示3个子菜单:
    • ✅ 个人设置(5个子项)
    • ✅ 系统配置(2个子项)
    • ✅ 系统管理(3个子项)
  3. 点击各个菜单项
    • ✅ 右侧显示对应的设置面板
  4. 点击"进入XXX管理"按钮
    • ✅ 跳转到对应的管理页面

测试3:侧边栏菜单

  1. 查看侧边栏
    • ✅ 只显示一个"设置"菜单项
    • ❌ 不显示"系统管理"菜单项(已删除)
  2. 点击"设置"菜单项
    • ✅ 跳转到设置页面

测试4:功能完整性

验证所有原有功能都可以访问:

  • ✅ 通用设置
  • ✅ 外观设置
  • ✅ 分析偏好
  • ✅ 通知设置
  • ✅ 安全设置
  • ✅ 配置管理
  • ✅ 缓存管理
  • ✅ 数据库管理
  • ✅ 操作日志
  • ✅ 多数据源同步
  • ✅ 关于系统

🎉 完成效果

调整前

侧边栏菜单:
├─ 仪表板
├─ 单股分析
├─ 批量分析
├─ 股票筛选
├─ 分析报告
├─ 个人设置 ❌
│  ├─ 通用设置
│  ├─ 外观设置
│  ├─ 分析偏好
│  ├─ 通知设置
│  ├─ 安全设置
│  └─ 配置管理
└─ 系统管理 ❌
   ├─ 数据库管理
   ├─ 操作日志
   └─ 多数据源同步

调整后

侧边栏菜单:
├─ 仪表板
├─ 单股分析
├─ 批量分析
├─ 股票筛选
├─ 分析报告
└─ 设置 ✅
   ├─ 个人设置
   │  ├─ 通用设置
   │  ├─ 外观设置
   │  ├─ 分析偏好
   │  ├─ 通知设置
   │  └─ 安全设置
   ├─ 系统配置
   │  ├─ 配置管理
   │  └─ 缓存管理
   ├─ 系统管理
   │  ├─ 数据库管理
   │  ├─ 操作日志
   │  └─ 多数据源同步
   └─ 关于系统

🚀 后续优化建议

1. 权限控制

为不同的设置项添加权限控制:

  • 个人设置:所有用户可访问
  • 系统配置:管理员可访问
  • 系统管理:超级管理员可访问

2. 搜索功能

添加设置搜索功能,快速定位需要的设置项。

3. 快捷访问

在仪表板或其他页面添加常用设置的快捷入口。

4. 设置同步

支持设置的导出和导入,方便在不同环境间同步配置。

📚 相关文档