Primer commit

This commit is contained in:
2026-05-30 14:31:19 -06:00
commit a35d26fac0
277 changed files with 265240 additions and 0 deletions
+80
View File
@@ -0,0 +1,80 @@
#!/usr/bin/env python3
"""Report required custom-field schema health by GHL location."""
import argparse
from common import SchemaResolver, select_accounts
CONTACT_FIELDS = [
"sucursal",
"tienda",
"canal_origen",
"fuente_prospecto",
"marca_vehiculo",
"version_vehiculo",
"ano_vehiculo",
]
OPPORTUNITY_FIELDS = [
"sucursal",
"tienda",
"canal_origen",
"fuente_prospecto",
"vehiculo",
]
def print_section(title, resolved, missing, show_ids):
status = "OK" if not missing else "FALTAN"
print(f" {title}: {status}")
if show_ids:
for field_name, field_id in resolved.items():
print(f" OK {field_name}: {field_id}")
elif resolved:
print(f" OK: {', '.join(resolved)}")
if missing:
print(f" Faltantes: {', '.join(missing)}")
def main():
parser = argparse.ArgumentParser(description="Reporte de salud de campos personalizados por sucursal.")
parser.add_argument("--location", help="Location ID especifica")
parser.add_argument("--all", action="store_true", help="Procesa todas las sucursales")
parser.add_argument("--include-main", action="store_true", help="Incluye la cuenta principal")
parser.add_argument("--show-ids", action="store_true", help="Muestra IDs dinamicos resueltos")
args = parser.parse_args()
accounts = select_accounts(args.location, args.all, args.include_main)
resolver = SchemaResolver()
locations_ok = 0
locations_with_missing = 0
print("=== REPORTE DE SALUD DE CUSTOM FIELDS MP ===")
print(f"Locations evaluadas: {len(accounts)}")
print("Regla: cada schema se resuelve con /objects/ y luego /objects/{objectKey}.\n")
for account in accounts:
location_id = account["location_id"]
token = account["token"]
name = account.get("nombre") or location_id
print(f"{name} ({location_id})")
contact_resolved, contact_missing = resolver.resolve_required(token, location_id, "contact", CONTACT_FIELDS)
opp_resolved, opp_missing = resolver.resolve_required(token, location_id, "opportunity", OPPORTUNITY_FIELDS)
print_section("Contactos", contact_resolved, contact_missing, args.show_ids)
print_section("Oportunidades", opp_resolved, opp_missing, args.show_ids)
if contact_missing or opp_missing:
locations_with_missing += 1
else:
locations_ok += 1
print("-" * 90)
print("RESUMEN")
print(f" Locations OK: {locations_ok}")
print(f" Locations con faltantes: {locations_with_missing}")
if __name__ == "__main__":
main()