# Coaster World DATA v1.2.0 — installation du lot Excel

Base requise pour le ZIP de mise à jour : `coaster-world-data_v1.1.0_2026-10-03_full.zip`. La version 1.2.0 ajoute l’import Excel et ne nécessite aucune migration nouvelle ni nouvelle dépendance Composer. MySQL reste la base utilisée sous Laragon.

## Mettre à jour l’installation existante

1. Sauvegarder la base et conserver une copie du dossier du projet. Dans le terminal Laragon en mode CMD :

```bat
cd /d C:\laragon\www\coaster-world-data
STOP_DATA.bat
php artisan down
```

2. Extraire `coaster-world-data_v1.2.0_2026-10-04_update.zip` à la racine du projet, à côté d’`artisan`, et accepter le remplacement des fichiers. L’archive contient uniquement les fichiers créés ou modifiés pour ce lot.

3. Ouvrir `.env` et actualiser sa ligne existante :

```bat
notepad .env
```

```dotenv
CW_DATA_VERSION=1.2.0
```

Conserver `DB_CONNECTION=mysql`, les paramètres MySQL, l’`APP_KEY` et les choix des fournisseurs. Si le User-Agent standard est explicitement réglé sur la précédente version, il peut être actualisé à `CoasterWorldData/1.2.0`.

4. Vider les caches et redémarrer :

```bat
php artisan optimize:clear
php artisan up
START_DATA.bat
```

5. Rafraîchir le navigateur avec Ctrl+F5. Le raccourci **Importer Excel** doit apparaître dans l’accueil. Le même accès figure dans **Outils avancés** et sur les fiches parc.

Les scripts Windows du socle sont conservés. Il n’est pas nécessaire d’exécuter `UPDATE_DATA.bat` pour ce lot sans changement de schéma.

## Préparer Laragon pour les fichiers Excel

PHP 8.3+ doit disposer de `zip`, `dom`, `mbstring`, `fileinfo` et `pdo_mysql`, en plus des extensions requises par Laravel. Contrôler avec :

```bat
php -m
```

Pour charger des fichiers proches de la limite de 8 Mo, le `php.ini` du serveur web doit autoriser au moins `upload_max_filesize=8M` et `post_max_size=16M`. Redémarrer le serveur web après modification. Les fiches d’exemple utilisées pour la validation sont inférieures à 1 Mo.

## Faire le premier import

1. Ouvrir **Accueil → Importer Excel** avec un compte administrateur ou éditeur.
2. Choisir une fiche `.xlsx` renseignée. Les modèles vides ne créent aucune donnée. Un fichier `.xls` doit être enregistré au format `.xlsx` avec un tableur.
3. Laisser **Utiliser le parc indiqué dans le fichier**, ou sélectionner le parc existant approprié. Le nom déclaré doit correspondre au nom ou à un alias du parc sélectionné ; un autre parc provoque une erreur.
4. Cliquer sur **Prévisualiser**. L’aperçu affiche les fiches et leurs champs. Il prépare un lot d’ingestion, sans créer de fiches métier ni de valeurs finales.
5. Vérifier les noms, le rattachement et les exceptions. Les identités ambiguës ne seront pas associées automatiquement.
6. Cocher la confirmation, puis cliquer sur **Importer le lot**. Le parc est traité en premier, puis les zones et les contenus. Les nouvelles valeurs exploitables sont intégrées ; les valeurs existantes différentes sont conservées.
7. Consulter **Exceptions du lot**. Ouvrir le candidat ou la file **À vérifier** pour décider des cas signalés. Après résolution des identités ou activation d’un fournisseur nécessaire, **Reprendre le lot** poursuit les éléments restants.

Pour une fiche détaillée d’attraction déclarant un parc absent, l’import peut créer une fiche minimale du parc parent. Elle reste à compléter. Pour un fichier sans nom de parc parent, sélectionner un parc existant avant l’aperçu.

## Modèles pris en charge

Conserver les noms d’onglets et leurs en-têtes. Les fiches verticales utilisent les colonnes **Champ / Valeur** ; les tableaux de contenu utilisent une colonne **Nom** ou **Nom commun**. Les colonnes Source, Confiance, Statut et Notes sont conservées lorsqu’elles existent.

| Fiche ou tableau | Rattachement dans DATA |
| --- | --- |
| Fiche parc | Parc |
| Attractions / Fiche attraction | Attraction |
| Coasters / Fiche coaster | Attraction avec fiche technique Coaster |
| Spectacles / Fiche spectacle | Attraction de type spectacle |
| Animaux / Fiche animal | Attraction de type expérience, avec champs spécifiques conservés |
| Restauration / Fiche restaurant | POI restaurant |
| Hébergements / Fiche hébergement | POI hôtel |
| Fiche boutique | POI boutique |
| Fiche zone | Zone du parc |
| Zones & POI / Fiche POI | Zone lorsque le type est Zone, sinon POI |

