""" 迁移孤立文档到默认知识库 """ 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()