# Coaster World v1.125.4 — 2026-09-19

## Passe de non-régression API mobile

Cette version part de **v1.125.3** et effectue une passe complète des routes consommées par l’application mobile afin d’éviter les régressions constatées sur favoris, globe, historique et classeur.

### Correctifs restaurés

- Restaure `GET /api/v1/parks/user-statuses` utilisé par les filtres personnels d’Explorer :
  - parcs visités ;
  - parcs « à faire » issus de la wishlist ;
  - parcs programmés issus des visites planifiées accessibles à l’utilisateur.
- Restaure le flux Google réellement utilisé par l’application mobile :
  - `GET /auth/google/mobile/redirect?challenge=...` ;
  - `POST /api/v1/auth/google/ticket`.
- Le ticket Google est temporaire, à usage unique et lié au challenge PKCE généré par l’application. Il ne contient pas le mot de passe ni le jeton API final.
- Le login Google mobile reste réservé aux comptes Google déjà associés à un compte Coaster World, conformément au comportement de l’application.

### Protection contre les futures régressions

- Ajout de `MobileApiFullContractV1254Test` qui vérifie la présence, la méthode HTTP et l’URI des routes utilisées par l’application : auth, catalogue, live, recherche, favoris, statuts personnels, visites, classeur, notifications, amis, groupes, QR et partage de position.
- Le test vérifie également que le contrat de liste des parcs conserve les champs nécessaires au mobile (`latitude`, `longitude`, `park_type`, compteurs, état, etc.).

## Déploiement

- Aucune migration SQL.
- Aucun `composer install` requis.
- Aucun `npm run build` requis.
- Exécuter `php artisan optimize:clear`, puis reconstruire les caches Laravel utilisés en production.
- Aucun redémarrage queue/scheduler requis.
