# Training Planning – Designprinzipien (Extraktion) **Status:** Analyse / Arbeitspapier **Stand:** 2026-07-04 **Geltungsbereich:** Modul „Training Planning“ — Einheiten, Phasen, Rahmen, Coach **Serie:** Designprinzipien für Produktfamilie · Shinkan Dokument 9 von 15 **Mitai-Vergleich:** — (domänenspezifisch) **Kernkomponenten:** | Bereich | Pfade | |---------|-------| | Kalender-Einheiten | `backend/routers/training_planning.py` | | Module | `backend/routers/training_modules.py` | | Rahmen | `backend/routers/training_framework_programs.py` | | Phasen/Streams | Migration 063; `PARALLEL_TRAINING_STREAMS_SPEC.md` | | Frontend | `TrainingPlanningPage`, `TrainingCoachPage`, `TrainingUnitRunPage` | | Utils | `frontend/src/utils/trainingPlanUtils.js` | --- ## Modul **Training Planning & Frameworks** Planbare Trainingseinheiten mit Sektionen, **Phasen** (Ganzgruppe/Parallel) und **Streams**, Bibliotheks-**Rahmenprogramme** (Ziele/Slots), **Trainingsmodule**, Materialisierung aus Slots, Durchführungs- und Coaching-Ansichten. --- ## Designprinzipien ### 1. Einheit als planbares Aggregate | | | |---|---| | **Prinzip** | `training_units` + `training_unit_sections` + Items; Kopf: Gruppe, Datum, Trainer, Status. | | **Begründung** | Klare Grenze Kalender vs. Bibliothek. | | **Quelle** | Domain Model; `training_planning.py` | | **Tragfähigkeit** | **hoch** | | **Einschränkung** | Große Router-Datei — Refaktor-Schuld. | ### 2. Phasen/Streams als explizites Modell (nicht Marker-Sektionen) | | | |---|---| | **Prinzip** | `training_unit_phases` + `training_unit_parallel_streams`; Sektionen an Phase oder Stream gebunden. | | **Begründung** | Breakout-Trainings fachlich korrekt; Coach/Rejoin-Logik. | | **Quelle** | `PARALLEL_TRAINING_STREAMS_SPEC.md` | | **Tragfähigkeit** | **hoch** | | **Einschränkung** | Legacy-Einheiten → Default-Ganzgruppenphase; Vorlagen-Phasen teils offen. | ### 3. API: verschachtelte `phases` + flache `sections` | | | |---|---| | **Prinzip** | GET liefert beides; PUT akzeptiert `phases` atomar; höchstens eines von phases/sections/exercises pro Request. | | **Begründung** | Frontend normalisiert; Server validiert CHECK-Regeln. | | **Quelle** | Spec §4; Planning-Router | | **Tragfähigkeit** | **hoch** | | **Einschränkung** | Server-Spiegelung neuer Abschnitte in phases — Handover offen. | ### 4. Rahmen-Bibliothek: Slot = Blueprint-Unit | | | |---|---| | **Prinzip** | `framework_slot_id` auf Blueprint-`training_units`; Materialisierung → Kalender-Einheit für Gruppe. | | **Begründung** | Wiederverwendbare Programme ohne Duplikat-Logik pro Slot-Typ. | | **Quelle** | Migration 035–037 | | **Tragfähigkeit** | **hoch** | | **Einschränkung** | UI „Aus Rahmen übernehmen“ nicht flächendeckend. | ### 5. Trainingsmodule als wiederverwendbare Übungsfolgen | | | |---|---| | **Prinzip** | Bibliotheks-Objekt mit Skill-Profil; Übernahme in geplante Einheit. | | **Begründung** | Trainer-Bausteine zwischen Einzelübung und Rahmen. | | **Quelle** | `training_modules.py`; Skill Scoring Phase 3 | | **Tragfähigkeit** | **hoch** | | **Einschränkung** | — | ### 6. Drei Durchführungsmodi getrennt | | | |---|---| | **Prinzip** | Planung (edit) · Plan & Ablauf (run) · Coaching (step timeline, Stream-Picks, Nachbereitung). | | **Begründung** | Unterschiedliche UX und Payloads; Coach speichert → Run-Ansicht. | | **Quelle** | Nutzerfunktionen §4.4; `TrainingCoachPage` | | **Tragfähigkeit** | **hoch** | | **Einschränkung** | Stream-Tabs in Run-Ansicht optional offen. | ### 7. Governance über Gruppe/Verein, keine neuen Mandanten-Entitäten | | | |---|---| | **Prinzip** | Einheit → `training_group` → Verein; Access Layer für Bibliotheks-Rahmen/Module. | | **Begründung** | Planung erbt Organisations-Kontext. | | **Quelle** | `PARALLEL_TRAINING_STREAMS_SPEC.md` §4 | | **Tragfähigkeit** | **hoch** | | **Einschränkung** | Stream-Trainer-Zuweisung UI unvollständig. | ### 8. Kombinationsübungen in Planung transparent | | | |---|---| | **Prinzip** | Items ohne Variante; Coach zeigt Stations-Kandidaten + Archetyp-Hinweise. | | **Begründung** | Gleiche Item-Schicht für Standard- und Kombi-Übungen. | | **Quelle** | Migration 057; Kombinations-Spec Anhang A | | **Tragfähigkeit** | **mittel** | | **Einschränkung** | Archetyp-Stufen B/C ausbaubar. | --- ## Nicht übernehmen 1. **Parallele Phasen als reine UI-Konvention ohne DB-Phasen** — Minimalvariante verworfen. 2. **Rahmen-Slots als separate Exercise-Join-Tabelle** — Legacy `training_framework_slot_exercises` abgelöst. 3. **Planungs-KI direkt in Router-Strings** — AI Prompt Runtime nutzen. 4. **Blueprint-Einheiten in Kalenderlisten** — Filter `framework_slot_id IS NOT NULL`. --- ## Verwandte Dokumentation - [PARALLEL_TRAINING_STREAMS_SPEC.md](../../../.claude/docs/technical/PARALLEL_TRAINING_STREAMS_SPEC.md) - [TRAINING_FRAMEWORK_SPEC.md](../../../.claude/docs/technical/TRAINING_FRAMEWORK_SPEC.md) - [SKILL_SCORING_DESIGN_PRINCIPLES.md](./SKILL_SCORING_DESIGN_PRINCIPLES.md) - [DESIGN_PRINCIPLES_INDEX.md](./DESIGN_PRINCIPLES_INDEX.md)