contract.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from datetime import datetime
  2. from typing import Optional, List, Any
  3. from pydantic import BaseModel, Field
  4. class ContractDocumentResponse(BaseModel):
  5. id: int = Field(description="合同文档ID")
  6. contract_type: str = Field(description="合同类型编码")
  7. contract_name: str = Field(description="合同名称")
  8. is_primary: int = Field(description="是否主合同,1是0否")
  9. status: int = Field(description="签署状态,0未签1已签")
  10. sign_flow_id: str = Field(description="e签宝签署流程ID")
  11. file_id: str = Field(description="e签宝文件ID")
  12. template_url: str = Field(description="合同模板文件链接")
  13. sign_url: str = Field(description="签署链接")
  14. download_url: str = Field(description="已签文件下载链接")
  15. signing_time: Optional[datetime] = Field(default=None, description="签署时间")
  16. effective_time: Optional[datetime] = Field(default=None, description="生效时间")
  17. expiry_time: Optional[datetime] = Field(default=None, description="到期时间")
  18. class ContractBundleResponse(BaseModel):
  19. id: int = Field(description="合同包ID")
  20. subject_type: str = Field(description="主体类型,store或lawyer")
  21. subject_id: int = Field(description="主体ID")
  22. subject_name: str = Field(description="主体名称")
  23. business_segment: str = Field(description="业务板块")
  24. contact_name: str = Field(description="联系人姓名")
  25. contact_phone: str = Field(description="联系人手机号")
  26. ord_id: str = Field(description="统一社会信用代码")
  27. bundle_type: str = Field(description="合同包类型")
  28. status: str = Field(description="合同包状态")
  29. primary_document_id: Optional[int] = Field(default=None, description="主合同文档ID")
  30. documents: List[ContractDocumentResponse] = Field(description="合同文档列表")
  31. class BundleCreateResponse(BaseModel):
  32. success: bool = Field(description="是否成功")
  33. message: str = Field(description="响应消息")
  34. bundle_id: Optional[int] = Field(default=None, description="合同包ID")
  35. primary_sign_flow_id: Optional[str] = Field(default=None, description="主合同签署流程ID")
  36. created_contracts: Optional[List[dict]] = Field(default=None, description="本次创建的合同列表")
  37. class ErrorResponse(BaseModel):
  38. success: bool = Field(default=False, description="是否成功")
  39. message: str = Field(description="错误消息")
  40. raw: Optional[Any] = Field(default=None, description="原始错误数据")
  41. class SuccessResponse(BaseModel):
  42. code: str = Field(description="响应代码")
  43. msg: str = Field(description="响应消息")
  44. class PaginatedBundleResponse(BaseModel):
  45. items: List[ContractBundleResponse] = Field(description="合同包列表")
  46. total: int = Field(description="总记录数")
  47. page: int = Field(description="当前页码")
  48. page_size: int = Field(description="每页条数")
  49. total_pages: int = Field(description="总页数")
  50. class ModuleStatusResponse(BaseModel):
  51. module: str = Field(description="模块名称")
  52. status: str = Field(description="模块状态")