70 lines
1.6 KiB
Python
70 lines
1.6 KiB
Python
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]
|