Limites par classeur : un seul parc parent, 250 fiches, 32 onglets, 10 000 lignes par onglet et 100 000 cellules renseignées. Le lecteur tolère les cellules vides mises en forme des modèles.

Les champs supplémentaires sont conservés dans `excel.*` et ajoutés au dictionnaire lorsque nécessaire. Les validations et périmètres des champs déjà définis restent applicables. Les dates Excel sont reconnues ; les nombres avec virgule décimale, zéro et faux sont conservés. Les formules et erreurs Excel sont signalées, sans exécution ; remplacer une formule par sa valeur fixe avant un nouveau chargement.

Calendrier, Services & tarifs, Fréquentation, Historique, Identifiants externes et Sources sont conservés comme tableaux à vérifier. Ils ne deviennent pas automatiquement des lignes d’horaires Live, de fréquentation ou d’historique métier. Les onglets non reconnus sont signalés et ne sont pas intégrés. Les images incorporées dans le classeur ne sont pas importées comme médias.

## Réimport et sources

- Le même fichier avec le même choix de parc rouvre son lot existant. Reprendre un lot traité ne crée pas de doublons.
- Un fichier modifié crée un nouveau lot. Les identifiants vérifiés, noms exacts et alias permettent de retrouver les fiches. Une ressemblance seule reste à vérifier.
- Les corrections humaines et les autres valeurs finales différentes ne sont pas remplacées. La proposition reste consultable avec son origine.
- Les identifiants RCDB, Wikidata, ThemeParks.wiki, Queue-Times et OpenStreetMap sont associés uniquement à un fournisseur actif existant et à une cible cohérente. Un fournisseur manquant, désactivé ou un conflit est signalé ; la donnée source reste conservée.
- Le nom du fichier, son empreinte SHA-256, les onglets, lignes, libellés et données lues sont conservés dans le lot. Le fichier binaire chargé n’est pas archivé par l’application : conserver son original.
- Les URL sont enregistrées comme sources ; l’import ne consulte pas les sites web et n’effectue pas de recherche IA.

## Checklist après installation

- [ ] L’API de santé annonce la version 1.2.0 et les données existantes sont présentes.
- [ ] Importer Excel est accessible depuis l’accueil et une fiche parc.
- [ ] Un aperçu de fiche renseignée ne crée pas encore de parc ou de contenu.
- [ ] L’import confirmé crée ou associe les fiches au bon parc.
- [ ] Le réimport du même fichier rouvre le même lot et conserve les compteurs.
- [ ] Les sources et les exceptions sont accessibles ; une correction existante reste conservée.
- [ ] Un modèle vide ou un mauvais parc de rattachement affiche une erreur.
- [ ] Les cinq langues, les thèmes clair/sombre, le Live et les fournisseurs restent accessibles.

Contrôles disponibles :

```bat
php artisan cw:system:status
curl http://coaster-world-data.test/api/v1/health
```

Adapter l’URL au domaine habituel. Pour contrôler les empreintes des archives avec PowerShell :

```powershell
Get-FileHash .\coaster-world-data_v1.2.0_2026-10-04_update.zip -Algorithm SHA256
Get-FileHash .\coaster-world-data_v1.2.0_2026-10-04_full.zip -Algorithm SHA256
```

Comparer avec `SHA256SUMS_v1.2.0.txt`.

## Installation neuve et retour à la version précédente

Pour une installation neuve, extraire l’archive `_full.zip` dans un nouveau dossier, configurer la racine web sur `public/`, créer une base MySQL vide, copier `.env.example` en `.env` puis renseigner les paramètres. Lancer `INSTALL_DATA.bat`, ouvrir `/setup` pour créer l’administrateur, puis lancer `START_DATA.bat`. Les dépendances PHP sont fournies et aucun build npm n’est nécessaire pour l’administration.

Un retour aux fichiers v1.1.0 ne supprime pas les fiches déjà importées. Pour retrouver exactement l’état antérieur à un import, restaurer la sauvegarde correspondante de la base et des fichiers, avec son `.env` et son `APP_KEY`.

La nouvelle référence complète est `coaster-world-data_v1.2.0_2026-10-04_full.zip`. Le détail des contrôles réels figure dans `docs/VALIDATION_v1.2.0.md`. Les scripts Windows sont à vérifier sur la machine Laragon : la validation automatisée a été exécutée sous Linux, avec PHP 8.3 et le pilote MySQL sur MariaDB.
