Spaces:
Build error
Build error
| from fastapi import FastAPI, UploadFile, File | |
| import pandas as pd | |
| import joblib | |
| from io import BytesIO | |
| app = FastAPI(title="Detecção de Anomalias JMeter") | |
| MODEL_PATH = "modelo_anomalia.pkl" | |
| # Carrega o modelo na inicialização | |
| model = joblib.load(MODEL_PATH) | |
| def preprocess(df): | |
| if df["success"].dtype == object: | |
| df["success"] = df["success"].map(lambda x: 1 if str(x).lower() == "true" else 0) | |
| return df[["elapsed", "success"]] | |
| def home(): | |
| return { | |
| "status": "online", | |
| "msg": "API de detecção de anomalias está funcionando!", | |
| "rota_upload": "/upload" | |
| } | |
| async def classify(file: UploadFile = File(...)): | |
| content = await file.read() | |
| df = pd.read_csv(BytesIO(content)) | |
| X = preprocess(df) | |
| preds = model.predict(X) | |
| df["anomalia"] = preds | |
| percent_anom = (preds == -1).mean() * 100 | |
| alerta = percent_anom > 5 | |
| return { | |
| "total": len(df), | |
| "anomalias": int((preds == -1).sum()), | |
| "percentual_anomalias": percent_anom, | |
| "alerta": alerta, | |
| "limite": "Ultrapassado (>5%)" if alerta else "Normal", | |
| } | |