Initial commit - dashboard leads
This commit is contained in:
53
backend/diag_comparar_asignados_diana.py
Normal file
53
backend/diag_comparar_asignados_diana.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# 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)}")
|
||||
Reference in New Issue
Block a user