167 lines
4.0 KiB
Markdown
167 lines
4.0 KiB
Markdown
# 美家卡智影 API
|
||
|
||
美家卡智影后端服务 - 基于 FastAPI + PostgreSQL + Redis 的 AI 视频创作 API。
|
||
|
||
## 技术栈
|
||
|
||
| 组件 | 技术 | 版本 |
|
||
|------|------|------|
|
||
| Web 框架 | FastAPI | ^0.110.0 |
|
||
| 数据库 | PostgreSQL | 15+ |
|
||
| ORM | SQLAlchemy | 2.0+ (异步) |
|
||
| 缓存/状态 | Redis | 7.x |
|
||
| 异步调度 | Async Engine (Slot Scheduler) | Python asyncio |
|
||
| 部署 | Docker + Docker Compose | - |
|
||
|
||
## 快速开始
|
||
|
||
### 1. 环境准备
|
||
|
||
确保已安装:
|
||
- Python 3.11+
|
||
- Docker & Docker Compose(推荐)
|
||
- 或本地 PostgreSQL + Redis
|
||
|
||
### 2. 使用 Docker Compose 启动(推荐)
|
||
|
||
```bash
|
||
# 1. 克隆项目后进入目录
|
||
cd python-api
|
||
|
||
# 2. 复制环境变量配置
|
||
cp .env.example .env
|
||
|
||
# 3. 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 4. 查看日志
|
||
docker-compose logs -f api
|
||
|
||
# 5. 服务地址
|
||
# API: http://localhost:8080
|
||
# 文档: http://localhost:8080/docs
|
||
```
|
||
|
||
### 3. 本地开发
|
||
|
||
```bash
|
||
# 1. 创建虚拟环境
|
||
python -m venv venv
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
|
||
# 2. 安装依赖
|
||
pip install -e ".[dev]"
|
||
|
||
# 3. 配置环境变量
|
||
cp .env.example .env
|
||
# 编辑 .env,修改数据库连接等配置
|
||
|
||
# 4. 启动 PostgreSQL 和 Redis(Docker)
|
||
docker-compose up -d db redis
|
||
|
||
# 5. 启动开发服务器
|
||
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
||
|
||
# 7. 启动 Async Engine Scheduler(另开终端)
|
||
python -m app.scheduler.main
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
python-api/
|
||
├── app/ # 主应用代码
|
||
│ ├── api/v1/ # API 路由
|
||
│ ├── core/ # 核心工具(安全、异常)
|
||
│ ├── db/ # 数据库配置
|
||
│ ├── models/ # SQLAlchemy 模型
|
||
│ ├── schemas/ # Pydantic Schema
|
||
│ ├── services/ # 业务逻辑
|
||
│ ├── scheduler/ # Async Engine 异步任务调度
|
||
│ ├── ai/ # AI 模型相关
|
||
│ ├── utils/ # 工具函数
|
||
│ ├── config.py # 配置管理
|
||
│ └── main.py # FastAPI 入口
|
||
├── docker-compose.yml # Docker 编排
|
||
├── Dockerfile # Docker 镜像
|
||
├── pyproject.toml # 项目依赖
|
||
└── README.md # 本文档
|
||
```
|
||
|
||
## 数据模型
|
||
|
||
### 核心实体
|
||
|
||
- **User** - 用户/设备(设备 ID + JWT 认证)
|
||
- **Project** - 视频创作项目
|
||
- **ScriptSegment** - 脚本分镜
|
||
- **MediaAsset** - 媒体元数据(音频/视频/封面)
|
||
- **TaskQueue** - 异步任务队列
|
||
|
||
## API 路由
|
||
|
||
### 已实现
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| POST | `/api/v1/auth/login` | 设备登录/注册 |
|
||
| GET | `/api/v1/auth/me` | 获取当前用户 |
|
||
| GET | `/api/v1/system/health` | 健康检查 |
|
||
| GET | `/api/v1/system/version` | 版本信息 |
|
||
|
||
### 待实现(M2-M5)
|
||
|
||
- `/api/v1/script/*` - 脚本生成(SSE 流式)
|
||
- `/api/v1/voice/*` - 语音合成(TTS)
|
||
- `/api/v1/video/*` - 数字人视频(异步任务)
|
||
- `/api/v1/project/*` - 项目云同步
|
||
- `/api/v1/parser/*` - 视频链接解析(预留)
|
||
|
||
## 环境变量
|
||
|
||
见 `.env.example`,主要配置项:
|
||
|
||
| 变量 | 说明 | 默认值 |
|
||
|------|------|--------|
|
||
| `DATABASE_URL` | PostgreSQL 连接字符串 | `postgresql+asyncpg://postgres:postgres@localhost:5432/meijiaka` |
|
||
| `REDIS_URL` | Redis 连接字符串 | `redis://localhost:6379/0` |
|
||
| `SECRET_KEY` | JWT 签名密钥 | 必须修改 |
|
||
| `OPENAI_API_KEY` | OpenAI API Key | - |
|
||
| `CORS_ORIGINS` | 允许的跨域来源 | `http://localhost:1420` |
|
||
|
||
## 开发规范
|
||
|
||
### 代码风格
|
||
|
||
```bash
|
||
# 格式化
|
||
black app/
|
||
|
||
# 检查
|
||
ruff check app/
|
||
mypy app/
|
||
|
||
# 测试
|
||
pytest
|
||
```
|
||
|
||
### 提交规范
|
||
|
||
- `feat:` 新功能
|
||
- `fix:` 修复
|
||
- `docs:` 文档
|
||
- `refactor:` 重构
|
||
- `test:` 测试
|
||
|
||
## 与前端集成
|
||
|
||
Tauri 前端默认连接 `http://127.0.0.1:8080/api/v1`。
|
||
|
||
云端部署后:
|
||
1. 修改前端 `src/api/client.ts` 中的 `PYTHON_API_BASE_URL`
|
||
2. 更新 `tauri.conf.json` CSP 配置,添加云端域名到 `connect-src`
|
||
|
||
## 许可
|
||
|
||
MIT
|