From d448ccc707c30bbcc2c1af9a78b8c08743481a14 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Mon, 3 Aug 2026 15:05:05 -0500 Subject: [PATCH] Registrar en migrations los cambios de esquema aplicados hoy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Los cambios del 2026-08-03 (admin_users.cedula, turnero_consentimientos.creado_por, turnero_muestras.recibida_en_turno_id y la tabla turnero_tv_media) se aplicaron directo en producción y no quedaron en el repo, así que un entorno nuevo no los tendría. Se registran como migración idempotente (IF NOT EXISTS + guardas en el UPDATE/INSERT); verificada contra producción sin efectos. Co-Authored-By: Claude Opus 5 --- ...803_turnero_trazabilidad_y_tv_playlist.sql | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 migrations/20260803_turnero_trazabilidad_y_tv_playlist.sql diff --git a/migrations/20260803_turnero_trazabilidad_y_tv_playlist.sql b/migrations/20260803_turnero_trazabilidad_y_tv_playlist.sql new file mode 100644 index 0000000..d82df12 --- /dev/null +++ b/migrations/20260803_turnero_trazabilidad_y_tv_playlist.sql @@ -0,0 +1,44 @@ +-- 20260803 — Cambios de esquema del turnero aplicados el 2026-08-03 +-- Ya ejecutados en producción; este archivo los deja registrados para +-- reconstruir el esquema desde cero o replicarlo en otro entorno. +-- Todos usan IF NOT EXISTS para ser idempotentes. + +-- 1. Cédula del profesional firmante (antes solo existía para enfermeros +-- vía lab_enfermeras; bacteriólogos y recepcionistas no tenían dónde). +ALTER TABLE admin_users + ADD COLUMN IF NOT EXISTS cedula VARCHAR(30) NULL AFTER cargo; + +-- Poblar desde el username cuando es numérico (así estaban registrados +-- bacteriólogos, recepcionistas y superadmin). +UPDATE admin_users SET cedula = username + WHERE cedula IS NULL AND username REGEXP '^[0-9]{5,15}$' AND is_active = 1; + +-- 2. Quién generó cada consentimiento del turnero. Sin esto el pie +-- "Enviado por" mostraba al usuario que estuviera viendo el documento. +ALTER TABLE turnero_consentimientos + ADD COLUMN IF NOT EXISTS creado_por INT NULL AFTER estado; + +-- 3. En qué turno se recibió una muestra que quedó pendiente de otra visita. +-- El turno original no se modifica; esto solo permite vincularlos. +ALTER TABLE turnero_muestras + ADD COLUMN IF NOT EXISTS recibida_en_turno_id INT UNSIGNED NULL AFTER recibida_at; + +-- 4. Playlist de la Pantalla TV (reemplaza la clave única turnero_tv_video +-- de lab_config por una lista ordenable de videos e imágenes). +CREATE TABLE IF NOT EXISTS turnero_tv_media ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT, + tipo ENUM('video','imagen') NOT NULL, + url VARCHAR(500) NOT NULL, + orden INT NOT NULL DEFAULT 0, + duracion_segundos INT NOT NULL DEFAULT 8, + activo TINYINT(1) NOT NULL DEFAULT 1, + creado_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (id), + KEY idx_orden (activo, orden) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- Migrar el video único que existía en lab_config como primer ítem. +INSERT INTO turnero_tv_media (tipo, url, orden, duracion_segundos, activo) +SELECT 'video', valor, 0, 8, 1 FROM lab_config + WHERE clave = 'turnero_tv_video' AND valor <> '' + AND NOT EXISTS (SELECT 1 FROM turnero_tv_media);