导航菜单

  • 1.概述
  • 2.功能与能力
  • 3.系统架构
  • 4.部署与配置
  • 5.Docker 部署
  • 6.环境配置
  • 7.外部服务设置
  • 8.AI模型与LLM配置
  • 9.核心系统
  • 10.文档处理流水线
  • 11.RAG引擎与搜索
  • 12.知识库管理系统
  • 13.对话与对话系统
  • 14.翻译与跨语言支持
  • 15.用户界面
  • 16.主应用界面
  • 17.管理仪表盘
  • 18.文档编写界面
  • 19.知识库内容管理
  • 20.国际化与本地化
  • 21.管理功能
  • 22.用户与团队管理
  • 23.文件和存储管理
  • 24.知识库管理
  • 25.系统监控与健康状态
  • 26.API 参考
  • 27.知识库API
  • 28.对话与聊天API
  • 29.文件管理API
  • 30.管理与Admin API
  • 31.开发指南
  • 32.前端开发
  • 33.后端服务架构
  • 34.数据库模式与模型
  • 35.基础设施与文档
  • 36.快速入门指南
  • 1. 目的与范围
  • 2. 系统架构
    • 2.1 整体架构
    • 2.2 组件集成流程
  • 3. 前端实现
    • 3.1 核心技术
    • 3.2 HTTP客户端配置
    • 3.3 文件上传系统
  • 4. 后端服务
    • 4.1 用户管理服务
    • 4.2 团队管理服务
    • 4.3 文件管理服务
  • 5. 前端页面组件
    • 5.1 用户管理页面
    • 5.2 团队管理页面
    • 5.3 配置管理页面
  • 6. 数据层
    • 6.1 数据库表结构
    • 6.2 存储服务
  • 7. 安全与认证
    • 7.1 JWT认证
    • 7.2 权限控制
  • 8. 最佳实践
    • 8.1 前端开发
    • 8.2 后端开发
  • 9. 总结

# 管理仪表盘

1. 目的与范围 #

管理仪表盘是Ragflow-Plus的专用管理界面,为系统提供全面的管理能力。这个基于Vue.js的前端应用配合Flask后端,使管理员能够独立于主用户应用管理用户、团队、文件上传和系统配置。

本文档涵盖管理仪表盘界面及其后端服务。关于主用户界面,请参阅 主应用界面。关于后端管理功能和服务,请参阅 管理与Admin API。

2. 系统架构 #

管理仪表盘作为Ragflow-Plus内的独立应用栈运行,通过现代化的Web界面提供管理能力。

2.1 整体架构 #

系统管理员 (:8888)
    ↓
Vue.js应用 (management/web/)
    ↙              ↓              ↘
Element Plus UI  Axios HTTP客户端  路由管理
    ↓              ↓              ↓
Flask API服务器 (management/server/)
    ↙              ↓              ↘
用户路由        团队路由        文件路由
    ↓              ↓              ↓
用户服务        团队服务        文件服务
    ↓              ↓              ↓
MySQL数据库      MySQL数据库    MinIO存储

2.2 组件集成流程 #

管理仪表盘的组件集成遵循以下流程:

Vue前端组件
    ↓
HTTP拦截器 (axios.ts)
    ↙              ↓              ↘
用户API         团队API         文件上传API
    ↓              ↓              ↓
Flask路由处理器
    ↓              ↓              ↓
服务层函数
    ↓              ↓              ↓
数据库/存储

3. 前端实现 #

管理仪表盘前端使用Vue.js 3、TypeScript和Element Plus UI组件构建,提供现代化的管理界面。

3.1 核心技术 #

管理仪表盘使用以下技术栈:

  • 框架:Vue 3 + TypeScript
  • UI组件库:Element Plus
  • 路由:Vue Router
  • 状态管理:Pinia
  • HTTP客户端:Axios
  • 构建工具:Vite

3.2 HTTP客户端配置 #

Axios配置:

// From management/web/src/http/axios.ts
const axiosInstance = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL,
  timeout: 30000,
});

