# -*- coding: utf-8 -*- """ 数据表模型 """ from datetime import datetime from pydantic_ai._uuid import uuid7 from sqlmodel import Field, JSON, SQLModel # 会话数据表 class Conversations(SQLModel, table=True): id: str = Field( default_factory=lambda: str(uuid7()), primary_key=True, description="会话唯一标识", ) user_id: str = Field(..., index=True, description="用户唯一标识") description: str = Field(..., description="会话描述") is_deleted: bool = Field(default=False, description="是否删除") created_at: datetime = Field(default_factory=datetime.now, description="创建时间") # 思考节点数据表(仅用于定义) class ThoughtNodes(SQLModel): kind: str = Field(description="思考节点类型") content: str = Field(default="", description="思考节点内容") # 对话数据表 class Dialogs(SQLModel, table=True): id: str = Field( default_factory=lambda: str(uuid7()), primary_key=True, description="对话唯一标识", ) conversation_id: str = Field(..., index=True, description="会话唯一标识") question: str = Field(..., description="问题") thought_nodes: dict[int, ThoughtNodes] = Field( default_factory=dict, sa_type=JSON, description="思考节点字典" ) answer: str = Field(default="", description="回答") # 运行结果数据表 class RunResults(SQLModel, table=True): conversation_id: str = Field(primary_key=True, description="会话唯一标识") dialog_id: str = Field(primary_key=True, description="对话唯一标识") new_messages: str = Field(description="新增消息")