from flask import Flask, request, jsonify
import tensorflow as tf
import numpy as np
from PIL import Image

app = Flask(__name__)

print("🔥 RUNNING THIS app.py FILE")
@app.route("/test", methods=["GET"])
def test():
    return "TEST ROUTE WORKING"

# Load trained models
dark_model = tf.keras.models.load_model("dark_circles_model.h5")
pimple_model = tf.keras.models.load_model("pimples_model.h5")
skin_model = tf.keras.models.load_model("skin_type_model.h5")

print("✅ All ML models loaded")

def preprocess(img):
    img = img.resize((224, 224))
    img = np.array(img) / 255.0
    return np.expand_dims(img, axis=0)

def get_remedies(dark, pimples, skin):
    remedies = []

    if dark == "Present":
        remedies.append("Improve sleep schedule (7–8 hours)")
        remedies.append("Reduce screen time at night")

    if pimples == "Present":
        remedies.append("Use gentle face cleanser")
        remedies.append("Avoid oily food")

    if skin == "Dry":
        remedies.append("Use moisturizer daily")
    elif skin == "Oily":
        remedies.append("Wash face twice a day")

    if not remedies:
        remedies.append("Your skin looks healthy 👍")

    return remedies

@app.route("/predict", methods=["POST"])
def predict():
    return jsonify({"status": "POSTMAN CAN REACH SERVER"})


    if "image" not in request.files:
        return jsonify({"error": "No image uploaded"}), 400

    img = Image.open(request.files["image"]).convert("RGB")
    img = preprocess(img)

    dark_score = float(dark_model.predict(img)[0][0])
    pimple_score = float(pimple_model.predict(img)[0][0])
    skin_scores = skin_model.predict(img)[0]

    dark = "Present" if dark_score > 0.5 else "Absent"
    pimples = "Present" if pimple_score > 0.5 else "Absent"
    skin = ["Dry", "Normal", "Oily"][int(np.argmax(skin_scores))]

    remedies = get_remedies(dark, pimples, skin)

    return jsonify({
        "dark_circles": dark,
        "pimples": pimples,
        "skin_type": skin,
        "remedies": remedies,
        "confidence": {
            "dark_circles": dark_score,
            "pimples": pimple_score,
            "skin_type": float(np.max(skin_scores))
        }
    })

if __name__ == "__main__":
    print("📌 REGISTERED ROUTES:")
    print(app.url_map)

    app.run(host="0.0.0.0", port=5000, debug=True)
