from pydantic import BaseModel, EmailStr from enum import Enum from schemas.documents.documents import TypeDocument from database import ( SageDocumentType, ) from typing import List, Optional from datetime import datetime class StatutSignature(str, Enum): EN_ATTENTE = "EN_ATTENTE" ENVOYE = "ENVOYE" SIGNE = "SIGNE" REFUSE = "REFUSE" EXPIRE = "EXPIRE" class Signature(BaseModel): doc_id: str type_doc: TypeDocument email_signataire: EmailStr nom_signataire: str class CreateSignatureRequest(BaseModel): """Demande de création d'une signature""" sage_document_id: str sage_document_type: SageDocumentType signer_email: EmailStr signer_name: str document_name: Optional[str] = None class TransactionResponse(BaseModel): """Réponse détaillée d'une transaction""" id: str transaction_id: str sage_document_id: str sage_document_type: str universign_status: str local_status: str local_status_label: str signer_url: Optional[str] document_url: Optional[str] created_at: datetime sent_at: Optional[datetime] signed_at: Optional[datetime] last_synced_at: Optional[datetime] needs_sync: bool signers: List[dict] signed_document_available: bool = False signed_document_downloaded_at: Optional[datetime] = None signed_document_size_kb: Optional[float] = None class SyncStatsResponse(BaseModel): """Statistiques de synchronisation""" total_transactions: int pending_sync: int signed: int in_progress: int refused: int expired: int last_sync_at: Optional[datetime]