This commit is contained in:
Ionel Andrei Cataon
2026-02-18 15:14:04 +02:00
parent e7a31edbc3
commit d9285fb410
3 changed files with 58 additions and 37 deletions

View File

@@ -1,35 +1,31 @@
from flask import Flask, render_template, request
import os import os
# Îi spunem clar că templates este în același folder cu main.py from flask import Flask, render_template, request
template_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'templates')) # import openai # Dezactivează comentariul când ai cheia API
app = Flask(__name__, template_folder=template_dir)
app = Flask(__name__, template_folder='templates')
# Funcția care calculează caloriile (Formula Mifflin-St Jeor)
def calculeaza_target(data): def calculeaza_target(data):
w = float(data.get('weight')) try:
h = float(data.get('height')) w = float(data.get('weight'))
a = int(data.get('age')) h = float(data.get('height'))
gen = data.get('gender') a = int(data.get('age'))
act = float(data.get('activity')) gen = data.get('gender')
scop = data.get('goal') act = float(data.get('activity'))
scop = data.get('goal')
# Calcul BMR (Basal Metabolic Rate) if gen == 'masculin':
if gen == 'masculin': bmr = (10 * w) + (6.25 * h) - (5 * a) + 5
bmr = (10 * w) + (6.25 * h) - (5 * a) + 5 else:
else: bmr = (10 * w) + (6.25 * h) - (5 * a) - 161
bmr = (10 * w) + (6.25 * h) - (5 * a) - 161
# TDEE (Total Daily Energy Expenditure) tdee = bmr * act
tdee = bmr * act if scop == 'slabire':
return round(tdee - 500)
# Ajustare în funcție de scop (slăbire/îngrășare) elif scop == 'ingrasare':
if scop == 'slabire': return round(tdee + 500)
return round(tdee - 500)
elif scop == 'ingrasare':
return round(tdee + 500)
else:
return round(tdee) return round(tdee)
except:
return 2000
@app.route('/') @app.route('/')
def index(): def index():
@@ -37,13 +33,20 @@ def index():
@app.route('/calculate', methods=['POST']) @app.route('/calculate', methods=['POST'])
def calculate(): def calculate():
try: data = request.form
data = request.form kcal_final = calculeaza_target(data)
kcal_final = calculeaza_target(data)
# Trimitem rezultatul înapoi în pagina index.html # Simulare AI dacă nu avem API Key configurat încă
return render_template('index.html', rezultat=kcal_final, date_introduse=data) preferinte = data.get('preferences', 'fără preferințe')
except Exception as e: meniu_exemplu = f"""
return f"A apărut o eroare: {e}", 400 🤖 Meniu Sugerat ({kcal_final} kcal):
- Mic dejun: Omletă cu 3 ouă și avocado.
- Prânz: Piept de pui (200g) cu orez sălbatic.
- Cină: Salată de ton cu măsline.
- Preferințe procesate: {preferinte}
"""
return render_template('index.html', rezultat=kcal_final, meniu_ai=meniu_exemplu)
if __name__ == '__main__': if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000) app.run(host='0.0.0.0', port=5000)

View File

@@ -54,9 +54,26 @@
<h4>Ținta ta: {{ rezultat }} kcal / zi</h4> <h4>Ținta ta: {{ rezultat }} kcal / zi</h4>
</div> </div>
<hr> <hr>
<h5>🤖 Cere meniu de la AI (Beta)</h5>
<textarea class="form-control mb-2" placeholder="Ex: Sunt vegetarian și nu îmi place broccoli..."></textarea> <h5>🤖 Cere meniu de la AI</h5>
<button class="btn btn-outline-primary btn-sm">Generează Meniu Săptămânal</button> <form action="/calculate" method="post">
<input type="hidden" name="weight" value="{{ request.form.weight }}">
<input type="hidden" name="height" value="{{ request.form.height }}">
<input type="hidden" name="age" value="{{ request.form.age }}">
<input type="hidden" name="gender" value="{{ request.form.gender }}">
<input type="hidden" name="activity" value="{{ request.form.activity }}">
<input type="hidden" name="goal" value="{{ request.form.goal }}">
<textarea name="preferences" class="form-control mb-2" placeholder="Ex: Sunt vegetarian, nu îmi place peștele..."></textarea>
<button type="submit" class="btn btn-outline-primary btn-sm w-100">Generează Meniu Personalizat</button>
</form>
{% endif %}
{% if meniu_ai %}
<div class="mt-4 p-3 border rounded bg-white">
<h6 class="text-primary font-weight-bold">Meniul tău generat:</h6>
<p style="white-space: pre-line;">{{ meniu_ai }}</p>
</div>
{% endif %} {% endif %}
</div> </div>
</div> </div>

View File

@@ -1 +1,2 @@
flask flask
openai==0.28.0