# AUTOS GAD API — Checkpoint 15.12

## Cambios incluidos

- Mantenimientos programados por fecha, kilometraje o el primer límite que ocurra.
- Ingresos inmediatos a taller sin exigir fecha ni kilometraje programado.
- Estados `mantenimiento_requerido` y `mantenimiento`, ambos no asignables.
- Alertas de mantenimiento por correo, bandeja interna y notificación push.
- Evidencias fotográficas obligatorias o justificadas en incidencias, según el tipo.
- De una a cinco fotografías por vista en las inspecciones de entrega y devolución.
- Reporte PDF compatible con múltiples fotografías por vista y etiquetas “Lateral del conductor” y “Lateral del copiloto”.
- Encabezado institucional compatible con Outlook en el correo de contraseña temporal.

## Corrección 15.12.1 de migración MySQL

La migración `2026_08_25_000023_expand_maintenance_and_inspection_evidence`
crea primero un índice auxiliar para la llave foránea de
`fotografias_inspeccion.inspeccion_id` y después elimina el índice único
anterior. También puede reanudarse con seguridad si el primer intento alcanzó
a crear parcialmente las columnas de mantenimiento.

No se requiere eliminar datos, ejecutar `migrate:fresh` ni revertir otras
migraciones.

## Corrección 15.12.2 de catálogo de estados

- El alta de `mantenimiento_requerido` utiliza únicamente las columnas reales de `estados_vehiculo`.
- Se eliminó la referencia incorrecta a `disponible_asignacion`; la unidad sigue excluida de las asignaciones mediante la clave del estado y las reglas operativas del API.
- Puede repetirse `php artisan migrate --seed` después de los intentos parciales anteriores, sin borrar información.

## Instalación

Desde la carpeta del API:

```powershell
composer install
php artisan migrate --seed
php artisan optimize:clear
php artisan test
```

Para procesar las alertas manualmente durante las pruebas:

```powershell
php artisan alerts:generate
php artisan queue:work
```

En operación, deben mantenerse activos el programador de Laravel y el worker de colas.

## Pruebas recomendadas

1. Crear un mantenimiento programado únicamente por fecha y otro únicamente por kilometraje.
2. Crear un ingreso inmediato a taller y confirmar que el vehículo deje de ser asignable.
3. Finalizar y cancelar mantenimientos, verificando el estado final del vehículo.
4. Reportar daño/accidente sin fotografía y confirmar la validación; repetir con evidencia.
5. Guardar entre una y cinco fotografías por vista en entrega y devolución.
6. Generar el reporte PDF y comprobar fotografías, firmas y nombres de laterales.
