# Correos de avance de tareas

El avance ya generaba avisos y trabajos en la cola `work-tasks`. En la revisión local se encontraron 94 trabajos pendientes y 94 avisos sin enviar, sin trabajos fallidos. Esto no confirma el estado del hosting, pero evidencia que configurar correctamente el transporte no basta si la cola no se procesa.

La actualización intenta enviar los nuevos avisos de solicitudes web después de confirmar la transacción y devolver la respuesta. Conserva el trabajo en cola como respaldo. Ambos caminos comparten un bloqueo y consultan `emailed_at` para evitar envíos simultáneos o repetir un aviso ya enviado. Si el intento falla, conserva el aviso pendiente y registra su identificador para diagnóstico.

El correo de avance muestra explícitamente el porcentaje y estado registrados en esa actualización, aunque la tarea cambie antes de enviar el correo. Respeta los destinatarios autorizados y la opción de correo de la empresa. No modifica los permisos ni habilita correos desactivados.

## Hosting

Subir:

```
app/Jobs/Work/SendWorkTaskNotice.php
app/Services/Work/TaskMailImmediateDelivery.php
app/Services/Work/WorkTaskNotifier.php
app/Services/Work/WorkTaskMailDetails.php
resources/views/mail/work-task-notice.blade.php
```

Ejecutar desde la raíz:

```bash
php artisan optimize:clear
php artisan queue:restart
```

Mantener el cron de `php artisan schedule:run` cada minuto para procesar los reintentos, avisos programados y pendientes. Si no existe un trabajador residente, el programador ya incluye la cola work-tasks. Usar las rutas absolutas del PHP y proyecto del hosting.

Los 94 correos históricos no se enviaron durante esta corrección. Para procesar deliberadamente los pendientes, el comando es:

```bash
php artisan queue:work database --queue=work-tasks --stop-when-empty --tries=3 --timeout=60
```

Esto puede enviar avisos históricos. La entrega final en la bandeja depende de la respuesta del proveedor; un transporte exitoso indica aceptación, no lectura ni entrega garantizada. El envío posterior a la respuesta sigue sujeto al límite de ejecución de PHP; la cola es el respaldo si la petición termina antes.
