# 📦 CoachFlow – Bulk-Vorlage für Trainings-Pakete & Übungen

Du füllst diese JSON-Vorlage aus und lädst sie über **Pakete-Tab → 📥 JSON Import** hoch.
Pro Datei kannst du **ein einzelnes Paket oder gleich mehrere Pakete auf einmal** anlegen.

---

## 🎯 Anleitung für Gemini (bitte exakt befolgen)

> Du bist Co-Autor für eine Handball-Trainings-App.
> Erzeuge JSON-Pakete im unten beschriebenen Schema. Halte dich strikt an die
> erlaubten Werte für `rtk_level`, `category` und die `focus_*`-IDs.
> Texte sind auf Deutsch, in klarer Trainer-Sprache (kurz, präzise, mit
> Coaching-Hinweisen).

### Pflichtfelder pro Paket
- `title` (string) – kurzer, aussagekräftiger Paket-Titel
- `rtk_level` – **genau einer** dieser Werte: `"Basisschulung"`, `"Grundlagentraining"`, `"Aufbautraining I"`, `"Aufbautraining II"`, `"Anschlusstraining"`
- `units` (array) – mind. 1 Übung

### Optionale Felder pro Paket
- `description` (string) – 1–2 Sätze über Ziel des Pakets
- `is_public` (bool, default `true`)

### Pflichtfelder pro Übung (Unit)
- `exercise_title` (string)
- `category` – **genau einer** dieser Werte: `"Erwärmung"`, `"Grundübung / Passkontinuum"`, `"Grundspiel"`, `"Zielspiel / 6-gegen-6"`
- `focus_1` (string) – ID aus der DHB-Liste unten (z. B. `"t5"`)

### Optionale Felder pro Übung
- `focus_2` (string) – zweite DHB-ID (anders als focus_1)
- `organisation` (string) – Aufbau, Positionen, Material
- `flow` (string) – Lauf- und Passfolge Schritt für Schritt
- `variations` (array of strings) – Erweiterungen
- `coaching_points` (string) – Trainer-Hinweise
- `image_url` (string) – URL zur Taktik-Skizze (z. B. aus Supabase Storage)
- `video_url` (string) – YouTube/Vimeo
- `unit_number` (int) – wenn ausgelassen, wird Reihenfolge im Array verwendet

---

## 🆔 DHB-Schwerpunkt-IDs (focus_1 / focus_2)

### Motorik / Athletik
| ID | Stage | Name |
|----|-------|------|
| `m1` | Basisschulung | Basisschulung – Körpergewicht & Bewegungsvielseitigkeit |
| `m2` | Grundlagentraining | Grundlagentraining – Angepasste Lasten |
| `m3` | Grundlagentraining | Grundlagentraining – Ausdauer durch Spielformen |

### Aufbautraining
| ID | Stage | Name |
|----|-------|------|
| `a1` | Aufbautraining 1 | Hypertrophie |
| `a2` | Aufbautraining 1 | Schnell- und Reaktivkraft |
| `a3` | Aufbautraining 1 | Agilität |
| `a4` | Aufbautraining 2 | Einstieg NK-Methode |
| `a5` | Aufbautraining 2 | Belastungstoleranz |
| `a6` | Anschlusstraining | Hypertrophie- & NK-Methode |
| `a7` | Anschlusstraining | Positionsspezifisch |

### Taktik – Angriff
| ID | Stage | Name |
|----|-------|------|
| `t1` | Individueller Angriff | 1-gegen-1 offensiv, Wurfecken |
| `t2` | Individueller Angriff | 1-gegen-1 defensiv |
| `t3` | Kooperativer Angriff | Kooperativ Breite – Parallelstoß |
| `t4` | Kooperativer Angriff | Kooperativ Breite – Kreuzen |
| `t5` | Kooperativer Angriff | Kooperativ Tiefe – Sperren / Absetzen |
| `t6` | Kooperativer Angriff | Kooperativ Tiefe – Doppelpass |
| `t7` | Kollektiver Angriff | Spielstruktur |
| `t8` | Kollektiver Angriff | Tempospiel – 2./3. Welle |
| `t9` | Kollektiver Angriff | Über- / Unterzahlspiel |

### Taktik – Abwehr
| ID | Stage | Name |
|----|-------|------|
| `d1` | Individuelle Abwehr | Antizipation |
| `d2` | Individuelle Abwehr | Beinarbeit |
| `d3` | Individuelle Abwehr | Blocktechnik |
| `d4` | Kollektive Abwehr | Begleiten und Übergeben |
| `d5` | Kollektive Abwehr | Abwehrdreieck & Helferebene |
| `d6` | Kollektive Abwehr | Einführung ballorientierte 3:2:1-Abwehr |
| `d7` | Kollektive Abwehr | 6:0-Abwehr |

