Spaces:
Sleeping
Sleeping
| # ----------------------------------------------------------- | |
| # SuperKart Backend API - Flask Application | |
| # ----------------------------------------------------------- | |
| from flask import Flask, request, jsonify | |
| from flask_cors import CORS | |
| import pandas as pd | |
| import joblib | |
| import os | |
| # ----------------------------------------------------------- | |
| # App setup | |
| # ----------------------------------------------------------- | |
| app = Flask(__name__) | |
| CORS(app) | |
| MODEL_PATH = "model.joblib" | |
| model = None | |
| # ----------------------------------------------------------- | |
| # Load model | |
| # ----------------------------------------------------------- | |
| def load_model(): | |
| global model | |
| try: | |
| model = joblib.load(MODEL_PATH) | |
| print(f"β Model loaded successfully from: {MODEL_PATH}") | |
| except Exception as e: | |
| print(f"β Failed to load model: {e}") | |
| model = None | |
| # ----------------------------------------------------------- | |
| # Home / Health endpoint | |
| # ----------------------------------------------------------- | |
| def home(): | |
| return jsonify({ | |
| "status": "ok", | |
| "model_loaded": model is not None, | |
| "version": "v4.0.3", | |
| "message": "SuperKart backend ready β use POST /predict" | |
| }) | |
| # ----------------------------------------------------------- | |
| # Routes endpoint (debugging) | |
| # ----------------------------------------------------------- | |
| def show_routes(): | |
| """List all registered endpoints for debugging.""" | |
| routes = [str(rule) for rule in app.url_map.iter_rules()] | |
| return jsonify({"available_routes": routes}) | |
| # ----------------------------------------------------------- | |
| # Prediction endpoint | |
| # ----------------------------------------------------------- | |
| def predict(): | |
| """Accepts JSON input and returns model predictions.""" | |
| try: | |
| data = request.get_json(force=True) | |
| print("Received data:", data) | |
| # Convert JSON list of dicts -> DataFrame | |
| df = pd.DataFrame(data) | |
| # Run model inference | |
| preds = model.predict(df) | |
| return jsonify({ | |
| "status": "ok", | |
| "predictions": preds.tolist(), | |
| "version": "v4.0.3" | |
| }) | |
| except Exception as e: | |
| print("Prediction error:", e) | |
| return jsonify({"status": "error", "message": str(e)}), 500 | |
| # ----------------------------------------------------------- | |
| # Entry point | |
| # ----------------------------------------------------------- | |
| if __name__ == "__main__": | |
| load_model() | |
| port = int(os.environ.get("PORT", 7860)) | |
| print(f"π Starting SuperKart backend on 0.0.0.0:{port}") | |
| app.run(host="0.0.0.0", port=port, debug=False) | |
| if __name__ == "__main__": | |
| load_model() | |
| port = int(os.environ.get("PORT", 7860)) | |
| print(f"π Starting SuperKart backend on 0.0.0.0:{port}") | |
| app.run(host="0.0.0.0", port=port, debug=False) | |