import os from flask import Flask, request, jsonify import joblib import pandas as pd # Create a Flask application instance app = Flask(__name__) # Define model path MODEL_DIR = "model_artifacts" MODEL_FILENAME = "best_sales_forecast_model.joblib" MODEL_PATH = os.path.join(MODEL_DIR, MODEL_FILENAME) # Load model at startup try: model = joblib.load(MODEL_PATH) print(" Model loaded successfully!") except Exception as e: print(f" Error loading model: {e}") model = None # Health check route @app.route("/", methods=["GET"]) def index(): return jsonify({"status": "Backend is running!"}) # Prediction route @app.route("/predict", methods=["POST"]) def predict(): if model is None: return jsonify({"error": "Model not loaded"}), 500 try: # Get request JSON data = request.get_json(force=True) if not data: return jsonify({"error": "No input data provided"}), 400 # Convert to DataFrame df = pd.DataFrame(data) # Drop ID column if present, as it's not used in prediction if "Product_Id" in df.columns: df = df.drop("Product_Id", axis=1) # Predict predictions = model.predict(df) return jsonify({"predictions": predictions.tolist()}) except Exception as e: return jsonify({"error": str(e)}), 400 # Entry point if __name__ == "__main__": app.run(host="0.0.0.0", port=5000)