diff --git a/adn/tools/cli/dron/ejecutor.rb b/adn/tools/cli/dron/ejecutor.rb index 55477c80..1720f3f7 100644 --- a/adn/tools/cli/dron/ejecutor.rb +++ b/adn/tools/cli/dron/ejecutor.rb @@ -254,21 +254,21 @@ module Dron def actualizar_heartbeat_web(evento_id, dron_id, nota, cmd, inicio, tick, accumulated_out = "") duracion = Base.formato_duracion(Time.now - inicio) + + # Filtrar output: quitar logs de PostgreSQL y dejar solo progreso relevante + output_limpio = filtrar_output_relevante(accumulated_out.split("\n")) + descripcion = "🛸 #{nota} (`#{dron_id}`)\n" \ "├─ Comando: `#{cmd}`\n" \ "└─ ❤️ #{duracion} — heartbeat ##{tick}" - unless accumulated_out.nil? || accumulated_out.empty? - # Limpiar caracteres no imprimibles y mostrar todo el output acumulado - clean_out = accumulated_out.gsub(/[^[:print:]\n]/, '').strip - # Mostrar últimas 15 líneas para no saturar la bitácora - lineas = clean_out.split("\n") - lineas_mostrar = lineas.last(15) + unless output_limpio.nil? || output_limpio.empty? + # Mostrar últimas 15 líneas de progreso relevante + lineas_mostrar = output_limpio.last(15) descripcion += "\n\n```text\n#{lineas_mostrar.join("\n")}\n```" end BitacorasDB::BitacoraDB.with_connection do |db| - # Intentar actualizar como entrada primero, luego como evento entrada = db.execute("SELECT id FROM bitacoras.entradas WHERE id = $1", [evento_id]).first if entrada db.update_entrada(evento_id, descripcion: descripcion)