Files
你的用户名 237c7802e5
Some checks failed
Deploy / deploy (push) Has been cancelled
Initial commit: Telegram Management System
Full-stack web application for Telegram management
- Frontend: Vue 3 + Vben Admin
- Backend: NestJS
- Features: User management, group broadcast, statistics

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 15:37:50 +08:00

5.9 KiB
Raw Permalink Blame History

菜单显示差异修复指南

🚨 问题总结

通过Playwright自动化测试发现Telegram管理系统存在严重的前后端菜单不一致问题

后端启动状态: 49个菜单项正常显示
Mock模式状态: 0个菜单项完全无菜单
差异程度: 100%不一致

🔍 根本原因分析

1. Mock服务架构问题

  • Mock后端服务(@vben/backend-mock)未启动
  • 环境变量VITE_ENABLE_MOCK=false未正确配置
  • API请求全部失败导致菜单无法加载

2. 数据源不统一

  • 真实后端模式: 使用src/api/core/menu.ts中的静态菜单数据
  • Mock模式: 预期使用backend-mock/utils/mock-data.ts中的MOCK_MENUS
  • 两个数据源结构和内容完全不同

3. 认证流程问题

  • Mock模式下登录流程失败
  • 路由守卫阻止了菜单的正常渲染
  • 用户权限验证失效

立即修复步骤

步骤1: 启动Mock后端服务

# 进入项目根目录
cd /Users/hahaha/telegram-management-system/frontend-vben

# 启动Mock后端端口5320
pnpm -F @vben/backend-mock run dev

# 验证服务启动
curl http://localhost:5320/api/auth/login

步骤2: 修改环境变量

编辑 apps/web-antd/.env.development 文件:

# Mock模式配置
VITE_ENABLE_MOCK=true
VITE_API_URL=http://localhost:5320
VITE_GLOB_API_URL=http://localhost:5320

步骤3: 更新Mock菜单数据

修改 apps/backend-mock/utils/mock-data.ts将完整的49个菜单项添加到MOCK_MENUS中

export const MOCK_MENUS = [
  {
    menus: [
      // 仪表板
      {
        name: 'Dashboard',
        path: '/dashboard',
        meta: { title: '仪表板', icon: 'lucide:home', order: 1 },
        children: [
          {
            name: 'DashboardHome',
            path: '/dashboard/home',
            component: '/dashboard/home/index',
            meta: { title: '首页' },
          },
          {
            name: 'Analytics',
            path: '/dashboard/analytics',
            component: '/dashboard/analytics/index',
            meta: { title: '数据分析' },
          },
          {
            name: 'Workspace',
            path: '/dashboard/workspace',
            component: '/dashboard/workspace/index',
            meta: { title: '工作台' },
          },
        ],
      },
      // 账号管理
      {
        name: 'AccountManage',
        path: '/account-manage',
        meta: { title: '账号管理', icon: 'lucide:smartphone', order: 2 },
        children: [
          {
            name: 'AccountUsageList',
            path: '/account-manage/usage',
            component: '/account-manage/usage/index',
            meta: { title: 'TG账号用途' },
          },
          {
            name: 'AccountList',
            path: '/account-manage/list',
            component: '/account-manage/list/index',
            meta: { title: 'TG账号列表' },
          },
          {
            name: 'TelegramUserList',
            path: '/account-manage/telegram-users',
            component: '/account-manage/telegram-users/index',
            meta: { title: 'Telegram用户列表' },
          },
          {
            name: 'UnifiedRegister',
            path: '/account-manage/unified-register',
            component: '/account-manage/unified-register/index',
            meta: { title: '统一注册系统' },
          },
        ],
      },
      // 继续添加其他37个菜单项...
    ],
    username: 'admin',
  },
];

步骤4: 修复认证流程

确保Mock模式下的登录用户名密码正确

  • 用户名: admin
  • 密码: 123456 (不是 111111)

步骤5: 重启前端服务

# 停止当前前端服务
pkill -f "vite.*development"

# 重新启动前端
pnpm dev:antd

🧪 验证修复效果

自动化验证

重新运行菜单对比测试:

npx playwright test tests/menu-comparison.test.ts --headed

预期结果

  • Mock模式菜单项数量: 49个
  • 与后端模式差异: 0个
  • 所有主要分类正常显示
  • 登录流程正常工作

手动验证步骤

  1. 访问 http://localhost:5174
  2. 使用 admin/123456 登录
  3. 检查左侧菜单是否显示所有49个菜单项
  4. 验证各菜单分类是否完整

🔄 长期解决方案

1. 统一菜单配置管理

创建 shared/menu-config.ts

export const UNIFIED_MENU_CONFIG = [
  // 所有菜单的统一配置
  // 同时供前端静态菜单和Mock后端使用
];

2. 自动化一致性检测

添加CI/CD流程中的菜单一致性检测

# .github/workflows/menu-consistency.yml
- name: Menu Consistency Test
  run: |
    pnpm test:menu-comparison
    pnpm test:mock-backend

3. 智能环境切换

实现自动检测后端可用性并切换模式:

const isBackendAvailable = await healthCheck();
if (!isBackendAvailable) {
  enableMockMode();
}

📊 修复前后对比

状态 修复前 修复后
后端模式菜单 49个 49个
Mock模式菜单 0个 49个
差异数量 49个 0个
一致性 0% 100%
可用性 部分可用 完全可用

⚠️ 注意事项

  1. 端口冲突: 确保5320端口未被占用
  2. 环境变量: 修改后需要重启前端服务
  3. 数据同步: 后续菜单变更需要同时更新两个数据源
  4. 测试覆盖: 每次菜单修改后都要运行对比测试

🎯 成功标准

修复完成后应该满足:

  • Mock后端服务正常启动
  • 环境变量正确配置
  • Mock菜单数据完整49个菜单项
  • 登录流程正常工作
  • 前后端菜单100%一致
  • 自动化测试全部通过

最后更新: 2025-07-31
修复优先级: 🔴 高优先级
预计修复时间: 2-4小时
负责人: 前端开发团队