Files
wehub-resource-sync 41b710f9c7
CI / Frontend checks (push) Failing after 0s
CI / Backend tests (push) Failing after 1s
I18n Documentation Sync / sync-docs (push) Failing after 0s
chore: import upstream snapshot with attribution
2026-07-13 12:28:40 +08:00

182 lines
6.2 KiB
Markdown

# AutoClip 系统架构说明
## 🏗️ 系统整体架构
AutoClip 是一个基于 Python + React 的视频自动切片和合集生成系统,采用前后端分离架构。
### **架构组件**
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 前端 (React) │ │ 后端 (FastAPI) │ │ 文件系统 │
│ │ │ │ │ │
│ - 项目管理 │◄──►│ - API 服务 │◄──►│ - 项目文件 │
│ - 视频预览 │ │ - 业务逻辑 │ │ - 输出文件 │
│ - 状态监控 │ │ - 数据处理 │ │ - 元数据 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐
│ 数据库 (SQLite) │
│ │
│ - 项目信息 │
│ - 切片元数据 │
│ - 合集元数据 │
│ - 任务状态 │
└─────────────────┘
```
## 📁 数据存储架构
### **1. 数据库层 (SQLite)**
**核心表结构:**
- `projects`: 项目基本信息
- `clips`: 切片元数据
- `collections`: 合集元数据
- `tasks`: 处理任务状态
- `bilibili_accounts`: B站账号信息
- `upload_records`: 文件上传记录
**数据关系:**
```
projects (1) ──► (N) clips
projects (1) ──► (N) collections
projects (1) ──► (N) tasks
```
### **2. 文件系统层**
**目录结构:**
```
data/
├── projects/ # 项目原始文件
│ └── {project_id}/ # 每个项目一个目录
│ ├── raw/ # 原始视频文件
│ ├── step1_outline/ # 大纲生成结果
│ ├── step2_timeline/ # 时间轴分析
│ ├── step3_scoring/ # 内容评分
│ ├── step4_title/ # 标题生成
│ ├── step5_clustering/ # 内容聚类
│ └── step6_video/ # 视频生成
│ ├── clips_metadata.json # 切片元数据
│ └── collections_metadata.json # 合集元数据
├── output/ # 最终输出文件
│ ├── clips/ # 切片视频文件
│ │ └── {project_id}/ # 按项目组织
│ ├── collections/ # 合集视频文件
│ │ └── {project_id}/ # 按项目组织
│ └── metadata/ # 全局元数据
├── temp/ # 临时文件
├── cache/ # 缓存文件
├── uploads/ # 上传文件
└── backups/ # 数据库备份
```
## 🔄 数据流程
### **1. 项目创建流程**
```
用户上传视频 → 创建项目记录 → 存储原始文件 → 开始处理流程
数据库: projects 表新增记录
文件系统: data/projects/{project_id}/raw/ 存储视频
```
### **2. 视频处理流程**
```
原始视频 → 字幕提取 → 内容分析 → 切片生成 → 合集生成 → 最终输出
↓ ↓ ↓ ↓ ↓ ↓
step1_outline → step2_timeline → step3_scoring → step4_title → step5_clustering → step6_video
```
### **3. 数据同步流程**
```
文件系统处理完成 → 元数据生成 → 同步到数据库 → 前端显示
↓ ↓ ↓ ↓
clips_metadata.json → 解析元数据 → 写入clips表 → API返回
collections_metadata.json → 解析元数据 → 写入collections表 → API返回
```
## 🔧 关键技术实现
### **1. 数据同步机制**
- **自动同步**: 处理完成后自动同步元数据到数据库
- **手动同步**: 提供同步脚本处理历史数据
- **增量同步**: 只同步新增或修改的数据
### **2. 路径管理**
- **统一路径管理器**: `backend/core/unified_paths.py`
- **动态路径检测**: 自动检测最佳输出路径
- **路径验证**: 定期检查路径配置一致性
### **3. 状态管理**
- **项目状态**: pending → processing → completed
- **任务状态**: pending → running → completed/failed
- **实时更新**: WebSocket + 轮询机制
## 🚨 常见问题和解决方案
### **1. 数据不一致问题**
**现象**: 文件系统有数据,但数据库中没有
**原因**: 数据同步失败或未执行
**解决**: 运行 `scripts/sync_complete_metadata.py`
### **2. 路径混乱问题**
**现象**: 文件分散在多个目录
**原因**: 硬编码路径与配置路径冲突
**解决**: 使用统一路径管理器
### **3. 前端显示异常**
**现象**: 后端API正常,前端显示异常
**原因**: 前端缓存或状态管理问题
**解决**: 清除浏览器缓存,重启前端服务
## 📋 维护和监控
### **1. 定期检查**
- **数据一致性**: 检查文件系统与数据库的一致性
- **路径配置**: 验证路径配置的正确性
- **存储空间**: 监控磁盘空间使用情况
### **2. 备份策略**
- **数据库备份**: 定期备份 SQLite 数据库
- **文件备份**: 重要项目文件的备份
- **配置备份**: 系统配置文件的备份
### **3. 日志监控**
- **应用日志**: 监控应用运行状态
- **错误日志**: 及时发现问题
- **性能日志**: 监控系统性能
## 🚀 最佳实践
### **1. 数据管理**
- 定期运行数据同步脚本
- 及时清理临时文件和缓存
- 保持文件系统结构清晰
### **2. 开发流程**
- 新功能开发前先清理测试数据
- 使用统一的路径配置
- 及时更新文档和注释
### **3. 部署维护**
- 生产环境定期备份数据
- 监控系统资源使用情况
- 及时更新依赖和修复安全漏洞