mirc detection

This commit is contained in:
2025-07-09 06:40:36 +02:00
parent a5e044d747
commit 386b34526b
7 changed files with 1918 additions and 128 deletions

View File

@@ -8,6 +8,23 @@ from enum import Enum
from datetime import datetime
class ConversionStatus(str, Enum):
"""Statuts possibles pour une conversion de fichier"""
SUCCESS = "success"
FAILED = "failed"
class ConversionResponse(BaseModel):
"""Réponse à une demande de conversion de fichier"""
original_filename: str = Field(..., description="Nom du fichier original")
original_format: str = Field(..., description="Format du fichier original")
converted_filename: Optional[str] = Field(None, description="Nom du fichier converti")
converted_format: Optional[str] = Field(None, description="Format du fichier converti")
converted_path: Optional[str] = Field(None, description="Chemin vers le fichier converti")
status: ConversionStatus = Field(..., description="Statut de la conversion")
message: str = Field(..., description="Message d'information ou d'erreur")
class JobStatus(str, Enum):
"""Statuts possibles pour une tâche d'extraction"""
PENDING = "pending"
@@ -37,12 +54,24 @@ class JobStatusResponse(BaseModel):
class ExtractionResult(BaseModel):
"""Résultat de l'extraction d'informations d'un chèque"""
montant: Optional[str] = Field(None, description="Montant du chèque")
# Champs standards
montant: Optional[str] = Field(None, description="Montant du chèque en chiffres")
date: Optional[str] = Field(None, description="Date du chèque")
beneficiaire: Optional[str] = Field(None, description="Bénéficiaire du chèque")
numero_cheque: Optional[str] = Field(None, description="Numéro du chèque")
qualite_extraction: Optional[str] = Field(None, description="Qualité de l'extraction (échec, faible, moyenne, bonne)")
image_zones: Optional[str] = Field(None, description="Chemin vers l'image avec les zones identifiées")
# Champs MICR (CMC-7)
code_banque: Optional[str] = Field(None, description="Code banque (MICR CMC-7)")
code_guichet: Optional[str] = Field(None, description="Code guichet (MICR CMC-7)")
numero_compte: Optional[str] = Field(None, description="Numéro de compte (MICR CMC-7)")
cle_rib: Optional[str] = Field(None, description="Clé RIB (MICR CMC-7)")
sequence_micr: Optional[str] = Field(None, description="Séquence MICR complète")
# Champs avancés
montant_lettres: Optional[str] = Field(None, description="Montant du chèque en lettres")
coherence_montants: Optional[bool] = Field(None, description="Cohérence entre montant en chiffres et en lettres")
class JobResult(BaseModel):