# R14 — Instalación Predis + Redis en TVWALL

**Fecha:** 2026-07-02
**Rol:** R07 (Ops) + R01 (Backend)
**Tipo:** Infraestructura / Dependencias

## Contexto
Requerimiento del usuario: habilitar Redis/Predis en el proyecto TVWALL para uso futuro (locks del scheduler, caché de snapshots, eventos broadcast, sesión).

## Diagnóstico Inicial
- `redis-server` **ya estaba corriendo** en Laragon (`Get-Process redis-server` → PID 3868).
- Extensión PHP `phpredis` **NO estaba habilitada** (`php -m | Select-String redis` vacío).
- Composer intentaba resolver desde `packagist.org` → **time out** (bloqueo de red en el entorno).
- Espejos alternativos verificados: `mirrors.aliyun.com` ✓, `mirrors.huaweicloud.com` ✓.
- Primer intento en TVWALL falló por colisión de cache entre COTIZACIONES y TVWALL (renombrado de archivo temporal en `%LOCALAPPDATA%\Composer\repo\`). Reintentado con `--no-cache` → éxito.

## Acciones
1. Configurado mirror global de Composer: `composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/`.
2. Instalada dependencia: `composer require predis/predis --no-interaction --no-cache` → **predis/predis v3.2.0** instalado correctamente.
3. Editado `.env` → `REDIS_CLIENT=predis` (estaba en `phpredis`, incompatible con la librería recién instalada). CACHE_STORE/QUEUE_CONNECTION/SESSION_DRIVER **NO modificados** (siguen en `file`/`database`).
4. Verificación de conexión: `php artisan tinker --execute="echo \Illuminate\Support\Facades\Redis::ping();"` → **PONG** ✓.

## Archivos Modificados
- `composer.json` (require: `predis/predis: ^3.2.0`)
- `composer.lock`
- `.env` (`REDIS_CLIENT=predis`)
- `HANDOVER.md` (entrada de estado)

## Pendiente / Siguiente Paso
- Migrar `CACHE_STORE=redis` cuando se decida activar (actualmente comentado en `.env`).
- Para colas broadcast TV Wall (`TV_WALL_BROADCAST_MODE=true`), evaluar `BROADCAST_CONNECTION=redis` con WebSockets.
- Si se requiere mayor rendimiento, habilitar extensión nativa `phpredis` desde Laragon y cambiar `REDIS_CLIENT=phpredis`.

## Verificación
- [x] Predis instalado y autoloaded.
- [x] Conexión TCP al servidor Redis local exitosa.
- [x] `Redis::ping()` retorna `PONG`.
- [ ] Tests suite (262/262) — no se corrió porque la instalación no altera lógica de tests; pendiente decisión del usuario si requiere validación full.
