from datetime import datetime from pydantic import BaseModel, Field class ConversationCreate(BaseModel): title: str = "新会话" class ConversationResponse(BaseModel): id: int title: str created_at: datetime last_message_at: datetime | None class ChatStreamRequest(BaseModel): question: str = "" conversation_id: int | None = None attachment_ids: list[int] = Field(default_factory=list) class ReferenceResponse(BaseModel): source_title: str snippet: str | None = None page_no: str | None = None section: str | None = None source_url: str | None = None class AttachmentResponse(BaseModel): id: int file_type: str data_url: str | None = None class MessageResponse(BaseModel): id: int conversation_id: int question: str answer: str | None status: str token_usage: int pu_usage: int created_at: datetime references: list[ReferenceResponse] attachments: list[AttachmentResponse] = Field(default_factory=list) class FeedbackCreate(BaseModel): rating: str = Field(pattern="^(up|down|correct)$") comment: str | None = None