caissaa23 commited on
Commit
0a7cbad
·
verified ·
1 Parent(s): f7270d8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -23
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 memoria por usuario
8
- from coach_emocional import coach_emocional_inteligente # Inteligente y con memoria por 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
- # 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
- if usuario not in estado["historial_emocional"]:
99
- estado["historial_emocional"][usuario] = []
100
- estado["historial_emocional"][usuario].append({"fecha": str(datetime.datetime.now()), "emocion": emocion})
101
  guardar_registro(estado)
102
- # Llamada inteligente
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
- if usuario not in estado["historial_nuti"]:
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")