Chargement de structure sportive par modele (CSV)
Objectif
Permettre le chargement massif de categories, ligues et equipes dans la saison active du club depuis un modele CSV.
Ce guide documente le comportement reellement implemente dans l’ecran de structure sportive.
Ou c’est utilise
- Ecran :
SportStructureScreen
- Bouton : Importer modele CSV
- Prerequis : utilisateur avec droits de gestion du club et ecran en mode edition.
Fichiers de reference
- Modele de base :
sport_structure_import_template_fr.csv
En-tetes requis (ordre recommande) :
entity,name,category,league
Colonnes
entity : type de ligne. Valeurs autorisees :
name : nom principal de l’entite.
category : obligatoire seulement quand entity=team.
league : obligatoire seulement quand entity=team.
Regles de validation
L’import valide avant insertion :
- Le fichier doit contenir au moins en-tete + 1 ligne de donnees.
- Les colonnes
entity et name doivent exister.
- Si
entity=team, category et league sont obligatoires.
entity hors category|league|team est une erreur.
- Pour les equipes, la categorie/ligue doit exister :
- en BD de la saison active, ou
- dans le meme fichier (si creee dans des lignes
category/league).
S’il y a des erreurs de validation, l’import n’est pas execute et un resume d’erreurs est affiche.
Comportement d’insertion
- Nouvelles categories : inserees si absentes en saison active (comparaison normalisee par nom).
- Nouvelles ligues : meme critere.
- Nouvelles equipes : inserees si combinaison equivalente nom+categorie+ligue inexistante.
- Les enregistrements existants ne sont pas supprimes.
- Les noms existants ne sont pas mis a jour (mode append/upsert partiel oriente creation).
Normalisation du texte
Avant comparer/inserer :
trim est applique ;
- les espaces multiples sont reduits a un.
Exemple :
" Senior A " -> "Senior A"
Exemple valide
entity,name,category,league
category,Senior,,
category,Jeunes,,
league,Or,,
league,Argent,,
team,Equipe Senior A,Senior,Or
team,Equipe Senior B,Senior,Argent
team,Equipe Jeunes A,Jeunes,Argent
Resultat attendu :
- Categories creees : 2 (si inexistantes)
- Ligues creees : 2 (si inexistantes)
- Equipes creees : 3 (si inexistantes)
Exemple invalide
entity,name,category,league
team,Equipe sans ligue,Senior,
foo,Entree inconnue,,
team,,Senior,Or
team,Equipe avec reference manquante,U13,Or
Erreurs attendues :
- ligne
team sans league ;
entity invalide (foo) ;
name vide ;
- reference a categorie inexistante (
U13).
Flux recommande
- Telecharger le modele de base.
- Completer categories et ligues d’abord.
- Completer equipes en referencant des noms exacts de categorie/ligue.
- Importer le modele.
- Verifier le resume de creation.
- Reessayer en cas d’erreurs avec donnees corrigees.
Bonnes pratiques
- Garder des noms coherents (ex.
Jeunes A, Jeunes B).
- Eviter les variantes typographiques pour la meme entite.
- Charger par blocs (d’abord structure simple, puis extensions).
Portee actuelle
Cet import couvre :
- categories
- ligues
- equipes
Ne couvre pas encore :
- assignation massive de membres
- chargement de
player_profile
- mise a jour/suppression massive
Troubleshooting
“CSV requires columns: entity,name,category,league”
L’en-tete ne correspond pas. Verifier la premiere ligne.
“Template has no data”
Le fichier ne contient que l’en-tete ou est vide.
“team requires category and league”
Ligne equipe incomplete.
“category/league does not exist”
Ajouter une ligne de creation dans le meme CSV ou creer avant dans l’app.