# Despliegue y mantenimiento ## Cómo se despliega No hay build ni compilación. El código PHP se sirve directo: ```bash git pull ``` Con eso los cambios están en producción. Es la contrapartida de no usar framework de frontend. **Si el cambio incluye esquema de base de datos**, hay que correr la migración además del `git pull`. ## Repositorio | | | |---|---| | Remoto | `gitea` | | Rama | `main` | Se trabaja directo sobre `main`. ## Migraciones Van en `migrations/`, con nombre `AAAAMMDD_descripcion.sql`. **Deben ser idempotentes** — poder correrse más de una vez sin causar daño: ```sql ALTER TABLE admin_users ADD COLUMN IF NOT EXISTS cedula VARCHAR(30) NULL AFTER cargo; UPDATE admin_users SET cedula = username WHERE cedula IS NULL AND username REGEXP '^[0-9]{5,15}$'; ``` MariaDB 11.8 admite `IF NOT EXISTS` en `ALTER TABLE`. Para `UPDATE` e `INSERT`, la guarda va en el `WHERE`. Antes de dar por buena una migración, córrala dos veces y verifique que la segunda no cambie nada. > Aplicar un cambio directo en producción sin dejar la migración hace que un entorno nuevo no lo tenga, y nadie se entera hasta que algo falla. Si toca el esquema, deje el archivo. ## Archivos subidos | Carpeta | Contenido | |---|---| | `uploads/turnero/tv_media/` | Videos e imágenes de la pantalla de TV | | `uploads/terms/` | Documentos de términos y condiciones | Se crean solas al primer uso. **No están en el repositorio**: al mover el sistema de servidor hay que copiarlas aparte, o los enlaces quedan rotos. ## Verificaciones después de desplegar ```bash # Sintaxis de los archivos tocados php -l archivo.php # ¿Responde un enlace público? curl -s -o /dev/null -w "%{http_code}\n" "https:///" ``` Si el cambio afectó permisos, recuerde que **las sesiones abiertas conservan los permisos viejos** hasta que el usuario vuelva a entrar. ## Configuración por entorno Las credenciales se leen de variables de entorno (`.env`, vía phpdotenv) y de `system_config`. El dominio no se configura: se deduce del `HTTP_HOST` de cada petición. ## Mantenimiento periódico | Cada | Revisar | |---|---| | Semana | Consumo de LIA (`lab_config.lia_tokens_usados`) contra el tope de 1.000.000 | | Mes | Que los enlaces enviados por WhatsApp respondan — sobre todo el de términos | | Mes | Consentimientos que quedaron sin firmar | | Trimestre | Plantillas de Meta: que sigan aprobadas | | Trimestre | Muestras pendientes acumuladas por paciente | Las consultas para varias de estas revisiones están en el [runbook](?m=soporte&v=documentacion&s=operacion&d=runbook).