docs & tools: Actualización de informes y scripts de migración DASUTEN
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user