import os import joblib import numpy as np class EndpointHandler: def __init__(self, path=""): base = path if path else os.path.dirname(os.path.abspath(__file__)) self.model = joblib.load(os.path.join(base, "fraud_model.joblib")) self.scaler = joblib.load(os.path.join(base, "scaler.joblib")) def __call__(self, data): inputs = data.get("inputs", data) feature_order = ["Time"] + [f"V{i}" for i in range(1, 29)] + ["Amount"] row = np.array([[inputs[f] for f in feature_order]]) row[:, [0, -1]] = self.scaler.transform(row[:, [0, -1]]) pred = self.model.predict(row)[0] prob = self.model.predict_proba(row)[0][1] return { "prediction": "fraud" if pred == 1 else "legit", "fraud_probability": float(prob) }