# AIHutAPI **Repository Path**: sushile/aihut-api ## Basic Information - **Project Name**: AIHutAPI - **Description**: aihut api后端 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-15 - **Last Updated**: 2025-07-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI HUB API 后端服务 基于 FastAPI 构建的 AI 创作平台后端 API 服务,提供用户管理、作品展示、竞赛信息、AI工具搜索等功能。 ## 🚀 功能特性 ### 核心功能 - **用户认证系统**:支持用户注册、登录、JWT令牌认证 - **微信登录**:集成微信扫码登录功能 - **作品管理**:支持图片、视频、音频、文本等多种类型作品的上传和管理 - **竞赛信息**:提供竞赛列表、详情、状态管理等功能 - **AI工具搜索**:智能搜索AI工具,支持分类、热门推荐等 - **文件上传**:支持多种文件类型上传,自动生成缩略图 ### 技术特性 - **高性能**:基于 FastAPI 异步框架 - **数据库**:SQLAlchemy ORM + SQLite/PostgreSQL - **缓存**:Redis 缓存支持 - **安全性**:JWT 认证、密码哈希、CORS 配置 - **文档**:自动生成 API 文档 - **日志**:完整的请求日志记录 ## 📋 系统要求 - Python 3.8+ - Redis (可选,用于缓存) - SQLite (默认) 或 PostgreSQL ## 🛠️ 安装指南 ### 1. 克隆项目 ```bash git clone cd aihut-api ``` ### 2. 创建虚拟环境 ```bash python -m venv venv # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate ``` ### 3. 安装依赖 ```bash pip install -r requirements.txt ``` ### 4. 数据库配置 #### MySQL 配置(推荐) 1. 安装 MySQL 服务器 2. 创建数据库: ```sql -- 执行 setup_mysql.sql 脚本 mysql -u root -p < setup_mysql.sql ``` 3. 修改 `.env` 文件中的数据库连接: ```bash DATABASE_URL=mysql+pymysql://root:root@localhost:3306/aihub_db?charset=utf8mb4 ``` #### 其他数据库选项 - **SQLite**(开发环境):`sqlite:///./aihub.db` - **PostgreSQL**:`postgresql://user:password@localhost:5432/aihub_db` ### 5. 环境配置 主要配置项: - `DATABASE_URL`: 数据库连接字符串 - `SECRET_KEY`: JWT 密钥 - `REDIS_URL`: Redis 连接字符串(可选) - `UPLOAD_DIR`: 文件上传目录 ### 6. 初始化数据库 ```bash # 初始化数据库并创建示例数据 python init_data.py # 重置数据库(删除所有数据) python init_data.py --reset ``` ### 7. 启动服务 ```bash # 开发模式 python main.py # 或使用 uvicorn uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` ## 📚 API 文档 启动服务后,可以通过以下地址访问 API 文档: - **Swagger UI**: http://localhost:8000/docs - **ReDoc**: http://localhost:8000/redoc - **OpenAPI JSON**: http://localhost:8000/openapi.json ## 🔧 API 接口概览 ### 认证相关 - `POST /auth/register` - 用户注册 - `POST /auth/login` - 用户登录 - `POST /auth/logout` - 用户登出 - `GET /auth/me` - 获取当前用户信息 ### 微信登录 - `POST /wechat/qr` - 生成微信登录二维码 - `GET /wechat/status/{qr_id}` - 检查扫码状态 - `POST /wechat/callback` - 微信登录回调 - `POST /wechat/simulate-scan` - 模拟扫码(测试用) ### 用户管理 - `GET /user/profile` - 获取用户信息 - `PUT /user/profile` - 更新用户信息 - `GET /user/works` - 获取用户作品列表 - `PUT /user/works/{work_id}` - 更新作品信息 - `DELETE /user/works/{work_id}` - 删除作品 - `GET /user/stats` - 获取用户统计信息 ### 竞赛信息 - `GET /contests` - 获取竞赛列表 - `GET /contests/{contest_id}` - 获取竞赛详情 - `GET /contests/featured` - 获取精选竞赛 - `GET /contests/popular` - 获取热门竞赛 - `GET /contests/stats` - 获取竞赛统计 ### AI工具搜索 - `GET /search/tools` - 搜索AI工具 - `GET /search/hot-keywords` - 获取热门搜索关键词 - `GET /search/suggestions` - 获取搜索建议 - `GET /search/categories` - 获取工具分类 - `GET /search/popular-tools` - 获取热门工具 - `POST /search/tools/{tool_id}/click` - 记录工具点击 ### 文件上传 - `POST /upload/avatar` - 上传用户头像 - `POST /upload/work-file` - 上传作品文件 - `POST /upload/work` - 上传完整作品 - `GET /upload/limits` - 获取上传限制 ## 🗂️ 项目结构 ``` aihut-api/ ├── main.py # 应用入口 ├── config.py # 配置管理 ├── database.py # 数据库配置 ├── models.py # 数据模型 ├── schemas.py # Pydantic 模式 ├── auth.py # 认证相关 ├── utils.py # 工具函数 ├── init_data.py # 数据初始化脚本 ├── requirements.txt # 依赖列表 ├── .env # 环境配置 ├── routers/ # 路由模块 │ ├── __init__.py │ ├── auth.py # 认证路由 │ ├── wechat.py # 微信登录路由 │ ├── user.py # 用户管理路由 │ ├── contests.py # 竞赛信息路由 │ ├── search.py # 搜索功能路由 │ └── upload.py # 文件上传路由 └── uploads/ # 文件上传目录 ├── avatars/ # 用户头像 ├── works/ # 作品文件 └── thumbnails/ # 缩略图 ``` ## 🧪 测试账号 运行 `python init_data.py` 后,系统会创建以下测试账号: - **管理员账号**:`admin` / `admin123` - **测试账号**:`testuser` / `test123` ## 🔒 安全配置 ### JWT 配置 - 访问令牌有效期:30分钟 - 刷新令牌有效期:7天 - 使用 HS256 算法签名 ### 文件上传安全 - 文件类型白名单验证 - 文件大小限制 - 文件名随机化 - 路径遍历防护 ### CORS 配置 - 开发环境允许所有来源 - 生产环境需配置具体域名 ## 🚀 部署指南 ### Docker 部署 ```bash # 构建镜像 docker build -t aihut-api . # 运行容器 docker run -d -p 8000:8000 --name aihut-api aihut-api ``` ### 生产环境配置 1. 修改 `.env` 文件中的生产环境配置 2. 使用 PostgreSQL 替代 SQLite 3. 配置 Redis 缓存 4. 设置反向代理(Nginx) 5. 配置 HTTPS ## 📝 开发指南 ### 添加新的 API 接口 1. 在 `schemas.py` 中定义请求/响应模式 2. 在相应的路由文件中添加接口 3. 更新数据模型(如需要) 4. 添加必要的测试 ### 数据库迁移 ```bash # 生成迁移文件 alembic revision --autogenerate -m "描述" # 执行迁移 alembic upgrade head ``` ### 代码规范 - 使用 Black 格式化代码 - 使用 isort 排序导入 - 遵循 PEP 8 规范 - 添加类型注解 ## 🤝 贡献指南 1. Fork 项目 2. 创建功能分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request ## 📄 许可证 MIT License ## 📞 联系方式 如有问题或建议,请通过以下方式联系: - 邮箱:support@aihub.com - 项目地址:https://github.com/your-org/aihut-api ## 🔄 更新日志 ### v1.0.0 (2024-01-01) - 初始版本发布 - 实现基础用户认证功能 - 添加作品管理功能 - 集成微信登录 - 实现AI工具搜索 - 添加竞赛信息管理 - 支持文件上传功能