# SERINTSA — Web Push para Empleados al finalizar ticket
Build: 20260811-73

## Comportamiento
- Supervisor: conserva alertas por tickets nuevos de sus áreas.
- Agente: conserva alertas cuando un ticket es asignado/reasignado a su usuario.
- Empleado (is_client=1): recibe Web Push únicamente cuando un ticket cuyo `client_id` es su usuario pasa a `status_id=4` (Finalizado).
- Administrador: conserva el diagnóstico técnico Web Push.

## Seguridad e idempotencia
- La cola `ticket_finished` usa `recipient_user_id` con el `client_id` real del ticket.
- Antes de crear/reparar entregas, el servidor vuelve a validar que el ticket esté Finalizado y siga perteneciendo al mismo Empleado.
- El id de bitácora de finalización forma parte de `event_key`, evitando duplicados en la ruta principal.
- Las suscripciones se guardan por usuario y dispositivo; un Empleado no recibe eventos de otros usuarios.

## Portal Empleado
- Se habilitó la suscripción Push para sesiones `user_id`.
- Se añadió Service Worker de alcance raíz: `/serintsa-notifications-sw.js`.
- Se añadió manifest PWA raíz: `/manifest-serintsa.json` para compatibilidad móvil/iOS.
- El empleado no ve `Push OK` ni el diagnóstico; solo el aviso de activación cuando el dispositivo aún no está suscrito.
- Se añadió fallback interno (con la aplicación abierta) para eventos `ticket_finished`.

## Archivos principales modificados
- admin/lib/SerintsaWebPushService.php
- admin/config/report_access.php
- admin/ajax/push_config_ajax.php
- admin/ajax/push_subscription_ajax.php
- admin/ajax/push_test_ajax.php
- admin/action/addfinishticket.php
- admin/action/finalizarticket.php
- admin/js/supervisor_browser_notifications.js
- admin/footer.php
- header.php
- footer.php

## Archivos nuevos
- ajax/employee_notifications_ajax.php
- serintsa-notifications-sw.js
- manifest-serintsa.json
