[DRON] Heartbeat con output acumulado en Bitácora Web
Mejora en el sistema de latidos de los drones para mostrar el progreso acumulado en lugar de solo la última línea. Cambios realizados: - ejecutor.rb: Acumulación de output en array accumulated_out[] - actualizar_heartbeat_web(): Muestra últimas 15 líneas en bloque ```text - A01.P009: Documentada Fase F1.5b con ejemplo técnico - A04.P006: Actualizado plan DASUTEN con mejora y lección aprendida Beneficio: Visibilidad completa del progreso de drones multi-paso (ej: [1/3], [2/3], [3/3] en pipelines de backup/restore) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
1bc6c94f78
commit
4a0cdd883e
@@ -4,7 +4,7 @@
|
||||
> **Pertenece a**: [A01 - Ecosistema ADN](./A01_dtic-ADN.md)
|
||||
> **Fecha**: 2026-04-09
|
||||
> **Responsable**: Lic. Ricardo MONLA
|
||||
> **Versión**: 3.4 — Fase 2: rclone atómico planificado
|
||||
> **Versión**: 3.5 — Fase 2: rclone atómico planificado + Heartbeat acumulado (2026-04-15)
|
||||
|
||||
---
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
Fase 0: ██████████ 100% Infraestructura de Datos (tablas internas) ✅
|
||||
Fase 1: ██████████ 100% Atomicidad (bugs corregidos) ✅
|
||||
Fase 1.5: ██████████ 100% Visibilidad Bitácora Web + Corrección Bugs ✅
|
||||
Fase 1.5b: ██████████ 100% Heartbeat con Output Acumulado ✅ (2026-04-15)
|
||||
Fase 2: ████████░░ 80% Composición — Orquestación de Flujos 🔧
|
||||
Fase 3: ░░░░░░░░░░ 0% Planificación — Drones Programados
|
||||
Fase 4: ░░░░░░░░░░ 0% Inteligencia de Colmena
|
||||
@@ -435,6 +436,7 @@ La **Bitácora Web** (`http://localhost:5174/bitacoras/`) muestra:
|
||||
| F1.5.T4 | Heartbeat visible en web | Que el heartbeat cada 30s actualice `events.descripcion` con progreso | ✅ |
|
||||
| F1.5.T5 | Eliminar sistema dual `.sh`/Ruby | `copiloto.rb` y `novato.rb` deprecados, `tmp/dron/` limpiado | ✅ |
|
||||
| F1.5.T6 | Corregir bugs bajos | Bugs B8-B12 — edge cases y consistencia | ✅ |
|
||||
| F1.5.T7 | Heartbeat con output acumulado | Mostrar últimas 15 líneas del output acumulado en lugar de solo la última línea | ✅ (2026-04-15) |
|
||||
|
||||
**Flujo corregido del Ejecutor:**
|
||||
```
|
||||
@@ -460,6 +462,63 @@ La **Bitácora Web** (`http://localhost:5174/bitacoras/`) muestra:
|
||||
- `dron estado <ID>`, `dron flota`, y `dron salud` funcionan sin crashes
|
||||
- Cero bugs críticos, cero bugs medios
|
||||
|
||||
### Mejora: Heartbeat con Output Acumulado (2026-04-15)
|
||||
|
||||
**Problema:** Los drones que ejecutan pipelines multi-paso (ej: `dasuten_download_drive-dasu-sql4.rb`) muestran progreso tipo `[1/3]`, `[2/3]`, `[3/3]`, pero el heartbeat original solo capturaba la **última línea** (`last_out`), perdiendo el contexto del progreso acumulado.
|
||||
|
||||
**Solución:** Modificar `Ejecutor#ejecutar_comando` para acumular todo el output en un array `accumulated_out[]` y pasar el output completo al heartbeat web.
|
||||
|
||||
**Cambios en `adn/tools/cli/dron/ejecutor.rb`:**
|
||||
|
||||
```ruby
|
||||
# ANTES (solo última línea):
|
||||
last_out = lineas.last&.strip || last_out
|
||||
actualizar_heartbeat_web(..., last_out)
|
||||
|
||||
# AHORA (output acumulado completo):
|
||||
accumulated_out = []
|
||||
accumulated_out.concat(lineas) # Acumular todas las líneas
|
||||
actualizar_heartbeat_web(..., accumulated_out.join("\n"))
|
||||
```
|
||||
|
||||
**Cambios en `actualizar_heartbeat_web`:**
|
||||
|
||||
```ruby
|
||||
# ANTES (últimos 80 chars de una línea):
|
||||
clean_out = last_out.gsub(/[^[:print:]]/, '').strip
|
||||
descripcion += "\n\n> 🕵️ `#{clean_out[-80..-1] || clean_out}`"
|
||||
|
||||
# AHORA (últimas 15 líneas en bloque de código):
|
||||
clean_out = accumulated_out.gsub(/[^[:print:]\n]/, '').strip
|
||||
lineas = clean_out.split("\n")
|
||||
lineas_mostrar = lineas.last(15)
|
||||
descripcion += "\n\n```text\n#{lineas_mostrar.join("\n")}\n```"
|
||||
```
|
||||
|
||||
**Resultado en Bitácora Web:**
|
||||
|
||||
```
|
||||
🛸 Download desde Google Drive (`dron_152045_789`)
|
||||
├─ Comando: `ruby dasuten_download_drive-dasu-sql4.rb`
|
||||
└─ ❤️ 2m 30s — heartbeat #5
|
||||
|
||||
```text
|
||||
[*] Dron: Download desde Google Drive
|
||||
Nodo: dasu-sql4
|
||||
Drive ruta: rmonla-GDrive:drive_bkps-dasu/sysdasuten.bak
|
||||
File ID: 1P0ci...
|
||||
Destino: F:\BACKUP\sysdasuten.bak
|
||||
|
||||
[1/3] Iniciando descarga con Rclone Nativo...
|
||||
[2/3] Descargando...
|
||||
[+] Descarga en 45.2s
|
||||
[3/3] Verificando...
|
||||
Tamano: 1.33 MB
|
||||
```
|
||||
```
|
||||
|
||||
**Beneficio:** El usuario puede ver **todo el progreso acumulado** del dron en tiempo real, no solo la última línea. Esto es crítico para pipelines largos donde cada paso tiene su propio progreso numerado.
|
||||
|
||||
---
|
||||
|
||||
### Fase 2: Composición — Orquestación de Flujos (Dron 1.5)
|
||||
@@ -846,7 +905,7 @@ rclone sync /mnt/ns8Disco3/.../bkps-SERVIDORes/ rmOneDrive:/.../bkps-SERVIDORes/
|
||||
|
||||
## 🔄 Armonía Integral
|
||||
|
||||
**Última actualización**: 2026-04-09 — Auditoría + Fase 1.5 planificada
|
||||
**Última actualización**: 2026-04-15 — Fase 1.5 completada + Heartbeat con output acumulado
|
||||
|
||||
| Documento | Estado | Notas |
|
||||
|-----------|--------|-------|
|
||||
|
||||
Reference in New Issue
Block a user