Import des clubs Pista Padel¶
Contexte¶
L'application Primatch pré-charge une base de 1 169 clubs de padel en France, récupérés par reverse engineering de l'API publique de pista-padel.com. Ces clubs sont importés comme clubs validés sans propriétaire (status=validated, owner_id=null), prêts à être revendiqués par les gestionnaires via la fonctionnalité de claim.
Données source¶
| Élément | Détail |
|---|---|
| API source | https://api.pista-padel.com/clubs?page={n}&limit=50 |
| Script de collecte | scripts/fetch_pista_clubs.py |
| Fichier JSON | api/database/data/pista_clubs.json (aussi data/pista_clubs.json) |
| Seeder Laravel | database/seeders/PistaClubSeeder.php |
Structure d'un club dans le JSON¶
{
"id": 150,
"slug": "O44PLFM6",
"name": "2V2 Padel Club",
"shortName": "2V2 Padel Club",
"description": null,
"street": "1 Bd du Parisis ZAC des Bois Rochefort",
"city": "Cormeilles-en-Parisis",
"postalCode": "95240",
"longitude": 2.187860099,
"latitude": 48.9553068617,
"indoor": 5,
"semiCovered": 0,
"outdoor": 0,
"createdAt": "2025-10-21T17:48:37.000+00:00",
"updatedAt": "2025-10-21T17:48:37.000+00:00",
"logoPath": null,
"bannerPath": null
}
Mapping Pista → Primatch¶
| Champ Pista | Champ Primatch (table clubs) | Notes |
|---|---|---|
name | name | |
description | description | Renseigné pour ~38 clubs |
street | address | Fallback sur city si vide |
city | city | |
postalCode | postal_code | |
latitude | latitude | |
longitude | longitude | |
logoPath | logo_url | Chemin relatif Pista |
bannerPath | cover_url | Chemin relatif Pista |
indoor | → Terrains type=indoor | Génère N terrains |
semiCovered | → Terrains type=semi_covered | Génère N terrains |
outdoor | → Terrains type=outdoor | Génère N terrains |
| — | status | Toujours validated |
| — | owner_id | Toujours null (réclamable) |
Procédure d'import¶
1. Récupérer les données (si besoin de rafraîchir)¶
Le script pagine automatiquement l'API (50 clubs/page), gère les erreurs avec retry, et écrit le résultat dans data/pista_clubs.json.
2. Copier le JSON dans le dossier API¶
3. Lancer le seeder¶
Idempotent
Le seeder détecte les doublons par nom + ville et les ignore. Il est donc sûr de le relancer plusieurs fois.
Résultat attendu¶
| Métrique | Valeur |
|---|---|
| Clubs importés | ~1 163 |
| Clubs ignorés (doublons ou données invalides) | ~6 |
| Terrains indoor créés | ~3 412 |
| Terrains outdoor créés | ~126 |
| Terrains semi-couverts créés | ~28 |
Statistiques des données¶
- 1 008 villes uniques couvertes
- 157 clubs avec un logo
- 91 clubs avec une bannière
- Top villes : Paris (7), Marseille (6), Nice (5), Toulouse (5), Tarbes (5)
Considérations¶
Images
Les champs logo_url et cover_url contiennent des chemins relatifs Pista (ex: clubs/k7r10je8/logo.png). Ils ne pointent pas vers des fichiers hébergés sur Primatch. Une migration des images sera nécessaire si l'on souhaite les afficher.
Terrains génériques
Les terrains sont créés avec des noms génériques (Terrain Indoor 1, Terrain Outdoor 2, etc.) car l'API Pista ne fournit que des compteurs, pas les détails individuels des terrains.