# diag_webform.py — Compara WEB_FORMULARIO enero: datos_unificados vs cartera_junta (local xlsx). # Usa el export local para cartera (rapido) y baja solo enero de datos_unificados. import os, requests from datetime import datetime from dotenv import load_dotenv load_dotenv() SUP_URL = os.getenv("SUPABASE_URL"); SUP_KEY = os.getenv("SUPABASE_KEY") def _norm_tel(v): s = str(v or "") for x in ("+51","+"," ","-","(",")"): s=s.replace(x,"") s=s.strip() if not s or set(s)=={"0"}: return "" if s.isdigit() and len(s)<=6: return "" return s def _ene(v): for fmt in ("%d/%m/%Y","%Y-%m-%d"): try: d=datetime.strptime(str(v)[:10],fmt).date() return d.year==2026 and d.month==1 except: pass return False # datos_unificados WEB_FORMULARIO enero h={"apikey":SUP_KEY,"Authorization":f"Bearer {SUP_KEY}"} out=[]; desde=0 while True: r=requests.get(f"{SUP_URL}/rest/v1/datos_unificados", params={"select":"Telefono,Canal,Fechacreada","offset":str(desde),"limit":"1000"},headers=h,timeout=60) r.raise_for_status(); d=r.json() if not d: break out.extend(d) if len(d)<1000: break desde+=1000 du=[_norm_tel(r["Telefono"]) for r in out if str(r.get("Canal","")).upper()=="WEB_FORMULARIO" and _ene(r.get("Fechacreada"))] du=set(t for t in du if t) print("datos_unificados WEB_FORMULARIO enero (tel unicos):", len(du)) # cartera desde el excel local import openpyxl, glob xf=max(glob.glob("cartera_junta_export.xlsx"), default=None) wb=openpyxl.load_workbook("cartera_junta_export.xlsx", read_only=True); ws=wb.active rows=list(ws.iter_rows(values_only=True)); hdr=rows[0]; ci={h:i for i,h in enumerate(hdr)} tel_all=set(str(r[ci["telefono"]]).strip() for r in rows[1:]) # todos los tel de cartera tel_web_ene=set() for r in rows[1:]: if str(r[ci["canal"]]).strip().upper()=="WEB_FORMULARIO" and str(r[ci["fecha_creada"]])[:7]=="2026-01": tel_web_ene.add(str(r[ci["telefono"]]).strip()) print("cartera WEB_FORMULARIO enero (tel):", len(tel_web_ene)) falt_total=[t for t in du if t not in tel_all] falt_web=[t for t in du if t not in tel_web_ene] print(f"\nDe {len(du)} tel de datos_unificados enero:") print(f" NO estan en cartera por NINGUN canal: {len(falt_total)}") print(f" estan en cartera pero NO como WEB_FORMULARIO enero: {len(falt_web)-len(falt_total)}") print(" ejemplos NO en cartera:", falt_total[:10])