# -*- coding: utf-8 -*- """ 领域模型 """ from datetime import datetime from typing import Dict, List from pydantic_ai._uuid import uuid7 from pydantic import BaseModel, Field class Thought(BaseModel): """ 思考节点领域模型 """ id: str = Field(..., description="思考唯一标识") type: str = Field(..., description="思考类型") content: str = Field(..., description="思考内容") class Dialog(BaseModel): """ 对话领域模型 """ id: str = Field(..., description="对话唯一标识") user_prompt: str = Field(..., description="用户提示词") thoughts: List[Thought] = Field(default_factory=list, description="思考列表") result_output: str = Field(default="", description="结果输出") is_thinking: bool = Field( default=False, description="正在思考,True 表示正在思考,False 表示未正在思考" ) is_expanded: bool = Field( default=False, description="思考折叠面板展开状态,True 表示展开,False 表示折叠" ) class Conversation(BaseModel): """ 会话领域模型 """ id: str = Field(default_factory=lambda: str(uuid7()), description="会话唯一标识") description: str = Field(default="新会话", description="会话描述") is_running: bool = Field( default=False, description="正在运行,True 表示正在运行,False 表示未正在运行" ) dialogs: List[Dialog] = Field(default_factory=list, description="对话列表") created_at: datetime = Field(default_factory=datetime.now, description="创建时间") class ConversationHistoryItem(BaseModel): """ 会话历史项领域模型 """ id: str = Field(..., description="会话唯一标识") description: str = Field(..., description="会话描述") created_at: str = Field(..., description="会话创建时间")