feat:优化表情包注册,迁移数据库v3
This commit is contained in:
@@ -1,14 +1,20 @@
|
||||
from datetime import datetime
|
||||
from typing import Optional, Dict
|
||||
from typing import Dict, Optional
|
||||
|
||||
import json
|
||||
|
||||
from src.common.database.database_model import ActionRecord
|
||||
from src.common.database.database_model import ToolRecord
|
||||
|
||||
from . import BaseDatabaseDataModel
|
||||
|
||||
|
||||
class MaiActionRecord(BaseDatabaseDataModel[ActionRecord]):
|
||||
class MaiActionRecord(BaseDatabaseDataModel[ToolRecord]):
|
||||
"""``action_records`` 的兼容数据模型。
|
||||
|
||||
历史动作记录已统一并入 ``tool_records``,该类仅保留旧命名接口,
|
||||
底层读写对象统一映射为 ``ToolRecord``。
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
action_id: str,
|
||||
@@ -21,45 +27,39 @@ class MaiActionRecord(BaseDatabaseDataModel[ActionRecord]):
|
||||
action_display_prompt: Optional[str] = None,
|
||||
):
|
||||
self.action_id = action_id
|
||||
"""动作ID"""
|
||||
self.timestamp = timestamp
|
||||
"""时间戳"""
|
||||
self.session_id = session_id
|
||||
"""会话ID"""
|
||||
self.action_name = action_name
|
||||
"""动作名称"""
|
||||
self.action_reasoning = action_reasoning
|
||||
"""动作推理过程"""
|
||||
self.action_data = action_data or {}
|
||||
"""动作数据"""
|
||||
self.action_builtin_prompt = action_builtin_prompt
|
||||
"""内置动作提示"""
|
||||
self.action_display_prompt = action_display_prompt
|
||||
"""最终输入到 Prompt 的内容"""
|
||||
|
||||
@classmethod
|
||||
def from_db_instance(cls, db_record: ActionRecord):
|
||||
"""Create a data model object from a database record."""
|
||||
def from_db_instance(cls, db_record: ToolRecord):
|
||||
"""从数据库实例创建兼容数据模型对象。"""
|
||||
|
||||
return cls(
|
||||
action_id=db_record.action_id,
|
||||
action_id=db_record.tool_id,
|
||||
timestamp=db_record.timestamp,
|
||||
session_id=db_record.session_id,
|
||||
action_name=db_record.action_name,
|
||||
action_reasoning=db_record.action_reasoning,
|
||||
action_data=json.loads(db_record.action_data) if db_record.action_data else None,
|
||||
action_builtin_prompt=db_record.action_builtin_prompt,
|
||||
action_display_prompt=db_record.action_display_prompt,
|
||||
action_name=db_record.tool_name,
|
||||
action_reasoning=db_record.tool_reasoning,
|
||||
action_data=json.loads(db_record.tool_data) if db_record.tool_data else None,
|
||||
action_builtin_prompt=db_record.tool_builtin_prompt,
|
||||
action_display_prompt=db_record.tool_display_prompt,
|
||||
)
|
||||
|
||||
def to_db_instance(self):
|
||||
"""Convert the data model object back to a database instance."""
|
||||
return ActionRecord(
|
||||
action_id=self.action_id,
|
||||
"""将兼容数据模型对象转换为 ``ToolRecord``。"""
|
||||
|
||||
return ToolRecord(
|
||||
tool_id=self.action_id,
|
||||
timestamp=self.timestamp,
|
||||
session_id=self.session_id,
|
||||
action_name=self.action_name,
|
||||
action_reasoning=self.action_reasoning,
|
||||
action_data=json.dumps(self.action_data) if self.action_data else None,
|
||||
action_builtin_prompt=self.action_builtin_prompt,
|
||||
action_display_prompt=self.action_display_prompt,
|
||||
tool_name=self.action_name,
|
||||
tool_reasoning=self.action_reasoning,
|
||||
tool_data=json.dumps(self.action_data) if self.action_data else None,
|
||||
tool_builtin_prompt=self.action_builtin_prompt,
|
||||
tool_display_prompt=self.action_display_prompt,
|
||||
)
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from PIL import Image as PILImage
|
||||
from rich.traceback import install
|
||||
from typing import Optional, List
|
||||
|
||||
import asyncio
|
||||
import hashlib
|
||||
import io
|
||||
import traceback
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from typing import List, Optional
|
||||
|
||||
from PIL import Image as PILImage
|
||||
from rich.traceback import install
|
||||
|
||||
from src.common.database.database_model import Images, ImageType
|
||||
from src.common.logger import get_logger
|
||||
|
||||
from . import BaseDatabaseDataModel
|
||||
|
||||
|
||||
@@ -152,7 +153,7 @@ class MaiEmoji(BaseImageDataModel):
|
||||
raise ValueError(f"数据库记录 {db_record.image_hash} 标记为文件不存在,无法创建 MaiEmoji 对象")
|
||||
obj = cls(db_record.full_path)
|
||||
obj.file_hash = db_record.image_hash
|
||||
description = db_record.description or db_record.emotion or ""
|
||||
description = db_record.description or ""
|
||||
obj.description = description
|
||||
normalized_tags = [
|
||||
str(item).strip()
|
||||
@@ -175,7 +176,6 @@ class MaiEmoji(BaseImageDataModel):
|
||||
description=self.description,
|
||||
full_path=str(self.full_path),
|
||||
image_type=ImageType.EMOJI,
|
||||
emotion=None,
|
||||
query_count=self.query_count,
|
||||
last_used_time=self.last_used_time,
|
||||
register_time=self.register_time,
|
||||
|
||||
Reference in New Issue
Block a user