### Torhüter
| ID | Stage | Name |
|----|-------|------|
| `tw1` | Torhüterspiel | Grundstellung |
| `tw2` | Torhüterspiel | Haltetechniken |
| `tw3` | Torhüterspiel | Zusammenspiel mit Block |

---

## 📋 LEERE VORLAGE (kopieren & ausfüllen)

```json
{
  "packages": [
    {
      "title": "",
      "rtk_level": "",
      "description": "",
      "is_public": true,
      "units": [
        {
          "exercise_title": "",
          "category": "",
          "focus_1": "",
          "focus_2": "",
          "organisation": "",
          "flow": "",
          "variations": ["", ""],
          "coaching_points": "",
          "image_url": "",
          "video_url": ""
        }
      ]
    }
  ]
}
```

---

## ✅ AUSGEFÜLLTES BEISPIEL (volle Referenz)

```json
{
  "packages": [
    {
      "title": "Schnelligkeitstraining für die B-Jugend",
      "rtk_level": "Aufbautraining I",
      "description": "Sechs progressive Einheiten zur Verbesserung von Antrittsschnelligkeit, Reaktivkraft und Agilität im handball-spezifischen Kontext.",
      "is_public": true,
      "units": [
        {
          "exercise_title": "Reaktionsstart aus verschiedenen Positionen",
          "category": "Erwärmung",
          "focus_1": "a2",
          "organisation": "Spieler verteilen sich auf der Grundlinie in 5er-Reihen. Markierungshütchen 8m und 15m vor der Grundlinie.",
          "flow": "Trainer ruft eine Startposition (stehend, sitzend, liegend). Auf akustisches Signal sprinten alle bis zum 15m-Hütchen, lockern aus.",
          "variations": [
            "Start mit Drehung um 180° vor dem Sprint",
            "Mit Ball — am 8m-Hütchen ablegen, am 15m-Hütchen wenden",
            "Reaktion auf visuelles Signal (Hand-Trainer hebt rote/grüne Karte)"
          ],
          "coaching_points": "Niedriger erster Schritt, Armarbeit aktiv, Blick auf Zielpunkt fixieren."
        },
        {
          "exercise_title": "Leiter-Koordination mit Wurfabschluss",
          "category": "Grundübung / Passkontinuum",
          "focus_1": "a3",
          "focus_2": "t1",
          "organisation": "Koordinationsleiter im Halbkreis am 9m-Strich, Ballkiste daneben, ein TW im Tor.",
          "flow": "Spieler absolviert ein Leitermuster (z. B. ein Fuß pro Feld, dann zwei Füße, dann seitwärts), greift am Ende einen Ball aus der Kiste und schließt direkt per Sprungwurf ab.",
          "variations": [
            "Mit Finte vor dem Wurf",
            "Verteidiger-Dummy auf 7m",
            "Zwei aufeinander folgende Würfe (Nachschuss)"
          ],
          "coaching_points": "Schneller Übergang Koordination → Wurfbewegung. Standbein stabilisieren bevor Wurfarm geht."
        }
      ]
    }
  ]
}
```

---

## 🚀 Empfehlung für effizientes Befüllen mit Gemini

**Schritt 1 — Kontext setzen:**
> Schick als erste Nachricht den kompletten Inhalt dieser Datei.
> Bitte Gemini explizit: „Halte dich an die DHB-IDs und Pflichtfelder."

**Schritt 2 — Pakete in Batches generieren:**
> Frag pro Anfrage z. B.: „Erstelle mir 5 Pakete für Aufbautraining I mit Fokus
> auf Kooperativen Angriff. Jeweils 6 Einheiten."

