[ADN] Fase 10: Saneamiento y Consolidación - Un solo punto de verdad

- S1: Eliminar 'triggers' duplicado en run (líneas 109/131)
- S2: Eliminar cli/commit.rb (truncado, sin uso)
- S3: Eliminar cli/inicio.rb y cli/cierre.rb (legacy, jornada.rb los reemplaza)
- S4: Mover 4 planes obsoletos de docs/plan/adn/ a docs/_hist/plan/adn/
- S5: Mover 14 backups de planes y 3 docs técnicos a docs/_hist/
- S6: Eliminar manifiesto vacío P2604_proyecto_p2604.md
- S7: Corregir referencia a plan obsoleto en run
- S8: Dejar de cargar core/validador.rb obsoleto en run
- S9: Limpiar progreso duplicado en P2604_mejoras_ADN.md
- Agregar Fase 10 al plan P2604 con 10 tareas
- Un solo punto de verdad: adn/README.md
- Un solo plan: docs/proy/p2604_mejoras_ADN/P2604_mejoras_ADN.md
- Registro en bitácora: evento 1073
This commit is contained in:
Ricardo Monla
2026-03-15 14:33:32 -03:00
parent b13a389568
commit cfd0e8452a
36 changed files with 1563 additions and 238 deletions
+6 -32
View File
@@ -9,6 +9,8 @@
require 'optparse'
require_relative '../core/colores'
require_relative '../core/nodos_info'
require_relative '../core/help_formatter'
module ADN
class SubcomandoNodos
@@ -89,7 +91,8 @@ module ADN
nodo_nombre = File.basename(archivo, '.md')
next if nodo_nombre.start_with?('_')
host = detectar_host(archivo)
metadata = ADN::NodosInfo.extraer_metadata(nodo_nombre)
host = metadata ? metadata[:host] : nil
if host
servidores[host] << nodo_nombre
@@ -127,28 +130,6 @@ module ADN
puts ""
end
def detectar_host(archivo)
contenido = File.read(archivo, encoding: 'UTF-8')
host = nil
contenido.split("\n").each do |linea|
# Formato lista o tabla: **Padre/Host**: `srv-dasu`
if linea.match(/\*\*(?:Padre\/Host|Host Anfitrión|Host|Servidor(?: Anfitrión)?|Hipervisor|IP \/ Ubicación)\*\*\s*[:\|]?\s*`?([a-zA-Z0-9\-]+)`?/) ||
linea.match(/\*\*(?:Padre\/Host|Host Anfitrión|Host|Servidor(?: Anfitrión)?|Hipervisor|IP \/ Ubicación)\*\*\s*[:\|]?\s*([^`\s|]+)/)
candidato = ($1 || $2).strip.gsub(/`/, '')
return candidato if candidato.start_with?('srv-')
end
# Texto: "dependiente del host físico `srv-dasu`"
if linea.match(/host(?: físico)?\s+`?([a-zA-Z0-9\-]+)`?/)
candidato = $1.strip
return candidato if candidato.start_with?('srv-')
end
end
host
end
def es_nodo_fisico?(nombre)
nombre.start_with?('srv-') || nombre.start_with?('pc-') ||
nombre == 'dtic-bitacoras' || nombre == 'cam-hikvision-24'
@@ -180,15 +161,8 @@ module ADN
end
nodos.each do |nodo|
archivo = File.join(ADN::NODOS_DIR, "#{nodo}.md")
contenido = File.read(archivo, encoding: 'UTF-8')
# Extraer rol si existe
rol = '-'
if contenido.match(/\*\*Rol(?:\s*Principal)?\*\*\s*[:\|]\s*([^\|\n]+)/)
rol = $1.strip[0..40]
end
metadata = ADN::NodosInfo.extraer_metadata(nodo)
rol = metadata && metadata[:host] ? 'VM' : (metadata && metadata[:so] ? metadata[:so].to_s : '-')
puts " 💻 #{nodo.ljust(22)} #{Color::DIM}#{rol}#{Color::RESET}"
end