Files
course-agent-od/backend/src/migrations/migrate_orphaned_documents.py
T
pengxiao 37c0364e7e refactor: replace print() with structured logging across backend
Replace all print()/stderr logging with Python logging module using
logger = logging.getLogger(__name__) pattern for consistent log levels
and formatting. Extract score conversion to shared score_utils module.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 15:52:44 +08:00

59 lines
1.8 KiB
Python

"""
迁移孤立文档到默认知识库
"""
import logging
from sqlalchemy.orm import Session
from ..core.database import get_db
from ..models.user import User
from ..models.knowledge_base import KnowledgeBase
from ..models.document import Document
logger = logging.getLogger(__name__)
def migrate_orphaned_documents():
"""将没有知识库的文档迁移到用户的默认知识库"""
db = next(get_db())
try:
# 获取所有用户
users = db.query(User).all()
for user in users:
# 检查用户是否有孤立文档
orphaned_docs = db.query(Document).filter(
Document.user_id == user.id,
Document.knowledge_base_id.is_(None)
).all()
if orphaned_docs:
# 创建默认知识库
default_kb = KnowledgeBase(
name="默认知识库",
description="系统自动创建的默认知识库,包含之前上传的文档",
user_id=user.id,
is_system=True
)
db.add(default_kb)
db.commit()
db.refresh(default_kb)
# 将孤立文档迁移到默认知识库
for doc in orphaned_docs:
doc.knowledge_base_id = default_kb.id
db.commit()
logger.info(f"用户 {user.username}{len(orphaned_docs)} 个文档已迁移到默认知识库")
logger.info("孤立文档迁移完成")
except Exception as e:
logger.error(f"迁移失败: {str(e)}")
db.rollback()
finally:
db.close()
if __name__ == "__main__":
migrate_orphaned_documents()