All checks were successful
Deploy Development / deploy (push) Successful in 48s
Test Suite / pytest-backend (push) Successful in 45s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / build-frontend (push) Successful in 15s
Test Suite / k6 /health Baseline (push) Successful in 34s
Test Suite / playwright-tests (push) Successful in 1m35s
Document cross-app architecture patterns, Mitai alignment, and family entitlement standards. Documentation only; no runtime changes. Co-authored-by: Cursor <cursoragent@cursor.com>
5.0 KiB
5.0 KiB
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
- Parallele Phasen als reine UI-Konvention ohne DB-Phasen — Minimalvariante verworfen.
- Rahmen-Slots als separate Exercise-Join-Tabelle — Legacy
training_framework_slot_exercisesabgelöst. - Planungs-KI direkt in Router-Strings — AI Prompt Runtime nutzen.
- Blueprint-Einheiten in Kalenderlisten — Filter
framework_slot_id IS NOT NULL.