GDM-Aide-RUN-V2 / api.py
Elkristobal59's picture
feat: optimize model loading, clean imports, run V4 training and fix tests
187f074
Raw
History Blame Contribute Delete
1.52 kB
from fastapi import FastAPI
from pydantic import BaseModel
from app import predire_ticket, nettoyer_texte_francais # Importé depuis app.py
# Initialisation de l'API
app = FastAPI(title="GDM Ticket Classifier API")
# Définition du format de donnée attendu (JSON)
class TicketInput(BaseModel):
objet: str
description: str
@app.get("/")
def home():
return {"message": "API GDM opérationnelle. Utilisez l'endpoint /predict en POST."}
@app.get("/health")
def health_check():
from app import MODELE, MTTR_MOYENS
return {
"status": "healthy" if MODELE is not None else "unhealthy",
"modele_charge": MODELE is not None,
"version": "1.0.0",
"mttr_poles_count": len(MTTR_MOYENS) if MTTR_MOYENS is not None else 0
}
@app.post("/predict")
def api_predict(ticket: TicketInput):
# Sécurité : Si le modèle n'est pas chargé, on renvoie une erreur propre
from app import MODELE, MTTR_MOYENS
if MODELE is None:
return {"error": "Le modèle n'est pas chargé. Vérifiez les fichiers .pkl"}
# Nettoyage avancé du texte français pour cohérence avec l'app Streamlit
obj = nettoyer_texte_francais(str(ticket.objet))
desc = nettoyer_texte_francais(str(ticket.description))
categorie, mttr, confiance = predire_ticket(obj, desc)
return {
"application_impactee": str(categorie),
"temps_resolution_estime_h": float(mttr) if mttr is not None else 0.0,
"score_confiance": round(float(confiance), 4)
}