407 lines
13 KiB
Ruby
407 lines
13 KiB
Ruby
#!/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
|