# FastAPI Admin 业务逻辑 ## 1. 项目概述 FastAPI Admin 是一个基于 FastAPI 构建的企业级后台管理系统框架,提供完整的 RBAC 权限控制体系、多租户架构支持、任务调度系统和日志监控功能。 ## 2. 技术架构 ### 2.1 核心技术栈 | 技术 | 版本 | 说明 | |------|------|------| | FastAPI | 0.115.2 | 现代 Web 框架 | | SQLAlchemy | 2.0.36 | ORM 框架 | | Alembic | 1.15.1 | 数据库迁移工具 | | Pydantic | 2.x | 数据验证与序列化 | | APScheduler | 3.11.0 | 定时任务调度 | | Redis | 5.2.1 | 缓存与会话存储 | | Uvicorn | 0.30.6 | ASGI 服务器 | | Python | 3.10+ | 运行环境 | ### 2.2 多数据库支持 - MySQL - PostgreSQL - SQLite ### 2.3 架构设计 采用经典的 MVC 分层架构: ```sh 📦 分层架构 (MVC) ├── 🎯 Controller # 控制器层 - 处理HTTP请求 ├── 🏢 Service # 业务层 - 核心业务逻辑 ├── 💾 CRUD # 数据访问层 - 数据库操作 └── 📊 Model # 模型层 - 数据模型定义 ``` ## 3. 核心业务模块 ### 3.1 系统管理模块 (module_system) #### 3.1.1 用户管理 - 支持不同类型用户:系统用户、租户管理员、租户普通用户、客户用户 - 实现用户与角色、岗位的多对多关联 - 提供用户状态管理、密码重置等功能 #### 3.1.2 角色管理 - 完整的 RBAC 权限体系 - 支持菜单权限和数据权限双重控制 - 自定义数据权限范围设置 #### 3.1.3 菜单管理 - 树形菜单结构设计 - 支持目录、菜单、按钮/权限三种类型 - 系统级菜单与租户级菜单隔离 #### 3.1.4 部门管理 - 树形部门结构 - 支持无限层级嵌套 - 部门负责人设置 #### 3.1.5 租户管理 - 多租户 SaaS 架构 - 租户数据完全隔离 - 系统租户管理所有普通租户 #### 3.1.6 客户管理 - 租户内部的二级业务单元 - 客户数据隔离 - 客户用户权限控制 ### 3.2 系统监控模块 (module_monitor) - 操作日志记录与查询 - 系统资源监控 - 性能指标统计 ### 3.3 AI 功能模块 (module_ai) - OpenAI 大模型集成 - AI 辅助功能 ### 3.4 定时任务模块 (module_task) - 基于 APScheduler 的任务调度 - 支持多种任务类型 - 任务执行日志记录 ## 4. 数据模型与关系 ### 4.1 核心数据模型 #### 4.1.1 UserModel (用户模型) - 表名:`sys_user` - 关键字段: - username: 用户名/登录账号 - name: 昵称 - user_type: 用户类型(0:系统用户 1:租户用户 2:客户用户) - dept_id: 所属部门 #### 4.1.2 RoleModel (角色模型) - 表名:`sys_role` - 关键字段: - name: 角色名称 - code: 角色编码 - data_scope: 数据权限范围(1:仅本人 2:本部门 3:本部门及以下 4:全部 5:自定义) #### 4.1.3 MenuModel (菜单模型) - 表名:`sys_menu` - 关键字段: - name: 菜单名称 - type: 菜单类型(1:目录 2:菜单 3:按钮/权限 4:链接) - permission: 权限标识 - route_path: 路由路径 - parent_id: 父菜单ID #### 4.1.4 DeptModel (部门模型) - 表名:`sys_dept` - 关键字段: - name: 部门名称 - code: 部门编码 - leader: 部门负责人 - parent_id: 父级部门ID ### 4.2 关联关系表 #### 4.2.1 UserRolesModel (用户角色关联) - 表名:`sys_user_roles` - 关键字段:user_id, role_id #### 4.2.2 RoleMenusModel (角色菜单关联) - 表名:`sys_role_menus` - 关键字段:role_id, menu_id #### 4.2.3 RoleDeptsModel (角色部门关联) - 表名:`sys_role_depts` - 关键字段:role_id, dept_id #### 4.2.4 UserPositionsModel (用户岗位关联) - 表名:`sys_user_positions` - 关键字段:user_id, position_id ## 5. 数据隔离与权限体系 ### 5.2 数据权限机制 #### 5.2.1 权限范围定义 - 1(仅本人): `WHERE created_id = current_user.id` - 2(本部门): `WHERE user.dept_id = current_user.dept_id` - 3(本部门及以下): - 4(全部数据): - 5(自定义): `WHERE dept_id IN (SELECT dept_id FROM role_depts WHERE role_id IN current_user.role_ids)` #### 5.2.2 权限叠加规则 - 一个用户可以有多个角色 - 取所有角色data_scope的最大值(4>3>2>5>1) - 5(自定义)需要合并所有角色关联的部门 ## 6. 核心业务流程 ### 6.1 用户登录流程 1. 用户提交用户名密码 2. 系统验证用户凭据 3. 加载用户角色和权限信息 4. 生成JWT Token 5. 返回用户信息和权限列表 ### 6.2 权限验证流程 1. 用户请求受保护的API接口 2. 中间件验证JWT Token 3. 加载用户权限列表 4. 验证用户是否拥有该接口的权限 5. 根据数据权限过滤查询结果 ### 6.3 数据权限过滤流程 1. 获取当前用户角色的data_scope 2. 根据data_scope构建SQL过滤条件 3. 将过滤条件应用到数据库查询 4. 返回符合权限要求的数据 ## 7. 特色功能 ### 7.1 智能代码生成 - 基于模板的代码生成工具 - 支持模型、CRUD、API接口等自动生成 - 提高开发效率 ### 7.2 AI 集成 - OpenAI 大模型调用接口 - 支持在管理系统中集成AI功能 ### 7.3 云存储支持 - 阿里云 OSS 对象存储集成 - 支持文件上传、下载、管理 ### 7.4 任务调度系统 - 基于APScheduler的定时任务 - 支持多种调度策略 - 任务执行状态监控 ## 8. 系统安全 ### 8.1 认证与授权 - JWT Token认证 - 细粒度的RBAC权限控制 - 密码加密存储(bcrypt) ### 8.2 数据安全 - 多级别数据隔离 - 操作日志记录 - 敏感数据加密存储 ### 8.3 接口安全 - 请求参数验证(Pydantic) - 接口限流保护 - CORS配置管理 ## 9. 部署与维护 ### 9.1 环境要求 - Python 3.10+ - 数据库: MySQL 8.0+ / PostgreSQL 13+ / SQLite 3.x - Redis 6.0+ ### 9.2 数据库迁移 - 使用Alembic管理数据库版本 - 支持多数据库平台迁移 - 提供初始化脚本 ### 9.3 日志系统 - 操作日志记录 - 系统日志监控 - 异常记录与告警 ## 10. 扩展开发 ### 10.1 模块扩展 - 标准化的模块开发流程 - 支持自定义业务模块 - 插件化架构设计 ### 10.2 数据模型扩展 - 基于SQLAlchemy 2.0的声明式模型 - 支持模型继承与混入 - 兼容多数据库平台