Update app.py
Browse files
app.py
CHANGED
|
@@ -4,18 +4,16 @@ import random
|
|
| 4 |
import json
|
| 5 |
import os
|
| 6 |
from registro import guardar_registro, cargar_registro
|
| 7 |
-
from chatbot_nuti import buscar_respuesta # Inteligente y con
|
| 8 |
-
from coach_emocional import coach_emocional_inteligente # Inteligente y con
|
| 9 |
from optimizacion import resize_imagen, cargar_modelo_ligero, cache_resultado
|
| 10 |
from login import registrar_usuario, iniciar_sesion, SESION_FILE
|
| 11 |
|
| 12 |
# -------------------- ESTADO --------------------
|
| 13 |
estado = cargar_registro()
|
| 14 |
-
# Aseguramos que todas las claves existan
|
| 15 |
for k, v in {
|
| 16 |
"meta_diaria": 0, "restantes": 0, "quemas": 0, "puntos": 0,
|
| 17 |
-
"registro": [], "badges": [], "emocion": "", "nivel": 1
|
| 18 |
-
"historial_nuti": {}, "historial_emocional": {}
|
| 19 |
}.items():
|
| 20 |
estado.setdefault(k, v)
|
| 21 |
|
|
@@ -95,12 +93,9 @@ def registrar_actividad(tipo, duracion):
|
|
| 95 |
return f"🏃♂️ {tipo} durante {duracion} min ≈ {quemadas} cal quemadas. Restantes: {estado['restantes']}."
|
| 96 |
|
| 97 |
def coach_emocional_gradio(emocion, usuario):
|
| 98 |
-
|
| 99 |
-
estado["historial_emocional"][usuario] = []
|
| 100 |
-
estado["historial_emocional"][usuario].append({"fecha": str(datetime.datetime.now()), "emocion": emocion})
|
| 101 |
guardar_registro(estado)
|
| 102 |
-
|
| 103 |
-
return coach_emocional_inteligente(usuario, emocion, estado["historial_emocional"][usuario])
|
| 104 |
|
| 105 |
def generar_mision():
|
| 106 |
mision = random.choice(misiones)
|
|
@@ -109,12 +104,7 @@ def generar_mision():
|
|
| 109 |
return f"🎯 Tu misión de hoy: {mision}"
|
| 110 |
|
| 111 |
def chatbot_nuti_gradio(pregunta, usuario):
|
| 112 |
-
|
| 113 |
-
estado["historial_nuti"][usuario] = []
|
| 114 |
-
respuesta = buscar_respuesta(usuario, pregunta, estado["historial_nuti"][usuario])
|
| 115 |
-
estado["historial_nuti"][usuario].append({"pregunta": pregunta, "respuesta": respuesta, "fecha": str(datetime.datetime.now())})
|
| 116 |
-
guardar_registro(estado)
|
| 117 |
-
return respuesta
|
| 118 |
|
| 119 |
def buscar_nutriologo(pais, estado_, ciudad):
|
| 120 |
resultados = [n for n in nutriologos if
|
|
@@ -173,7 +163,6 @@ with gr.Blocks() as demo:
|
|
| 173 |
usuario_actual = json.load(f).get("usuario", None)
|
| 174 |
gr.Markdown(f"👋 Hola, **{usuario_actual}**. Bienvenido a NutriBot Ultra!")
|
| 175 |
|
| 176 |
-
# Perfil del usuario
|
| 177 |
with gr.Tab("🧍 Tu perfil"):
|
| 178 |
edad = gr.Number(label="Edad (años)")
|
| 179 |
peso = gr.Number(label="Peso (kg)")
|
|
@@ -184,14 +173,12 @@ with gr.Blocks() as demo:
|
|
| 184 |
salida_meta = gr.Textbox(label="Resultado")
|
| 185 |
btn_meta.click(calcular_calorias, inputs=[edad, peso, altura, sexo, actividad], outputs=salida_meta)
|
| 186 |
|
| 187 |
-
# Comida
|
| 188 |
with gr.Tab("📸 Tu comida"):
|
| 189 |
img = gr.Image(type="pil", label="Sube una foto de tu comida")
|
| 190 |
btn_foto = gr.Button("Analizar comida")
|
| 191 |
salida_foto = gr.Textbox(label="Resultado")
|
| 192 |
btn_foto.click(analizar_foto, inputs=img, outputs=salida_foto)
|
| 193 |
|
| 194 |
-
# Actividad física
|
| 195 |
with gr.Tab("🏃 Actividad física"):
|
| 196 |
tipo = gr.Dropdown(list(actividades.keys()), label="Tipo de actividad")
|
| 197 |
duracion = gr.Number(label="Duración (minutos)")
|
|
@@ -199,7 +186,6 @@ with gr.Blocks() as demo:
|
|
| 199 |
salida_act = gr.Textbox(label="Resultado")
|
| 200 |
btn_act.click(registrar_actividad, inputs=[tipo, duracion], outputs=salida_act)
|
| 201 |
|
| 202 |
-
# Coach emocional
|
| 203 |
with gr.Tab("🧠 Coach emocional"):
|
| 204 |
emocion = gr.Textbox(label="¿Cómo te sientes hoy?")
|
| 205 |
btn_emocion = gr.Button("Enviar emoción")
|
|
@@ -210,13 +196,11 @@ with gr.Blocks() as demo:
|
|
| 210 |
outputs=salida_emocion
|
| 211 |
)
|
| 212 |
|
| 213 |
-
# Misión diaria
|
| 214 |
with gr.Tab("🎯 Misión saludable"):
|
| 215 |
btn_mision = gr.Button("Generar misión diaria")
|
| 216 |
salida_mision = gr.Textbox(label="Tu reto de hoy")
|
| 217 |
btn_mision.click(generar_mision, outputs=salida_mision)
|
| 218 |
|
| 219 |
-
# Nutriólogos
|
| 220 |
with gr.Tab("👩⚕️ Nutriólogos recomendados"):
|
| 221 |
pais = gr.Textbox(label="País")
|
| 222 |
estado_ = gr.Textbox(label="Estado o provincia")
|
|
@@ -225,7 +209,6 @@ with gr.Blocks() as demo:
|
|
| 225 |
salida_nutri = gr.Textbox(label="Resultados")
|
| 226 |
btn_buscar.click(buscar_nutriologo, inputs=[pais, estado_, ciudad], outputs=salida_nutri)
|
| 227 |
|
| 228 |
-
# Nuti asistente
|
| 229 |
with gr.Tab("🤖 Nuti - Tu asistente"):
|
| 230 |
pregunta = gr.Textbox(label="Hazle una pregunta a Nuti 🍓")
|
| 231 |
btn_chat = gr.Button("Preguntar")
|
|
|
|
| 4 |
import json
|
| 5 |
import os
|
| 6 |
from registro import guardar_registro, cargar_registro
|
| 7 |
+
from chatbot_nuti import buscar_respuesta # Inteligente y con usuario
|
| 8 |
+
from coach_emocional import coach_emocional_inteligente # Inteligente y con usuario
|
| 9 |
from optimizacion import resize_imagen, cargar_modelo_ligero, cache_resultado
|
| 10 |
from login import registrar_usuario, iniciar_sesion, SESION_FILE
|
| 11 |
|
| 12 |
# -------------------- ESTADO --------------------
|
| 13 |
estado = cargar_registro()
|
|
|
|
| 14 |
for k, v in {
|
| 15 |
"meta_diaria": 0, "restantes": 0, "quemas": 0, "puntos": 0,
|
| 16 |
+
"registro": [], "badges": [], "emocion": "", "nivel": 1
|
|
|
|
| 17 |
}.items():
|
| 18 |
estado.setdefault(k, v)
|
| 19 |
|
|
|
|
| 93 |
return f"🏃♂️ {tipo} durante {duracion} min ≈ {quemadas} cal quemadas. Restantes: {estado['restantes']}."
|
| 94 |
|
| 95 |
def coach_emocional_gradio(emocion, usuario):
|
| 96 |
+
estado["emocion"] = emocion
|
|
|
|
|
|
|
| 97 |
guardar_registro(estado)
|
| 98 |
+
return coach_emocional_inteligente(usuario, emocion)
|
|
|
|
| 99 |
|
| 100 |
def generar_mision():
|
| 101 |
mision = random.choice(misiones)
|
|
|
|
| 104 |
return f"🎯 Tu misión de hoy: {mision}"
|
| 105 |
|
| 106 |
def chatbot_nuti_gradio(pregunta, usuario):
|
| 107 |
+
return buscar_respuesta(usuario, pregunta)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
|
| 109 |
def buscar_nutriologo(pais, estado_, ciudad):
|
| 110 |
resultados = [n for n in nutriologos if
|
|
|
|
| 163 |
usuario_actual = json.load(f).get("usuario", None)
|
| 164 |
gr.Markdown(f"👋 Hola, **{usuario_actual}**. Bienvenido a NutriBot Ultra!")
|
| 165 |
|
|
|
|
| 166 |
with gr.Tab("🧍 Tu perfil"):
|
| 167 |
edad = gr.Number(label="Edad (años)")
|
| 168 |
peso = gr.Number(label="Peso (kg)")
|
|
|
|
| 173 |
salida_meta = gr.Textbox(label="Resultado")
|
| 174 |
btn_meta.click(calcular_calorias, inputs=[edad, peso, altura, sexo, actividad], outputs=salida_meta)
|
| 175 |
|
|
|
|
| 176 |
with gr.Tab("📸 Tu comida"):
|
| 177 |
img = gr.Image(type="pil", label="Sube una foto de tu comida")
|
| 178 |
btn_foto = gr.Button("Analizar comida")
|
| 179 |
salida_foto = gr.Textbox(label="Resultado")
|
| 180 |
btn_foto.click(analizar_foto, inputs=img, outputs=salida_foto)
|
| 181 |
|
|
|
|
| 182 |
with gr.Tab("🏃 Actividad física"):
|
| 183 |
tipo = gr.Dropdown(list(actividades.keys()), label="Tipo de actividad")
|
| 184 |
duracion = gr.Number(label="Duración (minutos)")
|
|
|
|
| 186 |
salida_act = gr.Textbox(label="Resultado")
|
| 187 |
btn_act.click(registrar_actividad, inputs=[tipo, duracion], outputs=salida_act)
|
| 188 |
|
|
|
|
| 189 |
with gr.Tab("🧠 Coach emocional"):
|
| 190 |
emocion = gr.Textbox(label="¿Cómo te sientes hoy?")
|
| 191 |
btn_emocion = gr.Button("Enviar emoción")
|
|
|
|
| 196 |
outputs=salida_emocion
|
| 197 |
)
|
| 198 |
|
|
|
|
| 199 |
with gr.Tab("🎯 Misión saludable"):
|
| 200 |
btn_mision = gr.Button("Generar misión diaria")
|
| 201 |
salida_mision = gr.Textbox(label="Tu reto de hoy")
|
| 202 |
btn_mision.click(generar_mision, outputs=salida_mision)
|
| 203 |
|
|
|
|
| 204 |
with gr.Tab("👩⚕️ Nutriólogos recomendados"):
|
| 205 |
pais = gr.Textbox(label="País")
|
| 206 |
estado_ = gr.Textbox(label="Estado o provincia")
|
|
|
|
| 209 |
salida_nutri = gr.Textbox(label="Resultados")
|
| 210 |
btn_buscar.click(buscar_nutriologo, inputs=[pais, estado_, ciudad], outputs=salida_nutri)
|
| 211 |
|
|
|
|
| 212 |
with gr.Tab("🤖 Nuti - Tu asistente"):
|
| 213 |
pregunta = gr.Textbox(label="Hazle una pregunta a Nuti 🍓")
|
| 214 |
btn_chat = gr.Button("Preguntar")
|