SERINTSA - VALIDACION BUILD 20260811-72
=====================================

OBJETIVO
Web Push para usuarios tipo Agente, limitado exclusivamente a tickets asignados/reasignados a su propio usuario.

VALIDACIONES REALIZADAS
- 629 archivos PHP revisados con php -l: 0 errores de sintaxis.
- JavaScript admin/js/supervisor_browser_notifications.js validado con node --check.
- La detección is_agent NO modifica el permiso `allowed` del módulo Informes.
- push_config_ajax.php habilita Web Push a Administrador, Supervisor y Agente.
- push_subscription_ajax.php permite registrar suscripciones a Agentes autenticados.
- push_test_ajax.php permite la prueba inicial de activación al Agente.
- Los Agentes no reciben show_diagnostics y no muestran el botón técnico Push OK.
- Nueva columna web_push_queue.recipient_user_id con migración automática e índice.
- Evento ticket_created continúa resolviendo como destinatario al Supervisor del área.
- Evento ticket_assigned resuelve exclusivamente recipient_user_id.
- El destinatario ticket_assigned se valida nuevamente contra tickets.asigned_id antes del envío.
- Si el ticket fue reasignado antes de enviar una cola antigua, esa entrega se marca como expirada/omitida.
- addasigned.php genera Web Push después de confirmar la asignación.
- addreasigned.php genera Web Push después de confirmar la reasignación.
- El destinatario se valida como usuario tipo Agente: is_client=0, no administrador y no supervisor.
- Fallback interno para Agentes consulta únicamente web_push_queue.event_type=ticket_assigned y recipient_user_id de la sesión.
- SQL de instalación actualizado con recipient_user_id e índice correspondiente.

NO SE MODIFICA
- Claves VAPID / webpush.local.php.
- Cron de cPanel existente.
- Notificaciones de Supervisores por tickets creados en sus áreas.
- Diagnóstico Web Push, que continúa visible únicamente a Administradores.

LIMITACION DE VALIDACION
No se realizó un envío real contra la base de datos y FCM de producción desde este entorno. La prueba final debe hacerse iniciando sesión como Agente, activando notificaciones en su dispositivo y asignándole un ticket desde otro usuario.
