[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 = "")
|
def actualizar_heartbeat_web(evento_id, dron_id, nota, cmd, inicio, tick, accumulated_out = "")
|
||||||
duracion = Base.formato_duracion(Time.now - inicio)
|
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" \
|
descripcion = "🛸 #{nota} (`#{dron_id}`)\n" \
|
||||||
"├─ Comando: `#{cmd}`\n" \
|
"├─ Comando: `#{cmd}`\n" \
|
||||||
"└─ ❤️ #{duracion} — heartbeat ##{tick}"
|
"└─ ❤️ #{duracion} — heartbeat ##{tick}"
|
||||||
|
|
||||||
unless accumulated_out.nil? || accumulated_out.empty?
|
unless output_limpio.nil? || output_limpio.empty?
|
||||||
# Limpiar caracteres no imprimibles y mostrar todo el output acumulado
|
# Mostrar últimas 15 líneas de progreso relevante
|
||||||
clean_out = accumulated_out.gsub(/[^[:print:]\n]/, '').strip
|
lineas_mostrar = output_limpio.last(15)
|
||||||
# Mostrar últimas 15 líneas para no saturar la bitácora
|
|
||||||
lineas = clean_out.split("\n")
|
|
||||||
lineas_mostrar = lineas.last(15)
|
|
||||||
descripcion += "\n\n```text\n#{lineas_mostrar.join("\n")}\n```"
|
descripcion += "\n\n```text\n#{lineas_mostrar.join("\n")}\n```"
|
||||||
end
|
end
|
||||||
|
|
||||||
BitacorasDB::BitacoraDB.with_connection do |db|
|
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
|
entrada = db.execute("SELECT id FROM bitacoras.entradas WHERE id = $1", [evento_id]).first
|
||||||
if entrada
|
if entrada
|
||||||
db.update_entrada(evento_id, descripcion: descripcion)
|
db.update_entrada(evento_id, descripcion: descripcion)
|
||||||
|
|||||||
Reference in New Issue
Block a user