File size: 6,122 Bytes
0c0cae7
21fc81d
0c0cae7
 
 
 
4be0570
0c0cae7
4be0570
0c0cae7
 
 
 
 
 
 
 
21fc81d
 
4be0570
 
 
 
 
 
 
 
 
 
 
 
21fc81d
 
f787aea
 
 
21fc81d
0c0cae7
f787aea
 
 
0c0cae7
f787aea
 
 
 
0c0cae7
21fc81d
f787aea
 
 
21fc81d
f787aea
 
 
 
21fc81d
0c0cae7
 
f787aea
 
 
 
 
0c0cae7
 
4be0570
f787aea
21fc81d
 
4be0570
 
 
f787aea
 
21fc81d
f787aea
21fc81d
f787aea
 
21fc81d
4be0570
21fc81d
 
 
 
 
 
4be0570
21fc81d
f787aea
 
 
21fc81d
f787aea
 
 
 
 
 
21fc81d
f787aea
21fc81d
4be0570
2c71b00
 
4be0570
2c71b00
4be0570
2c71b00
4be0570
2c71b00
4be0570
2c71b00
4be0570
2c71b00
4be0570
2c71b00
4be0570
2c71b00
4be0570
 
 
 
 
 
 
 
f787aea
21fc81d
 
 
 
f787aea
 
21fc81d
f787aea
0c0cae7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
import random
import json
import os
from datetime import datetime

MEMORIA_FILE = "memoria_nuti.json"
PERFIL_FILE = "perfil_usuario.json"  # Archivo donde se guarda info del usuario

# --- Funciones de carga y guardado --- #
def cargar_memoria():
    if os.path.exists(MEMORIA_FILE):
        with open(MEMORIA_FILE, "r", encoding="utf-8") as f:
            return json.load(f)
    return {}

def guardar_memoria(memoria):
    with open(MEMORIA_FILE, "w", encoding="utf-8") as f:
        json.dump(memoria, f, ensure_ascii=False, indent=2)

def obtener_perfil_usuario():
    """Lee condición alimenticia y alergias desde el perfil."""
    if os.path.exists(PERFIL_FILE):
        with open(PERFIL_FILE, "r", encoding="utf-8") as f:
            perfil = json.load(f)
            return {
                "condicion": perfil.get("condicion", "").lower(),
                "alergias": perfil.get("alergias", "").lower()
            }
    return {"condicion": "", "alergias": ""}

# --- Temas clave --- #
TEMAS = {
    "agua": [
        "El agua regula todo tu cuerpo 💧: digestión, energía y concentración. Trata de tomar un vaso cada hora.",
        "Si te cuesta beber agua sola, puedes agregarle pepino, menta o rodajas de limón. 🍋",
        "Mantenerte hidratado también mejora el ánimo y la piel."
    ],
    "desayuno": [
        "El desayuno activa tu metabolismo 🌞. Prueba algo con proteína, como yogurt o huevo, más fruta y avena.",
        "Saltarte el desayuno puede afectar tu energía y concentración, especialmente si estás en crecimiento.",
        "Empieza el día con alimentos reales, no procesados: te sentirás con más claridad mental."
    ],
    "ansiedad": [
        "Si comes por ansiedad, prueba algo que te relaje sin comer: respiraciones lentas, música suave o caminar 5 minutos. 🌿",
        "A veces el hambre emocional busca consuelo, no comida. Haz una pausa antes de decidir.",
        "Tener un snack saludable preparado (como nueces o plátano) puede ayudarte a no comer impulsivamente."
    ],
    "peso": [
        "No te enfoques solo en el número de la báscula. Lo que importa es cómo te sientes y tu energía. ❤️",
        "Bajar o subir de peso de forma saludable requiere constancia, no perfección. Paso a paso.",
        "Tu cuerpo cambia contigo: aprende a escucharlo, no a pelear con él."
    ],
    "ejercicio": [
        "Moverte aunque sea 10 minutos al día ya mejora tu circulación y tu humor. 💪",
        "Combinar movimiento y buena comida potencia los resultados, no te castigues si un día descansas.",
        "Después de entrenar, hidrátate y come algo con proteína, te ayudará a recuperarte."
    ]
}

