Initial commit - dashboard leads
This commit is contained in:
51
backend/diag_matriculas_agosto_detalle.py
Normal file
51
backend/diag_matriculas_agosto_detalle.py
Normal file
@@ -0,0 +1,51 @@
|
||||
# diag_matriculas_agosto_detalle.py
|
||||
# Las 51 matriculas de AGOSTO 2026 (todos los asesores de los 8), con su
|
||||
# dsc_det_programa (detalle del programa) y grupo. Mismo criterio del dashboard:
|
||||
# dsc_vendedor de los 8, estado != ANU, fch_matricula en agosto.
|
||||
from datetime import datetime
|
||||
from collections import defaultdict, Counter
|
||||
import services as S
|
||||
import leads_logic as L
|
||||
|
||||
ANO, MES = 2026, 8
|
||||
|
||||
ase = S._asesores(); amap = ase["map"]
|
||||
|
||||
filas = []
|
||||
for m in S._matriculas_crudas():
|
||||
vend = S._norm_asesor(m.get("dsc_vendedor"), amap)
|
||||
if not vend:
|
||||
continue
|
||||
estado = str(m.get("estado_matricula") or "").strip().upper()
|
||||
if estado == "ANU":
|
||||
continue
|
||||
fm = L._to_date(m.get("fch_matricula"))
|
||||
if not fm or fm.year != ANO or fm.month != MES:
|
||||
continue
|
||||
filas.append({
|
||||
"vendedor": vend,
|
||||
"num_matricula": m.get("num_matricula"),
|
||||
"estado": estado,
|
||||
"fch": fm.strftime("%d/%m/%Y"),
|
||||
"dsc_programa": str(m.get("dsc_programa") or ""),
|
||||
"dsc_det": str(m.get("dsc_promocion") or ""), # dsc_det_programa
|
||||
"grupo": L.grupo_programa_curso(m.get("dsc_programa")),
|
||||
})
|
||||
|
||||
print(f"\n=== MATRICULAS AGOSTO {ANO} — todos los asesores (total: {len(filas)}) ===\n")
|
||||
print(f"{'#':3} {'vendedor':16} {'estado':6} {'fch':11} {'grupo':10} dsc_det_programa")
|
||||
print("-"*100)
|
||||
for i, f in enumerate(sorted(filas, key=lambda x: (x['grupo'], x['vendedor'])), 1):
|
||||
print(f"{i:3} {f['vendedor'][:16]:16} {f['estado']:6} {f['fch']:11} {f['grupo']:10} {f['dsc_det'][:45]}")
|
||||
|
||||
print("-"*100)
|
||||
print("\n=== RESUMEN por dsc_det_programa (cuantas matriculas de cada uno) ===")
|
||||
cnt = Counter(f["dsc_det"] for f in filas)
|
||||
for prog, n in sorted(cnt.items(), key=lambda x: -x[1]):
|
||||
print(f" {n:3} {prog}")
|
||||
|
||||
print("\n=== RESUMEN por GRUPO (debe cuadrar con la matriz del dashboard) ===")
|
||||
gr = Counter(f["grupo"] for f in filas)
|
||||
for g in ["TEAC","TERC","SEMINARIOS","OTROS"]:
|
||||
print(f" {g:12} {gr.get(g,0)}")
|
||||
print(f" {'TOTAL':12} {len(filas)}")
|
||||
Reference in New Issue
Block a user