All checks were successful
Deploy Development / deploy (push) Successful in 34s
Test Suite / pytest-backend (push) Successful in 25s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 7s
Test Suite / playwright-tests (push) Successful in 23s
- Introduced a centralized media archive (`/media`) with lifecycle management, including soft delete and recovery options. - Enhanced media upload functionality to support multiple files and automatic type inference. - Updated documentation to reflect the new media architecture and inline media linking specifications. - Version bump to 0.8.59 to accommodate changes in media handling and database schema. Co-authored-by: Cursor <cursoragent@cursor.com>
652 lines
20 KiB
Markdown
652 lines
20 KiB
Markdown
# Shinkan Jinkendo - Fachliches Domänenmodell
|
||
|
||
**Version:** 0.4.4
|
||
**Stand:** 2026-05-07 (Medien-Archiv **`media_assets`** / Bibliothek **`/media`** im Ist; **Inline-Medien** Fließtext geplant — `MEDIA_ASSETS_AND_ARCHIVE_SPEC.md` §11)
|
||
**Basis:** `shinkan_anforderungsdokument_entwurf.md` + Fähigkeitsmatrix
|
||
|
||
---
|
||
|
||
## Übersicht
|
||
|
||
Dieses Dokument beschreibt die **fachliche Datenstruktur** von Shinkan Jinkendo.
|
||
|
||
**Zuständig für technische Umsetzung:** siehe `DATABASE_SCHEMA.md`
|
||
|
||
---
|
||
|
||
## Fachliche Kernprinzipien
|
||
|
||
### 1. Globaler Fähigkeitskatalog (§8.3)
|
||
|
||
**Prinzip:** Fähigkeiten werden NICHT pro Modell dupliziert.
|
||
|
||
**Beispiele:**
|
||
- Distanzgefühl (in Karate UND Selbstverteidigung)
|
||
- Stabiler Stand (in Karate UND Gewaltschutz)
|
||
- Aufmerksamkeit (in verschiedenen Zielgruppenmodellen)
|
||
|
||
**Konsequenz:** Ein globaler Katalog, aber kontextabhängige Ausprägung über Reifegradmodelle.
|
||
|
||
**🆕 Hierarchische Struktur (ab Migration 022):**
|
||
```
|
||
Haupt-Kategorie (KARATE / ALLGEMEINE)
|
||
└─ Unter-Kategorie (Kihon, Kumite, Kondition, etc.)
|
||
└─ Fähigkeit
|
||
└─ Level-Definitionen (1-5)
|
||
```
|
||
|
||
**🆕 Fokusbereich-Zuordnung (ab Migration 022):**
|
||
- **Karate-spezifisch** (`focus_areas: ["karate"]`)
|
||
- Beispiele: Kata Ablauf, Kihon, Bunkai, Dachi Waza
|
||
- Nur relevant für Karate-Training
|
||
|
||
- **Universal** (`focus_areas: ["universal"]`)
|
||
- Beispiele: Maximalkraft, Konzentration, Deeskalation, Flexibilität
|
||
- Relevant für ALLE Trainingsbereiche (Karate, Selbstverteidigung, Gewaltschutz)
|
||
|
||
**Später möglich:** Mehrfachzuordnung
|
||
- `["karate", "selbstverteidigung"]` - Fähigkeit in beiden Bereichen relevant
|
||
- `["karate", "gewaltschutz"]` - etc.
|
||
|
||
### 2. Mehrfachzuordnung von Übungen (§10.7)
|
||
|
||
**Prinzip:** Eine Übung kann mehreren Bereichen GLEICHZEITIG zugeordnet sein.
|
||
|
||
**Beispiel:** Distanzübung
|
||
- Karate ✓
|
||
- Selbstverteidigung ✓
|
||
- Gewaltschutz ✓
|
||
|
||
**Technische Umsetzung:** M:N Beziehungen mit `is_primary` Flag.
|
||
|
||
### 3. Hierarchischer Kontext (§8.1)
|
||
|
||
**Fachliche Grundstruktur (ab Migration 009 - M:N):**
|
||
```
|
||
Fokusbereich (Sportart/Bereich)
|
||
└─ Stil
|
||
└─ Zielgruppen (M:N Zuordnung, wiederverwendbar)
|
||
```
|
||
|
||
**🔄 ÄNDERUNG:** Zielgruppen sind global und können mehreren Stilen zugeordnet sein!
|
||
|
||
**Beispiel-Architektur (vereinfacht):**
|
||
```
|
||
Global definierte Zielgruppen:
|
||
├─ Breitensportler
|
||
├─ Leistungssportler
|
||
├─ Kinder
|
||
├─ Erwachsene
|
||
└─ Senioren
|
||
|
||
Zuordnungen (M:N):
|
||
Karate → Shotokan → [Breitensportler, Leistungssportler, Kinder]
|
||
Karate → Goju-Ryu → [Breitensportler, Erwachsene]
|
||
Karate → Wado-Ryu → [Leistungssportler]
|
||
|
||
Selbstverteidigung → [Erwachsene, Kinder, Senioren]
|
||
Gewaltschutz → [Kinder, Senioren]
|
||
```
|
||
|
||
**Admin-UI Darstellung:**
|
||
- **Tree-View (Tab "Hierarchie"):** Zeigt Fokusbereich → Stil → zugeordnete Zielgruppen
|
||
- **Matrix (Tab "Zuordnungen"):** Checkbox-Matrix: Stile × Zielgruppen
|
||
- **Global (Tab "Zielgruppen"):** Verwaltung aller Zielgruppen unabhängig von Stilen
|
||
|
||
**Bedeutung für Reifegradmodelle:**
|
||
|
||
Jede Kombination (Fokusbereich + Stil + Zielgruppe) kann ein eigenes Reifegradmodell haben:
|
||
- Karate / Shotokan / Breitensport → Modell A
|
||
- Karate / Shotokan / Leistungssport → Modell B
|
||
- Selbstverteidigung / Erwachsene → Modell C
|
||
|
||
---
|
||
|
||
## Fachliche Dimensionen
|
||
|
||
### Dimension 1: Fokusbereich (Sportart/Bereich)
|
||
|
||
**Definition:** Oberste fachliche Kategorisierung der Trainingsinhalte.
|
||
|
||
**Beispiele:**
|
||
- Karate
|
||
- Selbstverteidigung
|
||
- Gewaltschutz
|
||
|
||
**Eigenschaften:**
|
||
- Name, Kürzel, Beschreibung
|
||
- Farbe (für UI)
|
||
- Icon (Emoji oder Icon-Name)
|
||
- Status (aktiv/archiviert)
|
||
|
||
**Verwaltung:**
|
||
- Admin-Level: Systemadmin, Vereinsadmin
|
||
- CRUD: Voll administrierbar
|
||
- Löschen: Nur wenn keine abhängigen Stile oder Übungen
|
||
|
||
### Dimension 2: Trainingsstil
|
||
|
||
**Definition:** Spezialisierung innerhalb eines Fokusbereichs.
|
||
|
||
**Beispiele:**
|
||
- Shotokan (unter Karate)
|
||
- Goju-Ryu (unter Karate)
|
||
- Wado-Ryu (unter Karate)
|
||
|
||
**Hierarchie:**
|
||
- Gehört zu genau EINEM Fokusbereich
|
||
- Kann optional Sub-Stile haben (parent_style_id)
|
||
|
||
**Eigenschaften:**
|
||
- Name, Kürzel, Beschreibung
|
||
- Fokusbereich-Zuordnung
|
||
- Optionale Hierarchie (z.B. Kyokushin → Kyokushin IKO)
|
||
- Status
|
||
|
||
**Verwaltung:**
|
||
- Admin-Level: Systemadmin, Vereinsadmin
|
||
- CRUD: Voll administrierbar
|
||
- Verschieben: Zwischen Fokusbereichen möglich
|
||
- Löschen: Nur wenn keine Zielgruppen oder Übungen zugeordnet
|
||
|
||
### Dimension 3: Zielgruppe
|
||
|
||
**Definition:** Globale Trainingsempfänger-Gruppe, die MEHREREN Stilen zugeordnet werden kann (M:N).
|
||
|
||
**🔄 ÄNDERUNG ab Migration 009:** Zielgruppen sind NICHT mehr hierarchisch an Stile gebunden!
|
||
|
||
**Beispiele:**
|
||
- Breitensportler (kann in Shotokan, Goju-Ryu, Wado-Ryu gültig sein)
|
||
- Leistungssportler (kann in verschiedenen Stilen genutzt werden)
|
||
- Kinder (6-12 Jahre) (stilunabhängig)
|
||
- Jugendliche (13-17 Jahre)
|
||
- Erwachsene
|
||
- Frauen
|
||
- Senioren
|
||
- Gemischt
|
||
|
||
**Architektur (ab Migration 009):**
|
||
- ✅ **Global unabhängig:** Keine direkte FK zu `training_style_id`
|
||
- ✅ **M:N Zuordnung:** Über Junction-Tabelle `training_style_target_groups`
|
||
- ✅ **Wiederverwendbar:** Eine Zielgruppe kann mehreren Stilen zugeordnet sein
|
||
- ✅ **Primary Flag:** `is_primary` kennzeichnet Hauptzuordnung
|
||
|
||
**Eigenschaften:**
|
||
- Name, Beschreibung
|
||
- Optionale Altersangabe (min_age, max_age)
|
||
- Status
|
||
- **KEINE direkte Stil-Zuordnung mehr!**
|
||
|
||
**Verwaltung:**
|
||
- Admin-Level: Systemadmin, Vereinsadmin, Spartenadmin
|
||
- CRUD: Voll administrierbar (global)
|
||
- Zuordnungen: Über M:N Matrix im Admin-UI
|
||
- Löschen: Nur wenn keine Übungen UND keine Stil-Zuordnungen
|
||
|
||
**Admin-UI:**
|
||
- Tab "Zielgruppen": Global verwalten (ohne Stil-Dropdown)
|
||
- Tab "Hierarchie": Tree-View (Fokusbereich → Stil → zugeordnete Zielgruppen)
|
||
- Tab "Zuordnungen": Checkbox-Matrix für M:N Assignments
|
||
|
||
### Dimension 4: Altersgruppen (separate Dimension!)
|
||
|
||
**Definition:** Grobe Alterseinstufung UNABHÄNGIG von Zielgruppe.
|
||
|
||
**Katalog:**
|
||
- Minis (3-5 Jahre)
|
||
- Kinder (6-9 Jahre)
|
||
- Schüler (10-12 Jahre)
|
||
- Teenager (13-17 Jahre)
|
||
- Erwachsene (18+)
|
||
|
||
**Abgrenzung zu Zielgruppe:**
|
||
- Altersgruppe = didaktische Einstufung
|
||
- Zielgruppe = fachlicher Kontext
|
||
|
||
**Beispiel:**
|
||
- Übung kann für "Kinder" + "Schüler" geeignet sein (Altersgruppen)
|
||
- Und gleichzeitig zu Zielgruppe "Karate Breitensport Kinder" gehören
|
||
|
||
---
|
||
|
||
## Fähigkeiten-Domäne (§8.3, erweitert ab Migration 022+023)
|
||
|
||
### Fähigkeiten-Hierarchie
|
||
|
||
**🆕 3-Ebenen-Struktur (ab Migration 022):**
|
||
|
||
```
|
||
Haupt-Kategorie (2 Stück)
|
||
├─ KARATE Fähigkeiten
|
||
│ ├─ Kihon (Unterkategorie)
|
||
│ │ ├─ Dachi Waza (Fähigkeit, Level 1-5)
|
||
│ │ ├─ Uke Waza
|
||
│ │ └─ ...
|
||
│ ├─ Kumite
|
||
│ ├─ Kata
|
||
│ └─ Selbstverteidigung
|
||
│
|
||
└─ ALLGEMEINE sportliche Fähigkeiten
|
||
├─ Koordination (Unterkategorie)
|
||
│ ├─ Orientierung (Fähigkeit, Level 1-5)
|
||
│ └─ ...
|
||
├─ Kondition
|
||
├─ Kognition
|
||
├─ Soziale Fähigkeiten
|
||
└─ Psychische Fähigkeiten
|
||
```
|
||
|
||
### Haupt-Kategorien
|
||
|
||
**1. KARATE Fähigkeiten** (`focus_areas: ["karate"]`)
|
||
- **Anzahl:** 32 Skills
|
||
- **Bedeutung:** Karate-spezifische Techniken und Fähigkeiten
|
||
- **Verwendung:** Nur für Karate-Training relevant
|
||
- **Unterkategorien:** Kihon, Kumite, Kata, Selbstverteidigung
|
||
|
||
**2. ALLGEMEINE sportliche Fähigkeiten** (`focus_areas: ["universal"]`)
|
||
- **Anzahl:** 37 Skills
|
||
- **Bedeutung:** Universelle sportliche und mentale Fähigkeiten
|
||
- **Verwendung:** Für ALLE Trainingsbereiche einsetzbar
|
||
- **Unterkategorien:** Koordination, Kondition, Kognition, Soziale Fähigkeiten, Psychische Fähigkeiten
|
||
|
||
### Unterkategorien
|
||
|
||
#### KARATE Fähigkeiten
|
||
|
||
**Kihon (Grundtechniken) - 10 Skills:**
|
||
- Dachi Waza (Standtechniken)
|
||
- Uke Waza (Blocktechniken)
|
||
- Zuki Waza (Stoßtechniken)
|
||
- Uchi Waza (Schlagtechniken)
|
||
- Geri Waza (Tritttechniken)
|
||
- Nage Waza (Wurftechniken)
|
||
- Nukite Waza (Fingerstichtechniken)
|
||
- Ken Waza (Fausttechniken)
|
||
- Hüfteinsatz
|
||
- Kime (Fokussierung)
|
||
|
||
**Kumite (Kampf) - 10 Skills:**
|
||
- Beinarbeit
|
||
- Distanzkontrolle
|
||
- Angriff
|
||
- Abwehr Konter
|
||
- Präzision
|
||
- Antizipation
|
||
- Timing
|
||
- Taktik
|
||
- Fokus
|
||
- Mentale Stärke
|
||
|
||
**Kata (Formen) - 8 Skills:**
|
||
- Technik Kombination
|
||
- Kata Ablauf
|
||
- Bunkai (Anwendung)
|
||
- Oyo (Variation)
|
||
- Henka (Veränderung)
|
||
- Kakushi (Versteckte Techniken)
|
||
- Kata Atmung
|
||
- Kata Rhythmus
|
||
|
||
**Selbstverteidigung - 4 Skills:**
|
||
- Gefahrenbewustsein
|
||
- Selbstbehauptung
|
||
- Selbstschutz
|
||
- Gefahrenabwehr
|
||
|
||
#### ALLGEMEINE sportliche Fähigkeiten
|
||
|
||
**Koordination - 7 Skills:**
|
||
- Orientierung
|
||
- Differenzierung
|
||
- Kopplung
|
||
- Gleichgewicht
|
||
- Rhythmisierung
|
||
- Reaktion
|
||
- Umstellung
|
||
|
||
**Kondition - 15 Skills:**
|
||
- Kraftfähigkeiten: Maximalkraft, Schnellkraft, Reaktivkraft, Kraftausdauer, Muskelaufbau
|
||
- Schnelligkeitsfähigkeiten: Reaktionsschnelligkeit, Bewegungsschnelligkeit, Handlungsschnelligkeit, Schnelligkeitsausdauer
|
||
- Ausdauerfähigkeiten: Grundlagenausdauer, Aerobe Ausdauer, Anaerobe Ausdauer
|
||
- Regenerationsfähigkeiten: Regenerationsfähigkeit, Ermüdungswiderstandsfähigkeit
|
||
- Beweglichkeit: Flexibilität
|
||
|
||
**Kognition - 5 Skills:**
|
||
- Aufmerksamkeit
|
||
- Wahrnehmung
|
||
- Urteilsvermögen
|
||
- Merkfähigkeit
|
||
- Lernfähigkeit
|
||
|
||
**Psychische Fähigkeiten - 6 Skills:**
|
||
- Selbstvertrauen
|
||
- Konzentration
|
||
- Emotionale Kontrolle
|
||
- Motivation
|
||
- Stressresistenz
|
||
- Stressregulation
|
||
|
||
**Soziale Fähigkeiten - 4 Skills:**
|
||
- Deeskalation
|
||
- Selbstdisziplin
|
||
- Toleranz
|
||
- Fairness
|
||
|
||
### Level-Definitionen (Reifegradmodell)
|
||
|
||
**Konzept:** Jede Fähigkeit hat 5 Stufen mit konkreten Beschreibungen.
|
||
|
||
**Struktur (noch nicht vollständig implementiert):**
|
||
- **Level 1:** Einsteiger - Grundlegende Ausführung
|
||
- **Level 2:** Grundlagen - Kontrollierte Ausführung
|
||
- **Level 3:** Aufbau - Sichere Anwendung
|
||
- **Level 4:** Fortgeschritten - Variable Anwendung
|
||
- **Level 5:** Experte - Meisterhafte Beherrschung
|
||
|
||
**Beispiel (Dachi Waza - Standtechniken):**
|
||
- Level 1: Stabiler Stand mit Schwerpunkt und richtiger Ausrichtung
|
||
- Level 2: Korrekter Stand mit guter Balance in verschiedenen Positionen
|
||
- Level 3: Fließender Wechsel zwischen Ständen mit Kontrolle
|
||
- Level 4: Dynamische Stand-Variationen unter Belastung
|
||
- Level 5: Perfekte Stand-Technik in allen Kampfsituationen
|
||
|
||
**Datenbankstruktur:**
|
||
```sql
|
||
skill_level_definitions (
|
||
skill_id,
|
||
level (1-5),
|
||
description (Text aus Fähigkeitsmatrix)
|
||
)
|
||
```
|
||
|
||
**Status:** Schema vorhanden (Migration 022), Daten noch nicht importiert (optional für spätere Phase).
|
||
|
||
---
|
||
|
||
## Übungs-Zuordnungslogik (§10)
|
||
|
||
### Primäre vs. Sekundäre Zuordnung
|
||
|
||
**Regel:** Eine Übung hat genau EINE primäre Zuordnung pro Dimension.
|
||
|
||
**Beispiel:**
|
||
|
||
**Übung:** "Maai - Distanzübung"
|
||
|
||
**Fokusbereiche:**
|
||
- Karate (primär) ✓
|
||
- Selbstverteidigung (sekundär)
|
||
|
||
**Stile:**
|
||
- Shotokan (primär) ✓
|
||
- Goju-Ryu (sekundär)
|
||
- Wado-Ryu (sekundär)
|
||
|
||
**Zielgruppen:**
|
||
- Breitensportler (primär) ✓
|
||
- Leistungssportler (sekundär)
|
||
|
||
**Altersgruppen:**
|
||
- Schüler ✓
|
||
- Teenager ✓
|
||
- Erwachsene ✓
|
||
|
||
### Fähigkeitsbezug (§10.8)
|
||
|
||
**Übung trainiert MEHRERE Fähigkeiten:**
|
||
|
||
**Beispiel:** "Kumite-Drill"
|
||
|
||
**Hauptfähigkeiten:**
|
||
- Distanzkontrolle (Kumite, target_level: 3, intensity: hoch)
|
||
- Timing (Kumite, target_level: 3, intensity: hoch)
|
||
|
||
**Nebenfähigkeiten:**
|
||
- Beinarbeit (Kumite, target_level: 2, intensity: mittel)
|
||
- Reaktion (Koordination, target_level: 2, intensity: mittel)
|
||
|
||
**Attribute pro Fähigkeitsbezug:**
|
||
- is_primary (Haupt- oder Nebenfähigkeit)
|
||
- intensity (niedrig/mittel/hoch)
|
||
- required_level (Voraussetzung, 1-5)
|
||
- target_level (Ziel-Level, 1-5)
|
||
|
||
**🆕 Fokusbereich-Filterung:**
|
||
- Bei Übungen mit Fokusbereich "Karate" sollten primär KARATE-Fähigkeiten zugeordnet werden
|
||
- ALLGEMEINE Fähigkeiten können als Nebenfähigkeiten hinzugefügt werden
|
||
- Bei universellen Übungen (Selbstverteidigung, Gewaltschutz) bevorzugt ALLGEMEINE Fähigkeiten
|
||
|
||
### Trainingscharakter (§10.7)
|
||
|
||
**Katalog:**
|
||
- Grundlage (Einführung, Basisvermittlung)
|
||
- Aufbau (Aufbauendes Training)
|
||
- Vertiefung (Vertiefung, Spezialisierung)
|
||
- Festigung (Wiederholung, Festigung)
|
||
- Diagnose (Leistungsdiagnose, Test)
|
||
- Wettkampf (Wettkampfvorbereitung)
|
||
|
||
**Bedeutung:**
|
||
- Wichtig für Suche
|
||
- Wichtig für Trainingsplanung
|
||
- Wichtig für KI-Unterstützung (später)
|
||
|
||
---
|
||
|
||
## Variantenlogik (§11.2)
|
||
|
||
**Prinzip:** Übung besteht aus Stammübung + optionale Varianten.
|
||
|
||
**Beispiele für Varianten:**
|
||
- Leicht / Mittel / Schwer
|
||
- Mit Partner / Ohne Partner
|
||
- Mit Hilfsmittel / Ohne Hilfsmittel
|
||
- Kindgerechte Variante
|
||
- Kurzvariante
|
||
- Fortgeschrittene Variante
|
||
|
||
**Varianten-Attribute:**
|
||
- Titel/Name
|
||
- Kurzbeschreibung
|
||
- Abweichende Durchführung
|
||
- Abweichende Dauer
|
||
- Abweichende Hilfsmittel
|
||
- Abweichender Fähigkeitsfokus
|
||
- Abweichende Zielgruppen
|
||
- Eigener Medienbezug
|
||
|
||
**Umsetzung (Trainingsplanung):** Ein Eintrag in `training_unit_exercises` kann optional eine konkrete Varianten-ID (`exercise_variant_id`, Migration 030) tragen; Bindung wird gegen die gewählte Übung validiert. Varianten werden über die Übungs-API verwaltet (`technical/EXERCISES_API_SPEC.md`).
|
||
|
||
### Progressionsgraph zwischen Übungen (Zwischenstand, CURR‑002 Stufe 1)
|
||
|
||
**Abgrenzung:** Zusätzlich zur Varianten-Reihe **innerhalb** einer Übung gibt es optional einen **Bibliotheks-Progressionsgraphen**: gerichtete Kanten zwischen **Übungen** (Knoten optional auf konkrete **Varianten** eingegrenzt). Gemeinsamer Kontainer pro Graph (`exercise_progression_graphs`); Kanten mit Typ z. B. Nachfolger oder Schwester.
|
||
|
||
**Rolle:** **unterstützend** für Planung und spätere Rahmenprogramme — keine Pflicht, jeden Trainingsablauf als Graph zu modellieren (**CURR‑013**).
|
||
|
||
**Fachliche Grenze aktuell:** Mehrere gleichwertige „Pakete“ paralleler Alternativen sind **modellierbar** (mehrere ausgehende Kanten), aber noch **nicht** über eine dedizierte „Alternativgruppe“ in der UI trivial pflegbar; siehe `technical/TRAINING_FRAMEWORK_SPEC.md` §4.
|
||
|
||
### Trainingsrahmen‑Vorlage (Rahmenprogramm, CURR‑002 Stufe 2 / CURR‑009)
|
||
|
||
**Abgrenzung:** Eine **einzeilige** Trainingsplan‑Mikrovorlage (`training_plan_template`) strukturiert **eine** Einheit; das **Rahmenprogramm** ist eine **eigene Bibliotheksentität** mit **sortierten Session‑Slots**, **mindestens einem** formulierten **Entwicklungsziel** (Zielliste, **CURR‑011**) und einem **vollständigen Ablauf** pro Slot (**`training_unit_sections` + `training_unit_section_items`** wie bei geplanten Einheiten — **CURR‑010** inhaltlich, technisch seit **037** identisch zur Planungsstruktur). Der persistierte **Progressionsgraph** zwischen Übungen bleibt **optional** (**CURR‑013**).
|
||
|
||
**Bibliothek only (036):** Kein Kopf‑`plan_mode`/keine Kopf‑`group_id`; Zuordnung zu Gruppe und Datum erfolgt nur über **kopierte** Kalender‑`training_units` (Instanz).
|
||
|
||
**Konkretisierung (037/API):** `POST /api/training-units/from-framework-slot` legt eine geplante Einheit aus dem Slot‑Blueprint an; **`origin_framework_slot_id`** dient als Herkunftsreferenz (**Lineage light**; weiteres Feedback/Lineage‑Konzept: Konzeptpapier Schritt **E**).
|
||
|
||
---
|
||
|
||
## Medien-Archiv & Übungs-Anhänge (Stand 2026-05-07)
|
||
|
||
- **`media_assets`:** Zentrale Datei-/Asset-Zeile (technisch u. a. SHA‑Dedupe, Sichtbarkeit, `club_id`, Lifecycle, Copyright, Speicherreferenz unter `library/…`). Siehe **`DATABASE_SCHEMA.md`**, **`MEDIA_ASSETS_AND_ARCHIVE_SPEC.md`**.
|
||
- **`exercise_media`:** Verknüpfung **Übung ↔ Asset** (`media_asset_id`) oder **Embed** ohne Asset; Felder wie `context` (`ablauf` \| `detail` \| `trainer_hint`), Sortierung, Primär-Medium.
|
||
- **`platform_media_storage`:** Konfiguration effektiver Medienwurzel (Superadmin, relativ zu `MEDIA_ROOT`).
|
||
- **Produkt:** Medienbibliothek **`/media`**; in der Übungsbearbeitung Upload, Entfernen der Verknüpfung, **Aus Archiv verknüpfen**; Governance **`official`** und Copyright-Regeln wie in der Norm beschrieben.
|
||
- **Geplant:** **Inline-Verweise** in Fließtextfeldern auf dieselbe Verknüpfung (`exercise_media.id`) — **`MEDIA_ASSETS_AND_ARCHIVE_SPEC.md` §11**, **`docs/HANDOVER.md`** §5.
|
||
|
||
---
|
||
|
||
## Methodenbezug (§11.5)
|
||
|
||
**Prinzip:** Genau EINE Hauptmethode, optional weitere Nebenmethoden.
|
||
|
||
**Beispiele:**
|
||
- Hauptmethode: Rollenspiel
|
||
- Nebenmethoden: Strukturierte Übung, Reflexion
|
||
|
||
**Optional später:**
|
||
- Sportmethodische Hauptmethode
|
||
- Didaktische Zusatzmethode
|
||
|
||
---
|
||
|
||
## Qualitäts- und Bearbeitungsstatus (§11.3)
|
||
|
||
### Statusstufen
|
||
|
||
**Übungsstatus:**
|
||
- Entwurf (in Arbeit)
|
||
- In Bearbeitung (aktiv gepflegt)
|
||
- Fachlich geprüft (Review OK)
|
||
- Freigegeben (produktiv nutzbar)
|
||
- Archiviert (nicht mehr aktiv)
|
||
|
||
### Sichtbarkeitsebenen (§5.5)
|
||
|
||
**Freigabeebenen:**
|
||
- Privat (nur Ersteller)
|
||
- Für bestimmte Personen (später)
|
||
- Verein (alle Vereinsmitglieder)
|
||
- Sparte (nur bestimmte Sparte)
|
||
- Allgemein/Global (alle Nutzer)
|
||
- Offiziell (Standardinhalte)
|
||
|
||
**Zusätzlich:** Thematische Einschränkungen
|
||
- Karate-Inhalte (nur Übungen mit `focus_areas: ["karate"]`)
|
||
- Selbstverteidigungs-Inhalte
|
||
- Gewaltschutz-Inhalte
|
||
|
||
---
|
||
|
||
## MediaWiki Import (ab Migration 018)
|
||
|
||
### Import-Typen
|
||
|
||
**1. Übungen** (`import_type: exercise`)
|
||
- Quelle: https://karatetrainer.net `Kategorie:Übungen`
|
||
- Import-Modus: Vollständig mit Skill-Zuordnungen
|
||
- Status: ✅ Produktiv (221 Übungen importiert)
|
||
|
||
**2. Fähigkeiten** (`import_type: skill`)
|
||
- Quelle: https://karatetrainer.net `Kategorie:Fähigkeitsbeschreibung`
|
||
- Import-Modus: DEPRECATED - Nutze Migration 023 stattdessen
|
||
- Status: ⚠️ Migration 021 fehlerhaft, ersetzt durch Migration 023
|
||
|
||
**3. Trainingsmethoden** (`import_type: method`)
|
||
- Quelle: https://karatetrainer.net `Kategorie:Methodenbeschreibung`
|
||
- Import-Modus: Vollständig
|
||
- Status: 🔲 Noch nicht implementiert
|
||
|
||
### Import-Tracking
|
||
|
||
**Duplikat-Erkennung:**
|
||
- Über `wiki_import_references` Tabelle
|
||
- Verknüpfung `wiki_page_id` → `local_id`
|
||
- Reimport aktualisiert bestehende Einträge
|
||
|
||
**Import-Metadaten:**
|
||
- `import_source = 'mediawiki'`
|
||
- `import_id` = Wiki-Seitentitel
|
||
- `wiki_page_id` = MediaWiki interne Page-ID
|
||
|
||
---
|
||
|
||
## Admin-Workflows
|
||
|
||
### Fokusbereich anlegen
|
||
|
||
1. Admin navigiert zu Katalogverwaltung
|
||
2. Wählt "Fokusbereiche"
|
||
3. Klickt "Neu anlegen"
|
||
4. Füllt aus: Name, Kürzel, Beschreibung, Farbe, Icon
|
||
5. Speichert
|
||
6. System validiert Eindeutigkeit (Name)
|
||
7. Fokusbereich verfügbar für Stil-Zuordnung
|
||
|
||
### Stil verschieben (zwischen Fokusbereichen)
|
||
|
||
**Szenario:** Goju-Ryu soll von "Karate" nach "Karate Traditional" verschoben werden.
|
||
|
||
**Workflow:**
|
||
1. Admin wählt Stil "Goju-Ryu"
|
||
2. Klickt "Verschieben"
|
||
3. Wählt Ziel-Fokusbereich "Karate Traditional"
|
||
4. System prüft:
|
||
- Ziel-Fokusbereich existiert
|
||
- Keine Namenskonflikte
|
||
5. System aktualisiert:
|
||
- `style_directions.focus_area_id`
|
||
- Alle abhängigen Zielgruppen bleiben erhalten
|
||
6. System loggt Änderung
|
||
7. Erfolg-Meldung
|
||
|
||
### Fokusbereich löschen (mit Schutz)
|
||
|
||
**Szenario:** "Judo" soll gelöscht werden.
|
||
|
||
**Workflow:**
|
||
1. Admin wählt "Judo"
|
||
2. Klickt "Löschen"
|
||
3. System prüft Abhängigkeiten:
|
||
```sql
|
||
SELECT COUNT(*) FROM style_directions WHERE focus_area_id = :id
|
||
SELECT COUNT(*) FROM exercise_focus_areas WHERE focus_area_id = :id
|
||
```
|
||
4. **Falls verwendet:**
|
||
- Dialog: "Fokusbereich kann nicht gelöscht werden. 5 Stile und 23 Übungen sind zugeordnet."
|
||
- Optionen:
|
||
- "Abbrechen"
|
||
- "Stile/Übungen umrouten" (Admin wählt Ziel)
|
||
- "Archivieren statt löschen"
|
||
5. **Falls nicht verwendet:**
|
||
- Bestätigung: "Wirklich löschen? (Keine Abhängigkeiten)"
|
||
- Löschen durchführen
|
||
|
||
### Zielgruppe umrouten
|
||
|
||
**Szenario:** Alle Übungen für "Kinder" sollen zu "Schüler" umgeleitet werden.
|
||
|
||
**Workflow:**
|
||
1. Admin wählt Zielgruppe "Kinder"
|
||
2. Klickt "Umrouten"
|
||
3. Wählt Ziel: "Schüler"
|
||
4. System zeigt Vorschau:
|
||
- "47 Übungen werden aktualisiert"
|
||
- Liste der betroffenen Übungen (mit Scroll)
|
||
5. Admin bestätigt
|
||
6. System führt Batch-Update aus:
|
||
```sql
|
||
UPDATE exercise_target_groups
|
||
SET target_group_id = :new_id
|
||
WHERE target_group_id = :old_id
|
||
```
|
||
7. Optional: Alte Zielgruppe löschen oder archivieren
|
||
8. Erfolg-Meldung mit Log-Referenz
|
||
|
||
---
|
||
|
||
## Nächste Schritte
|
||
|
||
- [ ] Level-Definitionen aus Fähigkeitsmatrix extrahieren (optional)
|
||
- [ ] Skills-Beschreibungen aus Wiki importieren (Migration 024)
|
||
- [ ] Admin-UI für Fähigkeiten-Kategorien (CRUD)
|
||
- [ ] Skill-Filter in Übungssuche integrieren
|
||
- [ ] Reifegradmodelle definieren (Kombination Fokusbereich + Stil + Zielgruppe)
|
||
- [ ] KI-Unterstützung für Trainingsplanung (basierend auf Fähigkeiten-Level)
|
||
|
||
---
|
||
|
||
**Letzte Aktualisierung:** 2026-04-27
|
||
**Verantwortlich:** Claude Code
|
||
**Review:** Pending
|