MENSAJES_BASE = [
    "Tu cuerpo te acompaña siempre, cuídalo con cariño y paciencia. 💚",
    "Cada día que eliges comer mejor, te estás eligiendo a ti. 🌱",
    "No busques comer perfecto, busca sentirte bien contigo y con tu cuerpo.",
    "Pequeños hábitos constantes crean grandes resultados. 🌟"
]

# --- Respuesta inteligente y contextual --- #
def buscar_respuesta(pregunta, historial):
    pregunta = pregunta.lower().strip()
    memoria = cargar_memoria()
    perfil = obtener_perfil_usuario()
    condicion = perfil["condicion"]
    alergias = perfil["alergias"]

    usuario = "default_user"
    if usuario not in memoria:
        memoria[usuario] = {"historial": [], "temas_previos": []}

    historial_usuario = memoria[usuario]["historial"]
    temas_previos = memoria[usuario]["temas_previos"]

    # Detectar tema principal
    tema_detectado = None
    for tema in TEMAS:
        if tema in pregunta:
            tema_detectado = tema
            break

    # Generar respuesta base
    if tema_detectado:
        respuesta_base = random.choice(TEMAS[tema_detectado])
        respuesta = f"{respuesta_base} Además, recuerda que cada pequeño paso que das cuenta. 💪"
        temas_previos.append(tema_detectado)
    else:
        if historial_usuario:
            ultimo_tema = temas_previos[-1] if temas_previos else "alimentación"
            respuesta = (
                f"Sobre lo que mencionaste antes acerca de {ultimo_tema}, "
                f"creo que podrías intentar algo nuevo: {random.choice(TEMAS.get(ultimo_tema, MENSAJES_BASE))}"
            )
        else:
            respuesta = random.choice(MENSAJES_BASE)

    # --- Ajustes personalizados según condición --- #
    if condicion:
        if "diabet" in condicion:
            respuesta += "\n\n💡 Como tienes diabetes, controla los azúcares simples y elige frutas de bajo índice glucémico."
        elif "hipertens" in condicion:
            respuesta += "\n\n💡 Consejo para tu hipertensión: modera la sal y los alimentos procesados."
        elif "lactosa" in condicion:
            respuesta += "\n\n🥛 Ojo con los lácteos: elige sin lactosa o bebidas vegetales."
        elif "celia" in condicion or "gluten" in condicion:
            respuesta += "\n\n🌾 Evita el gluten. Prefiere avena sin gluten, arroz o quinoa."
        elif "anemia" in condicion:
            respuesta += "\n\n🥬 Agrega alimentos ricos en hierro como lentejas, espinacas y carne magra."
        elif "colesterol" in condicion:
            respuesta += "\n\n❤️ Reduce frituras y elige aguacate, nueces y aceite de oliva."
        else:
            respuesta += f"\n\n🤖 Estoy tomando en cuenta tu condición: {condicion}."

    # --- Ajustes adicionales según alergias --- #
    if alergias:
        alergias_lista = [a.strip() for a in alergias.split(",")]
        respuesta += "\n\n⚠️ También recordaré tus alergias para evitar riesgos: "
        respuesta += ", ".join(alergias_lista) + "."
        respuesta += "\nTen cuidado con etiquetas de productos y avísame si notas alguna reacción."

    # Guardar historial
    historial_usuario.append({
        "fecha": str(datetime.now()),
        "pregunta": pregunta,
        "respuesta": respuesta
    })
    memoria[usuario]["historial"] = historial_usuario
    memoria[usuario]["temas_previos"] = temas_previos
    guardar_memoria(memoria)

    return respuesta