Files
autoclip/docs/SYSTEM_ARCHITECTURE.md
Kris Ka 8ee2d50044 修复WebSocket进度更新和前端状态自动更新问题
- 修复WebSocketNotificationService.send_processing_progress方法参数不匹配问题
- 修复前端RealTimeStatus组件WebSocket消息处理逻辑
- 修复Celery Worker队列配置,确保任务正确路由到processing队列
- 修复Celery应用导入冲突,统一使用正确的celery_app配置
- 添加实时项目状态更新功能,前端无需手动刷新即可看到处理进度
- 完善系统启动脚本,修复PYTHONPATH未绑定变量错误
- 优化流水线处理逻辑,确保所有6个步骤正常执行
- 添加完整的项目文档和启动指南

测试结果:
- WebSocket进度更新正常工作(16%, 33%, 100%)
- 流水线处理完全正常(6个步骤全部成功)
- 前端状态自动更新正常
- 项目状态正确同步到数据库
2025-09-08 17:21:31 +08:00

182 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. 部署维护**
- 生产环境定期备份数据
- 监控系统资源使用情况
- 及时更新依赖和修复安全漏洞