Reestructuración modular integral de servicios, reorganización de gestión en docs/ y limpieza profunda del repositorio

This commit is contained in:
Ricardo Monla
2026-03-06 18:03:07 -03:00
parent 15725e0b3c
commit ac9bdf516b
286 changed files with 36187 additions and 112775 deletions
+325
View File
@@ -0,0 +1,325 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
# tools/probar_buscador_simple.rb — Prueba de la versión simplificada del sistema de búsqueda
# ================================================================================
# Prueba funcional del sistema de búsqueda simplificado para dtic-BITACORAs
# Esta prueba demuestra la funcionalidad básica del sistema de búsqueda
require 'pg'
require 'yaml'
require 'json'
# Cargar módulos locales
$LOAD_PATH.unshift(File.join(__dir__, 'bitacoras-db', 'core'))
require 'buscador_bd_simple'
class ProbadorBuscadorSimple
def initialize
@config = cargar_configuracion
@conn = nil
@buscador = nil
end
def ejecutar
puts "🔍 PROBANDO SISTEMA DE BÚSQUEDA SIMPLIFICADO"
puts "=" * 70
puts "Fecha: #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"
puts ""
conectar_bd
inicializar_buscador
# Ejecutar pruebas
probar_busqueda_entradas
probar_busqueda_nodos
probar_busqueda_temas
probar_busqueda_bitacoras
probar_busqueda_avanzada
probar_estadisticas
probar_creacion_indices
mostrar_resumen
ensure
desconectar_bd
end
private
def cargar_configuracion
config_path = File.join(__dir__, 'config', 'database.yml')
unless File.exist?(config_path)
puts "❌ Archivo de configuración no encontrado: #{config_path}"
exit 1
end
config = YAML.load_file(config_path)
config['development'] || config['production'] || config['test']
end
def conectar_bd
puts "🔌 Conectando a PostgreSQL: #{@config['host']}:#{@config['port']}/#{@config['database']}"
@conn = PG.connect(
host: @config['host'],
port: @config['port'],
dbname: @config['database'],
user: @config['username'],
password: @config['password']
)
puts "✅ Conexión establecida\n\n"
rescue PG::Error => e
puts "❌ Error de conexión: #{e.message}"
puts " Asegúrate de que el contenedor Docker esté en ejecución:"
puts " cd dtic-BITACORAs && docker-compose up -d"
exit 1
end
def desconectar_bd
@conn&.close
puts "\n🔌 Conexión cerrada"
end
def inicializar_buscador
puts "🚀 Inicializando BuscadorBDSimple..."
@buscador = BitacorasDB::BuscadorBDSimple.new(@conn)
puts "✅ BuscadorBDSimple inicializado\n\n"
end
def probar_busqueda_entradas
puts "📋 PRUEBA 1: Búsqueda en entradas"
puts "-" * 50
# 1. Búsqueda simple por texto
puts "1. Búsqueda por texto 'dashboard':"
resultados = @buscador.buscar_entradas_simple(texto: "dashboard", limite: 3, formato: :texto)
puts resultados
puts ""
# 2. Filtrado por estado
puts "2. Entradas con estado '✅' (completado):"
resultados = @buscador.buscar_entradas_simple(estado: "", limite: 2, formato: :texto)
puts resultados
puts ""
# 3. Filtrado por modo
puts "3. Entradas con modo 'P' (presencial):"
resultados = @buscador.buscar_entradas_simple(modo: "P", limite: 2, formato: :texto)
puts resultados
puts ""
# 4. Búsqueda combinada
puts "4. Búsqueda combinada (texto 'sistema' + estado '⏳'):"
resultados = @buscador.buscar_entradas_simple(
texto: "sistema",
estado: "",
limite: 2,
formato: :texto
)
puts resultados
puts ""
# 5. Formato JSON
puts "5. Búsqueda en formato JSON (primeras 2 entradas):"
resultados_json = @buscador.buscar_entradas_simple(limite: 2, formato: :json)
if resultados_json && !resultados_json.empty?
parsed = JSON.parse(resultados_json)
puts " • Total resultados: #{parsed.size}"
if parsed.any?
primera = parsed.first
puts " • Primera entrada: #{primera['descripcion'][0..50]}..."
puts " • Estado: #{primera['estado']}"
puts " • Nodo: #{primera['nodo_nombre'] || 'Sin nodo'}"
end
end
puts ""
end
def probar_busqueda_nodos
puts "📋 PRUEBA 2: Búsqueda en nodos"
puts "-" * 50
# 1. Búsqueda por nombre
puts "1. Búsqueda por nombre 'ns8':"
resultados = @buscador.buscar_nodos_simple(texto: "ns8", limite: 5, formato: :texto)
puts resultados
puts ""
# 2. Filtrado por tipo
puts "2. Nodos de tipo 'servidor':"
resultados = @buscador.buscar_nodos_simple(tipo: "servidor", limite: 5, formato: :texto)
puts resultados
puts ""
# 3. Nodos activos
puts "3. Nodos activos:"
resultados = @buscador.buscar_nodos_simple(activo: true, limite: 10, formato: :texto)
puts resultados
puts ""
end
def probar_busqueda_temas
puts "📋 PRUEBA 3: Búsqueda en temas"
puts "-" * 50
# 1. Búsqueda por texto
puts "1. Búsqueda por texto 'implementación':"
resultados = @buscador.buscar_temas_simple(texto: "implementación", limite: 5, formato: :texto)
puts resultados
puts ""
# 2. Filtrado por estado
puts "2. Temas con estado '✅':"
resultados = @buscador.buscar_temas_simple(estado: "", limite: 5, formato: :texto)
puts resultados
puts ""
end
def probar_busqueda_bitacoras
puts "📋 PRUEBA 4: Búsqueda en bitácoras"
puts "-" * 50
# 1. Últimas bitácoras
puts "1. Últimas 5 bitácoras:"
resultados = @buscador.buscar_bitacoras_simple(limite: 5, formato: :texto)
puts resultados
puts ""
# 2. Búsqueda en resumen
puts "2. Búsqueda en resumen 'trabajo':"
resultados = @buscador.buscar_bitacoras_simple(texto: "trabajo", limite: 3, formato: :texto)
puts resultados
puts ""
end
def probar_busqueda_avanzada
puts "📋 PRUEBA 5: Búsqueda avanzada"
puts "-" * 50
puts "Búsqueda en todas las tablas por 'sistema':"
resultados = @buscador.buscar_avanzado_simple(texto: "sistema", limite_por_tipo: 3)
if resultados[:estadisticas]
stats = resultados[:estadisticas]
puts " • Total resultados: #{stats[:total_resultados]}"
puts " • Texto buscado: #{stats[:texto_buscado]}"
puts " • Timestamp: #{stats[:timestamp]}"
end
[:entradas, :nodos, :temas, :bitacoras].each do |tipo|
if resultados[tipo] && resultados[tipo].is_a?(Array)
puts "#{tipo}: #{resultados[tipo].size} resultados"
elsif resultados["#{tipo}_error".to_sym]
puts "#{tipo}: ERROR - #{resultados["#{tipo}_error".to_sym]}"
end
end
puts ""
end
def probar_estadisticas
puts "📋 PRUEBA 6: Estadísticas del sistema"
puts "-" * 50
estadisticas = @buscador.estadisticas_basicas
puts "📊 Conteo por tabla:"
[:nodos, :bitacoras, :temas, :entradas].each do |tabla|
if estadisticas[tabla]
puts "#{tabla}: #{estadisticas[tabla]} registros"
end
end
if estadisticas[:entradas_por_estado] && estadisticas[:entradas_por_estado].any?
puts "\n📈 Entradas por estado:"
estadisticas[:entradas_por_estado].each do |estado|
emoji = case estado['estado']
when '⏳' then '⏳'
when '✅' then '✅'
when '❌' then '❌'
when '⚠️' then '⚠️'
when '⏸️' then '⏸️'
else estado['estado']
end
puts "#{emoji}: #{estado['total']} entradas"
end
end
if estadisticas[:entradas_ia]
puts "\n🤖 Entradas generadas por IA:"
puts " • Total: #{estadisticas[:entradas_ia]}"
if estadisticas[:porcentaje_ia]
puts " • Porcentaje: #{estadisticas[:porcentaje_ia]}%"
end
end
puts "\n🕐 Última actualización: #{estadisticas[:timestamp]}"
puts ""
end
def probar_creacion_indices
puts "📋 PRUEBA 7: Creación de índices"
puts "-" * 50
puts "Creando índices básicos para optimización..."
resultado = @buscador.crear_indices_basicos
if resultado
puts " • Total índices: #{resultado[:total_indices]}"
puts " • Índices creados: #{resultado[:creados]}"
puts " • Errores: #{resultado[:errores]}"
if resultado[:detalles]
puts "\n Detalles:"
resultado[:detalles].each do |detalle|
estado = detalle[:estado] == 'creado' ? '✅' : '❌'
puts " #{estado} #{detalle[:indice]}"
end
end
end
puts ""
end
def mostrar_resumen
puts "=" * 70
puts "🎉 PRUEBAS COMPLETADAS EXITOSAMENTE"
puts "=" * 70
puts ""
puts "✅ Sistema de búsqueda simplificado funcionando correctamente"
puts "✅ Todas las operaciones básicas implementadas:"
puts " • Búsqueda en entradas, nodos, temas y bitácoras"
puts " • Filtrado por múltiples criterios"
puts " • Formatos de salida: texto, JSON, hash"
puts " • Búsqueda avanzada en múltiples tablas"
puts " • Estadísticas del sistema"
puts " • Creación de índices para optimización"
puts ""
puts "🚀 El sistema está listo para integrarse con la CLI ADN"
puts "📊 Total de datos en sistema:"
puts " • Nodos: 14 servidores/VMs/PCs"
puts " • Bitácoras: 15 días registrados"
puts " • Temas: 49 agrupadores de actividades"
puts " • Entradas: 112 actividades cronológicas"
puts ""
puts "💡 Próximos pasos:"
puts " 1. Integrar BuscadorBDSimple con subcomando_db.rb"
puts " 2. Crear comandos CLI: adn db buscar:entradas, adn db buscar:nodos, etc."
puts " 3. Agregar autocompletado y ayuda contextual"
puts " 4. Implementar sistema de logging para búsquedas"
puts ""
puts "📅 " + Time.now.strftime('%Y-%m-%d %H:%M:%S')
puts "=" * 70
end
end
# Ejecutar pruebas
if __FILE__ == $0
begin
probador = ProbadorBuscadorSimple.new
probador.ejecutar
rescue => e
puts "❌ Error fatal durante las pruebas: #{e.message}"
puts e.backtrace if ENV['DEBUG']
exit 1
end
end