Import der Sportstruktur per Vorlage (CSV)
Ziel
Massenupload von Kategorien, Ligen und Teams in die aktive Saison des Clubs per CSV-Vorlage.
Diese Anleitung dokumentiert das tatsaechlich implementierte Verhalten im Sportstruktur-Bildschirm.
Wo genutzt
- Bildschirm:
SportStructureScreen
- Button: CSV-Vorlage importieren
- Voraussetzung: Nutzer mit Club-Management-Rechten und Bildschirm im Bearbeitungsmodus.
Referenzdateien
- Basisvorlage:
sport_structure_import_template_de.csv
Erforderliche Header (empfohlene Reihenfolge):
entity,name,category,league
Spalten
entity: Zeilentyp. Erlaubte Werte:
name: Hauptname der Entitaet.
category: nur Pflicht bei entity=team.
league: nur Pflicht bei entity=team.
Validierungsregeln
Der Import validiert vor dem Einfuegen:
- Datei muss mindestens Header + 1 Datenzeile haben.
- Die Spalten
entity und name muessen existieren.
- Wenn
entity=team, sind category und league Pflicht.
entity ausserhalb category|league|team gilt als Fehler.
- Fuer Teams muessen Kategorie/Liga existieren:
- in der DB der aktiven Saison, oder
- in derselben Datei (wenn in Zeilen
category/league erstellt).
Wenn Validierungsfehler vorliegen, wird der Import nicht ausgefuehrt und es wird eine Fehlerzusammenfassung angezeigt.
Einfuegeverhalten
- Neue Kategorien: werden eingefuegt, wenn sie in der aktiven Saison nicht existieren (normalisierter Namensvergleich).
- Neue Ligen: gleiches Kriterium.
- Neue Teams: werden eingefuegt, wenn keine equivalente Kombination aus Name+Kategorie+Liga existiert.
- Vorhandene Datensaetze werden nicht geloescht.
- Vorhandene Namen werden nicht aktualisiert (append/upsert-teilweise, auf Neuanlage ausgerichtet).
Textnormalisierung
Vor Vergleich/Einfuegen:
trim wird angewendet;
- Mehrfachleerzeichen werden auf eins reduziert.
Beispiel:
" Senior A " -> "Senior A"
Gueltiges Beispiel
entity,name,category,league
category,Senior,,
category,Jugend,,
league,Gold,,
league,Silber,,
team,Team Senior A,Senior,Gold
team,Team Senior B,Senior,Silber
team,Team Jugend A,Jugend,Silber
Erwartetes Ergebnis:
- Kategorien erstellt: 2 (falls nicht vorhanden)
- Ligen erstellt: 2 (falls nicht vorhanden)
- Teams erstellt: 3 (falls nicht vorhanden)
Ungueltiges Beispiel
entity,name,category,league
team,Team ohne Liga,Senior,
foo,Unbekannter Eintrag,,
team,,Senior,Gold
team,Team mit fehlender Referenz,U13,Gold
Erwartete Fehler:
- Zeile mit
team ohne league;
- ungueltiges
entity (foo);
- leeres
name;
- Referenz auf nicht vorhandene Kategorie (
U13).
Empfohlener Ablauf
- Basisvorlage herunterladen.
- Zuerst Kategorien und Ligen ausfuellen.
- Teams mit exakten Kategorie-/Liganamen erfassen.
- Vorlage importieren.
- Erstellungssummary pruefen.
- Bei Fehlern mit korrigierten Daten erneut importieren.
Best Practices
- Konsistente Namen beibehalten (z. B.
Jugend A, Jugend B).
- Typografische Varianten fuer dieselbe Entitaet vermeiden.
- In Bloecken laden (zuerst einfache Struktur, dann Erweiterungen).
Aktueller Umfang
Dieser Import deckt ab:
Noch nicht enthalten:
- Massenzuweisung von Mitgliedern
- Import von
player_profile
- Massen-Update/-Delete
Troubleshooting
“CSV requires columns: entity,name,category,league”
Header stimmt nicht. Erste Zeile pruefen.
“Template has no data”
Datei enthaelt nur Header oder ist leer.
“team requires category and league”
Team-Zeile unvollstaendig.
“category/league does not exist”
Erstellungszeile in derselben CSV hinzufuegen oder vorher in der App anlegen.