Files
dtic-DIIAA/tools/orquestador/ejemplo_modulos_optimizados.rb
T

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