from datetime import datetime from typing import Optional, List, Any from pydantic import BaseModel class ContractDocumentResponse(BaseModel): id: int contract_type: str contract_name: str is_primary: int status: int sign_flow_id: str file_id: str template_url: str sign_url: str download_url: str signing_time: Optional[datetime] = None effective_time: Optional[datetime] = None expiry_time: Optional[datetime] = None class ContractBundleResponse(BaseModel): id: int subject_type: str subject_id: int subject_name: str business_segment: str contact_name: str contact_phone: str ord_id: str bundle_type: str status: str primary_document_id: Optional[int] = None documents: List[ContractDocumentResponse] class BundleCreateResponse(BaseModel): success: bool message: str bundle_id: Optional[int] = None primary_sign_flow_id: Optional[str] = None created_contracts: Optional[List[dict]] = None class ErrorResponse(BaseModel): success: bool = False message: str raw: Optional[Any] = None class SuccessResponse(BaseModel): code: str msg: str class PaginatedBundleResponse(BaseModel): items: List[ContractBundleResponse] total: int page: int page_size: int total_pages: int class ModuleStatusResponse(BaseModel): module: str status: str