[P2606] WebServer NGINX: plan actualizado, ficha nodo, HTTPS operativo

- P2606: Plan v1.1 EN EJECUCIÓN. Fases 1-3 completadas.
- Ficha nodo srvv-nginx-rm.md. P2606 en adn/07_proyectos.md.
- Incluye cambios acumulados de sesiones anteriores.
This commit is contained in:
Ricardo Monla
2026-03-28 12:18:42 -03:00
parent 97d9b777b4
commit 160da47f96
78 changed files with 6461 additions and 624 deletions
+14 -7
View File
@@ -2,13 +2,16 @@ module ADN
module SubcomandoDBBitacora
# Comando: bitacora:crear [FECHA] - Crear nueva bitácora diaria
def comando_bitacora_crear(args)
opts = { fecha: Date.today, resumen: nil }
opts = { fecha: Date.today, resumen: nil, modo: 'P' }
parser = OptionParser.new do |opt|
opt.banner = "Uso: adn db bitacora:crear [FECHA] [OPCIONES]"
opt.on("--resumen TEXTO", "Resumen inicial de la bitácora") do |r|
opts[:resumen] = r
end
opt.on("--modo MODO", "Modo de la jornada: P=Presencial, R=Remoto (default: P)") do |m|
opts[:modo] = m.upcase
end
opt.on("-h", "--help", "Mostrar ayuda") do
puts opt
exit
@@ -17,7 +20,6 @@ module ADN
begin
parser.parse!(args)
# Si queda un argumento sin procesar, asumimos que es la fecha
opts[:fecha] = Date.parse(args[0]) if args[0]
rescue OptionParser::InvalidOption, Date::Error => e
puts "#{Color::RED}✗ Error: #{e.message}#{Color::RESET}"
@@ -29,11 +31,12 @@ module ADN
BitacorasDB::BitacoraDB.with_connection do |db|
begin
bitacora = db.create_bitacora(fecha: opts[:fecha], resumen: opts[:resumen])
bitacora = db.create_bitacora(fecha: opts[:fecha], resumen: opts[:resumen], modo: opts[:modo])
puts "#{Color::GREEN}✅ Bitácora creada exitosamente#{Color::RESET}"
puts ""
puts " #{Color::BOLD}ID:#{Color::RESET} #{bitacora['id']}"
puts " #{Color::BOLD}Fecha:#{Color::RESET} #{bitacora['fecha']}"
puts " #{Color::BOLD}Modo:#{Color::RESET} #{bitacora['modo']} (#{modo_label(bitacora['modo'])})"
puts " #{Color::BOLD}Resumen:#{Color::RESET} #{bitacora['resumen'] || '(sin resumen)'}"
puts " #{Color::BOLD}Creada:#{Color::RESET} #{bitacora['created_at']}"
rescue PG::UniqueViolation
@@ -91,16 +94,17 @@ module ADN
end
puts ""
puts "#{Color::BOLD}#{"ID".ljust(5)} #{"Fecha".ljust(12)} #{"Resumen".ljust(40)} #{"Creada".ljust(20)}#{Color::RESET}"
puts "#{"" * 5} #{"" * 12} #{"" * 40} #{"" * 20}"
puts "#{Color::BOLD}#{"ID".ljust(5)} #{"Fecha".ljust(12)} #{"Modo"} #{"Resumen".ljust(38)} #{"Creada".ljust(20)}#{Color::RESET}"
puts "#{"" * 5} #{"" * 12} #{"" * 4} #{"" * 38} #{"" * 20}"
bitacoras.each do |b|
fecha = b['fecha']
modo = b['modo'] || 'P'
resumen = b['resumen'] || ''
resumen = resumen[0..37] + '...' if resumen.length > 40
resumen = resumen[0..35] + '...' if resumen.length > 38
creada = Time.parse(b['created_at']).strftime('%Y-%m-%d %H:%M')
puts "#{b['id'].to_s.ljust(5)} #{fecha.ljust(12)} #{resumen.ljust(40)} #{creada.ljust(20)}"
puts "#{b['id'].to_s.ljust(5)} #{fecha.ljust(12)} [#{modo}] #{resumen.ljust(38)} #{creada.ljust(20)}"
end
puts ""
@@ -108,5 +112,8 @@ module ADN
end
end
def modo_label(modo)
{ 'P' => 'Presencial', 'R' => 'Remoto', 'S' => 'Servicio' }[modo] || modo
end
end
end