docs & tools: Actualización de informes y scripts de migración DASUTEN

This commit is contained in:
Ricardo Monla
2026-04-20 16:25:51 -03:00
parent faf46be84b
commit 65dd92b769
44 changed files with 3822 additions and 568 deletions
+28 -20
View File
@@ -4,6 +4,15 @@
DO $$
BEGIN
-- Agregar columna 'codigo' a ambitos si no existe
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'bitacoras' AND table_name = 'ambitos' AND column_name = 'codigo'
) THEN
ALTER TABLE bitacoras.ambitos ADD COLUMN codigo VARCHAR(10);
CREATE UNIQUE INDEX IF NOT EXISTS idx_ambitos_codigo ON bitacoras.ambitos(codigo);
END IF;
-- Crear tabla planes (dentro de un ámbito)
CREATE TABLE IF NOT EXISTS bitacoras.planes (
id SERIAL PRIMARY KEY,
@@ -38,24 +47,23 @@ BEGIN
-- Mantener fase_id por compatibilidad temporal (se deprecará en el futuro)
-- Los nuevos hitos deben usar plan_id
-- Crear vista resumen_planes para métricas
CREATE OR REPLACE VIEW bitacoras.resumen_planes AS
SELECT
p.id AS plan_id,
p.codigo,
p.titulo,
p.estado,
a.codigo AS ambito_codigo,
a.nombre AS ambito_nombre,
COUNT(h.id) AS total_hitos,
COUNT(CASE WHEN h.estado = '' THEN 1 END) AS hitos_completados,
COALESCE(SUM(h.horas_presencial), 0) AS total_horas_presencial,
COALESCE(SUM(h.horas_remoto), 0) AS total_horas_remoto,
MIN(h.fecha) AS fecha_inicio_real,
MAX(h.fecha) AS fecha_fin_real
FROM bitacoras.planes p
LEFT JOIN bitacoras.ambitos a ON p.ambito_id = a.id
LEFT JOIN bitacoras.hitos h ON p.id = h.plan_id
GROUP BY p.id, p.codigo, p.titulo, p.estado, a.codigo, a.nombre;
END $$;
-- Crear vista resumen_planes para métricas (fuera del bloque DO)
CREATE OR REPLACE VIEW bitacoras.resumen_planes AS
SELECT
p.id AS plan_id,
p.codigo,
p.titulo,
p.estado,
a.nombre AS ambito_nombre,
COUNT(h.id) AS total_hitos,
COUNT(CASE WHEN h.estado = '' THEN 1 END) AS hitos_completados,
COALESCE(SUM(h.horas_presencial), 0) AS total_horas_presencial,
COALESCE(SUM(h.horas_remoto), 0) AS total_horas_remoto,
MIN(h.fecha) AS fecha_inicio_real,
MAX(h.fecha) AS fecha_fin_real
FROM bitacoras.planes p
LEFT JOIN bitacoras.ambitos a ON p.ambito_id = a.id
LEFT JOIN bitacoras.hitos h ON p.id = h.plan_id
GROUP BY p.id, p.codigo, p.titulo, p.estado, a.nombre;