#!/usr/bin/env ruby # frozen_string_literal: true # tools/orquestador/dashboard/limpiar.rb # ====================================== # Herramienta simple para limpiar hitos duplicados del dashboard P2601 # Filosofía: "Menos es más" - herramienta pequeña, específica y reutilizable require 'fileutils' class DashboardCleaner def initialize(dashboard_path = nil) @dashboard_path = dashboard_path || default_dashboard_path @backup_dir = File.join(File.dirname(@dashboard_path), 'backups') end def default_dashboard_path File.expand_path('../../../../dashboard/index.html', __FILE__) end def run puts "🧹 LIMPIANDO DASHBOARD P2601" puts "=" * 50 unless File.exist?(@dashboard_path) puts "❌ Error: No se encuentra el dashboard en #{@dashboard_path}" return false end # Crear backup create_backup # Leer contenido puts "📖 Leyendo dashboard..." content = File.read(@dashboard_path) original_size = content.length original_lines = content.lines.count # Limpiar hitos duplicados puts "🔍 Buscando hitos duplicados..." cleaned_content = remove_duplicate_hitos(content) # Verificar cambios if cleaned_content == content puts "✅ No se encontraron hitos duplicados" return true end # Guardar cambios puts "💾 Guardando dashboard limpio..." File.write(@dashboard_path, cleaned_content) # Mostrar resultados show_results(content, cleaned_content) true end private def create_backup FileUtils.mkdir_p(@backup_dir) unless Dir.exist?(@backup_dir) timestamp = Time.now.strftime('%Y%m%d_%H%M%S') backup_file = File.join(@backup_dir, "dashboard_clean_#{timestamp}.html") puts "💾 Creando backup en: #{backup_file}" FileUtils.cp(@dashboard_path, backup_file) puts "✅ Backup creado" end def remove_duplicate_hitos(content) # Patrones para identificar hitos duplicados # Buscamos hitos que comienzan con el comentario de "Hitos adicionales agregados automáticamente" duplicate_pattern = /[\s\S]*?(?=