// 请求拦截器 - 添加JWT token
axiosInstance.interceptors.request.use((config) => {
  const token = getToken();
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

// 响应拦截器 - 错误处理
axiosInstance.interceptors.response.use(
  (response) => response.data,
  (error) => {
    handleError(error);
    return Promise.reject(error);
  }
);

3.3 文件上传系统 #

管理界面包含一个支持大文件和批量操作的高级文件上传系统:

上传配置:

// From management/web/src/common/composables/useFileUpload.ts
interface FileUploadConfig {
  chunkSize: number;        // 分块大小
  maxConcurrent: number;    // 最大并发数
  retryAttempts: number;    // 重试次数
  onProgress: (progress: number) => void;
  onComplete: (fileId: string) => void;
  onError: (error: Error) => void;
}

功能特性:

  • 分块上传:支持大文件分块上传
  • 进度跟踪:实时上传进度显示
  • 队列管理:多文件上传队列管理
  • 错误处理:自动重试和错误恢复
  • 并发控制:限制同时上传的文件数量

4. 后端服务 #

管理仪表盘的后端服务基于Flask构建,提供RESTful API接口。

4.1 用户管理服务 #

用户管理服务提供用户CRUD操作和分页查询:

服务层实现:

# From management/server/services/users/service.py
def get_users_with_pagination(
    page: int = 1,
    page_size: int = 10,
    search: str = None
) -> dict:
    """
    获取用户列表(分页)
    """
    # 查询逻辑
    # 返回分页结果

路由层实现:

# From management/server/routes/users/routes.py
@user_bp.route('/api/v1/users', methods=['GET'])
def get_users():
    """
    获取用户列表
    """
    page = request.args.get('page', 1, type=int)
    page_size = request.args.get('page_size', 10, type=int)
    search = request.args.get('search', '')

    result = user_service.get_users_with_pagination(
        page=page,
        page_size=page_size,
        search=search
    )
    return jsonify(result)

功能特性:

  • 用户列表:分页查询用户列表
  • 用户创建:创建新用户
  • 用户更新:更新用户信息
  • 用户删除:删除用户
  • 搜索功能:支持用户名和邮箱搜索

4.2 团队管理服务 #

团队管理服务提供团队CRUD操作和成员管理:

服务层实现:

# From management/server/services/teams/service.py
def get_teams_with_pagination(
    page: int = 1,
    page_size: int = 10,
    search: str = None
) -> dict:
    """
    获取团队列表(分页)
    """
    # 查询逻辑
    # 返回分页结果

def get_team_members(team_id: str) -> list:
    """
    获取团队成员列表
    """
    # 查询团队成员
    # 返回成员列表

路由层实现:

# From management/server/routes/teams/routes.py
@team_bp.route('/api/v1/teams', methods=['GET'])
def get_teams():
    """
    获取团队列表
    """
    page = request.args.get('page', 1, type=int)
    page_size = request.args.get('page_size', 10, type=int)

    result = team_service.get_teams_with_pagination(
        page=page,
        page_size=page_size
    )
    return jsonify(result)

@team_bp.route('/api/v1/teams/<team_id>/members', methods=['GET'])
def get_team_members_route(team_id: str):
    """
    获取团队成员列表
    """
    members = team_service.get_team_members(team_id)
    return jsonify(members)

功能特性:

  • 团队列表:分页查询团队列表
  • 团队创建:创建新团队
  • 团队更新:更新团队信息
  • 团队删除:删除团队
  • 成员管理:添加、移除团队成员
  • 权限管理:配置团队权限

4.3 文件管理服务 #

文件管理服务提供文件上传、下载和管理功能:

功能特性:

  • 文件上传:支持单文件和多文件上传
  • 文件下载:文件下载功能
  • 文件列表:查询文件列表
  • 文件删除:删除文件
  • 文件搜索:支持文件名搜索

5. 前端页面组件 #

5.1 用户管理页面 #

用户管理页面 (management/web/src/pages/user-management/index.vue) 提供:

  • 用户列表表格:使用Element Plus的ElTable组件
  • 分页组件:使用ElPagination组件
  • 搜索功能:用户名和邮箱搜索
  • 操作按钮:创建、编辑、删除用户

5.2 团队管理页面 #

团队管理页面 (management/web/src/pages/team-management/index.vue) 提供:

  • 团队列表表格:显示团队信息
  • 成员管理:查看和管理团队成员
  • 权限配置:配置团队权限
  • 操作功能:创建、编辑、删除团队

5.3 配置管理页面 #

配置管理页面提供系统配置和模型参数管理:

  • 模型配置:查看和编辑模型参数
  • 系统设置:系统级配置管理
  • 参数验证:配置参数验证

6. 数据层 #

6.1 数据库表结构 #

用户表 (user):

  • id: 用户ID
  • email: 邮箱
  • name: 用户名
  • password_hash: 密码哈希
  • created_at: 创建时间
  • updated_at: 更新时间

团队表 (tenant):

  • id: 团队ID
  • name: 团队名称
  • description: 团队描述
  • created_at: 创建时间
  • updated_at: 更新时间

用户团队关联表 (user_tenant):

  • user_id: 用户ID
  • tenant_id: 团队ID
  • role: 角色

6.2 存储服务 #

MinIO存储:

  • 文件对象存储
  • 支持大文件存储
  • 提供文件访问URL

7. 安全与认证 #

7.1 JWT认证 #

管理仪表盘使用JWT token进行身份认证:

  • Token生成:登录成功后生成JWT token
  • Token存储:前端存储token到localStorage
  • Token验证:后端验证token有效性
  • Token刷新:支持token刷新机制

7.2 权限控制 #

  • 角色管理:支持admin和editor角色
  • 路由守卫:基于角色的路由访问控制
  • API权限:后端API权限验证

8. 最佳实践 #

8.1 前端开发 #

  • 组件复用:提取通用组件到共享目录
  • 类型安全:使用TypeScript确保类型安全
  • 状态管理:使用Pinia管理全局状态
  • 错误处理:统一错误处理和提示

8.2 后端开发 #

  • 服务层分离:业务逻辑放在服务层
  • 路由层简化:路由层只负责请求处理
  • 错误处理:统一的错误响应格式
  • 日志记录:记录关键操作日志

9. 总结 #

管理仪表盘通过Vue.js前端和Flask后端实现了完整的系统管理功能。通过合理的架构设计、组件复用和错误处理,系统提供了稳定、高效、用户友好的管理界面。

通过用户管理、团队管理和文件管理等功能,管理员可以全面控制系统运行,确保系统的安全性和可维护性。

访问验证

请输入访问令牌

Token不正确,请重新输入