Files
dtic-DIIAA/adn/tools/cli/dron.rb
T
Ricardo MonlaandClaude Opus 4.6 3543e62263 feat(dron): Migración a AtomicDrones con arquitectura DB-First
Implementación del sistema AtomicDrones basado en "Menos es Más":
- Refactorización de dron.rb a dispatcher + módulos atómicos
- Nuevos módulos: ejecutor, vigilante, sanador, bitacora
- DronDB para acceso a datos en PostgreSQL
- Tablas: dron_logs, dron_avances, dron_metricas
- Views: vw_dron_estado, vw_dron_zombies, vw_dron_metricas_semanal
- Health check con detección de zombies (heartbeat > 5min)
- Dashboard compacto de la flota
- Saneamiento con reintentos (backoff exponencial) y limpieza

Comandos soportados:
- dron lanzar: Ejecutar comando como dron
- dron flota: Dashboard de la flota
- dron salud: Health check activo
- dron estado <ID>: Estado detallado
- dron sanear: Saneamiento completo
- dron limpiar: Limpieza de antiguos
- dron reintentar: Re-intentar fallidos

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 11:35:13 -03:00

38 lines
1.3 KiB
Ruby

#!/usr/bin/env ruby
# frozen_string_literal: true
# ==========================================================
# adn/tools/cli/dron.rb — Sistema de Drones Atómicos (AtomicDrones)
# ----------------------------------------------------------
# Interfaz CLI unificada para la flota de drones atómicos:
# - ejecutor: lanza comandos en background con auto-bitácora
# - vigilante: monitorea flota, detecta zombies, consolida estados
# - sanador: re-intenta fallidos, limpia antiguos
#
# Arquitectura: DB-First, módulos atómicos, composición tipo "Menos es Más"
#
# Uso:
# ./adn/tools/run dron lanzar --evento AUTO -- <comando>
# ./adn/tools/run dron flota # Dashboard de la flota
# ./adn/tools/run dron salud # Health check activo
# ./adn/tools/run dron estado <ID> # Estado detallado
# ./adn/tools/run dron sanear # Saneamiento completo
# ==========================================================
require_relative 'dron/dispatcher'
require_relative '../core/logger'
require_relative '../core/constants'
module ADN
class SubcomandoDron
def initialize(args, logger = nil)
@args = args
@logger = logger || ADN::Logger.instance
end
def ejecutar
Dron::Dispatcher.ejecutar(@args.dup)
end
end
end