37c0364e7e
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>
59 lines
1.8 KiB
Python
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()
|