**Schritt 3 — Validieren:**
> Vor dem Import: kopier dir das JSON in [jsonlint.com](https://jsonlint.com) — wenn es valid ist,
> klappt der Import in CoachFlow garantiert.

**Schritt 4 — Importieren:**
> Pakete-Tab → 📥 JSON Import → Datei hochladen oder einfügen → Importieren.
> Du siehst danach pro Paket eine Karte im Grid.

**Tipps:**
- **`is_public: false`** wenn du Pakete erst entwerfen willst, ohne dass andere sie sehen
- **`video_url`** kannst du leer lassen — später ergänzen
- Bei 100 Übungen: lieber **mehrere kleinere Dateien** (10-20 Pakete) als eine riesige — falls eines fehlschlägt, ist nicht alles weg
- Der Import läuft sequenziell — bei einem fehlerhaften Paket gehen die anderen trotzdem durch (siehe Erfolgsmeldung)

---

# 🎨 Bilder zu jeder Übung — Gemini Image-Workflow

## Was Gemini KANN und was NICHT
✅ Gemini Web (gemini.google.com) kann **pro Anfrage 1 Bild via Imagen erzeugen**
✅ Du kannst es per Rechtsklick → „Bild speichern unter" herunterladen
❌ Gemini kann das Bild **nicht selbst** auf deinem Rechner ablegen (Browser-Sandbox)
❌ Gemini kann auch keinen Bulk-Download

## Empfohlener Workflow (für 100+ Übungen)

### Schritt 1 — Style-Sheet einmalig in Gemini setzen

Schick Gemini **zuerst** diesen Master-Prompt (gilt dann für die ganze Session):

```
Erzeuge ab jetzt taktische Handball-Skizzen im Stil eines professionellen
Trainerhandbuchs (vgl. "handballtraining"). Style-Sheet:

- Top-down (Vogelperspektive) auf Handball-Spielhälfte oder Vollfeld
- Sauberes, schematisches Diagramm – kein Foto, kein 3D-Render
- Hellblauer/grauer Hallenboden, weiße Linien
- 6m-Linie als Bogen, 9m-Linie gestrichelt, Tor 3×2m
- Angreifer = ROTE Kreise mit Positions-Kürzel (RL, RM, RR, HL, HR, KM)
- Verteidiger = BLAUE Kreise mit V1-V6 oder HM/HA
- Torwart = GELBER Kreis mit TW
- Ball = ORANGE-roter gefüllter Kreis
- Pass = gestrichelter Pfeil mit Pfeilspitze
- Laufweg = durchgehender Pfeil mit Pfeilspitze
- Sperre = T-Balken am Endpunkt
- Reihenfolge der Aktionen ① ② ③ am Pfeil markieren
- Aspect Ratio 16:9 querformat
- Alle Beschriftungen auf Deutsch

Bestätige kurz, dann schicke ich dir pro Übung einen Prompt.
```

### Schritt 2 — Pro Übung 1 Bild generieren

Wenn du Gemini z. B. „**Erstelle das Bild für: Reaktionsstart aus verschiedenen Positionen (Erwärmung, Aufbautraining I, Sprinten auf Signal vom 15m-Hütchen)**" gibst, generiert es eine Skizze. Speichere sie nach folgendem Schema:

**Namens-Konvention (WICHTIG für Bulk-Upload):**
```
PaketTitel-uXX.png
```

Beispiele:
- `schnelligkeit-bjugend-u01.png`
- `schnelligkeit-bjugend-u02.png`
- `einstieg-6-0-abwehr-u01.png`

Regel:
- Paket-Titel klein, ohne Sonderzeichen, mit Bindestrich getrennt
- Unit-Nummer immer 2-stellig (`u01`, `u02` … `u16`)
- `.png`-Extension

### Schritt 3 — Ordner anlegen

Alle Bilder eines Importpakets sammelst du in **einem lokalen Ordner**, z. B.:
```
C:\Claude\CoachFlow\bilder-batch-1\
   ├ schnelligkeit-bjugend-u01.png
   ├ schnelligkeit-bjugend-u02.png
   ├ einstieg-6-0-abwehr-u01.png
   └ ...
```

### Schritt 4 — Bulk-Upload via CoachFlow

In CoachFlow → Pakete-Tab → **🖼 Bilder bulk-uploaden** (neuer Button):
1. Klick öffnet ein Modal
2. Wähle alle PNGs aus dem Batch-Ordner (Strg+A → OK)
3. Die App:
   - Lädt jedes Bild in den Supabase-Storage-Bucket `package-images`
   - Sucht anhand des **Dateinamens** das passende Paket + die Unit-Nummer
   - Schreibt die Public-URL in das `image_url`-Feld der Unit
4. Erfolgsmeldung mit Anzahl matched/unmatched

---

## Alternative für Power-User: Gemini-API + Skript

Wenn du wirklich 100+ Bilder automatisch generieren UND in einen Ordner ablegen willst, brauchst du die **Gemini-API** (programmatischer Zugriff) plus ein kleines Node-/Python-Skript. Das ist außerhalb des Web-Browsers. Sag Bescheid wenn du das willst — dann schreib ich dir das Skript.
