IPS SERINTSA — BUILD 140
FINALIZACIÓN ROBUSTA DE TICKET

Base:
- BUILD 139.

Síntoma:
- Al pulsar "Crear Ticket" aparecía:
  "No fue posible comunicarse con el servidor para crear el ticket."

Diagnóstico:
- El navegador sí ejecutaba finalizar().
- El mensaje solo aparece en el callback AJAX error, por lo que finish_ticket.php
  estaba devolviendo un error HTTP o cerrando la petición durante la finalización.
- El flujo legado actualizaba el ticket ANTES de ejecutar Web Push y correo SMTP.
  Por tanto, un fallo posterior de push/SMTP podía hacer que el navegador mostrara
  error aunque el ticket ya hubiera sido marcado como creado.

Correcciones:
1. finish_ticket.php ahora separa la creación principal de servicios secundarios.
2. El ticket se actualiza y la bitácora se registra dentro de una transacción.
3. Se responde "Ticket Creado." al navegador antes de procesar correo/push cuando
   el servidor soporta fastcgi_finish_request().
4. Web Push y SMTP están protegidos con try/catch:
   - sus fallos se escriben en error_log;
   - nunca convierten un ticket creado en error para el usuario.
5. Finalización idempotente:
   - si un intento anterior ya dejó status_ticket=1 + number_ticket, un reintento
     devuelve éxito;
   - no duplica la bitácora.
6. Protección frente a doble finalización concurrente.
7. El frontend usa POST y timeout de 30 segundos.
8. Si una respuesta de error contiene realmente "Ticket Creado", la interfaz la
   reconoce como creación exitosa.
9. Durante finalizar() se bloquea temporalmente el descarte automático del borrador.
10. Si la finalización falla realmente, se vuelve a habilitar el descarte al salir.

Se conserva:
- borrado completo del borrador al abandonar Agregar Ticket;
- múltiples adjuntos;
- listado individual;
- cámara;
- capturas pegadas;
- Firebase/Web Push;
- correo SMTP.

Cache:
- serintsa-ticket-paste.js?v=20260818-140

Validación:
- PHP revisados: 636
- Errores PHP: 0
- JavaScript externo: node --check OK
- JavaScript inline de finalización empleado/admin: node --check OK

APK:
- No requiere recompilar la APK BUILD 84.
- Es una actualización web/cPanel.
