diff --git a/src/chat/utils/utils_image.py b/src/chat/utils/utils_image.py index 601373a1..4ce64eca 100644 --- a/src/chat/utils/utils_image.py +++ b/src/chat/utils/utils_image.py @@ -44,6 +44,11 @@ class ImageManager: except Exception as e: logger.error(f"数据库连接或表创建失败: {e}") + try: + self._cleanup_invalid_descriptions() + except Exception as e: + logger.warning(f"数据库清理失败: {e}") + self._initialized = True def _ensure_image_dir(self): @@ -92,6 +97,26 @@ class ImageManager: except Exception as e: logger.error(f"保存描述到数据库失败 (Peewee): {str(e)}") + @staticmethod + def _cleanup_invalid_descriptions(): + """清理数据库中 description 为空或为 'None' 的记录""" + invalid_values = ["", "None"] + + # 清理 Images 表 + deleted_images = Images.delete().where( + (Images.description >> None) | (Images.description << invalid_values) + ).execute() + + # 清理 ImageDescriptions 表 + deleted_descriptions = ImageDescriptions.delete().where( + (ImageDescriptions.description >> None) | (ImageDescriptions.description << invalid_values) + ).execute() + + if deleted_images or deleted_descriptions: + logger.info(f"[清理完成] 删除 Images: {deleted_images} 条, ImageDescriptions: {deleted_descriptions} 条") + else: + logger.info("[清理完成] 未发现无效描述记录") + async def get_emoji_tag(self, image_base64: str) -> str: from src.chat.emoji_system.emoji_manager import get_emoji_manager