# Coaster World DATA v1.3.0 — validation du lot IA

Validation effectuée le 4 octobre 2026, sur une copie isolée de la version complète v1.2.0. La référence précédente est conservée.

## Contrôles exécutés

| Contrôle | Résultat |
| --- | --- |
| PHP 8.3, Laravel 13.33.0, dépendances existantes | Conservés, aucune nouvelle dépendance |
| Tests du nouveau parcours sur SQLite en mémoire | 20 tests, 146 assertions, tous réussis |
| Tests ciblés et de régression, pilote MySQL sur MariaDB 10.11.14 | 94 tests, 573 assertions, tous réussis |
| Installation sur une base de validation MySQL vide | Réussie |
| Compilation des vues Blade et cache des routes | Réussie |
| Vider les caches de l’application | Réussi |
| Parcours navigateur avec authentification et vrais formulaires CSRF | 8 parcours réussis |
| Écrans dans les cinq langues, deux thèmes, largeurs 375/768/1440 px | 90 contrôles d’affichage réussis |
| Débordements de page et clés de traduction brutes sur les écrans contrôlés | Aucun détecté |
| Erreurs JavaScript dans les parcours contrôlés | Aucune |

Fichiers de tests de la passe MySQL : `AiParkWorkflowTest`, `ExcelImportTest`, `ControlledIngestionTest`, `MultiEntityIngestionTest`, `ParkContentIngestionTest`, `ThemeParksWikiPilotIngestionTest`, `DataReviewQueueTest`, `AdminInterfaceTest`, `PublicApiV1Test`, `DataReliabilityTest`, `DataOperationsTest`, `EnrichmentOperationsTest`.

Pour les tests API historiques supposant un accès public, `CW_DATA_API_REQUIRE_KEY=false` est uniquement appliqué à l’environnement isolé de test. Le défaut livré reste `CW_DATA_API_REQUIRE_KEY=true`.

## Comportements vérifiés par les tests

- Formulaire par nom avec confirmation, pays normalisé et file d’attente ; aucune fiche créée avant exécution de la tâche.
- Déduplication de demandes en attente.
- Requête API Responses avec outil `web_search`, accès externe, appel obligatoire, sources incluses et `store=false`.
- Refus des réponses sans recherche web terminée, de pays incohérents, citations absentes de l’outil et URL locales privées.
- Création et association de parc, attraction, coaster, zone et POI dans le bon parc.
- Valeurs techniques sur le coaster, textes et autres valeurs sur son attraction ; zéro et faux conservés.
- Valeurs canoniques, colonnes métier renseignées et traductions humaines existantes protégées.
- Identité ambiguë mise en attente, résolution manuelle puis reprise sans nouvel appel initial.
- Propositions incertaines, contradictoires, non sourcées ou invalides disponibles dans les exceptions.
- Respect des règles et désactivations du dictionnaire, du fournisseur, des capacités et des sources.
- Identifiants et observations réutilisés lors d’une nouvelle recherche identique, sans doublons de fiches.
- Reprise du groupe suivant de détails sans répétition des tâches déjà lancées.
- Activation des détails après un lancement initial avec une limite de zéro.
- Reprise d’un lot enregistré après un échec du parc ou d’une fiche, sans refaire l’appel déjà enregistré.
- État global en cours tant que des détails attendent ; résultat partiel lorsqu’une fiche détaillée échoue.
- Refus pour lecteurs et visiteurs, respect de droits révoqués et blocage des opérations IA hors de leur contrôleur dédié.
- Corps d’erreur amont et clé de test absents des erreurs publiques.
- Régressions import Excel, ingestion, données fiables, revue, administration, opérations, enrichissement et API.

## Parcours navigateur vérifiés

- Login with CSRF
- Home opens named park form
- Manual fallback accessible
- Confirmed AI request queues a task without worker/API calls
- Sources and grouped exceptions displayed
- Completed root and detail workflow reports completion
- Resume queues a checkpoint task
- Integrated content appears on park page

Inspection visuelle des captures du formulaire sur bureau et du suivi sur mobile. Les pages formulaire, suivi terminé avec sources/exceptions et tâche en attente ont été contrôlées dans `fr`, `en`, `de`, `es`, `it`, en clair/sombre.

## Portée et limites

Les réponses OpenAI sont simulées avec `Http::fake`, les requêtes inattendues sont bloquées et les données de validation sont fictives. Aucun appel API payant réel n’a été effectué. Les tests ne prouvent pas la disponibilité d’un modèle pour votre compte ni l’exactitude future des résultats d’une recherche réelle. Un essai initial limité reste à réaliser avec votre configuration.

La validation utilise le pilote MySQL sur MariaDB ; elle n’est pas une exécution sur toutes les versions de MySQL. L’environnement d’exécution est Linux. Les scripts Windows existants n’ont pas été exécutés sous Windows/Laragon. Les exemples CMD sont fournis dans le guide.

Le lot collecte jusqu’à 50 éléments et lance jusqu’à 25 nouvelles recherches détaillées par groupe. Il ne garantit pas l’inventaire exhaustif d’un parc et ne réalise pas d’import mondial massif, de téléchargement de médias ou de modification du Live.

## Contrôles des archives

La préparation vérifie l’intégrité ZIP/CRC, l’unicité des entrées, la présence exclusive de fichiers nouveaux/modifiés dans le patch et l’absence de fichiers privés ou d’exécution (`.env`, bases, journaux, caches). Appliquer le patch à la référence v1.2.0 doit reproduire exactement tous les fichiers de la référence complète v1.3.0. L’empreinte de la référence v1.2.0 est vérifiée avant et après la préparation.

Les empreintes des livrables figurent dans `SHA256SUMS_v1.3.0.txt`. La liste exacte des fichiers est dans `CHANGELOG_v1.3.0.md`.
