数据库模型字段添加;数据模型添加;utils_message传参控制
This commit is contained in:
@@ -15,7 +15,7 @@ class BaseDataModel:
|
|||||||
return copy.deepcopy(self)
|
return copy.deepcopy(self)
|
||||||
|
|
||||||
|
|
||||||
class BaseDatabaseDataModel(ABC, Generic[T]):
|
class BaseDatabaseDataModel(ABC, Generic[T], BaseDataModel):
|
||||||
@classmethod
|
@classmethod
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def from_db_instance(cls, db_record: T) -> Self:
|
def from_db_instance(cls, db_record: T) -> Self:
|
||||||
|
|||||||
64
src/common/data_models/jargon_data_model.py
Normal file
64
src/common/data_models/jargon_data_model.py
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from src.common.database.database_model import Jargon
|
||||||
|
|
||||||
|
from . import BaseDatabaseDataModel
|
||||||
|
|
||||||
|
|
||||||
|
class MaiJargon(BaseDatabaseDataModel[Jargon]):
|
||||||
|
"""Jargon 数据模型,与数据库模型 Jargon 互转。"""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
content: str,
|
||||||
|
meaning: str,
|
||||||
|
raw_content: Optional[str] = None,
|
||||||
|
session_id: Optional[str] = None,
|
||||||
|
count: int = 0,
|
||||||
|
is_jargon: Optional[bool] = True,
|
||||||
|
is_global: bool = False,
|
||||||
|
is_complete: bool = False,
|
||||||
|
inference_with_context: Optional[str] = None,
|
||||||
|
inference_with_content_only: Optional[str] = None,
|
||||||
|
):
|
||||||
|
self.content = content
|
||||||
|
self.raw_content = raw_content
|
||||||
|
self.meaning = meaning
|
||||||
|
self.session_id = session_id
|
||||||
|
self.count = count
|
||||||
|
self.is_jargon = is_jargon
|
||||||
|
self.is_global = is_global
|
||||||
|
self.is_complete = is_complete
|
||||||
|
self.inference_with_context = inference_with_context
|
||||||
|
self.inference_with_content_only = inference_with_content_only
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_db_instance(cls, db_record: Jargon) -> "MaiJargon":
|
||||||
|
"""从数据库模型创建 MaiJargon 实例。"""
|
||||||
|
return cls(
|
||||||
|
content=db_record.content,
|
||||||
|
meaning=db_record.meaning,
|
||||||
|
raw_content=db_record.raw_content,
|
||||||
|
session_id=db_record.session_id,
|
||||||
|
count=db_record.count,
|
||||||
|
is_jargon=db_record.is_jargon,
|
||||||
|
is_global=db_record.is_global,
|
||||||
|
is_complete=db_record.is_complete,
|
||||||
|
inference_with_context=db_record.inference_with_context,
|
||||||
|
inference_with_content_only=db_record.inference_with_content_only,
|
||||||
|
)
|
||||||
|
|
||||||
|
def to_db_instance(self) -> Jargon:
|
||||||
|
"""将 MaiJargon 转换为数据库模型 Jargon。"""
|
||||||
|
return Jargon(
|
||||||
|
content=self.content,
|
||||||
|
raw_content=self.raw_content,
|
||||||
|
meaning=self.meaning,
|
||||||
|
session_id=self.session_id,
|
||||||
|
count=self.count,
|
||||||
|
is_jargon=self.is_jargon,
|
||||||
|
is_global=self.is_global,
|
||||||
|
is_complete=self.is_complete,
|
||||||
|
inference_with_context=self.inference_with_context,
|
||||||
|
inference_with_content_only=self.inference_with_content_only,
|
||||||
|
)
|
||||||
@@ -208,6 +208,7 @@ class Jargon(SQLModel, table=True):
|
|||||||
|
|
||||||
count: int = Field(default=0) # 使用次数
|
count: int = Field(default=0) # 使用次数
|
||||||
is_jargon: Optional[bool] = Field(default=True) # 是否为黑话,False表示为白话
|
is_jargon: Optional[bool] = Field(default=True) # 是否为黑话,False表示为白话
|
||||||
|
is_global: bool = Field(default=False) # 是否为全局黑话
|
||||||
is_complete: bool = Field(default=False) # 是否为已经完成全部推断(count > 100后不再推断)
|
is_complete: bool = Field(default=False) # 是否为已经完成全部推断(count > 100后不再推断)
|
||||||
inference_with_context: Optional[str] = Field(default=None, nullable=True) # 带上下文的推断结果,JSON格式
|
inference_with_context: Optional[str] = Field(default=None, nullable=True) # 带上下文的推断结果,JSON格式
|
||||||
inference_with_content_only: Optional[str] = Field(default=None, nullable=True) # 只基于词条的推断结果,JSON格式
|
inference_with_content_only: Optional[str] = Field(default=None, nullable=True) # 只基于词条的推断结果,JSON格式
|
||||||
|
|||||||
@@ -145,6 +145,7 @@ class MessageUtils:
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
async def build_readable_message(
|
async def build_readable_message(
|
||||||
messages: List["SessionMessage"],
|
messages: List["SessionMessage"],
|
||||||
|
*,
|
||||||
anonymize: bool = False,
|
anonymize: bool = False,
|
||||||
show_lineno: bool = False,
|
show_lineno: bool = False,
|
||||||
extract_pictures: bool = False,
|
extract_pictures: bool = False,
|
||||||
@@ -437,6 +438,7 @@ class MessageUtils:
|
|||||||
]
|
]
|
||||||
return component
|
return component
|
||||||
|
|
||||||
|
|
||||||
# TODO: 这个函数的实现非常临时,后续需要替换为更完善的实现,比如直接从配置文件中读取机器人自己的ID,或者通过API获取机器人自己的信息等
|
# TODO: 这个函数的实现非常临时,后续需要替换为更完善的实现,比如直接从配置文件中读取机器人自己的ID,或者通过API获取机器人自己的信息等
|
||||||
def is_bot_self(user_id: str) -> bool:
|
def is_bot_self(user_id: str) -> bool:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user