from datetime import datetime from typing import Optional from pydantic import BaseModel, Field # ---------- 请求 ---------- class CreateDocumentRequest(BaseModel): user_id: str = Field(..., alias="userId") file_url: str = Field(..., alias="fileUrl") session_id: str = Field(..., alias="sessionId") model_config = {"populate_by_name": True} # ---------- 响应 ---------- class DocumentResponse(BaseModel): id: str content_db_path: str = Field(..., serialization_alias="contentDbPath") session_id: str = Field(..., serialization_alias="sessionId") user_id: Optional[str] = Field(None, serialization_alias="userId") created_at: datetime = Field(..., serialization_alias="createdAt") updated_at: datetime = Field(..., serialization_alias="updatedAt") blocks: list = [] # 可选,用于返回 blocks model_config = {"from_attributes": True, "populate_by_name": True} class DocumentListItem(BaseModel): id: str session_id: str = Field(..., serialization_alias="sessionId") created_at: datetime = Field(..., serialization_alias="createdAt") updated_at: datetime = Field(..., serialization_alias="updatedAt") model_config = {"from_attributes": True, "populate_by_name": True} class Pagination(BaseModel): page: int page_size: int = Field(..., serialization_alias="pageSize") total: int total_pages: int = Field(..., serialization_alias="totalPages") model_config = {"populate_by_name": True}