mirror of
				https://forge.chapril.org/tykayn/osm-commerces
				synced 2025-10-09 17:02:46 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			220 lines
		
	
	
		
			No EOL
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			220 lines
		
	
	
		
			No EOL
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # API - Export des objets Stats
 | |
| 
 | |
| ## Endpoint
 | |
| 
 | |
| ```
 | |
| GET /api/v1/stats/export
 | |
| ```
 | |
| 
 | |
| ## Description
 | |
| 
 | |
| Cet endpoint permet d'exporter les objets Stats au format JSON avec leurs propriétés de nom et de décomptes, similaire à la commande `app:export-stats`.
 | |
| 
 | |
| ## Paramètres de requête
 | |
| 
 | |
| | Paramètre | Type | Défaut | Description |
 | |
| |-----------|------|--------|-------------|
 | |
| | `zone` | string | - | Code INSEE spécifique à exporter (optionnel) |
 | |
| | `pretty` | boolean | false | Formater le JSON avec indentation |
 | |
| | `include_followups` | boolean | true | Inclure les données de followup |
 | |
| | `include_places` | boolean | false | Inclure les données des lieux (peut être volumineux) |
 | |
| 
 | |
| ## Exemples d'utilisation
 | |
| 
 | |
| ### Export de toutes les zones
 | |
| ```bash
 | |
| curl "https://osm-commerces.cipherbliss.com/api/v1/stats/export"
 | |
| ```
 | |
| 
 | |
| ### Export avec formatage JSON
 | |
| ```bash
 | |
| curl "https://osm-commerces.cipherbliss.com/api/v1/stats/export?pretty=true"
 | |
| ```
 | |
| 
 | |
| ### Export d'une zone spécifique
 | |
| ```bash
 | |
| curl "https://osm-commerces.cipherbliss.com/api/v1/stats/export?zone=75056"
 | |
| ```
 | |
| 
 | |
| ### Export d'une zone avec formatage et sans followups
 | |
| ```bash
 | |
| curl "https://osm-commerces.cipherbliss.com/api/v1/stats/export?zone=75056&pretty=true&include_followups=false"
 | |
| ```
 | |
| 
 | |
| ### Export complet avec lieux
 | |
| ```bash
 | |
| curl "https://osm-commerces.cipherbliss.com/api/v1/stats/export?pretty=true&include_places=true"
 | |
| ```
 | |
| 
 | |
| ## Réponse
 | |
| 
 | |
| ### Succès (200 OK)
 | |
| 
 | |
| ```json
 | |
| [
 | |
|   {
 | |
|     "id": 1,
 | |
|     "zone": "75056",
 | |
|     "name": "Paris",
 | |
|     "dateCreated": "2024-01-15 10:30:00",
 | |
|     "dateModified": "2024-01-20 14:45:00",
 | |
|     "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,
 | |
|       "placesCountReal": 1250
 | |
|     },
 | |
|     "followups": [
 | |
|       {
 | |
|         "name": "fire_hydrant_count",
 | |
|         "measure": 1250,
 | |
|         "date": "2024-01-20 14:45:00"
 | |
|       },
 | |
|       {
 | |
|         "name": "fire_hydrant_completion",
 | |
|         "measure": 85.5,
 | |
|         "date": "2024-01-20 14:45:00"
 | |
|       }
 | |
|     ],
 | |
|     "places": [
 | |
|       {
 | |
|         "id": 1,
 | |
|         "name": "Boulangerie du Centre",
 | |
|         "mainTag": "shop",
 | |
|         "osmId": 123456,
 | |
|         "osmKind": "node",
 | |
|         "email": "contact@boulangerie.fr",
 | |
|         "note": "Boulangerie artisanale",
 | |
|         "zipCode": "75001",
 | |
|         "siret": "12345678901234",
 | |
|         "lat": 48.8566,
 | |
|         "lon": 2.3522,
 | |
|         "hasOpeningHours": true,
 | |
|         "hasAddress": true,
 | |
|         "hasWebsite": true,
 | |
|         "hasWheelchair": false,
 | |
|         "hasNote": true,
 | |
|         "completionPercentage": 85
 | |
|       }
 | |
|     ]
 | |
|   }
 | |
| ]
 | |
| ```
 | |
| 
 | |
| ### Erreur - Zone non trouvée (404 Not Found)
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "error": "Aucun objet Stats trouvé",
 | |
|   "message": "Aucune zone trouvée pour le code INSEE: 99999"
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Erreur - Erreur serveur (500 Internal Server Error)
 | |
| 
 | |
