#!/usr/bin/env ruby # frozen_string_literal: true # tools/orquestador/ejemplo_modulos_optimizados.rb # ================================================ # Ejemplo de uso de los nuevos módulos optimizados del orquestador # Demuestra cómo usar las funcionalidades centralizadas y reutilizables require_relative 'lib/dashboard_core' # ============================================================================ # EJEMPLO 1: GESTIÓN COMPLETA DE HITOS CON HitosManager # ============================================================================ def ejemplo_gestion_hitos puts "🎯 EJEMPLO 1: GESTIÓN COMPLETA DE HITOS" puts "=" * 60 # 1. Crear instancia del manager hitos_manager = DashboardCore::HitosManager.new puts "✅ HitosManager creado" # 2. Cargar hitos del dashboard hitos = hitos_manager.cargar_hitos puts "📊 Hitos cargados: #{hitos.size} hitos encontrados" # 3. Buscar hitos específicos puts "\n🔍 BUSQUEDA DE HITOS:" # Buscar por ID hito_f05001 = hitos_manager.buscar_hito_por_id('f05001') if hito_f05001 puts " • Por ID 'f05001': #{hito_f05001[:titulo]}" end # Buscar por fase hitos_fase5 = hitos_manager.buscar_hitos_por_fase(5) puts " • Por fase 5: #{hitos_fase5.size} hitos" # Buscar por estado hitos_pendientes = hitos_manager.buscar_hitos_por_estado('pending') puts " • Pendientes: #{hitos_pendientes.size} hitos" # 4. Estadísticas puts "\n📈 ESTADÍSTICAS:" stats = hitos_manager.estadisticas stats[:por_estado].each do |estado, cantidad| estado_info = DashboardCore::ESTADOS_VALIDOS[estado] || DashboardCore::ESTADOS_VALIDOS['pending'] puts " • #{estado_info[:nombre]}: #{cantidad}" end # 5. Reporte detallado puts "\n📋 REPORTE DETALLADO:" reporte = hitos_manager.reporte_detallado puts reporte.lines.first(10).join # Mostrar primeras 10 líneas # 6. Verificar duplicados puts "\n🔍 VERIFICACIÓN DE DUPLICADOS:" resultado = hitos_manager.verificar_duplicados puts resultado true end # ============================================================================ # EJEMPLO 2: GESTIÓN DE ESTADOS CON EstadosManager # ============================================================================ def ejemplo_gestion_estados puts "\n📊 EJEMPLO 2: GESTIÓN DE ESTADOS DE HITOS" puts "=" * 60 # 1. Crear instancia del manager estados_manager = DashboardCore::EstadosManager.new puts "✅ EstadosManager creado" # 2. Listar estados disponibles puts "\n🎨 ESTADOS DISPONIBLES:" estados_disponibles = estados_manager.listar_estados_disponibles estados_disponibles.each do |estado| puts " • #{estado[:codigo]}: #{estado[:nombre]} (#{estado[:color]})" end # 3. Cargar y analizar estados actuales puts "\n📈 ANÁLISIS DE ESTADOS ACTUALES:" estados_manager.cargar_estados # 4. Obtener hitos por estado hitos_pendientes = estados_manager.hitos_pendientes hitos_en_progreso = estados_manager.hitos_en_progreso hitos_completados = estados_manager.hitos_completados puts " • Pendientes: #{hitos_pendientes.size} hitos" puts " • En progreso: #{hitos_en_progreso.size} hitos" puts " • Completados: #{hitos_completados.size} hitos" # 5. Reporte de estados puts "\n📋 REPORTE DE ESTADOS:" reporte = estados_manager.reporte_estados puts reporte.lines.first(15).join # Mostrar primeras 15 líneas # 6. Progreso por fase puts "\n📁 PROGRESO POR FASE:" progreso_fases = estados_manager.progreso_por_fase progreso_fases.each do |fase, datos| puts " • Fase #{fase}: #{datos[:progreso]}% (#{datos[:completados]}/#{datos[:total]} completados)" end true end # ============================================================================ # EJEMPLO 3: VERIFICACIÓN CON VerificacionManager # ============================================================================ def ejemplo_verificacion puts "\n🔍 EJEMPLO 3: VERIFICACIÓN COMPLETA DEL DASHBOARD" puts "=" * 60 # 1. Crear instancia del manager verificacion_manager = DashboardCore::VerificacionManager.new puts "✅ VerificacionManager creado" # 2. Verificación completa puts "\n🏗️ VERIFICANDO ESTRUCTURA:" resultado_estructura = verificacion_manager.verificar_estructura if resultado_estructura[:exito] puts " ✅ Estructura correcta" else puts " ❌ Problemas en estructura:" resultado_estructura[:problemas].each do |problema| puts " • #{problema}" end end # 3. Verificación de hitos puts "\n🎯 VERIFICANDO HITOS:" resultado_hitos = verificacion_manager.verificar_hitos puts " • Total hitos: #{resultado_hitos[:detalles][:total_hitos]}" puts " • Hitos válidos: #{resultado_hitos[:detalles][:hitos_validos]}" puts " • Duplicados: #{resultado_hitos[:detalles][:duplicados]}" # 4. Análisis detallado de hitos puts "\n📋 ANÁLISIS DETALLADO DE HITOS:" analisis = verificacion_manager.analizar_hitos_detallado if analisis puts " • Total: #{analisis[:total]} hitos" puts " • Por estado: #{analisis[:por_estado].size} estados diferentes" puts " • Por fase: #{analisis[:por_fase].size} fases identificadas" end # 5. Generar reporte de verificación puts "\n📄 GENERANDO REPORTE DE VERIFICACIÓN..." reporte = verificacion_manager.generar_reporte_verificacion puts " ✅ Reporte generado (#{reporte.lines.count} líneas)" true end # ============================================================================ # EJEMPLO 4: VISTA PREVIA CON VistaPreviaManager # ============================================================================ def ejemplo_vista_previa puts "\n👁️ EJEMPLO 4: VISTA PREVIA MULTI-MODO" puts "=" * 60 # 1. Crear instancia del manager vista_manager = DashboardCore::VistaPreviaManager.new puts "✅ VistaPreviaManager creado" # 2. Mostrar modos disponibles puts "\n🔄 MODOS DISPONIBLES:" DashboardCore::VistaPreviaManager::MODOS_VISTA_PREVIA.each do |modo, info| puts " • #{modo}: #{info[:descripcion]}" end # 3. Ejemplos de diferentes modos puts "\n📊 EJEMPLOS DE SALIDA:" # Modo rápido puts "\n⚡ MODO RÁPIDO:" begin vista_manager.mostrar_vista_previa('rapido') rescue => e puts " Error: #{e.message}" end # Modo hitos puts "\n🎯 MODO HITOS (primeros 3 hitos):" begin # Solo mostramos parte del output para no saturar puts " [Mostrando resumen de hitos...]" rescue => e puts " Error: #{e.message}" end # Modo métricas puts "\n📈 MODO MÉTRICAS:" begin vista_manager.mostrar_vista_previa('metricas') rescue => e puts " Error: #{e.message}" end true end # ============================================================================ # EJEMPLO 5: USO DE MÓDULOS DE UTILIDAD # ============================================================================ def ejemplo_modulos_utilidad puts "\n🛠️ EJEMPLO 5: MÓDULOS DE UTILIDAD" puts "=" * 60 # 1. Generador de IDs puts "\n🔢 GENERADOR DE IDs:" nuevo_id = DashboardCore::HitoIdGenerator.generar_id(5, 6) puts " • Nuevo ID para fase 5, secuencia 6: #{nuevo_id}" info_id = DashboardCore::HitoIdGenerator.parsear_id('f05001') if info_id puts " • Parsear 'f05001': Fase #{info_id[:fase]}, Secuencia #{info_id[:secuencia]}" end es_valido = DashboardCore::HitoIdGenerator.es_valido?('f05001') puts " • 'f05001' válido?: #{es_valido ? '✅ Sí' : '❌ No'}" es_valido_mal = DashboardCore::HitoIdGenerator.es_valido?('BKP02') puts " • 'BKP02' válido?: #{es_valido_mal ? '✅ Sí' : '❌ No'}" # 2. Validaciones puts "\n✅ VALIDACIONES:" estado_valido = DashboardCore::Validator.validar_estado('in-progress') puts " • Estado 'in-progress' válido?: #{estado_valido ? '✅ Sí' : '❌ No'}" estado_invalido = DashboardCore::Validator.validar_estado('invalid-state') puts " • Estado 'invalid-state' válido?: #{estado_invalido ? '✅ Sí' : '❌ No'}" id_valido = DashboardCore::Validator.validar_id_hito('f05001') puts " • ID 'f05001' válido?: #{id_valido ? '✅ Sí' : '❌ No'}" fase_valida = DashboardCore::Validator.validar_fase('fase5') puts " • Fase 'fase5' válida?: #{fase_valida ? '✅ Sí' : '❌ No'}" # 3. Gestión de fases puts "\n📁 GESTIÓN DE FASES:" fases_disponibles = DashboardCore::FaseManager.fases_disponibles puts " • Fases disponibles: #{fases_disponibles.join(', ')}" hitos_fase5 = DashboardCore::FaseManager.hitos_por_fase('fase5') puts " • Hitos predefinidos para fase 5: #{hitos_fase5.size}" # 4. Gestión de backups puts "\n💾 GESTIÓN DE BACKUPS:" backup_dir = DashboardCore::CONFIG[:backups_dir] backups = DashboardCore::BackupManager.listar_backups(backup_dir) puts " • Backups encontrados: #{backups.size}" true end # ============================================================================ # EJEMPLO 6: FLUJO DE TRABAJO COMPLETO # ============================================================================ def ejemplo_flujo_trabajo_completo puts "\n🔄 EJEMPLO 6: FLUJO DE TRABAJO COMPLETO" puts "=" * 60 puts "Este ejemplo muestra un flujo de trabajo típico:" puts "1. 📋 Verificar estado actual" puts "2. 🎯 Agregar nuevos hitos" puts "3. 📊 Actualizar estados" puts "4. 🔍 Verificar cambios" puts "5. 👁️ Vista previa final" puts "6. 💾 Crear backup" puts "\n📋 PASO 1: Verificar estado actual" verificacion = DashboardCore::VerificacionManager.new resultado = verificacion.verificar_completo puts " • Verificación completada: #{resultado ? '✅' : '❌'}" puts "\n🎯 PASO 2: Agregar nuevos hitos" hitos_manager = DashboardCore::HitosManager.new # Nota: En producción, se usaría hitos_manager.agregar_hitos_fase('fase5') puts " • Listo para agregar hitos de fase 5" puts "\n📊 PASO 3: Actualizar estados" estados_manager = DashboardCore::EstadosManager.new # Nota: En producción, se usaría estados_manager.actualizar_estado_hito('f05001', 'in-progress') puts " • Listo para actualizar estados" puts "\n🔍 PASO 4: Verificar cambios" puts " • Verificación post-cambios lista" puts "\n👁️ PASO 5: Vista previa final" vista_manager = DashboardCore::VistaPreviaManager.new puts " • Vista previa lista para ejecutar" puts "\n💾 PASO 6: Crear backup" base = DashboardCore::Base.new backup_file = base.crear_backup('flujo_completo') puts " • Backup creado: #{File.basename(backup_file)}" puts "\n✅ FLUJO DE TRABAJO COMPLETADO" true end # ============================================================================ # MENÚ PRINCIPAL # ============================================================================ def mostrar_menu puts "\n" + "=" * 60 puts "🎯 EJEMPLOS DE MÓDULOS OPTIMIZADOS - ORQUESTADOR P2601" puts "=" * 60 puts puts "Seleccione un ejemplo para ejecutar:" puts " 1. 🎯 Gestión completa de hitos (HitosManager)" puts " 2. 📊 Gestión de estados (EstadosManager)" puts " 3. 🔍 Verificación completa (VerificacionManager)" puts " 4. 👁️ Vista previa multi-modo (VistaPreviaManager)" puts " 5. 🛠️ Módulos de utilidad (Generadores, Validaciones, etc.)" puts " 6. 🔄 Flujo de trabajo completo" puts " 7. 🚀 Ejecutar todos los ejemplos" puts " 0. ❌ Salir" puts print "Opción: " end def ejecutar_ejemplo(opcion) case opcion when '1' ejemplo_gestion_hitos when '2' ejemplo_gestion_estados when '3' ejemplo_verificacion when '4' ejemplo_vista_previa when '5' ejemplo_modulos_utilidad when '6' ejemplo_flujo_trabajo_completo when '7' puts "\n🚀 EJECUTANDO TODOS LOS EJEMPLOS..." puts "=" * 60 ejemplo_gestion_hitos ejemplo_gestion_estados ejemplo_verificacion ejemplo_vista_previa ejemplo_modulos_utilidad ejemplo_flujo_trabajo_completo puts "\n✅ TODOS LOS EJEMPLOS COMPLETADOS" when '0' puts "👋 Saliendo..." return false else puts "❌ Opción no válida" end true end # ============================================================================ # PROGRAMA PRINCIPAL # ============================================================================ if __FILE__ == $0 begin puts "🔧 CARGANDO MÓDULOS OPTIMIZADOS..." puts "=" * 60 # Verificar que los módulos estén disponibles require_relative 'lib/dashboard_core' puts "✅ Módulo DashboardCore cargado" # Verificar acceso al dashboard base = DashboardCore::Base.new begin contenido = base.leer_dashboard hitos = base.extraer_hitos(contenido) puts "✅ Dashboard cargado: #{hitos.size} hitos encontrados" rescue => e puts "⚠️ Advertencia: #{e.message}" puts " Algunos ejemplos pueden no funcionar correctamente" end # Menú interactivo continuar = true while continuar mostrar_menu opcion = gets.chomp continuar = ejecutar_ejemplo(opcion) end puts "\n" + "=" * 60 puts "📚 RECURSOS ADICIONALES:" puts "=" * 60 puts "• Documentación completa: tools/orquestador/README_OPTIMIZADO.md" puts "• Script de migración: tools/orquestador/migrar_ids_hitos.rb" puts "• Dashboard en producción: https://ns8.frlr.utn.edu.ar/bitacoras/p2601" puts "• Dashboard estático: https://ns8.frlr.utn.edu.ar/P2601/" end end