diff --git a/backend/data_manager_v2.py b/backend/data_manager_v2.py index 0456130..29a63e9 100644 --- a/backend/data_manager_v2.py +++ b/backend/data_manager_v2.py @@ -106,12 +106,50 @@ CAMPANIAS = [ ('⛱️ Me interesa el programa de Refrigeración comercial', 'TERC', '266', 'Lima', 'Sabado', 'Pauta_wsp', '2026-05-15', '2026-08-30'), ('¡Hola! Vengo de su web, quiero saber', 'TEAC', '0', 'Lima', '-', 'Web_Whatsapp', '2025-11-01', '2026-12-31'), ] +# Cache en memoria de las campañas leídas de Supabase +_CAMPANIAS_CACHE = None +def _campanias_supabase(): + """Lee las campañas desde la tabla 'campanias' de Supabase. + Si falla o está vacía, cae a la lista hardcodeada CAMPANIAS como respaldo.""" + global _CAMPANIAS_CACHE + if _CAMPANIAS_CACHE is not None: + return _CAMPANIAS_CACHE + url = os.getenv("CARTERA_URL") or os.getenv("SUPABASE_PAUTA_URL", "") + key = os.getenv("CARTERA_KEY") or os.getenv("SUPABASE_PAUTA_KEY", "") + t = os.getenv("SUPABASE_TABLA_CAMPANIAS", "campanias") + out = [] + if url and key: + try: + r = requests.get( + f"{url}/rest/v1/{t}", + params={"select": "frase_busqueda,cargo,codigo,sede,dia,origen,fecha_inicio,fecha_fin"}, + headers={"apikey": key, "Authorization": f"Bearer {key}"}, timeout=30) + r.raise_for_status() + for row in r.json(): + frase = str(row.get("frase_busqueda") or "") + if not frase: + continue + out.append(( + frase, str(row.get("cargo") or ""), str(row.get("codigo") or ""), + str(row.get("sede") or ""), str(row.get("dia") or ""), + str(row.get("origen") or ""), + str(row.get("fecha_inicio") or "")[:10], + str(row.get("fecha_fin") or "")[:10], + )) + except Exception as e: + print(f"[_campanias_supabase] {e}") + if not out: + print("[_campanias_supabase] sin datos de Supabase -> uso lista hardcodeada") + out = list(CAMPANIAS) + _CAMPANIAS_CACHE = out + return out + def _values_sql(): """Construye el bloque VALUES (...) del mapa de campañas para el JOIN.""" filas = [] - for frase, cargo, codigo, sede, dia, origen, fi, ff in CAMPANIAS: + for frase, cargo, codigo, sede, dia, origen, fi, ff in _campanias_supabase(): f = frase.replace("'", "''") filas.append(f"('{f}','{cargo}','{codigo}','{sede}','{dia}','{origen}','{fi}','{ff}')") return ",\n".join(filas)