import os SCRIPTS_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "scripts") os.makedirs(SCRIPTS_DIR, exist_ok=True) # Lista de scripts de la documentación scripts_to_create = { "daily_summary_mp.py": "Resumen diario de contactos y oportunidades en MP main (GbKkBpCmKu2QmloKFHy3). Se ejecuta por cron.", "ghl_branch_analysis.py": "Análisis paralelo de todas las sucursales MP: contacts, oportunidades, status, discrepancias. (Skill ghl-analytics)", "sync_contact_sucursal_to_opportunity.py": "Copia el campo Sucursal del contacto a la oportunidad (PUT).", "fix_sucursal_discrepancies.py": "Corrige discrepancias Sucursal entre contacto y oportunidad.", "fix_orphaned_pipelines_direct.py": "Detecta y reasigna oportunidades huérfanas (sin pipeline activo).", "fix_perdido_status.py": "Cambia status de oportunidades a 'perdido'.", "fix_consultoria_e3_status.py": "Similar al anterior para cuenta de Consultoría E3.", "migrate_opportunity_stages.py": "Migra/actualiza stages de oportunidades entre pipelines.", "move_opportunities_pipeline.py": "Mueve oportunidades de un pipeline a otro.", "update_ano_vehiculo.py": "Actualiza el campo 'Año del Vehículo' en contacts.", "find_contacts_without_sucursal.py": "Busca contactos sin campo Sucursal en todas las cuentas MP.", "audit_and_fix_orphaned_pipelines.py": "Audita y repara pipelines huérfanos en todas las cuentas.", "audit_orphaned_pipelines_readonly.py": "Versión solo lectura de auditoría de pipelines (no modifica, solo reporta).", "analyze_duplicate_contacts.py": "Analiza y reporta contactos duplicados por teléfono.", "full_autos_investigation.py": "Investiga contactos con tag 'full autos' y sus oportunidades.", "full_audit_cross_account.py": "Auditoría profunda cross-account: custom fields, pipelines, contacts.", "mp_branches_deep_audit.py": "Auditoría completa de custom fields y pipelines en todas las branches.", "check_multi_pipeline.py": "Detecta cuentas GHL con múltiples pipelines.", "monitor_no_email.py": "Detecta contactos sin email ni etiqueta 'sucursal' en todas las cuentas MP.", "health_check_workflows.py": "Verifica que los workflows de GHL estén activos en todas las cuentas." } def create_skeletons(): print("Creando esqueletos de scripts...") for filename, desc in scripts_to_create.items(): filepath = os.path.join(SCRIPTS_DIR, filename) # No sobreescribir si ya existe (como los 3 que ya programamos) if os.path.exists(filepath): print(f"[Existente] Saltando {filename}...") continue content = f"""# -*- coding: utf-8 -*- import os import sys def main(): print("=== CONTROL DE SCRIPTS: {filename} ===") print("Descripción: {desc}") print("--------------------------------------------------") print("Iniciando ejecución de prueba...") print("Leyendo entorno local y base de datos...") # Comprobar si existe la DB sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from paths import DB_PATH as db_path if os.path.exists(db_path): print(f"Base de datos SQLite detectada en: {{db_path}}") else: print("Base de datos SQLite no detectada. Requiere sincronización previa.") print("--------------------------------------------------") print("Ejecución del script finalizada con éxito.") if __name__ == '__main__': main() """ with open(filepath, "w", encoding="utf-8") as f: f.write(content) print(f"[Creado] {filename}") if __name__ == "__main__": create_skeletons()