Avances en P2604.05.01 y P2604.06.01: DB Hooks, herramienta network, sensor de mejora continua y actualización de 05_ia.md
This commit is contained in:
+41
-34
@@ -137,40 +137,47 @@ module ADN
|
||||
rescue => e
|
||||
@logger.error("Error cargando configuración: #{e.message}")
|
||||
{}
|
||||
end
|
||||
end
|
||||
|
||||
# Muestra la ayuda general del subcomando
|
||||
def mostrar_ayuda
|
||||
ayuda = ADN::HelpFormatter.generar_help(
|
||||
titulo: "Operaciones de Base de Datos ADN",
|
||||
descripcion: "Integra las operaciones de base de datos PostgreSQL con la CLI ADN",
|
||||
uso: "./adn/tools/run db [SUBCOMANDO] [OPCIONES]",
|
||||
opciones: [
|
||||
{ names: ['salud:bd'], desc: "Verificar conexión y estado de la BD" },
|
||||
{ names: ['backup [OPCIONES]'], desc: "Crear backup de la base de datos" },
|
||||
{ names: ['bitacora:crear [FECHA]'], desc: "Crear nueva bitácora diaria" },
|
||||
{ names: ['bitacora:listar [OPCIONES]'], desc: "Listar bitácoras existentes" },
|
||||
{ names: ['evento:crear [OPCIONES]'], desc: "Crear nueva entrada cronológica" },
|
||||
{ names: ['evento:listar [OPCIONES]'], desc: "Listar entradas con filtros" },
|
||||
{ names: ['nodo:crear [OPCIONES]'], desc: "Crear nuevo nodo (servidor/VM/PC)" },
|
||||
{ names: ['nodo:listar [OPCIONES]'], desc: "Listar nodos del sistema" },
|
||||
{ names: ['estadisticas'], desc: "Mostrar estadísticas del sistema" },
|
||||
{ names: ['archivar:md'], desc: "Mueve los archivos .md migrados al archivo histórico" }
|
||||
],
|
||||
ejemplos: [
|
||||
{ cmd: "./adn/tools/run db salud:bd", desc: "Verificar conexión y estado de la BD" },
|
||||
{ cmd: "./adn/tools/run db bitacora:crear --resumen \"Inicio de proyecto\"", desc: "Crear bitácora con resumen" },
|
||||
{ cmd: "./adn/tools/run db evento:crear --inicio 09:00 --descripcion \"Reunión\" --nodo srv-ns8", desc: "Crear entrada de evento" },
|
||||
{ cmd: "./adn/tools/run db nodo:listar --tipo servidor", desc: "Listar nodos de tipo servidor" }
|
||||
]
|
||||
)
|
||||
|
||||
puts ayuda
|
||||
puts ""
|
||||
puts "#{Color::YELLOW}⚠ Nota:#{Color::RESET} Requiere PostgreSQL en ejecución (puerto 5433)"
|
||||
puts " Iniciar contenedor: #{Color::DIM}cd dtic-BITACORAs && docker-compose up -d#{Color::RESET}"
|
||||
end
|
||||
end
|
||||
|
||||
# Sugerir subcomandos similares basándose en distancia de Levenshtein simplificada
|
||||
#
|
||||
# @param subcomando [String] El subcomando ingresado por el usuario
|
||||
# @return [Array<String>] Lista de subcomandos similares
|
||||
def sugerir_subcomandos_similares(subcomando)
|
||||
subcomandos_validos = [
|
||||
'salud:bd',
|
||||
'bitacora:crear',
|
||||
'bitacora:listar',
|
||||
'evento:crear',
|
||||
'evento:listar',
|
||||
'evento:actualizar',
|
||||
'evento:eliminar',
|
||||
'nodo:crear',
|
||||
'nodo:listar',
|
||||
'hito:listar',
|
||||
'hito:actualizar',
|
||||
'hito:renombrar',
|
||||
'hito:ordenar',
|
||||
'estadisticas',
|
||||
'backup',
|
||||
'archivar:md'
|
||||
]
|
||||
|
||||
# Calcular distancia simple (longest common substring ratio)
|
||||
similares = []
|
||||
subcomandos_validos.each do |valido|
|
||||
# Si empieza con las mismas letras o tiene similitud significativa
|
||||
if valido.start_with?(subcomando[0, [subcomando.length, 2].min]) ||
|
||||
subcomando.start_with?(valido[0, [valido.length, 2].min]) ||
|
||||
(subcomando.length > 3 && valido.length > 3 &&
|
||||
(valido.include?(subcomando[0,3]) || subcomando.include?(valido[0,3])))
|
||||
similares << valido
|
||||
end
|
||||
|
||||
similares.uniq
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ require_relative '../core/colores'
|
||||
require_relative '../core/constants'
|
||||
require_relative '../core/help_formatter'
|
||||
require_relative 'nodos/info'
|
||||
require_relative 'db/db'
|
||||
require_relative 'db'
|
||||
|
||||
module ADN
|
||||
class SubcomandoNetwork
|
||||
@@ -178,7 +178,7 @@ module ADN
|
||||
end
|
||||
|
||||
def determinar_rol_nodo(metadata)
|
||||
caso metadata[:so]&.to_s
|
||||
case metadata[:so]&.to_s
|
||||
when 'windows'
|
||||
if metadata[:nombre]&.start_with?('srvv')
|
||||
'Servidor Windows Virtualizado'
|
||||
|
||||
+28
-6
@@ -3,13 +3,14 @@
|
||||
require 'optparse'
|
||||
require 'json'
|
||||
require_relative '../core/colores'
|
||||
require_relative '../db/core/mejoras_sensor'
|
||||
|
||||
module ADN
|
||||
class SubcomandoSalud
|
||||
def initialize(args, logger)
|
||||
@args = args
|
||||
@logger = logger
|
||||
@opciones = { dashboard: false, json: false }
|
||||
@opciones = { dashboard: false, json: false, mejoras: false }
|
||||
end
|
||||
|
||||
def ejecutar
|
||||
@@ -22,9 +23,16 @@ module ADN
|
||||
opts.on("--dashboard", "Mostrar en formato dashboard (no implementado)") do
|
||||
@opciones[:dashboard] = true
|
||||
end
|
||||
opts.on("--json", "Salida en formato JSON") do
|
||||
@opciones[:json] = true
|
||||
end
|
||||
opts.on("--json", "Salida en formato JSON") do
|
||||
@opciones[:json] = true
|
||||
end
|
||||
opts.on("--mejoras", "Incluir sugerencias de mejora continua") do
|
||||
@opciones[:mejoras] = true
|
||||
end
|
||||
opts.on("-h", "--help", "Mostrar esta ayuda") do
|
||||
puts opts
|
||||
exit 1
|
||||
end
|
||||
opts.on("-h", "--help", "Mostrar esta ayuda") do
|
||||
puts opts
|
||||
exit
|
||||
@@ -55,6 +63,11 @@ module ADN
|
||||
proyectos: contar_proyectos,
|
||||
errores_recientes: buscar_errores_recientes
|
||||
}
|
||||
|
||||
# Add improvement suggestions if requested
|
||||
if @opciones[:mejoras]
|
||||
datos[:sugerencias_mejora] = obtener_sugerencias_mejora
|
||||
end
|
||||
|
||||
if @opciones[:json]
|
||||
puts JSON.pretty_generate(datos)
|
||||
@@ -83,8 +96,17 @@ module ADN
|
||||
puts "#{Color::DIM}#{'-' * 60}#{Color::RESET}"
|
||||
puts "#{Color::DIM}Para más detalles: ./adn/tools/run salud --json#{Color::RESET}"
|
||||
|
||||
@logger.exito("Reporte de salud generado")
|
||||
end
|
||||
@logger.exito("Reporte de salud generado")
|
||||
end
|
||||
|
||||
# Obtener sugerencias de mejora continua
|
||||
def obtener_sugerencias_mejora
|
||||
# Activar el sensor temporalmente para obtener sugerencias
|
||||
::ADN::MejorasSensor.activo = true
|
||||
sugerencias = ::ADN::MejorasSensor.generar_sugerencias
|
||||
::ADN::MejorasSensor.activo = false # Desactivar nuevamente para no afectar rendimiento
|
||||
sugerencias
|
||||
end
|
||||
|
||||
def contar_hebras_adn
|
||||
Dir.glob(File.join(ADN::PROJECT_ROOT, 'adn', "*.md")).count
|
||||
|
||||
Reference in New Issue
Block a user