[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:
@@ -0,0 +1,54 @@
|
||||
-- 001_create_ambitos.sql
|
||||
-- Creación de tabla ambitos y modificación de nodos y entradas
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
-- Crear tabla ambitos
|
||||
CREATE TABLE IF NOT EXISTS bitacoras.ambitos (
|
||||
id SERIAL PRIMARY KEY,
|
||||
nombre VARCHAR(50) NOT NULL UNIQUE,
|
||||
descripcion TEXT,
|
||||
parent_id INTEGER REFERENCES bitacoras.ambitos(id) ON DELETE SET NULL,
|
||||
activo BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Índices para ambitos
|
||||
CREATE INDEX IF NOT EXISTS idx_ambitos_nombre ON bitacoras.ambitos(nombre);
|
||||
CREATE INDEX IF NOT EXISTS idx_ambitos_parent ON bitacoras.ambitos(parent_id);
|
||||
|
||||
-- Modificar tabla nodos: añadir ambito_id
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'bitacoras' AND table_name = 'nodos' AND column_name = 'ambito_id'
|
||||
) THEN
|
||||
ALTER TABLE bitacoras.nodos
|
||||
ADD COLUMN ambito_id INTEGER REFERENCES bitacoras.ambitos(id) ON DELETE SET NULL;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_nodos_ambito ON bitacoras.nodos(ambito_id);
|
||||
END IF;
|
||||
|
||||
-- Modificar tabla entradas: añadir ambito_id
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema = 'bitacoras' AND table_name = 'entradas' AND column_name = 'ambito_id'
|
||||
) THEN
|
||||
ALTER TABLE bitacoras.entradas
|
||||
ADD COLUMN ambito_id INTEGER REFERENCES bitacoras.ambitos(id) ON DELETE SET NULL;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_entradas_ambito ON bitacoras.entradas(ambito_id);
|
||||
END IF;
|
||||
|
||||
-- Crear vista materializada o tabla resumen_ambitos
|
||||
CREATE TABLE IF NOT EXISTS bitacoras.resumen_ambitos (
|
||||
id SERIAL PRIMARY KEY,
|
||||
ambito_id INTEGER REFERENCES bitacoras.ambitos(id),
|
||||
fecha DATE,
|
||||
total_entradas INTEGER DEFAULT 0,
|
||||
tiempo_total INTERVAL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(ambito_id, fecha)
|
||||
);
|
||||
|
||||
END $$;
|
||||
@@ -0,0 +1,64 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Migration: Create table for storing metrics for the continuous improvement sensor
|
||||
#
|
||||
# Usage:
|
||||
# ruby adn/tools/db/migrations/001_create_mejoras_metricas_table.rb
|
||||
#
|
||||
# This migration is designed to be run once to set up the sensor metrics table.
|
||||
|
||||
require_relative '../core/bitacora_db'
|
||||
|
||||
puts "🔧 Running migration: Create mejoras_metricas table"
|
||||
|
||||
BitacorasDB::BitacoraDB.with_connection do |db|
|
||||
# Check if table already exists
|
||||
table_exists = db.execute(<<~SQL)
|
||||
SELECT EXISTS (
|
||||
SELECT FROM information_schema.tables
|
||||
WHERE table_schema = 'bitacoras'
|
||||
AND table_name = 'mejoras_metricas'
|
||||
)
|
||||
SQL
|
||||
|
||||
if table_exists.first['exists']
|
||||
puts "✅ Table bitacoras.mejoras_metricas already exists. Skipping."
|
||||
else
|
||||
puts "📝 Creating table bitacoras.mejoras_metricas..."
|
||||
|
||||
create_table_sql = <<~SQL
|
||||
CREATE TABLE bitacoras.mejoras_metricas (
|
||||
id SERIAL PRIMARY KEY,
|
||||
timestamp TIMESTAMPTZ DEFAULT NOW(),
|
||||
subcomando VARCHAR(100) NOT NULL,
|
||||
args_hash VARCHAR(64),
|
||||
nodo VARCHAR(100),
|
||||
estado_salida VARCHAR(10),
|
||||
duracion_ms INTEGER,
|
||||
es_ia BOOLEAN DEFAULT FALSE,
|
||||
contexto JSONB
|
||||
)
|
||||
SQL
|
||||
|
||||
db.execute(create_table_sql)
|
||||
puts "✅ Table bitacoras.mejoras_metricas created successfully."
|
||||
|
||||
# Create indexes for common queries
|
||||
indexes = [
|
||||
"CREATE INDEX idx_mejoras_metricas_timestamp ON bitacoras.mejoras_metricas (timestamp)",
|
||||
"CREATE INDEX idx_mejoras_metricas_subcomando ON bitacoras.mejoras_metricas (subcomando)",
|
||||
"CREATE INDEX idx_mejoras_metricas_nodo ON bitacoras.mejoras_metricas (nodo)",
|
||||
"CREATE INDEX idx_mejoras_metricas_estado ON bitacoras.mejoras_metricas (estado_salida)",
|
||||
"CREATE INDEX idx_mejoras_metricas_es_ia ON bitacoras.mejoras_metricas (es_ia)"
|
||||
]
|
||||
|
||||
indexes.each do |index_sql|
|
||||
db.execute(index_sql)
|
||||
puts "📈 Created index: #{index_sql.split(' ')[2]}"
|
||||
end
|
||||
|
||||
puts "🎉 Migration completed successfully."
|
||||
end
|
||||
end
|
||||
|
||||
puts "🏁 Migration finished."
|
||||
@@ -0,0 +1,55 @@
|
||||
-- 002_migrate_nodos_ambitos.sql
|
||||
-- Seed de ámbitos iniciales y migración de nodos
|
||||
|
||||
DO $$
|
||||
DECLARE
|
||||
id_diiaa INTEGER;
|
||||
id_dasuten INTEGER;
|
||||
id_bitacoras INTEGER;
|
||||
BEGIN
|
||||
-- 1. Insertar ámbitos principales
|
||||
INSERT INTO bitacoras.ambitos (nombre, descripcion, parent_id)
|
||||
VALUES ('dtic-DIIAA', 'Ámbito raíz: Infraestructura y servicios propios', NULL)
|
||||
ON CONFLICT (nombre) DO UPDATE SET descripcion = EXCLUDED.descripcion
|
||||
RETURNING id INTO id_diiaa;
|
||||
|
||||
INSERT INTO bitacoras.ambitos (nombre, descripcion, parent_id)
|
||||
VALUES ('dtic-DASUTEN', 'Departamento de Servicios UTN (gestionado)', id_diiaa)
|
||||
ON CONFLICT (nombre) DO UPDATE SET descripcion = EXCLUDED.descripcion
|
||||
RETURNING id INTO id_dasuten;
|
||||
|
||||
INSERT INTO bitacoras.ambitos (nombre, descripcion, parent_id)
|
||||
VALUES ('dtic-BITACORAS', 'Sistema de registro ADN', id_diiaa)
|
||||
ON CONFLICT (nombre) DO UPDATE SET descripcion = EXCLUDED.descripcion
|
||||
RETURNING id INTO id_bitacoras;
|
||||
|
||||
-- 2. Migrar nodos a dtic-DASUTEN
|
||||
UPDATE bitacoras.nodos
|
||||
SET ambito_id = id_dasuten
|
||||
WHERE nombre IN ('srv-dasu', 'dasu-srvv-dc', 'sql-dasuten', 'dc-dasuten', 'pc-dasu0')
|
||||
OR nombre LIKE 'pcv-dasu%';
|
||||
|
||||
-- 3. Migrar nodos a dtic-BITACORAS
|
||||
UPDATE bitacoras.nodos
|
||||
SET ambito_id = id_bitacoras
|
||||
WHERE nombre = 'dtic-BITACORAS' OR nombre = 'dtic-DIIAA';
|
||||
|
||||
-- 4. Migrar nodos restantes a dtic-DIIAA (Infraestructura y Servicios)
|
||||
UPDATE bitacoras.nodos
|
||||
SET ambito_id = id_diiaa
|
||||
WHERE ambito_id IS NULL AND (
|
||||
nombre LIKE 'srv-%'
|
||||
OR nombre LIKE 'srvv-%'
|
||||
OR nombre = 'pc-frlr'
|
||||
OR nombre LIKE 'pc-%'
|
||||
);
|
||||
|
||||
-- Nota: Los nodos que no apliquen a ninguna regla quedarán con ambito_id NULL temporalmente
|
||||
|
||||
-- 5. Propagar ambito_id a las entradas existentes
|
||||
UPDATE bitacoras.entradas e
|
||||
SET ambito_id = n.ambito_id
|
||||
FROM bitacoras.nodos n
|
||||
WHERE e.nodo_id = n.id AND e.ambito_id IS NULL;
|
||||
|
||||
END $$;
|
||||
Reference in New Issue
Block a user