合并到远程

This commit is contained in:
UnCLAS-Prommer
2026-02-13 13:41:58 +08:00
parent 60f76e4d4e
commit b9f3c17e14
15 changed files with 420 additions and 450 deletions

View File

@@ -1,6 +1,6 @@
from typing import Optional
from sqlalchemy import Column, Float, Enum as SQLEnum
from sqlmodel import SQLModel, Field
from sqlmodel import SQLModel, Field, LargeBinary
from enum import Enum
from datetime import datetime
@@ -45,8 +45,8 @@ class Messages(SQLModel, table=True):
is_notify: bool = Field(default=False) # 是否为通知消息
# 消息内容
raw_content: str # base64编码的原始消息内容
processed_plain_text: str = Field(index=True) # 平面化处理后的纯文本消息
raw_content: bytes = Field(sa_column=Column(LargeBinary)) # base64编码的原始消息内容
processed_plain_text: str = Field() # 平面化处理后的纯文本消息
display_message: str # 显示的消息内容被放入Prompt
# 其他配置
@@ -85,9 +85,9 @@ class Images(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True) # 自增主键
# 元信息
image_hash: str = Field(default="", max_length=255) # 图片哈希使用sha256哈希值亦作为图片唯一ID
image_hash: str = Field(index=True, max_length=255) # 图片哈希使用sha256哈希值亦作为图片唯一ID
description: str # 图片的描述
full_path: str = Field(index=True, max_length=1024) # 文件的完整路径 (包括文件名)
full_path: str = Field(max_length=1024) # 文件的完整路径 (包括文件名)
image_type: ImageType = Field(sa_column=Column(SQLEnum(ImageType)), default=ImageType.EMOJI)
"""图片类型,例如 'emoji''image'"""
emotion: Optional[str] = Field(default=None, nullable=True) # 表情包的情感标签,逗号分隔
@@ -116,7 +116,7 @@ class ActionRecord(SQLModel, table=True):
session_id: str = Field(index=True, max_length=255) # 对应的 ChatSession session_id
# 调用信息
action_name: str = Field(max_length=255) # 动作名称
action_name: str = Field(index=True, max_length=255) # 动作名称
action_reasoning: Optional[str] = Field(default=None) # 动作推理过程
action_data: Optional[str] = Field(default=None) # 动作数据JSON格式存储
@@ -153,7 +153,7 @@ class OnlineTime(SQLModel, table=True):
timestamp: datetime = Field(default_factory=datetime.now, index=True) # 时间戳
duration_minutes: int = Field() # 时长,单位秒
start_timestamp: datetime = Field(default_factory=datetime.now) # 上线时间
end_timestamp: datetime = Field(index=True) # 下线时间
end_timestamp: datetime = Field() # 下线时间
class Expression(SQLModel, table=True):
@@ -230,7 +230,68 @@ class ThinkingQuestion(SQLModel, table=True):
context: Optional[str] = Field(default=None, nullable=True) # 上下文
found_answer: bool = Field(default=False) # 是否找到答案
answer: Optional[str] = Field(default=None, nullable=True) # 问题答案
thinking_steps: Optional[str] = Field(default=None, nullable=True) # 思考步骤JSON格式存储
created_timestamp: datetime = Field(default_factory=datetime.now, index=True) # 创建时间
updated_timestamp: datetime = Field(default_factory=datetime.now, index=True) # 最后更新时间
class BinaryData(SQLModel, table=True):
"""存储二进制数据的模型"""
__tablename__ = "binary_data" # type: ignore
id: Optional[int] = Field(default=None, primary_key=True) # 自增主键
data_hash: str = Field(index=True, max_length=255) # 数据哈希使用sha256哈希值亦作为数据唯一ID
full_path: str = Field(max_length=1024) # 文件的完整路径 (包括文件名)
class PersonInfo(SQLModel, table=True):
"""存储个人信息的模型"""
__tablename__ = "person_info" # type: ignore
id: Optional[int] = Field(default=None, primary_key=True) # 自增主键
is_known: bool = Field(default=False) # 是否为已知人
person_id: str = Field(unique=True, index=True, max_length=255) # 人员ID
person_name: Optional[str] = Field(default=None, max_length=255, nullable=True) # 人员名称
name_reason: Optional[str] = Field(default=None, nullable=True) # 名称原因
# 身份元数据
platform: str = Field(index=True, max_length=100) # 平台名称
user_id: str = Field(index=True, max_length=255) # 用户ID
user_nickname: str = Field(index=True, max_length=255) # 用户昵称
group_nickname: Optional[str] = Field(
default=None, nullable=True
) # 群昵称 (JSON, [{"group_id": str, "group_nick_name": str}])
# 印象
memory_points: Optional[str] = Field(default=None, nullable=True) # 记忆要点JSON格式存储
# 认识次数和时间
know_counts: int = Field(default=0) # 认识次数
first_known_time: Optional[datetime] = Field(default=None, nullable=True) # 首次认识时间
last_known_time: Optional[datetime] = Field(default=None, nullable=True) # 最后认识时间
class ChatSession(SQLModel, table=True):
"""存储聊天会话的模型"""
__tablename__ = "chat_sessions" # type: ignore
id: Optional[int] = Field(default=None, primary_key=True) # 自增主键
session_id: str = Field(unique=True, index=True, max_length=255) # 聊天会话ID
created_timestamp: datetime = Field(default_factory=datetime.now, index=True) # 创建时间
last_active_timestamp: datetime = Field(default_factory=datetime.now, index=True) # 最后活跃时间
# 身份元数据
user_id: str = Field(index=True, max_length=255) # 用户ID
user_nickname: str = Field(index=True, max_length=255) # 用户昵称
user_cardname: Optional[str] = Field(default=None, max_length=255, nullable=True) # 用户备注名
group_id: Optional[str] = Field(index=True, default=None, max_length=255, nullable=True) # 群组id
group_name: Optional[str] = Field(index=True, default=None, max_length=255, nullable=True) # 群组名称
platform: str = Field(index=True, max_length=100) # 用户平台