# -*- coding: utf-8 -*- """ 数据表模型 """ from datetime import datetime from pydantic_ai._uuid import uuid7 from sqlmodel import Field, JSON, SQLModel # 会话数据表模型 class Conversation(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 Dialog(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: list[ThoughtNode] = Field( default_factory=list, sa_type=JSON, description="思考节点列表" ) answer: str = Field(default="", description="回答") # 思考节点数据表模型 class ThoughtNode(SQLModel): kind: str = Field(description="思考节点类型") content: str = Field(default="", description="思考节点内容") # 运行结果数据表模型 class RunResult(SQLModel, table=True): conversation_id: str = Field(primary_key=True, description="会话唯一标识") dialog_id: str = Field(primary_key=True, description="对话唯一标识") new_messages: str = Field(description="新增消息")