# Installation — Coaster World v1.112.0

Base : `coaster-world_v1.111.0_2026-08-25.zip`

## Mise à jour

1. Sauvegarder le site et la base de données.
2. Remplacer les fichiers du projet par la v1.112.0 en conservant le `.env` du serveur.
3. À la racine du projet :

```bash
php artisan optimize:clear
php artisan migrate:status
```

Aucune nouvelle migration n’est fournie. La migration Laravel standard `0001_01_01_000002_create_jobs_table.php` doit simplement être déjà appliquée. Si elle apparaît `Pending`, lancer :

```bash
php artisan migrate --force
```

## Traitement des analyses

La v1.112.0 utilise la file Laravel `park-analysis`. Le Scheduler contient désormais un worker de secours qui traite cette file toutes les minutes et s’arrête lorsqu’elle est vide.

Vérifier que le Scheduler du serveur tourne :

```bash
php artisan schedule:list
```

Il doit afficher une commande `queue:work ... --queue=park-analysis`.

Pour traiter immédiatement les analyses sans attendre le passage du Scheduler, un worker permanent peut être lancé :

```bash
php artisan queue:work database_park_analysis --queue=park-analysis --sleep=1 --tries=1 --timeout=420
```

Sous Laragon/Windows, le livrable contient aussi :

```text
tools/run_park_analysis_worker_windows.bat
```

Le worker permanent est optionnel si le Scheduler fonctionne ; il rend simplement le démarrage des analyses immédiat au lieu d’attendre au maximum le prochain passage d’une minute.

## Variables facultatives

Les valeurs par défaut conviennent. Elles peuvent être ajustées dans `.env` si nécessaire :

```env
PARK_ANALYSIS_QUEUE=park-analysis
PARK_ANALYSIS_RETRY_AFTER=480
PARK_ANALYSIS_WORKER_TIMEOUT=420
OSM_OVERPASS_TIMEOUT=25
```

`OSM_OVERPASS_TIMEOUT` est plafonné à 30 secondes par requête afin qu’une instance Overpass lente puisse être abandonnée au profit d’une instance de secours.

## Test conseillé

1. Ouvrir l’administration d’un parc.
2. Cliquer sur **Analyser et remplir**.
3. La console doit d’abord afficher **Analyse en file d’attente**, puis **Analyse en cours** lorsque le worker prend la tâche.
4. La progression doit continuer même si la page est rechargée.
5. Sur le domaine derrière Cloudflare, aucune étape longue ne doit rester dans la requête HTTP de la console.
6. Tester **Arrêter l’analyse** pendant OpenStreetMap : l’étape en cours peut finir sa requête distante, mais aucune étape suivante ne doit démarrer.
