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

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()