# 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)}")