| ```json
 | |
| {
 | |
|   "error": "Erreur lors de l'export",
 | |
|   "message": "Description de l'erreur"
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## Headers de réponse
 | |
| 
 | |
| | Header | Description |
 | |
| |--------|-------------|
 | |
| | `Content-Type` | `application/json` |
 | |
| | `Content-Disposition` | `attachment; filename="stats_export.json"` |
 | |
| | `X-Export-Count` | Nombre d'objets exportés |
 | |
| | `X-Export-Generated` | Date/heure de génération (format ISO 8601) |
 | |
| | `X-Export-Zone` | Code INSEE si export d'une zone spécifique |
 | |
| 
 | |
| ## Structure des données
 | |
| 
 | |
| ### Informations générales
 | |
| - `id` : Identifiant unique de l'objet Stats
 | |
| - `zone` : Code INSEE de la zone
 | |
| - `name` : Nom de la ville/zone
 | |
| - `dateCreated` : Date de création
 | |
| - `dateModified` : Date de dernière modification
 | |
| 
 | |
| ### Données démographiques et administratives
 | |
| - `population` : Population de la zone
 | |
| - `budgetAnnuel` : Budget annuel de la collectivité
 | |
| - `siren` : Code SIREN
 | |
| - `codeEpci` : Code EPCI
 | |
| - `codesPostaux` : Codes postaux de la zone
 | |
| 
 | |
| ### Décomptes
 | |
| - `placesCount` : Nombre de lieux enregistrés
 | |
| - `avecHoraires` : Nombre de lieux avec horaires d'ouverture
 | |
| - `avecAdresse` : Nombre de lieux avec adresse complète
 | |
| - `avecSite` : Nombre de lieux avec site web
 | |
| - `avecAccessibilite` : Nombre de lieux avec accessibilité PMR
 | |
| - `avecNote` : Nombre de lieux avec note
 | |
| - `completionPercent` : Pourcentage de complétion global
 | |
| - `placesCountReal` : Nombre réel de lieux (comptage direct)
 | |
| 
 | |
| ### Followups (si `include_followups=true`)
 | |
| - `followups` : Tableau des mesures de suivi (CityFollowUp)
 | |
|   - `name` : Nom de la mesure
 | |
|   - `measure` : Valeur de la mesure
 | |
|   - `date` : Date de la mesure
 | |
| 
 | |
| ### Places (si `include_places=true`)
 | |
| - `places` : Tableau des lieux de la zone
 | |
|   - `id` : Identifiant du lieu
 | |
|   - `name` : Nom du lieu
 | |
|   - `mainTag` : Tag principal OSM
 | |
|   - `osmId` : ID OSM
 | |
|   - `osmKind` : Type OSM (node/way)
 | |
|   - `email` : Email de contact
 | |
|   - `note` : Note
 | |
|   - `zipCode` : Code postal
 | |
|   - `siret` : Numéro SIRET
 | |
|   - `lat` : Latitude
 | |
|   - `lon` : Longitude
 | |
|   - `hasOpeningHours` : A des horaires d'ouverture
 | |
|   - `hasAddress` : A une adresse complète
 | |
|   - `hasWebsite` : A un site web
 | |
|   - `hasWheelchair` : A des informations d'accessibilité
 | |
|   - `hasNote` : A une note
 | |
|   - `completionPercentage` : Pourcentage de complétion du lieu
 | |
| 
 | |
| ## Cas d'usage
 | |
| 
 | |
| ### Export pour analyse
 | |
| ```bash
 | |
| # Export de toutes les villes avec formatage
 | |
| curl "https://osm-commerces.cipherbliss.com/api/v1/stats/export?pretty=true" > analyse_villes.json
 | |
| 
 | |
| # Export d'une ville spécifique
 | |
| curl "https://osm-commerces.cipherbliss.com/api/v1/stats/export?zone=75056&pretty=true" > paris.json
 | |
| ```
 | |
| 
 | |
| ### Export pour traitement automatisé
 | |
| ```bash
 | |
| # Export compact pour traitement par script
 | |
| curl "https://osm-commerces.cipherbliss.com/api/v1/stats/export" > stats_compact.json
 | |
| ```
 | |
| 
 | |
| ### Export avec données complètes
 | |
| ```bash
 | |
| # Export avec tous les lieux (attention: peut être volumineux)
 | |
| curl "https://osm-commerces.cipherbliss.com/api/v1/stats/export?include_places=true&pretty=true" > stats_complet.json
 | |
| ```
 | |
| 
 | |
| ## Limitations
 | |
| 
 | |
| - L'option `include_places=true` peut générer des fichiers très volumineux pour les grandes villes
 | |
| - Les requêtes avec `include_places=true` peuvent être plus lentes
 | |
| - Le formatage JSON (`pretty=true`) augmente la taille de la réponse  | 
