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
+73
View File
@@ -0,0 +1,73 @@
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()