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

6.2 KiB
Raw Permalink Blame History

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. 部署维护

  • 生产环境定期备份数据
  • 监控系统资源使用情况
  • 及时更新依赖和修复安全漏洞