# 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. 部署维护** - 生产环境定期备份数据 - 监控系统资源使用情况 - 及时更新依赖和修复安全漏洞