upload project source code

This commit is contained in:
2026-04-30 18:49:43 +08:00
commit 9b394ba682
2277 changed files with 660945 additions and 0 deletions

View File

@@ -0,0 +1,278 @@
# 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的声明式模型
- 支持模型继承与混入
- 兼容多数据库平台