contract.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from datetime import datetime
  2. from typing import Optional, List, Any
  3. from pydantic import BaseModel
  4. class ContractDocumentResponse(BaseModel):
  5. id: int
  6. contract_type: str
  7. contract_name: str
  8. is_primary: int
  9. status: int
  10. sign_flow_id: str
  11. file_id: str
  12. template_url: str
  13. sign_url: str
  14. download_url: str
  15. signing_time: Optional[datetime] = None
  16. effective_time: Optional[datetime] = None
  17. expiry_time: Optional[datetime] = None
  18. class ContractBundleResponse(BaseModel):
  19. id: int
  20. subject_type: str
  21. subject_id: int
  22. subject_name: str
  23. business_segment: str
  24. contact_name: str
  25. contact_phone: str
  26. ord_id: str
  27. bundle_type: str
  28. status: str
  29. primary_document_id: Optional[int] = None
  30. documents: List[ContractDocumentResponse]
  31. class BundleCreateResponse(BaseModel):
  32. success: bool
  33. message: str
  34. bundle_id: Optional[int] = None
  35. primary_sign_flow_id: Optional[str] = None
  36. created_contracts: Optional[List[dict]] = None
  37. class ErrorResponse(BaseModel):
  38. success: bool = False
  39. message: str
  40. raw: Optional[Any] = None
  41. class SuccessResponse(BaseModel):
  42. code: str
  43. msg: str
  44. class PaginatedBundleResponse(BaseModel):
  45. items: List[ContractBundleResponse]
  46. total: int
  47. page: int
  48. page_size: int
  49. total_pages: int
  50. class ModuleStatusResponse(BaseModel):
  51. module: str
  52. status: str