[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:
Ricardo Monla
2026-04-15 10:45:11 -03:00
co-authored by Claude Opus 4.6
parent 1bc6c94f78
commit 4a0cdd883e
3 changed files with 127 additions and 9 deletions
@@ -3,10 +3,10 @@
> **Ámbito:** A04 — dtic-DASUTEN
**Código:** A04.P006
**Fecha:** 14 de abril de 2026
**Fecha:** 15 de abril de 2026
**Autor:** Sistema ADN
**Versión:** 1.0
**Estado:** 🚧 EN EJECUCIÓN (Pipeline diferencial implementado, pendiente integración bkps)
**Versión:** 1.2
**Estado:** ✅ COMPLETADO (Pipeline completo, diferencial y latidos acumulados)
**Dependencia:** A04.P005 (DASUTEN sin DC), A03.P002 (Automatización Backups)
## 📊 Progreso
@@ -17,6 +17,7 @@
| **Fase 2: Pipeline Google Drive** | ✅ Completado | 100% |
| **Fase 3: Pipeline Diferencial** | ✅ Completado | 100% |
| **Fase 4: Integración BKPs** | ✅ Completado | 100% |
| **Fase 5: Mejora de Latidos** | ✅ Completado | 100% |
## 🎯 Objetivo
@@ -240,6 +241,7 @@ file_info = DasuExecutor.get_file_info_on_fenix(client, 'X:\backup.bak')
- **Pipeline Diferencial:** [A04.P005_DASUTEN-sin-DC.md](A04.P005_DASUTEN-sin-DC.md#fase-8b-refresco-final-de-bd)
- **Drones:** `adn/tools/cli/drones/`
- **Bitácoras:** `./adn/tools/run db evento:listar --ambito dtic-DASUTEN`
- **Evolución Dron ADN:** [A01.P009_Evolucion-Dron-ADN.md](../dtic-ADN/A01.P009_Evolucion-Dron-ADN.md) — Heartbeat acumulado
## 📝 Lecciones Aprendidas
@@ -251,3 +253,36 @@ file_info = DasuExecutor.get_file_info_on_fenix(client, 'X:\backup.bak')
| 2026-04-14 | Pipeline diferencial: 0.39 MB vs 1.3 GB completo | 90% más rápido para refrescos diarios |
| 2026-04-14 | Un solo destino (X:) vs 3 directorios | Menos puntos de falla, más simple |
| 2026-04-14 | Módulo común DasuExecutor: 6 drones, 1 solo patrón | -52% código, mantenibilidad |
| 2026-04-15 | Heartbeat con output acumulado en Bitácora Web | Visibilidad completa del progreso de drones multi-paso |
## 📈 Mejora de Latidos/Acumulados (2026-04-15)
**Problema:** Los drones de pipeline (ej: `download`, `restaurar`, `verificar`) muestran progreso tipo `[1/3]`, `[2/3]`, `[3/3]`, pero la bitácora web solo mostraba la última línea, perdiendo el contexto del progreso.
**Solución:** Modificar `Ejecutor#ejecutar_comando` en `adn/tools/cli/dron/ejecutor.rb` para acumular todo el output y mostrar las últimas 15 líneas en el heartbeat web.
**Resultado:** La Bitácora Web ahora muestra el progreso completo acumulado:
```
🛸 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
```
```
**Impacto:** Visibilidad en tiempo real del progreso de cada paso del pipeline, no solo la última línea.
**Documentación:** La mejora se documentó en [A01.P009_Evolucion-Dron-ADN.md](../dtic-ADN/A01.P009_Evolucion-Dron-ADN.md) como Fase F1.5b.