# Import d'objets Stats Cette fonctionnalité permet d'importer des objets Stats à partir d'un fichier JSON via l'interface d'administration. ## Accès La page d'import est accessible via : - L'URL : `/admin/import-stats` - Le menu de navigation : "Import Stats" ## Fonctionnalités ### Sécurité - **Aucune modification** des objets Stats existants - Seuls les nouveaux objets sont créés - Vérification de l'existence par le code INSEE (`zone`) ### Validation - Vérification du format JSON - Validation des champs requis (`zone` et `name`) - Gestion des erreurs par ligne - Rapport détaillé des résultats ### Champs supportés #### Champs requis - `zone` : Code INSEE de la zone (ex: "75056") - `name` : Nom de la ville/zone (ex: "Paris") #### Champs optionnels - `population` : Population de la zone (nombre) - `budgetAnnuel` : Budget annuel de la collectivité (chaîne) - `siren` : Code SIREN (nombre) - `codeEpci` : Code EPCI (nombre) - `codesPostaux` : Codes postaux séparés par des points-virgules (ex: "75001;75002;75003") #### Objet `decomptes` (optionnel) - `placesCount` : Nombre total de lieux - `avecHoraires` : Nombre de lieux avec horaires - `avecAdresse` : Nombre de lieux avec adresse - `avecSite` : Nombre de lieux avec site web - `avecAccessibilite` : Nombre de lieux avec accessibilité - `avecNote` : Nombre de lieux avec note - `completionPercent` : Pourcentage de complétion ## Format JSON attendu ```json [ { "zone": "75056", "name": "Paris", "population": 2161000, "budgetAnnuel": "8500000000", "siren": 200054781, "codeEpci": 200054781, "codesPostaux": "75001;75002;75003", "decomptes": { "placesCount": 1250, "avecHoraires": 980, "avecAdresse": 1200, "avecSite": 850, "avecAccessibilite": 450, "avecNote": 320, "completionPercent": 75 } } ] ``` ## Utilisation 1. **Préparer le fichier JSON** - Créer un tableau d'objets Stats - Inclure au minimum les champs `zone` et `name` - Valider le format JSON 2. **Accéder à la page d'import** - Aller sur `/admin/import-stats` - Ou cliquer sur "Import Stats" dans le menu 3. **Importer le fichier** - Sélectionner le fichier JSON - Cliquer sur "Importer" - Vérifier les messages de résultat 4. **Vérifier les résultats** - Nombre d'objets créés - Nombre d'objets ignorés (déjà existants) - Liste des erreurs éventuelles ## Messages de retour ### Succès ``` Import terminé : X objet(s) créé(s), Y objet(s) ignoré(s) (déjà existants). ``` ### Erreurs possibles - "Aucun fichier JSON n'a été fourni." - "Le fichier doit être au format JSON." - "Erreur lors du décodage JSON: [message]" - "Le fichier JSON doit contenir un tableau d'objets Stats." - "Ligne X: Champs 'zone' et 'name' requis" - "Ligne X: [message d'erreur spécifique]" ## Logs Toutes les actions d'import sont loggées via le service `ActionLogger` : - `admin/import_stats` : Accès à la page - `admin/import_stats_success` : Import réussi avec statistiques - `admin/import_stats_error` : Erreur lors de l'import ## Exemple de fichier de test Un fichier `test_import_stats.json` est fourni avec des exemples pour Paris, Lyon et Marseille. ## Notes importantes - Les objets existants ne sont jamais modifiés - Seuls les nouveaux objets sont créés - Les dates de création et modification sont automatiquement définies - Les erreurs sont affichées par ligne pour faciliter le débogage - Le système est conçu pour être sûr et non destructif