# fastapi-platform **Repository Path**: wangxinjiei/fastapi-platform ## Basic Information - **Project Name**: fastapi-platform - **Description**: 我的工具平台 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-12 - **Last Updated**: 2026-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚀 多功能工具平台 (Multi-Tool Platform) > 基于 FastAPI + React 的现代化工具集成平台,支持爬虫、定时任务、AI模型等多种功能 [![FastAPI](https://img.shields.io/badge/FastAPI-0.104.0-009688.svg?style=flat&logo=FastAPI&logoColor=white)](https://fastapi.tiangolo.com) [![React](https://img.shields.io/badge/React-18.2.0-61DAFB.svg?style=flat&logo=React&logoColor=white)](https://reactjs.org) [![Python](https://img.shields.io/badge/Python-3.11+-3776AB.svg?style=flat&logo=Python&logoColor=white)](https://www.python.org) [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-3178C6.svg?style=flat&logo=TypeScript&logoColor=white)](https://www.typescriptlang.org) [![Docker](https://img.shields.io/badge/Docker-24.0+-2496ED.svg?style=flat&logo=Docker&logoColor=white)](https://www.docker.com) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ## 📋 目录 - [功能特性](#-功能特性) - [技术栈](#-技术栈) - [系统架构](#-系统架构) - [快速开始](#-快速开始) - [项目结构](#-项目结构) - [API文档](#-api文档) - [部署指南](#-部署指南) - [开发指南](#-开发指南) - [常见问题](#-常见问题) - [贡献指南](#-贡献指南) - [许可证](#-许可证) ## ✨ 功能特性 ### 核心功能 - 🕷️ **智能爬虫系统** - 支持静态/动态网页爬取,分布式任务调度 - ⏰ **定时任务管理** - 可视化任务配置,支持Cron表达式 - 🤖 **AI模型集成** - 集成主流LLM模型,支持自定义模型接入 - 📊 **数据可视化** - 实时数据监控,丰富的图表展示 - 👥 **用户权限管理** - 基于RBAC的权限控制系统 - 📁 **文件管理** - 支持大文件上传、断点续传 - 🔍 **全文检索** - 基于Elasticsearch的搜索功能 - 📨 **消息通知** - 邮件、微信、钉钉等多渠道通知 ### 技术特点 - ⚡ **高性能** - 异步架构,支持高并发 - 🔐 **安全可靠** - JWT认证,数据加密传输 - 📈 **可扩展** - 微服务架构,插件化设计 - 🛠️ **易维护** - 完善的日志系统,错误追踪 - 🌍 **国际化** - 支持多语言切换 - 📱 **响应式** - 适配PC/移动端 ## 🛠 技术栈 ### 后端技术 | 技术 | 版本 | 说明 | |------|------|------| | Python | 3.11+ | 编程语言 | | FastAPI | 0.104.0 | Web框架 | | SQLAlchemy | 2.0+ | ORM框架 | | PostgreSQL | 15+ | 主数据库 | | Redis | 7.0+ | 缓存/消息队列 | | Celery | 5.3+ | 异步任务队列 | | Scrapy | 2.11+ | 爬虫框架 | | LangChain | 0.1.0 | LLM框架 | ### 前端技术 | 技术 | 版本 | 说明 | |------|------|------| | React | 18.2.0 | 前端框架 | | TypeScript | 5.0+ | 类型系统 | | Ant Design | 5.0+ | UI组件库 | | Vite | 5.0+ | 构建工具 | | Zustand | 4.4+ | 状态管理 | | Axios | 1.6+ | HTTP客户端 | | ECharts | 5.4+ | 图表库 | ### 运维技术 - Docker & Docker Compose - 容器化 - Nginx - 反向代理 - Prometheus + Grafana - 监控 - GitHub Actions - CI/CD ## 🏗 系统架构 ```mermaid graph TB subgraph "前端层" A[React SPA] --> B[Nginx] end subgraph "网关层" B --> C[API Gateway] end subgraph "应用层" C --> D[FastAPI Server] D --> E[Celery Workers] end subgraph "数据层" D --> F[(PostgreSQL)] D --> G[(Redis)] E --> F E --> G E --> H[(MongoDB)] end subgraph "外部服务" E --> I[AI Models API] E --> J[第三方服务] end ``` ## 🚀 快速开始 ### 环境要求 - Python 3.11+ - Node.js 18+ - Docker 24.0+ - Docker Compose 2.0+ ### 1. 克隆项目 ```bash git clone https://github.com/yourusername/tool-platform.git cd tool-platform ``` ### 2. 环境配置 ```bash # 复制环境变量配置文件 cp .env.example .env # 编辑配置文件,设置必要的环境变量 vim .env ``` ### 3. 使用Docker Compose启动(推荐) ```bash # 构建并启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f ``` ### 4. 手动安装启动 #### 后端启动 ```bash # 进入后端目录 cd backend # 创建虚拟环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 初始化数据库 alembic upgrade head # 启动服务 uvicorn app.main:app --reload --host 0.0.0.0 --port 8989 ``` #### 前端启动 ```bash # 进入前端目录 cd frontend # 安装依赖 npm install # 启动开发服务器 npm run dev ``` #### Celery启动 ```bash # 启动Celery Worker celery -A app.tasks.celery_app worker --loglevel=info # 启动Celery Beat(定时任务) celery -A app.tasks.celery_app beat --loglevel=info # 启动Flower(任务监控) celery -A app.tasks.celery_app flower ``` ### 5. 访问应用 - 前端界面: http://localhost:3000 - API文档: http://localhost:8989/docs - Flower监控: http://localhost:5555 ### 6. 默认账号 ``` 用户名: admin@example.com 密码: admin123 ``` ## 📁 项目结构 ``` tool-platform/ ├── backend/ # 后端目录 │ ├── app/ │ │ ├── api/ # API接口 │ │ │ ├── v1/ │ │ │ │ ├── endpoints/ # 各模块接口 │ │ │ │ │ ├── auth.py │ │ │ │ │ ├── users.py │ │ │ │ │ ├── crawler.py │ │ │ │ │ ├── tasks.py │ │ │ │ │ └── ai_models.py │ │ │ │ └── deps.py # 依赖注入 │ │ │ └── v2/ # API v2版本 │ │ ├── core/ # 核心配置 │ │ │ ├── config.py # 配置管理 │ │ │ ├── security.py # 安全相关 │ │ │ └── database.py # 数据库配置 │ │ ├── models/ # 数据模型 │ │ ├── schemas/ # Pydantic模型 │ │ ├── services/ # 业务逻辑 │ │ ├── tasks/ # Celery任务 │ │ │ ├── celery_app.py │ │ │ ├── crawler_tasks.py │ │ │ └── scheduled_tasks.py │ │ ├── tools/ # 工具模块 │ │ │ ├── crawler/ # 爬虫工具 │ │ │ ├── ai_models/ # AI模型 │ │ │ └── utils/ # 工具函数 │ │ └── main.py # 应用入口 │ ├── tests/ # 测试文件 │ ├── migrations/ # 数据库迁移 │ ├── scripts/ # 脚本文件 │ ├── requirements.txt # Python依赖 │ ├── requirements-dev.txt # 开发依赖 │ └── Dockerfile ├── frontend/ # 前端目录 │ ├── public/ # 静态资源 │ ├── src/ │ │ ├── components/ # 组件 │ │ │ ├── common/ # 通用组件 │ │ │ └── business/ # 业务组件 │ │ ├── pages/ # 页面 │ │ ├── services/ # API服务 │ │ ├── stores/ # 状态管理 │ │ ├── hooks/ # 自定义Hooks │ │ ├── utils/ # 工具函数 │ │ ├── types/ # TypeScript类型 │ │ ├── styles/ # 样式文件 │ │ ├── App.tsx │ │ └── main.tsx │ ├── package.json │ ├── tsconfig.json │ ├── vite.config.ts │ └── Dockerfile ├── docker/ # Docker相关 │ ├── nginx/ │ └── postgres/ ├── docs/ # 文档 │ ├── api/ # API文档 │ ├── deployment/ # 部署文档 │ └── development/ # 开发文档 ├── scripts/ # 脚本 │ ├── deploy.sh │ └── backup.sh ├── .github/ # GitHub配置 │ └── workflows/ # CI/CD ├── docker-compose.yml # Docker编排 ├── docker-compose.dev.yml # 开发环境编排 ├── docker-compose.prod.yml # 生产环境编排 ├── .env.example # 环境变量示例 ├── .gitignore ├── LICENSE └── README.md ``` ## 📖 API文档 ### 自动生成的文档 - Swagger UI: http://localhost:8989/docs - ReDoc: http://localhost:8989/redoc ### 主要API端点 | 方法 | 端点 | 描述 | |------|------|------| | POST | `/api/v1/auth/login` | 用户登录 | | POST | `/api/v1/auth/register` | 用户注册 | | GET | `/api/v1/users/me` | 获取当前用户信息 | | POST | `/api/v1/crawler/jobs` | 创建爬虫任务 | | GET | `/api/v1/crawler/jobs/{job_id}` | 获取任务状态 | | POST | `/api/v1/tasks/schedule` | 创建定时任务 | | POST | `/api/v1/ai/chat` | AI对话接口 | ### 认证方式 ```bash # 获取Token curl -X POST "http://localhost:8989/api/v1/auth/login" \ -H "Content-Type: application/json" \ -d '{"username":"admin@example.com","password":"admin123"}' # 使用Token访问API curl -X GET "http://localhost:8989/api/v1/users/me" \ -H "Authorization: Bearer {your_token}" ``` ## 🚢 部署指南 ### 生产环境部署 #### 1. 服务器要求 - CPU: 4核+ - 内存: 8GB+ - 硬盘: 100GB+ - 系统: Ubuntu 22.04 LTS / CentOS 8+ #### 2. 使用Docker Compose部署 ```bash # 使用生产环境配置 docker-compose -f docker-compose.prod.yml up -d # 配置Nginx SSL cp nginx.conf /etc/nginx/sites-available/tool-platform ln -s /etc/nginx/sites-available/tool-platform /etc/nginx/sites-enabled/ nginx -s reload ``` #### 3. 使用Kubernetes部署 ```bash # 应用配置 kubectl apply -f k8s/namespace.yaml kubectl apply -f k8s/configmap.yaml kubectl apply -f k8s/secret.yaml # 部署服务 kubectl apply -f k8s/deployment.yaml kubectl apply -f k8s/service.yaml kubectl apply -f k8s/ingress.yaml ``` ### 环境变量配置 ```env # 数据库配置 DATABASE_URL=postgresql://user:pass@localhost/dbname REDIS_URL=redis://localhost:6379/0 # 安全配置 SECRET_KEY=your-secret-key-here JWT_SECRET_KEY=your-jwt-secret JWT_ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=30 # Celery配置 CELERY_BROKER_URL=redis://localhost:6379/1 CELERY_RESULT_BACKEND=redis://localhost:6379/2 # AI模型配置 OPENAI_API_KEY=your-openai-key ANTHROPIC_API_KEY=your-anthropic-key # 邮件配置 SMTP_HOST=smtp.gmail.com SMTP_PORT=587 SMTP_USER=your-email@gmail.com SMTP_PASSWORD=your-password # 对象存储 S3_ACCESS_KEY=your-access-key S3_SECRET_KEY=your-secret-key S3_BUCKET=your-bucket S3_ENDPOINT=https://s3.amazonaws.com ``` ## 💻 开发指南 ### 代码规范 - Python: 遵循PEP 8规范,使用Black格式化 - TypeScript: 使用ESLint + Prettier - Git: 遵循Conventional Commits规范 ### 提交信息格式 ``` ():