Files
autoclip/backend/init_db.py
Kris Ka 92c2e8ede7 修复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

116 lines
3.2 KiB
Python

#!/usr/bin/env python3
"""
数据库初始化脚本
创建数据库表并插入初始数据
"""
import sys
from pathlib import Path
# 添加backend目录到Python路径
backend_dir = Path(__file__).parent
if str(backend_dir) not in sys.path:
sys.path.insert(0, str(backend_dir))
from ..core.database import init_database, get_database_url
from ..core.config import init_paths, get_data_directory
from ..models.base import Base
from ..models.project import Project, ProjectStatus, ProjectType
from ..models.clip import Clip
from ..models.collection import Collection
from ..models.task import Task, TaskStatus, TaskType
from sqlalchemy.orm import Session
from ..core.database import SessionLocal
def create_initial_data():
"""创建初始测试数据"""
db = SessionLocal()
try:
# 检查是否已有数据
existing_projects = db.query(Project).count()
if existing_projects > 0:
print("数据库中已有数据,跳过初始数据创建")
return
# 创建测试项目
test_project = Project(
name="测试项目",
description="这是一个测试项目,用于验证系统功能",
project_type=ProjectType.KNOWLEDGE,
status=ProjectStatus.PENDING,
processing_config={
"chunk_size": 5000,
"min_score_threshold": 0.7,
"max_clips_per_collection": 5
}
)
db.add(test_project)
db.commit()
db.refresh(test_project)
# 创建测试任务
test_task = Task(
name="测试任务",
description="测试处理任务",
task_type=TaskType.VIDEO_PROCESSING,
project_id=test_project.id,
status=TaskStatus.PENDING,
progress=0,
current_step="等待开始",
total_steps=6
)
db.add(test_task)
# 创建测试切片
test_clip = Clip(
title="测试切片",
content="这是一个测试切片的内容",
start_time=0,
end_time=30,
score=0.8,
project_id=test_project.id
)
db.add(test_clip)
# 创建测试合集
test_collection = Collection(
title="测试合集",
description="这是一个测试合集",
project_id=test_project.id
)
db.add(test_collection)
db.commit()
print("✅ 初始测试数据创建成功")
except Exception as e:
print(f"❌ 创建初始数据失败: {e}")
db.rollback()
finally:
db.close()
def main():
"""主函数"""
print("🚀 开始初始化数据库...")
# 初始化路径配置
init_paths()
# 显示数据库配置
print(f"数据库URL: {get_database_url()}")
print(f"数据目录: {get_data_directory()}")
# 初始化数据库
if init_database():
print("✅ 数据库初始化成功")
# 创建初始数据
create_initial_data()
print("🎉 数据库初始化完成!")
else:
print("❌ 数据库初始化失败")
sys.exit(1)
if __name__ == "__main__":
main()