[FIX] Heartbeat web: Filtrar PostgreSQL antes de mostrar
Se corrigió actualizar_heartbeat_web() para que filtre el output antes de actualizar la Bitácora Web. Antes: Mostraba ~400 líneas con logs de PostgreSQL Ahora: Muestra solo ~15 líneas de progreso relevante del dron El filtrado se aplica en dos lugares: 1. Al acumular líneas (filtrar_lineas_relevantes) 2. Al actualizar heartbeat web (filtrar_output_relevante) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
b7ff2e7183
commit
94eeb8d470
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user