# diag_comparar_asignados_diana.py
# Compara, para DIANA en un mes, los asignados por dia entre:
#   FUENTE A = traer_leads_asignados (la de la TABLA de Otros General)
#   FUENTE B = traer_asignacion_respuesta (la de la GRAFICA de Vendedores)
# Muestra el conteo por dia y que telefonos difieren.
from datetime import datetime
from data_manager_v2 import DataManager

ANO, MES = 2026, 8
NOMBRE = "DIANA"

dm = DataManager()

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

# FUENTE A: tabla Otros General
A = {}   # dia -> set(telefonos)
for r in dm.traer_leads_asignados():
    nom = (r.get("user_name") or "")
    if NOMBRE not in nom.upper(): continue
    f = _to_date(r.get("created_at"))
    if not f or f.year!=ANO or f.month!=MES: continue
    A.setdefault(f.day, set()).add(str(r.get("telefono") or "").strip())

# FUENTE B: grafica Vendedores
B = {}   # dia -> set(telefonos)
for r in dm.traer_asignacion_respuesta():
    nom = (r.get("user_name") or "")
    if NOMBRE not in nom.upper(): continue
    f = _to_date(r.get("created_at"))
    if not f or f.year!=ANO or f.month!=MES: continue
    B.setdefault(f.day, set()).add(str(r.get("telefono") or "").strip())

dias = sorted(set(list(A.keys())+list(B.keys())))
print(f"\n=== DIANA — asignados por dia: TABLA(A) vs GRAFICA(B) — {MES}/{ANO} ===\n")
print(f"{'DIA':>4} {'TABLA(A)':>9} {'GRAFICA(B)':>11} {'DIF':>5}")
print("-"*34)
for d in dias:
    a=len(A.get(d,set())); b=len(B.get(d,set()))
    marca = "  <==" if a!=b else ""
    print(f"{d:>4} {a:>9} {b:>11} {a-b:>5}{marca}")

print(f"\n=== Detalle de los dias que DIFIEREN ===")
for d in dias:
    sa=A.get(d,set()); sb=B.get(d,set())
    if sa==sb: continue
    solo_A = sa - sb   # estan en tabla pero NO en grafica
    solo_B = sb - sa   # estan en grafica pero NO en tabla
    print(f"\n  DIA {d}:")
    if solo_A: print(f"    solo en TABLA (A), no en grafica: {sorted(solo_A)}")
    if solo_B: print(f"    solo en GRAFICA (B), no en tabla: {sorted(solo_B)}")
