Actualizar backend/data_manager_v2.py
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
# backend/data_manager.py (v2 - reescrito completo)
|
# backend/data_manager.py (v2 - reescrito completo)
|
||||||
"""Capa de acceso a datos del módulo LEADS."""
|
"""Capa de acceso a datos del módulo LEADS."""
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
import requests
|
import requests
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
@@ -106,15 +107,18 @@ CAMPANIAS = [
|
|||||||
('⛱️ Me interesa el programa de Refrigeración comercial', 'TERC', '266', 'Lima', 'Sabado', 'Pauta_wsp', '2026-05-15', '2026-08-30'),
|
('⛱️ 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'),
|
('¡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
|
# Cache en memoria de las campañas leídas de Supabase (expira cada 15 min,
|
||||||
|
# igual que el resto del dashboard). Así las campañas nuevas aparecen solas
|
||||||
|
# sin reiniciar el servidor.
|
||||||
_CAMPANIAS_CACHE = None
|
_CAMPANIAS_CACHE = None
|
||||||
|
_CAMPANIAS_TS = 0.0
|
||||||
|
_CAMPANIAS_TTL = 900 # 15 min
|
||||||
def _campanias_supabase():
|
def _campanias_supabase():
|
||||||
"""Lee las campañas desde la tabla 'campanias' de 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."""
|
Si falla o está vacía, cae a la lista hardcodeada CAMPANIAS como respaldo.
|
||||||
global _CAMPANIAS_CACHE
|
El cache expira cada 15 min para tomar campañas nuevas sin reiniciar."""
|
||||||
if _CAMPANIAS_CACHE is not None:
|
global _CAMPANIAS_CACHE, _CAMPANIAS_TS
|
||||||
|
if _CAMPANIAS_CACHE is not None and (time.time() - _CAMPANIAS_TS < _CAMPANIAS_TTL):
|
||||||
return _CAMPANIAS_CACHE
|
return _CAMPANIAS_CACHE
|
||||||
url = os.getenv("CARTERA_URL") or os.getenv("SUPABASE_PAUTA_URL", "")
|
url = os.getenv("CARTERA_URL") or os.getenv("SUPABASE_PAUTA_URL", "")
|
||||||
key = os.getenv("CARTERA_KEY") or os.getenv("SUPABASE_PAUTA_KEY", "")
|
key = os.getenv("CARTERA_KEY") or os.getenv("SUPABASE_PAUTA_KEY", "")
|
||||||
@@ -144,8 +148,17 @@ def _campanias_supabase():
|
|||||||
print("[_campanias_supabase] sin datos de Supabase -> uso lista hardcodeada")
|
print("[_campanias_supabase] sin datos de Supabase -> uso lista hardcodeada")
|
||||||
out = list(CAMPANIAS)
|
out = list(CAMPANIAS)
|
||||||
_CAMPANIAS_CACHE = out
|
_CAMPANIAS_CACHE = out
|
||||||
|
_CAMPANIAS_TS = time.time()
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
def invalidar_campanias_cache():
|
||||||
|
"""Vacía el cache de campañas para forzar re-lectura de Supabase en la
|
||||||
|
próxima llamada. Se invoca desde refrescar_todo() cada 15 min."""
|
||||||
|
global _CAMPANIAS_CACHE, _CAMPANIAS_TS
|
||||||
|
_CAMPANIAS_CACHE = None
|
||||||
|
_CAMPANIAS_TS = 0.0
|
||||||
|
|
||||||
def _values_sql():
|
def _values_sql():
|
||||||
"""Construye el bloque VALUES (...) del mapa de campañas para el JOIN."""
|
"""Construye el bloque VALUES (...) del mapa de campañas para el JOIN."""
|
||||||
filas = []
|
filas = []
|
||||||
|
|||||||
Reference in New Issue
Block a user