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>
38 lines
1.3 KiB
Ruby
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
|