# Coaster World DATA v1.2.0 — 04/10/2026

Base : `coaster-world-data_v1.1.0_2026-10-03_full.zip`, SHA-256 `96e26d451893e7d76c519ff8b8e3fc362cc39f3fc6eae945819171d4d7bd5988`. Cette archive reste inchangée.

## Lot 2 livré : Excel

- Chargement XLSX depuis l’accueil, une fiche parc, Ingestion ou Outils avancés.
- Aperçu des fiches, sources, actions et exceptions avant confirmation ; aucune fiche métier ni valeur finale créée pendant l’aperçu.
- Lecture des modèles Coaster World DATA : fiche parc et tableaux de contenu, pack de fiches détaillées Champ / Valeur, fiches remplies Spirou Provence et Danse Macabre.
- Intégration du parc, des zones, attractions, coasters et POI avec le moteur d’ingestion existant. Regroupement des entrées Attraction / Coaster d’une même fiche.
- Rattachement au parc déclaré ou sélectionné, création possible d’un parc parent minimal et conservation des identités ambiguës pour résolution manuelle.
- Réutilisation du lot d’un fichier identique ; rattachement par identifiants connus, nom exact ou alias pour les nouveaux lots ; conservation des valeurs finales existantes différentes, dont les corrections humaines.
- Conservation des sources, libellés, valeurs lues, onglets et lignes. Identifiants vérifiés associés aux fournisseurs actifs existants si cohérents ; conflits signalés.
- Champs spécifiques conservés sous `excel.*`. Les règles des champs existants restent applicables, y compris lors d’un réimport. Les tableaux complémentaires restent à vérifier et ne modifient pas les horaires Live.
- Dates Excel Windows/Mac, chaînes partagées, textes enrichis, virgules décimales, zéro et faux reconnus. Formules et erreurs Excel signalées sans exécution.
- Historique des imports, reprise des lots et accès aux exceptions. Administrateurs et éditeurs autorisés ; lecteurs en consultation.
- Textes FR/EN/DE/ES/IT, thèmes clair/sombre et présentation vérifiée à 375, 768 et 1440 px.

Aucune nouvelle migration, table, dépendance ou modification du contrat API. Les scripts Laragon et correctifs du socle sont conservés. La version applicative passe de 1.1.0 à 1.2.0.

## Validation

16 tests Excel sur SQLite (122 assertions), 71 tests ciblés sur MariaDB avec le pilote MySQL (413 assertions), huit parcours navigateur et 60 contrôles d’affichage réussis. Compilation des vues, cache des routes, syntaxe PHP, traductions et format Pint vérifiés. Voir `docs/VALIDATION_v1.2.0.md` pour les commandes, limites et contrôles des archives.

## Fichiers créés ou modifiés

- `.env.example`
- `CHANGELOG_v1.2.0.md`
- `INSTALL_UPDATE_v1.2.0.md`
- `README.md`
- `app/Http/Controllers/Admin/ExcelImportController.php`
- `app/Http/Controllers/Admin/IngestionController.php`
- `app/Services/Ingestion/ExcelFieldMapper.php`
- `app/Services/Ingestion/ExcelIdentifierService.php`
- `app/Services/Ingestion/ExcelImportService.php`
- `app/Services/Ingestion/ExcelTemplateMapper.php`
- `app/Services/Ingestion/ExcelWorkbookReader.php`
- `app/Services/Ingestion/IngestionDecisionService.php`
- `app/Services/Ingestion/IngestionEntityResolver.php`
- `app/Services/Ingestion/IngestionMatcher.php`
- `app/Services/Ingestion/IngestionObservationService.php`
- `app/Services/Ingestion/IngestionStagingService.php`
- `config/coaster_world_data.php`
- `docs/VALIDATION_v1.2.0.md`
- `lang/de/admin.php`
- `lang/de/excel.php`
- `lang/en/admin.php`
- `lang/en/excel.php`
- `lang/es/admin.php`
- `lang/es/excel.php`
- `lang/fr/admin.php`
- `lang/fr/excel.php`
- `lang/it/admin.php`
- `lang/it/excel.php`
- `public/css/admin.css`
- `resources/views/admin/dashboard.blade.php`
- `resources/views/admin/excel/index.blade.php`
- `resources/views/admin/excel/show.blade.php`
- `resources/views/admin/ingestion/index.blade.php`
- `resources/views/admin/parks/show.blade.php`
- `resources/views/layouts/admin.blade.php`
- `routes/web.php`
- `tests/Feature/ExcelImportTest.php`
- `tests/Fixtures/Excel/blank-entities.xlsx`
- `tests/Fixtures/Excel/blank-park.xlsx`
- `tests/Fixtures/Excel/danse-macabre.xlsx`
- `tests/Fixtures/Excel/spirou.xlsx`

## Jalons suivants

Le prochain lot reste l’ajout d’un parc par son nom avec recherche web IA et enrichissement de son contenu. La découverte par pays, l’actualisation et l’extension des fournisseurs, puis les actions depuis une conversation et le raccordement du site/application restent des livraisons séparées.
