# diag_diff_asignados_diana13.py
# Compara las 2 fuentes de "leads asignados" para DIANA el dia 13/08/2026:
#   A = traer_leads_asignados       (la de la TARJETA)
#   B = traer_asignacion_respuesta  (la del GRAFICO)
# Muestra los telefonos de cada una y cuales difieren.
from datetime import datetime
from data_manager_v2 import DataManager

ANO, MES, DIA = 2026, 8, 13
NOMBRE = "DIANA"
dm = DataManager()

def _d(v): return v.date() if isinstance(v, datetime) else None

A = {}   # telefono -> hora asignacion (TARJETA)
for r in dm.traer_leads_asignados():
    if NOMBRE not in (r.get("user_name") or "").upper(): continue
    f = r.get("created_at")
    if _d(f) and f.year==ANO and f.month==MES and f.day==DIA:
        A[str(r.get("telefono") or "").strip()] = f

B = {}   # telefono -> hora asignacion (GRAFICO)
for r in dm.traer_asignacion_respuesta():
    if NOMBRE not in (r.get("user_name") or "").upper(): continue
    f = r.get("created_at")
    if _d(f) and f.year==ANO and f.month==MES and f.day==DIA:
        B[str(r.get("telefono") or "").strip()] = f

print(f"\n=== DIANA dia {DIA} — comparacion de fuentes ===\n")
print(f"A) TARJETA (traer_leads_asignados):      {len(A)} telefonos")
print(f"B) GRAFICO (traer_asignacion_respuesta): {len(B)} telefonos\n")

print("Telefonos en A (tarjeta):")
for t in sorted(A): print(f"   {t}  asignado {A[t].strftime('%H:%M:%S')}")
print("\nTelefonos en B (grafico):")
for t in sorted(B): print(f"   {t}  asignado {B[t].strftime('%H:%M:%S')}")

solo_A = set(A) - set(B)
solo_B = set(B) - set(A)
print("\n--- DIFERENCIAS ---")
if solo_A: print(f"  Solo en TARJETA (A), no en grafico: {sorted(solo_A)}")
if solo_B: print(f"  Solo en GRAFICO (B), no en tarjeta: {sorted(solo_B)}")
if not solo_A and not solo_B:
    print("  Los telefonos son IDENTICOS. La diferencia debe ser cache (reinicia backend).")
