aaf89fc245d6ed51a8ed2cbc43edd09b53eec5cb
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 4s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 7s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m24s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m0s
AI Code Review / AI Code Review (pull_request) Successful in 2m8s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m26s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m53s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m17s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m25s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m38s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m47s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 7s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 5m27s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 13s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 36s
1. Unify progress modal text to '正在提取音频,请稍后...' throughout the entire upload+extraction flow, instead of showing different text for upload vs extraction phases. 2. Clear file input value on modal close to help browser release the file handle sooner, reducing residual cache in browser temp storage.
小虾 SaaS - 自动化视频剪辑平台
自动化视频剪辑 SaaS 平台,支持素材上传、AI 分类、智能剪辑计划生成、自动化视频合成与成片管理。
✨ 核心功能
🎬 视频剪辑主链路
- 素材上传(直传 OSS + 分片上传大文件,最大 2GB)
- AI 智能分类与质量评分
- 4 种剪辑模式:one_take / pip(画中画)/ voice_over(口播+B-roll)/ voice_pip
- 剪辑计划模板 + 智能生成
- 自动化视频合成任务(Celery 异步)
- 成片下载与审核管理
- 资产诊断(素材就绪度评估、缺口分析)
🔐 认证系统
- JWT Bearer Token 认证
- 邮箱注册 + 邮箱验证
- 密码重置(邮箱找回)
- bcrypt 密码加密
📋 项目管理
- 项目 CRUD + 共享
- 任务管理(创建/更新/状态流转/进度追踪)
- 里程碑管理
- 任务问题追踪
📊 素材库管理
- 素材库创建与管理
- 素材上传、审核状态流转(pending_review → approved/rejected)
- 素材诊断(就绪度评分、缺口分析、智能视图)
🚀 快速开始
方式 1: Docker Compose(推荐)
# 1. 克隆仓库
git clone https://git.xiaoxiajianji.com/xiaoxia/xiaoxia-saas.git
cd xiaoxia-saas
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 填写数据库、Redis、OSS 等配置
# 3. 启动所有服务
docker-compose up -d
# 4. 访问 API 文档
open http://localhost:8000/docs
方式 2: 本地开发
# 1. 克隆仓库
git clone https://git.xiaoxiajianji.com/xiaoxia/xiaoxia-saas.git
cd xiaoxia-saas
# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 配置环境变量
cp .env.example .env
# 5. 启动 API 服务
uvicorn apps.api.main:app --reload
# 6. 访问 API 文档
open http://localhost:8000/docs
📚 API 文档
交互式文档
- Swagger UI: https://saas-api.xiaoxiajianji.com/docs
- OpenAPI Schema: https://saas-api.xiaoxiajianji.com/openapi.json
核心 API 路径
认证 (/api/v1/auth)
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /register |
用户注册 |
| POST | /login |
用户登录 |
| GET | /me |
获取当前用户信息 |
| POST | /password/forgot |
忘记密码 |
| POST | /password/reset |
重置密码 |
视频剪辑主链路
上传素材 → POST /api/v1/upload(直传)或 /api/v1/upload/chunk/init(分片)
↓
创建素材 → POST /api/v1/assets
↓
AI 分类 → POST /api/v1/classification-jobs
↓
生成剪辑计划 → POST /api/v1/projects/{id}/edit-plans/auto-generate
↓
创建生成任务 → POST /api/v1/generation/tasks/
↓
查询结果 → GET /api/v1/generation/tasks/{task_id}/results/
↓
获取成片 → GET /api/v1/generated-videos/{video_id}/download-url
项目管理 (/api/v1/project-management)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET/POST | /tasks |
任务列表/创建 |
| PATCH | /tasks/{id} |
更新任务信息 |
| PATCH | /tasks/{id}/status |
更新任务状态 |
| PATCH | /tasks/{id}/progress |
更新任务进度 |
| GET/POST | /milestones |
里程碑列表/创建 |
| GET/POST | /issues |
问题列表/创建 |
| PATCH | /issues/{id}/resolve |
解决问题 |
素材与上传
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/v1/upload |
直传素材(multipart/form-data) |
| POST | /api/v1/upload/direct/prepare |
准备 OSS 直传签名 |
| POST | /api/v1/upload/direct/complete |
确认直传完成 |
| POST | /api/v1/upload/chunk/init |
初始化分片上传 |
| POST | /api/v1/upload/chunk/{id}/{index} |
上传分片 |
| POST | /api/v1/upload/chunk/{id}/complete |
完成分片上传 |
| GET | /api/v1/assets |
素材列表 |
| PATCH | /api/v1/assets/{id}/review |
更新素材审核状态 |
| GET | /api/v1/projects/{id}/asset-diagnosis |
资产诊断 |
成片管理 (/api/v1/generated-videos)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / |
成片列表 |
| GET | /{video_id} |
成片详情 |
| GET | /{video_id}/download-url |
下载链接 |
| PATCH | /{video_id}/review |
审核状态 |
完整 API 列表请查看 API 主线清单
🏗️ 架构
小虾 SaaS
├── packages/ # 核心业务逻辑(Clean Architecture)
│ ├── domain/ # 领域模型(dataclass)
│ ├── application/ # 用例(Use Cases)
│ ├── ports/ # 接口定义(抽象端口)
│ └── adapters/ # 适配器实现(SQLAlchemy、Redis、SMTP 等)
├── apps/ # 应用层
│ ├── api/ # FastAPI 应用 + 路由 + Pydantic schemas
│ ├── web/ # React + Vite 前端
│ └── worker/ # Celery 异步任务(视频处理、分类等)
├── migrations/ # Alembic 数据库迁移
├── tests/ # 测试
│ ├── unit/ # 单元测试
│ ├── integration/ # 集成测试
│ └── e2e/ # 端到端测试
└── docs/ # 文档
设计模式:
- Clean Architecture(依赖方向:外层 → 内层)
- 依赖注入(FastAPI Depends)
- Repository 模式(通过 ports 抽象)
- Domain-Driven Design
🛠️ 技术栈
后端:
- Python 3.12 + FastAPI 0.115.0
- PostgreSQL 16(生产)
- Redis 7(缓存 + Celery Broker)
- Celery(异步任务:视频处理、素材导入、分类)
- 阿里云 OSS(文件存储)
前端:
- React 18 + TypeScript
- Vite(构建工具)
- Ant Design(UI 组件)
部署:
- Docker + Docker Compose
- Gitea + Gitea Actions(CI/CD)
- Nginx(反向代理)
🧪 测试
# 运行所有测试
pytest tests/ -v
# 运行单元测试
pytest tests/unit -v
# 运行集成测试
pytest tests/integration -v
# 生成覆盖率报告
pytest --cov=packages --cov-report=html
📊 当前状态
| 模块 | 状态 |
|---|---|
| 视频剪辑主链路(Phase 7) | ✅ 已完成 |
| 分片上传(最大 2GB) | ✅ 已完成 |
| 4 种剪辑模式 | ✅ 已完成 |
| 项目管理 + 任务追踪 | ✅ 已完成 |
| 资产诊断 | ✅ 已完成 |
| 认证系统(JWT) | ✅ 已完成 |
| CI/CD 流水线 | ✅ 运行中 |
| 前端界面(Vite) | ✅ 已完成 |
📄 更多文档
🤝 贡献
欢迎贡献!请查看 贡献指南
仓库地址: https://git.xiaoxiajianji.com/xiaoxia/xiaoxia-saas
License: MIT
Releases
7
v2.1.0-test.9
Latest
Languages
Python
75.2%
TypeScript
17.6%
CSS
4.1%
Shell
2.9%
Dockerfile
0.1%
Other
0.1%