Registrar en migrations los cambios de esquema aplicados hoy

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 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-03 15:05:05 -05:00
co-authored by Claude Opus 5
parent 25a099c6ef
commit d448ccc707
@@ -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);