#!/usr/bin/env ruby # frozen_string_literal: true # tools/agregar_hitos_dashboard.rb — Script simple para agregar hitos al dashboard P2601 # ================================================================================ # Este script agrega hitos adicionales al dashboard P2601 de forma manual y controlada. # Es una versión simplificada que evita problemas de parsing complejo. require 'fileutils' # Hitos adicionales para agregar (formato simplificado) HITOS_ADICIONALES = <<~HTML
BKP02Pendiente
🔒 Backup Automático de VMs en Proxmox
Configurar backups automáticos VZDump programados para DC y SQL Server. Establecer retención de 7 días, almacenamiento en NAS/SMB compartido.
Remoto: ~2hRequiere acceso físico
DB02Pendiente
🗄️ Backup Automático de Base de Datos sysdasuten
Configurar jobs de SQL Server Agent para backup diario completo y log cada 15 minutos. Verificar restauración periódica en ambiente de pruebas.
Remoto: ~2hSQL Agent
MON01Pendiente
📊 Monitoreo de Recursos del Hipervisor
Implementar sistema de monitoreo básico para CPU, RAM, almacenamiento y red de srv-dasu. Alertas por email/Telegram para recursos críticos.
Remoto: ~3hHerramientas ADN
DOC01Pendiente
📋 Documentación Operativa del Sistema
Crear manual de operaciones: procedimientos de backup/restore, acceso remoto, resolución de problemas comunes, contactos de soporte, diagramas de red.
Remoto: ~6hHerramientas ADNGit
PERF01Pendiente
⚡ Pruebas de Rendimiento del Sistema
Realizar pruebas de carga simulada en sistema DASUTEN. Medir tiempos de respuesta, consumo de recursos, identificar cuellos de botella. Generar reporte de performance.
Físico: 2hRemoto: ~2hSQL Profiler
HTML def main puts "🔄 AGREGANDO HITOS AL DASHBOARD P2601" puts "=" * 60 # Ruta del dashboard dashboard_path = '/home/rmonla/Documentos/GitHub/dtic-srv-NS8/dashboard/index.html' # Verificar que el archivo existe unless File.exist?(dashboard_path) puts "❌ Error: No se encuentra el dashboard en #{dashboard_path}" exit 1 end # Leer contenido actual puts "📖 Leyendo dashboard actual..." contenido = File.read(dashboard_path) puts "✅ Dashboard leído (#{contenido.length} bytes, #{contenido.lines.count} líneas)" # Crear backup backup_path = "#{dashboard_path}.backup_#{Time.now.strftime('%Y%m%d_%H%M%S')}" puts "💾 Creando backup en: #{backup_path}" File.write(backup_path, contenido) puts "✅ Backup creado exitosamente" # Buscar el lugar donde insertar los hitos (antes del cierre del div .timeline) # Buscamos el último antes del footer if contenido.include?('') puts "📍 Marcador de timeline encontrado" marcador = '' elsif contenido.include?('\n \n \n \n antes del footer footer_index = contenido.index(' anterior prev_div_index = contenido.rindex('', footer_index) if prev_div_index marcador = contenido[prev_div_index..prev_div_index+5] # '' puts "📍 Último antes del footer encontrado" else puts "❌ No se pudo encontrar lugar para insertar hitos" exit 1 end else puts "❌ No se encontró el footer del dashboard" exit 1 end end end # Insertar los hitos antes del marcador puts "✏️ Insertando #{HITOS_ADICIONALES.lines.count} líneas de hitos adicionales..." nuevo_contenido = contenido.gsub(marcador) do |match| "#{HITOS_ADICIONALES}\n\n #{match}" end # Verificar que se insertó correctamente if nuevo_contenido.length > contenido.length lineas_agregadas = nuevo_contenido.lines.count - contenido.lines.count puts "✅ #{lineas_agregadas} líneas agregadas al dashboard" puts "📊 Nuevo tamaño: #{nuevo_contenido.length} bytes (#{nuevo_contenido.lines.count} líneas)" else puts "⚠️ No se detectaron cambios en el contenido" puts " Intentando método alternativo..." # Método alternativo: insertar antes del footer footer_start = '