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