mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-20 20:39:55 +00:00
- 全面更新README,添加项目特性、架构设计与技术栈介绍 - 详细补充项目结构说明及模块设计规范 - 增加快速开始步骤,包括环境配置、数据库初始化和服务启动 - 补充主要API模块路径和认证授权使用示例 - 添加开发指南、数据库迁移与测试方法 - 集成监控、日志级别说明及性能监控内容 - 完善Docker、传统部署及Nginx配置示例 - 添加贡献指南和代码规范说明 - 新增MCP模块概述及智能对话API接口文档 - 清理和移除module_ai中旧的mcp_server相关实现代码 - 在api/v1初始化文件中注册AI模块路由 - 修改resource模块,增强资源路径安全检查和文件类型检测逻辑 - 增强资源搜索和上传服务的健壮性及安全性
396 lines
10 KiB
Markdown
396 lines
10 KiB
Markdown
# FastAPI Vue3 Admin - Backend
|
||
|
||
一个基于 FastAPI 的现代化后端管理系统,为前端 Vue3 管理系统提供完整的 API 服务支持。
|
||
|
||
## 🚀 项目特性
|
||
|
||
- **现代技术栈**: FastAPI + SQLAlchemy 2.0 + Pydantic 2.x
|
||
- **多数据库支持**: MySQL、PostgreSQL、SQLite
|
||
- **异步架构**: 支持高并发异步数据库操作
|
||
- **权限管理**: 完整的 RBAC 权限控制体系
|
||
- **任务调度**: 基于 APScheduler 的定时任务系统
|
||
- **日志监控**: 完整的操作日志和系统监控
|
||
- **代码生成**: 智能化代码生成工具
|
||
- **AI 集成**: 支持 OpenAI 大模型调用
|
||
- **云存储**: 支持阿里云 OSS 对象存储
|
||
|
||
## 🏗️ 系统架构
|
||
|
||
### 技术栈
|
||
|
||
| 技术 | 版本 | 说明 |
|
||
|------|------|------|
|
||
| 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+ | 运行环境 |
|
||
|
||
### 架构设计
|
||
|
||
```txt
|
||
📦 分层架构 (MVC)
|
||
├── 🎯 Controller # 控制器层 - 处理HTTP请求
|
||
├── 🏢 Service # 业务层 - 核心业务逻辑
|
||
├── 💾 CRUD # 数据访问层 - 数据库操作
|
||
└── 📊 Model # 模型层 - 数据模型定义
|
||
```
|
||
|
||
## 📁 项目结构
|
||
|
||
```txt
|
||
fastapi_vue3_admin/backend/
|
||
├── 📁 app/ # 项目核心代码
|
||
│ ├── 💾 alembic/ # 数据库迁移管理
|
||
│ ├── 🌐 api/ # API 接口模块
|
||
│ │ └── v1/ # API v1 版本
|
||
│ │ ├── module_system/ # 系统管理模块
|
||
│ │ ├── module_monitor/ # 系统监控模块
|
||
│ │ ├── module_ai/ # AI 功能模块
|
||
│ │ └── module_*/ # 其他业务模块
|
||
│ ├── 📄 common/ # 公共组件(常量、枚举、响应封装)
|
||
│ ├── ⚙️ config/ # 项目配置文件
|
||
│ ├── 💖 core/ # 核心模块(数据库、中间件、安全)
|
||
│ ├── ⏰ module_task/ # 定时任务模块
|
||
│ ├── 🔌 plugin/ # 插件模块
|
||
│ ├── 📜 scripts/ # 初始化脚本和数据
|
||
│ └── 🛠️ utils/ # 工具类(验证码、文件上传等)
|
||
├── 🌍 env/ # 环境配置文件
|
||
├── 📄 logs/ # 日志输出目录
|
||
├── 📊 sql/ # SQL 初始化脚本
|
||
├── 📷 static/ # 静态资源文件
|
||
├── 🚀 main.py # 项目启动入口
|
||
├── 📄 alembic.ini # Alembic 迁移配置
|
||
├── 📎 requirements.txt # Python 依赖包
|
||
└── 📝 README.md # 项目说明文档
|
||
```
|
||
|
||
### 模块设计
|
||
|
||
每个业务模块采用统一的分层结构:
|
||
|
||
```txt
|
||
module_*/
|
||
├── controller.py # 控制器 - HTTP 请求处理
|
||
├── service.py # 服务层 - 业务逻辑处理
|
||
├── crud.py # 数据层 - 数据库操作
|
||
├── model.py # ORM 模型 - 数据库表定义
|
||
├── schema.py # Pydantic 模型 - 数据验证
|
||
└── param.py # 参数模型 - 请求参数
|
||
```
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- **Python**: 3.10+
|
||
- **数据库**: MySQL 8.0+ / PostgreSQL 13+ / SQLite 3.x
|
||
- **Redis**: 6.0+ (可选)
|
||
|
||
### 安装与运行
|
||
|
||
#### 1. 项目初始化
|
||
|
||
```bash
|
||
# 克隆项目
|
||
git clone <repository-url>
|
||
cd fastapi_vue3_admin/backend
|
||
|
||
# 创建虚拟环境(推荐)
|
||
python3 -m venv venv
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
|
||
# 安装依赖
|
||
pip3 install -r requirements.txt
|
||
```
|
||
|
||
#### 2. 环境配置
|
||
|
||
复制并编辑环境配置文件:
|
||
|
||
```bash
|
||
cp env/dev.env.example env/dev.env
|
||
# 编辑 env/dev.env 文件,配置数据库连接和其他参数
|
||
```
|
||
|
||
主要配置项:
|
||
|
||
- `DATABASE_URL`: 数据库连接地址
|
||
- `SECRET_KEY`: JWT 加密密钥
|
||
- `REDIS_URL`: Redis 连接地址(可选)
|
||
|
||
#### 3. 数据库初始化
|
||
|
||
```bash
|
||
# 生成迁移文件(仅首次或模型变更时)
|
||
python3 main.py revision "初始化迁移" --env=dev
|
||
|
||
# 应用数据库迁移
|
||
python3 main.py upgrade --env=dev
|
||
|
||
# 初始化数据(可选,系统会自动初始化)
|
||
python3 main.py init-data --env=dev
|
||
```
|
||
|
||
#### 4. 启动服务
|
||
|
||
```bash
|
||
# 开发环境启动
|
||
python3 main.py run --env=dev
|
||
|
||
# 生产环境启动
|
||
python3 main.py run --env=prod
|
||
|
||
# 或使用 uvicorn 直接启动
|
||
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
|
||
```
|
||
|
||
服务成功启动后,您可以访问:
|
||
|
||
- **API 文档**: [http://localhost:8000/docs](http://localhost:8000/docs) (Swagger UI)
|
||
- **替代文档**: [http://localhost:8000/redoc](http://localhost:8000/redoc) (ReDoc)
|
||
- **健康检查**: [http://localhost:8000/health](http://localhost:8000/health)
|
||
|
||
## 📚 API 文档
|
||
|
||
### 主要接口模块
|
||
|
||
| 模块 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| 用户管理 | `/api/v1/system/user` | 用户增删改查、角色分配 |
|
||
| 角色管理 | `/api/v1/system/role` | 角色管理、权限分配 |
|
||
| 菜单管理 | `/api/v1/system/menu` | 系统菜单、权限节点 |
|
||
| 部门管理 | `/api/v1/system/dept` | 组织架构管理 |
|
||
| 岗位管理 | `/api/v1/system/position` | 岗位信息管理 |
|
||
| 系统监控 | `/api/v1/monitor/*` | 系统性能、日志监控 |
|
||
| 任务调度 | `/api/v1/monitor/job` | 定时任务管理 |
|
||
| 文件管理 | `/api/v1/common/file` | 文件上传下载 |
|
||
| 代码生成 | `/api/v1/generator/*` | 代码生成工具 |
|
||
|
||
### 认证授权
|
||
|
||
系统使用 JWT Bearer Token 进行身份验证:
|
||
|
||
```bash
|
||
# 登录获取 Token
|
||
curl -X POST "http://localhost:8000/api/v1/auth/login" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"username": "admin", "password": "123456"}'
|
||
|
||
# 使用 Token 访问受保护的资源
|
||
curl -X GET "http://localhost:8000/api/v1/system/user/list" \
|
||
-H "Authorization: Bearer YOUR_TOKEN_HERE"
|
||
```
|
||
|
||
## 🛠️ 开发指南
|
||
|
||
### 项目配置
|
||
|
||
主要配置文件位于 `app/config/setting.py`,支持通过环境变量进行覆盖。
|
||
|
||
### 数据库迁移
|
||
|
||
```bash
|
||
# 查看当前迁移状态
|
||
python3 main.py current --env=dev
|
||
|
||
# 查看迁移历史
|
||
python3 main.py history --env=dev
|
||
|
||
# 回滚到上一个版本
|
||
python3 main.py downgrade -1 --env=dev
|
||
```
|
||
|
||
### 添加新模块
|
||
|
||
1. 在 `app/api/v1/` 下创建新的模块目录
|
||
2. 按照现有模块结构创建文件:
|
||
- `model.py` - SQLAlchemy ORM 模型
|
||
- `schema.py` - Pydantic 数据模型
|
||
- `crud.py` - 数据库操作层
|
||
- `service.py` - 业务逻辑层
|
||
- `controller.py` - API 控制器
|
||
- `param.py` - 请求参数模型
|
||
3. 在主路由中注册新模块
|
||
|
||
### 测试
|
||
|
||
```bash
|
||
# 运行单元测试
|
||
pytest tests/
|
||
|
||
# 运行指定测试文件
|
||
pytest tests/test_user.py -v
|
||
|
||
# 生成测试覆盖率报告
|
||
pytest --cov=app tests/
|
||
```
|
||
|
||
## 📊 监控与日志
|
||
|
||
### 日志级别
|
||
|
||
- **DEBUG**: 详细的调试信息
|
||
- **INFO**: 一般信息(默认级别)
|
||
- **WARNING**: 警告信息
|
||
- **ERROR**: 错误信息
|
||
- **CRITICAL**: 严重错误
|
||
|
||
### 性能监控
|
||
|
||
系统内置了完整的性能监控功能:
|
||
|
||
- API 响应时间监控
|
||
- 数据库连接池监控
|
||
- 内存与 CPU 使用率监控
|
||
- 自定义业务指标监控
|
||
|
||
## 🚀 部署指南
|
||
|
||
### Docker 部署
|
||
|
||
```bash
|
||
# 构建镜像
|
||
docker build -t fastapi-admin .
|
||
|
||
# 运行容器
|
||
docker run -d \
|
||
--name fastapi-admin \
|
||
-p 8000:8000 \
|
||
-e DATABASE_URL="postgresql://user:pass@host:5432/db" \
|
||
fastapi-admin
|
||
```
|
||
|
||
### 传统部署
|
||
|
||
```bash
|
||
# 使用 Gunicorn 作为 WSGI 服务器
|
||
gunicorn main:app \
|
||
--workers 4 \
|
||
--worker-class uvicorn.workers.UvicornWorker \
|
||
--bind 0.0.0.0:8000 \
|
||
--access-logfile - \
|
||
--error-logfile -
|
||
```
|
||
|
||
### Nginx 配置
|
||
|
||
```nginx
|
||
server {
|
||
listen 80;
|
||
server_name your-domain.com;
|
||
|
||
location / {
|
||
proxy_pass http://127.0.0.1:8000;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🤝 贡献指南
|
||
|
||
欢迎提交 Issue 和 Pull Request!
|
||
|
||
### 开发流程
|
||
|
||
1. Fork 项目
|
||
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
|
||
3. 提交更改 (`git commit -m 'Add some amazing feature'`)
|
||
4. 推送到分支 (`git push origin feature/amazing-feature`)
|
||
5. 发起 Pull Request
|
||
|
||
### 代码规范
|
||
|
||
- 遵循 PEP 8 Python 编码规范
|
||
- 使用类型注解 (Type Hints)
|
||
- 编写单元测试
|
||
- 添加必要的注释和文档
|
||
|
||
## 📝 更新日志
|
||
|
||
### v1.0.0 (2024-09-06)
|
||
|
||
- ✨ 初始版本发布
|
||
- ✨ 完整的用户权限管理系统
|
||
- ✨ 支持多数据库类型
|
||
- ✨ 定时任务调度功能
|
||
- ✨ 代码生成工具
|
||
- ✨ AI 集成功能
|
||
|
||
## 📜 相关链接
|
||
|
||
- **FastAPI 官方文档**: [https://fastapi.tiangolo.com/](https://fastapi.tiangolo.com/)
|
||
- **SQLAlchemy 文档**: [https://docs.sqlalchemy.org/](https://docs.sqlalchemy.org/)
|
||
- **Pydantic 文档**: [https://pydantic-docs.helpmanual.io/](https://pydantic-docs.helpmanual.io/)
|
||
|
||
## 💬 支持与反馈
|
||
|
||
如果您在使用过程中遇到问题或有任何建议,请通过以下方式联系我们:
|
||
|
||
- 🐛 **Bug 报告**: 请在 GitHub Issues 中提交
|
||
- 💡 **功能建议**: 请在 GitHub Discussions 中讨论
|
||
- 💬 **技术交流**: 欢迎参与项目讨论
|
||
|
||
---
|
||
|
||
❤️ **感谢您的关注和支持!** 如果这个项目对您有帮助,请给我们一个 ⭐️ Star!
|
||
|
||
|
||
# MCP 模块
|
||
|
||
## 概述
|
||
|
||
MCP (Model Context Protocol) 模块为系统提供与AI模型交互的能力,基于FastAPI-MCP实现。
|
||
|
||
## 功能特性
|
||
|
||
- 智能对话接口
|
||
- 流式和非流式响应支持
|
||
- WebSocket聊天支持
|
||
- MCP服务器状态监控
|
||
|
||
## API接口
|
||
|
||
### 智能对话
|
||
|
||
```
|
||
POST /api/v1/mcp/chat
|
||
```
|
||
|
||
请求参数:
|
||
- `message` (string, required): 聊天消息
|
||
- `stream` (boolean, optional): 是否流式返回,默认为false
|
||
|
||
### 获取服务器状态
|
||
|
||
```
|
||
GET /api/v1/mcp/status
|
||
```
|
||
|
||
### WebSocket聊天
|
||
|
||
```
|
||
GET /api/v1/mcp/ws/chat
|
||
```
|
||
|
||
## MCP集成
|
||
|
||
系统已集成FastAPI-MCP,可通过以下URL访问MCP服务器:
|
||
|
||
```
|
||
http://localhost:8000/mcp
|
||
```
|
||
|
||
## 配置
|
||
|
||
在系统配置中设置以下参数:
|
||
|
||
- `QWEN_API_KEY`: Qwen API密钥
|
||
- `QWEN_BASE_URL`: Qwen API基础URL
|
||
- `QWEN_MODEL`: Qwen模型名称 |