QAAI_API / app.py
ChristianSardo's picture
Upload 7 files
b51df68 verified
Raw
History Blame Contribute Delete
1.21 kB
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"]]
@app.get("/")
def home():
return {
"status": "online",
"msg": "API de detecção de anomalias está funcionando!",
"rota_upload": "/upload"
}
@app.post("/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",
}