sample_schemas.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from fastapi import APIRouter, Depends, HTTPException, Request, UploadFile, File
  2. from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
  3. from typing import Optional, List
  4. from datetime import datetime, timezone
  5. from pydantic import BaseModel, Field
  6. from typing import Optional, Any, Union
  7. class BatchEnterRequest(BaseModel):
  8. ids: list[Union[int, str]]
  9. table_type: Optional[str] = None
  10. kb_method: Optional[str] = None
  11. chunk_size: Optional[int] = Field(500, description="切分长度")
  12. separator: Optional[str] = Field("。", description="切分符号")
  13. class BatchDeleteRequest(BaseModel):
  14. ids: list[Union[int, str]]
  15. table_type: Optional[str] = None
  16. class ConvertRequest(BaseModel):
  17. id: Union[int, str]
  18. table_type: Optional[str] = None
  19. class DocumentAdd(BaseModel):
  20. title: str
  21. note: Optional[str] = None
  22. primary_category_id: Optional[Any] = None
  23. secondary_category_id: Optional[Any] = None
  24. year: Optional[int] = None
  25. table_type: Optional[str] = "standard"
  26. # 新增编辑需要的字段
  27. id: Optional[str] = None
  28. # 扩展字段 (子表特有属性)
  29. standard_no: Optional[str] = None
  30. issuing_authority: Optional[str] = None
  31. release_date: Optional[str] = None
  32. document_type: Optional[str] = None
  33. professional_field: Optional[str] = None
  34. validity: Optional[str] = None
  35. project_name: Optional[str] = None
  36. project_section: Optional[str] = None
  37. compilation_basis: Optional[str] = None
  38. plan_summary: Optional[str] = None
  39. plan_category: Optional[str] = None
  40. level_1_classification: Optional[str] = "施工方案"
  41. level_2_classification: Optional[str] = None
  42. level_3_classification: Optional[str] = None
  43. level_4_classification: Optional[str] = None
  44. # 更多基础信息字段
  45. english_name: Optional[str] = None
  46. implementation_date: Optional[str] = None
  47. drafting_unit: Optional[str] = None
  48. approving_department: Optional[str] = None
  49. engineering_phase: Optional[str] = None
  50. participating_units: Optional[str] = None
  51. reference_basis: Optional[str] = None
  52. source_url: Optional[str] = None
  53. effective_start_date: Optional[str] = None
  54. effective_end_date: Optional[str] = None
  55. # 文件相关字段
  56. file_url: Optional[str] = None
  57. json_url: Optional[str] = None
  58. file_extension: Optional[str] = None
  59. kb_id: str
  60. class DocumentListRequest(BaseModel):
  61. page: int = 1
  62. size: int = 50
  63. keyword: Optional[str] = None
  64. table_type: Optional[str] = None
  65. whether_to_enter: Optional[int] = None
  66. class UploadUrlRequest(BaseModel):
  67. filename: str
  68. content_type: str
  69. prefix: Optional[str] = None
  70. class UploadUrlResponse(BaseModel):
  71. upload_url: str
  72. file_url: str
  73. object_name: str