document.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from datetime import datetime
  2. from typing import Optional
  3. from pydantic import BaseModel, Field
  4. # ---------- 请求 ----------
  5. class CreateDocumentRequest(BaseModel):
  6. user_id: str = Field(..., alias="userId")
  7. file_url: str = Field(..., alias="fileUrl")
  8. session_id: str = Field(..., alias="sessionId")
  9. model_config = {"populate_by_name": True}
  10. # ---------- 响应 ----------
  11. class DocumentResponse(BaseModel):
  12. id: str
  13. content_db_path: str = Field(..., serialization_alias="contentDbPath")
  14. session_id: str = Field(..., serialization_alias="sessionId")
  15. user_id: Optional[str] = Field(None, serialization_alias="userId")
  16. created_at: datetime = Field(..., serialization_alias="createdAt")
  17. updated_at: datetime = Field(..., serialization_alias="updatedAt")
  18. blocks: list = [] # 可选,用于返回 blocks
  19. model_config = {"from_attributes": True, "populate_by_name": True}
  20. class DocumentListItem(BaseModel):
  21. id: str
  22. session_id: str = Field(..., serialization_alias="sessionId")
  23. created_at: datetime = Field(..., serialization_alias="createdAt")
  24. updated_at: datetime = Field(..., serialization_alias="updatedAt")
  25. model_config = {"from_attributes": True, "populate_by_name": True}
  26. class Pagination(BaseModel):
  27. page: int
  28. page_size: int = Field(..., serialization_alias="pageSize")
  29. total: int
  30. total_pages: int = Field(..., serialization_alias="totalPages")
  31. model_config = {"populate_by_name": True}