Refactorisation for better error log

This commit is contained in:
Fanilo-Nantenaina 2025-11-28 06:00:34 +03:00
parent 02b6780d3f
commit 8ce32fe8df

57
main.py
View file

@ -490,13 +490,18 @@ def lire_document(numero: str, type_doc: int):
@app.post("/sage/documents/transform", dependencies=[Depends(verify_token)]) @app.post("/sage/documents/transform", dependencies=[Depends(verify_token)])
def transformer_document( def transformer_document(
numero_source: str = Query(..., description="Numéro du document source"), numero_source: str = Query(..., description="Numéro du document source"),
type_source: int = Query(..., ge=0, le=5, description="Type du document source"), type_source: int = Query(
type_cible: int = Query(..., ge=0, le=5, description="Type du document cible"), ...,
ge=0,
le=5,
description="Type document source (0=Devis, 3=Commande, 5=Facture)",
),
type_cible: int = Query(..., ge=0, le=5, description="Type document cible"),
): ):
""" """
🔧 Transformation de document (devis commande, etc.) 🔧 Transformation de document (devis commande facture)
CORRECTION: Utilise Query params au lieu de TransformationRequest CORRECTION FINALE: Query params au lieu de body JSON
Types de documents: Types de documents:
- 0: Devis - 0: Devis
@ -505,38 +510,60 @@ def transformer_document(
- 3: Commande - 3: Commande
- 4: Préparation - 4: Préparation
- 5: Facture - 5: Facture
Transformations valides:
- Devis (0) Commande (3)
- Devis (0) Facture (5)
- Commande (3) Bon livraison (1)
- Commande (3) Facture (5)
- Bon livraison (1) Facture (5)
""" """
try: try:
# Validation de la transformation logger.info(
f"🔄 Transformation demandée: {numero_source} "
f"(type {type_source}) → type {type_cible}"
)
# Validation des transformations autorisées
transformations_valides = { transformations_valides = {
(0, 3), # Devis → Commande (0, 3), # Devis → Commande
(0, 5), # Devis → Facture (rare) (0, 5), # Devis → Facture
(3, 1), # Commande → Bon de livraison (3, 1), # Commande → Bon de livraison
(3, 5), # Commande → Facture (3, 5), # Commande → Facture
(1, 5), # Bon de livraison → Facture (1, 5), # Bon de livraison → Facture
} }
if (type_source, type_cible) not in transformations_valides: if (type_source, type_cible) not in transformations_valides:
logger.error(
f"❌ Transformation non autorisée: {type_source}{type_cible}"
)
raise HTTPException( raise HTTPException(
400, f"Transformation non autorisée: {type_source}{type_cible}" 400,
) f"Transformation non autorisée: type {type_source} → type {type_cible}. "
f"Transformations valides: {transformations_valides}",
# Vérifier que le document source existe
logger.info(
f"🔄 Début transformation: {numero_source} ({type_source}) → type {type_cible}"
) )
# Appel au connecteur Sage
resultat = sage.transformer_document(numero_source, type_source, type_cible) resultat = sage.transformer_document(numero_source, type_source, type_cible)
logger.info(f"✅ Transformation réussie: {resultat}") logger.info(
f"✅ Transformation réussie: {numero_source}"
f"{resultat.get('document_cible', '?')} "
f"({resultat.get('nb_lignes', 0)} lignes)"
)
return {"success": True, "data": resultat} return {"success": True, "data": resultat}
except HTTPException: except HTTPException:
raise raise
except ValueError as e:
# Erreurs métier (document introuvable, déjà transformé, etc.)
logger.error(f"❌ Erreur métier transformation: {e}")
raise HTTPException(400, str(e))
except Exception as e: except Exception as e:
logger.error(f"❌ Erreur transformation: {e}", exc_info=True) # Erreurs techniques (COM, Sage, etc.)
raise HTTPException(500, str(e)) logger.error(f"❌ Erreur technique transformation: {e}", exc_info=True)
raise HTTPException(500, f"Erreur transformation: {str(e)}")
@app.post("/sage/documents/champ-libre", dependencies=[Depends(verify_token)]) @app.post("/sage/documents/champ-libre", dependencies=[Depends(verify_token)])