# ViGent2 后端开发指南 本文档为后端开发人员提供架构概览、接口规范以及开发流程指南。 --- ## 🏗️ 架构概览 后端采用 **FastAPI** 框架,基于 Python 3.10+ 构建,主要负责业务逻辑处理、AI 任务调度以及与各微服务组件的交互。 ### 目录结构 ``` backend/ ├── app/ │ ├── api/ # API 路由定义 (endpoints) │ ├── core/ # 核心配置 (config.py, security.py) │ ├── models/ # Pydantic 数据模型 (schemas) │ ├── services/ # 业务逻辑服务层 │ │ ├── auth_service.py # 用户认证服务 │ │ ├── glm_service.py # GLM-4 大模型服务 │ │ ├── lipsync_service.py # LatentSync 唇形同步 │ │ ├── publish_service.py # 社交媒体发布 │ │ └── voice_clone_service.py# Qwen3-TTS 声音克隆 │ └── tests/ # 单元测试与集成测试 ├── scripts/ # 运维脚本 (watchdog.py, init_db.py) ├── assets/ # 资源库 (fonts, bgm, styles) └── requirements.txt # 依赖清单 ``` --- ## 🔌 API 接口规范 后端服务默认运行在 `8006` 端口。 - **文档地址**: `http://localhost:8006/docs` (Swagger UI) - **认证方式**: Bearer Token (JWT) ### 核心模块 1. **认证 (Auth)** * `POST /api/auth/login`: 用户登录 (手机号) * `POST /api/auth/register`: 用户注册 * `GET /api/auth/me`: 获取当前用户信息 2. **视频生成 (Videos)** * `POST /api/videos/generate`: 提交生成任务 * `GET /api/videos/tasks/{task_id}`: 查询任务状态 * `GET /api/videos/generated`: 获取历史视频列表 * `DELETE /api/videos/generated/{video_id}`: 删除历史视频 > **修正 (16:20)**:任务查询与历史列表接口已更新为 `/api/videos/tasks/{task_id}` 与 `/api/videos/generated`。 3. **素材管理 (Materials)** * `POST /api/materials/upload`: 上传素材 (Direct Upload to Supabase) * `GET /api/materials`: 获取素材列表 4. **社交发布 (Publish)** * `POST /api/publish`: 发布视频到 B站/抖音/小红书 5. **资源库 (Assets)** * `GET /api/assets/subtitle-styles`: 字幕样式列表 * `GET /api/assets/title-styles`: 标题样式列表 * `GET /api/assets/bgm`: 背景音乐列表 --- ## 🎛️ 视频生成扩展参数 `POST /api/videos/generate` 支持以下可选字段: - `subtitle_style_id`: 字幕样式 ID - `title_style_id`: 标题样式 ID - `subtitle_font_size`: 字幕字号(覆盖样式默认值) - `title_font_size`: 标题字号(覆盖样式默认值) - `bgm_id`: 背景音乐 ID - `bgm_volume`: 背景音乐音量(0-1,默认 0.2) ## 📦 资源库与静态资源 - 本地资源目录:`backend/assets/{fonts,bgm,styles}` - 静态访问路径:`/assets`(用于前端样式预览与背景音乐试听) ## 🎵 背景音乐混音策略 - 混音发生在 **唇形对齐之后**,避免影响字幕/口型时间轴。 - 使用 FFmpeg `amix`,禁用归一化以保持配音音量稳定。 ## 🛠️ 开发环境搭建 ### 1. 虚拟环境 ```bash cd backend python -m venv venv source venv/bin/activate # Linux/macOS # .\venv\Scripts\activate # Windows ``` ### 2. 依赖安装 ```bash pip install -r requirements.txt ``` ### 3. 环境变量配置 复制 `.env.example` 到 `.env` 并配置必要的 Key: ```ini # Supabase SUPABASE_URL=http://localhost:8008 SUPABASE_KEY=your_service_role_key # GLM API (用于 AI 标题生成) GLM_API_KEY=your_glm_api_key # LatentSync 配置 LATENTSYNC_GPU_ID=1 ``` ### 4. 启动服务 **开发模式 (热重载)**: ```bash uvicorn app.main:app --host 0.0.0.0 --port 8006 --reload ``` --- ## 🧩 服务集成指南 ### 集成新模型 如果需要集成新的 AI 模型 (例如新的 TTS 引擎): 1. 在 `app/services/` 下创建新的 Service 类 (如 `NewTTSService`)。 2. 实现 `generate` 方法,可以使用 subprocess 调用,也可以是 HTTP 请求。 3. **重要**: 如果模型占用 GPU,请务必使用 `asyncio.Lock` 进行并发控制,防止 OOM。 4. 在 `app/api/` 中添加对应的路由调用。 ### 添加定时任务 目前推荐使用 **APScheduler** 或 **Crontab** 来管理定时任务。 社交媒体的定时发布功能目前依赖 `playwright` 的延迟执行,未来计划迁移到 Celery 队列。 --- ## 🛡️ 错误处理 全项目统一使用 `Loguru` 进行日志记录。 ```python from loguru import logger try: # 业务逻辑 except Exception as e: logger.error(f"操作失败: {str(e)}") raise HTTPException(status_code=500, detail="服务器内部错误") ``` --- ## 🧪 测试 运行测试套件: ```bash pytest ```