418 lines
10 KiB
Markdown
418 lines
10 KiB
Markdown
|
|
# Entwicklungsrouten – Multi-Dimensionales Training & Planung
|
|||
|
|
|
|||
|
|
**Version:** 1.0
|
|||
|
|
**Status:** Konzept
|
|||
|
|
**Ziel-Release:** v9e / v9f
|
|||
|
|
**Basis:** Rest Days Multi-Dimensional Architecture (v9d Phase 2a)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Überblick
|
|||
|
|
|
|||
|
|
**Entwicklungsrouten** sind unabhängige Dimensionen der körperlichen und mentalen Entwicklung, die jeweils eigene:
|
|||
|
|
- Trainingspläne
|
|||
|
|
- Ruhetag-Regeln
|
|||
|
|
- Fortschritts-Tracking
|
|||
|
|
- Ziele
|
|||
|
|
|
|||
|
|
haben.
|
|||
|
|
|
|||
|
|
**Kernidee:** Ein Tag kann gleichzeitig ein "Kraft-Ruhetag" UND ein "Mental-Aktivtag" sein.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Die 6 Entwicklungsrouten
|
|||
|
|
|
|||
|
|
### 1. 💪 Kraft (Strength)
|
|||
|
|
**Fokus:** Muskelaufbau, Maximalkraft, Power
|
|||
|
|
|
|||
|
|
**Trainingstypen:**
|
|||
|
|
- Strength (Krafttraining allgemein)
|
|||
|
|
- Power (Schnellkraft, Explosivität)
|
|||
|
|
- HIIT (Hochintensiv)
|
|||
|
|
|
|||
|
|
**Ruhetag-Regeln:**
|
|||
|
|
- Nach schwerer Beineinheit → 48-72h Kraft-Ruhetag
|
|||
|
|
- Andere Routen (Cardio, Mental) bleiben erlaubt
|
|||
|
|
- Intensität: Max 60% bei erlaubten Aktivitäten
|
|||
|
|
|
|||
|
|
**Metriken:**
|
|||
|
|
- Gewicht, Umfänge, Caliper
|
|||
|
|
- 1RM-Schätzung (optional)
|
|||
|
|
- Muskelregeneration (Ruhepuls + HRV)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2. 🏃 Kondition (Conditioning)
|
|||
|
|
**Fokus:** Ausdauer, VO2Max, Herz-Kreislauf
|
|||
|
|
|
|||
|
|
**Trainingstypen:**
|
|||
|
|
- Cardio Low (GA1, Grundlagenausdauer)
|
|||
|
|
- Cardio High (GA2, Tempo-Läufe)
|
|||
|
|
- Endurance (Lange Einheiten)
|
|||
|
|
|
|||
|
|
**Ruhetag-Regeln:**
|
|||
|
|
- Nach Wettkampf/Tempo-Lauf → 24-48h Cardio-Ruhetag
|
|||
|
|
- Kraft & Mobility erlaubt
|
|||
|
|
- Intensität: Max 70% HFmax
|
|||
|
|
|
|||
|
|
**Metriken:**
|
|||
|
|
- HF-Zonen-Verteilung
|
|||
|
|
- VO2Max-Schätzung
|
|||
|
|
- Lauf-Pace / Rad-Watt
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3. 🧘 Mental (Mental)
|
|||
|
|
**Fokus:** Stressmanagement, Fokus, Wettkampf-Readiness
|
|||
|
|
|
|||
|
|
**Trainingstypen:**
|
|||
|
|
- Meditation
|
|||
|
|
- Wettkampf (Competition)
|
|||
|
|
- High-Pressure Training
|
|||
|
|
|
|||
|
|
**Ruhetag-Regeln:**
|
|||
|
|
- Nach Wettkampf → 1-3 Tage Mental-Ruhetag
|
|||
|
|
- Physisches Training erlaubt (aber kein Wettkampf-Druck)
|
|||
|
|
- Nur entspannende Aktivitäten (Meditation, Spaziergang)
|
|||
|
|
|
|||
|
|
**Metriken:**
|
|||
|
|
- Stresslevel (1-5 subjektiv)
|
|||
|
|
- Schlafqualität
|
|||
|
|
- HRV (Mental-Recovery-Indikator)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 4. 🤸 Koordination (Coordination)
|
|||
|
|
**Fokus:** Balance, Agilität, Reaktion, propriozeptives Training
|
|||
|
|
|
|||
|
|
**Trainingstypen:**
|
|||
|
|
- Coordination (Agilität, Balance)
|
|||
|
|
- Sport-spezifische Drills
|
|||
|
|
- Reaktionstraining
|
|||
|
|
|
|||
|
|
**Ruhetag-Regeln:**
|
|||
|
|
- Nach intensivem Koordinationstraining → 24h Pause
|
|||
|
|
- Andere Routen erlaubt
|
|||
|
|
- Kein koordinativ anspruchsvolles Training bei Müdigkeit
|
|||
|
|
|
|||
|
|
**Metriken:**
|
|||
|
|
- Subjektive Koordinations-Scores
|
|||
|
|
- Balance-Tests (optional)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 5. 🧘♂️ Mobilität (Mobility)
|
|||
|
|
**Fokus:** Flexibilität, ROM (Range of Motion), Faszien
|
|||
|
|
|
|||
|
|
**Trainingstypen:**
|
|||
|
|
- Mobility (Stretching, Yoga)
|
|||
|
|
- Faszien-Training
|
|||
|
|
- Passive Dehnung
|
|||
|
|
|
|||
|
|
**Ruhetag-Regeln:**
|
|||
|
|
- Normalerweise kein Ruhetag nötig
|
|||
|
|
- Bei Überdehnung / Verletzung → Pause für betroffene Bereiche
|
|||
|
|
|
|||
|
|
**Metriken:**
|
|||
|
|
- ROM-Messungen (optional)
|
|||
|
|
- Subjektive Beweglichkeit (1-5)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 6. 🎯 Technik (Technique)
|
|||
|
|
**Fokus:** Sport-spezifische Skills, Bewegungsqualität
|
|||
|
|
|
|||
|
|
**Trainingstypen:**
|
|||
|
|
- Technique Drills
|
|||
|
|
- Skill Work
|
|||
|
|
- Video-Analyse
|
|||
|
|
|
|||
|
|
**Ruhetag-Regeln:**
|
|||
|
|
- Technik-Training bei Müdigkeit kontraproduktiv
|
|||
|
|
- Mental-Ruhetag → auch Technik pausieren
|
|||
|
|
- Physisches Training erlaubt (ohne Technik-Fokus)
|
|||
|
|
|
|||
|
|
**Metriken:**
|
|||
|
|
- Video-Analyse-Scores (optional)
|
|||
|
|
- Coach-Feedback
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Datenmodell
|
|||
|
|
|
|||
|
|
### rest_days (Multi-Entry per Date)
|
|||
|
|
|
|||
|
|
**Änderung:** UNIQUE constraint `(profile_id, date)` entfernt (Migration 011)
|
|||
|
|
|
|||
|
|
**Erlaubt:**
|
|||
|
|
```sql
|
|||
|
|
-- Gleiches Datum, verschiedene Routen:
|
|||
|
|
INSERT INTO rest_days (profile_id, date, rest_config, note)
|
|||
|
|
VALUES
|
|||
|
|
('user-1', '2026-03-23', '{"focus": "muscle_recovery", ...}', 'Beine heavy'),
|
|||
|
|
('user-1', '2026-03-23', '{"focus": "mental_rest", ...}', 'Wettkampf-Pause');
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**UI:**
|
|||
|
|
```
|
|||
|
|
23. März 2026
|
|||
|
|
💪 Muskelregeneration | "Beine heavy"
|
|||
|
|
🧘 Mental Rest | "Wettkampf-Pause"
|
|||
|
|
|
|||
|
|
→ Cardio erlaubt, Kraft pausiert, keine Wettkämpfe
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Wochenplanung mit Routen
|
|||
|
|
|
|||
|
|
### Tabelle: weekly_goals (erweitert)
|
|||
|
|
|
|||
|
|
**JSONB Schema:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"routes": {
|
|||
|
|
"strength": {
|
|||
|
|
"goal": 3, // 3x Kraft pro Woche
|
|||
|
|
"min_rest_days": 1, // Mind. 1 Kraft-Ruhetag
|
|||
|
|
"intensity_distribution": {
|
|||
|
|
"heavy": 1, // 1x schwer (80-90%)
|
|||
|
|
"medium": 1, // 1x mittel (70-80%)
|
|||
|
|
"light": 1 // 1x leicht (60-70%)
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"conditioning": {
|
|||
|
|
"goal": 2,
|
|||
|
|
"min_rest_days": 0,
|
|||
|
|
"hr_zones": {
|
|||
|
|
"zone_2": 60, // 60% der Zeit in Zone 2
|
|||
|
|
"zone_3": 30, // 30% in Zone 3
|
|||
|
|
"zone_4": 10 // 10% in Zone 4
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"mental": {
|
|||
|
|
"goal": 7, // Täglich Meditation
|
|||
|
|
"min_duration": 10, // Mind. 10 Min
|
|||
|
|
"rest_after_competition": 2 // 2 Tage Pause nach Wettkampf
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"rules": {
|
|||
|
|
"max_consecutive_strength": 2, // Max 2 Krafteinheiten hintereinander
|
|||
|
|
"require_rest_after": ["competition", "strength_heavy"],
|
|||
|
|
"auto_rest_on_poor_recovery": true // Bei HRV < Baseline → Auto-Ruhetag
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Activity Validation mit Routen
|
|||
|
|
|
|||
|
|
### Endpoint: `POST /api/rest-days/validate-activity`
|
|||
|
|
|
|||
|
|
**Request:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"date": "2026-03-23",
|
|||
|
|
"activity_type": "strength",
|
|||
|
|
"route": "strength" // Neue Dimension
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Response:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"conflicts": [
|
|||
|
|
{
|
|||
|
|
"route": "strength",
|
|||
|
|
"severity": "warning",
|
|||
|
|
"message": "Kraft-Ruhetag – Muskelregeneration nach Beineinheit. Trotzdem trainieren?"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"allowed": false
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Logik:**
|
|||
|
|
```python
|
|||
|
|
def validate_activity_multi_route(profile_id, date, activity_type, route=None):
|
|||
|
|
"""
|
|||
|
|
Prüft alle rest_days für das Datum.
|
|||
|
|
|
|||
|
|
- Wenn route angegeben: Nur diese Route prüfen
|
|||
|
|
- Sonst: Alle passenden Routen prüfen
|
|||
|
|
"""
|
|||
|
|
rest_days = get_rest_days(profile_id, date)
|
|||
|
|
conflicts = []
|
|||
|
|
|
|||
|
|
for rest_day in rest_days:
|
|||
|
|
config = rest_day['rest_config']
|
|||
|
|
|
|||
|
|
# Prüfe ob Activity in rest_from
|
|||
|
|
if activity_type in config.get('rest_from', []):
|
|||
|
|
conflicts.append({
|
|||
|
|
'route': config['focus'],
|
|||
|
|
'severity': 'warning',
|
|||
|
|
'message': f"{ROUTE_LABELS[config['focus']]} Ruhetag – {activity_type} sollte pausiert werden."
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
'conflicts': conflicts,
|
|||
|
|
'allowed': len(conflicts) == 0
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Habits & Streaks pro Route
|
|||
|
|
|
|||
|
|
### Tabelle: route_habits (neu in v9f)
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE route_habits (
|
|||
|
|
id SERIAL PRIMARY KEY,
|
|||
|
|
profile_id UUID NOT NULL REFERENCES profiles(id) ON DELETE CASCADE,
|
|||
|
|
route VARCHAR(20) NOT NULL, -- 'strength', 'conditioning', 'mental', etc.
|
|||
|
|
habit_type VARCHAR(50) NOT NULL, -- 'meditation', 'mobility', 'strength_training'
|
|||
|
|
frequency VARCHAR(20) NOT NULL, -- 'daily', 'weekly_3', 'weekly_5'
|
|||
|
|
streak_current INTEGER DEFAULT 0,
|
|||
|
|
streak_longest INTEGER DEFAULT 0,
|
|||
|
|
last_completed DATE,
|
|||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Beispiele:**
|
|||
|
|
- Mental-Route: "Tägliche Meditation" (7x/Woche)
|
|||
|
|
- Mobility-Route: "Stretching" (3x/Woche)
|
|||
|
|
- Strength-Route: "Krafttraining" (3x/Woche)
|
|||
|
|
|
|||
|
|
**UI:**
|
|||
|
|
```
|
|||
|
|
🧘 Mental-Route
|
|||
|
|
Meditation 🔥 12 Tage Streak
|
|||
|
|
Stress-Check 🔥 5 Tage Streak
|
|||
|
|
|
|||
|
|
💪 Kraft-Route
|
|||
|
|
Krafttraining 🔥 2 Wochen Streak
|
|||
|
|
Protein > 150g 🔥 10 Tage Streak
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Dashboard Integration
|
|||
|
|
|
|||
|
|
### Route-Übersicht Widget
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Entwicklungsrouten (diese Woche)
|
|||
|
|
─────────────────────────────────────
|
|||
|
|
💪 Kraft 2/3 [██░] 1 Ruhetag
|
|||
|
|
🏃 Kondition 1/2 [█░░] 0 Ruhetage
|
|||
|
|
🧘 Mental 7/7 [███] ✓ Täglich
|
|||
|
|
🤸 Koordination 0/1 [░░░] Geplant: Do
|
|||
|
|
🧘♂️ Mobilität 3/3 [███] ✓ Ziel erreicht
|
|||
|
|
|
|||
|
|
Empfehlung: Kraft-Training heute, Cardio morgen
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## KI-Integration
|
|||
|
|
|
|||
|
|
### Neue Platzhalter (v9f)
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
{{route_balance}} # "Kraft überlastet, Cardio unterfordert"
|
|||
|
|
{{route_progress_strength}} # "3/3 Einheiten, +2kg seit letztem Monat"
|
|||
|
|
{{route_recovery_strength}} # "Gut erholt, schweres Training möglich"
|
|||
|
|
{{route_next_recommended}} # "Kraft-Oberkörper empfohlen (Push-Fokus)"
|
|||
|
|
{{route_conflict_today}} # "Kraft-Ruhetag, Cardio/Mental erlaubt"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### KI-Analyse-Funktion
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
def analyze_route_balance(profile_id, weeks=4):
|
|||
|
|
"""
|
|||
|
|
Analysiert Balance über alle Routen.
|
|||
|
|
|
|||
|
|
Warnt bei:
|
|||
|
|
- Übertraining in einer Route
|
|||
|
|
- Vernachlässigung einer Route
|
|||
|
|
- Fehlende Ruhetage in Route
|
|||
|
|
"""
|
|||
|
|
routes = ['strength', 'conditioning', 'mental', 'coordination', 'mobility']
|
|||
|
|
analysis = {}
|
|||
|
|
|
|||
|
|
for route in routes:
|
|||
|
|
activities = get_activities_by_route(profile_id, route, weeks)
|
|||
|
|
rest_days = get_rest_days_by_route(profile_id, route, weeks)
|
|||
|
|
|
|||
|
|
analysis[route] = {
|
|||
|
|
'activity_count': len(activities),
|
|||
|
|
'rest_days_count': len(rest_days),
|
|||
|
|
'intensity_avg': calculate_intensity_avg(activities),
|
|||
|
|
'status': calculate_route_status(activities, rest_days) # 'balanced', 'overload', 'neglected'
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return analysis
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Implementierungs-Phasen
|
|||
|
|
|
|||
|
|
### Phase 1: Foundation (v9d Phase 2a) ✅
|
|||
|
|
- ✅ Migration 011: UNIQUE constraint entfernen
|
|||
|
|
- ✅ Multiple rest_days per date erlauben
|
|||
|
|
- ✅ UI: Mehrere Kacheln pro Tag anzeigen
|
|||
|
|
|
|||
|
|
### Phase 2: Route-Konzept (v9e)
|
|||
|
|
- 🔲 Routen-Taxonomie festlegen (6 Routen)
|
|||
|
|
- 🔲 Activity-Types den Routen zuordnen
|
|||
|
|
- 🔲 `training_types` Tabelle um `route` Spalte erweitern
|
|||
|
|
- 🔲 Validation: Multi-Route-Konflikt-Check
|
|||
|
|
|
|||
|
|
### Phase 3: Wochenplanung (v9f)
|
|||
|
|
- 🔲 `weekly_goals` mit Routen-JSONB erweitern
|
|||
|
|
- 🔲 Planungs-UI: Routen-basierte Wochenansicht
|
|||
|
|
- 🔲 Regeln-Engine: Auto-Ruhetag bei Poor Recovery
|
|||
|
|
- 🔲 Empfehlungs-System: "Heute: Kraft-Oberkörper empfohlen"
|
|||
|
|
|
|||
|
|
### Phase 4: Habits & Streaks (v9g)
|
|||
|
|
- 🔲 `route_habits` Tabelle
|
|||
|
|
- 🔲 Streak-Tracking pro Route
|
|||
|
|
- 🔲 Dashboard-Integration
|
|||
|
|
- 🔲 Push-Notifications bei Streak-Gefahr
|
|||
|
|
|
|||
|
|
### Phase 5: KI-Integration (v9f/g)
|
|||
|
|
- 🔲 Route-Balance-Analyse
|
|||
|
|
- 🔲 Übertraining-Warnung pro Route
|
|||
|
|
- 🔲 Neue KI-Platzhalter
|
|||
|
|
- 🔲 Route-spezifische Empfehlungen
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Offene Fragen
|
|||
|
|
|
|||
|
|
1. **Route-Hierarchie:** Gibt es Abhängigkeiten? (z.B. Mental-Rest → auch Technik-Rest?)
|
|||
|
|
2. **Auto-Zuordnung:** Sollen Activities automatisch Routen zugeordnet werden? (Strength → Kraft-Route)
|
|||
|
|
3. **Konflikt-Priorität:** Was passiert bei widersprüchlichen Ruhetagen? (Kraft erlaubt, Mental verbietet → ?)
|
|||
|
|
4. **Routen-Gewichtung:** Sind manche Routen wichtiger als andere? (User-konfigurierbar?)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Referenzen
|
|||
|
|
|
|||
|
|
- **Migration:** `backend/migrations/011_allow_multiple_rest_days_per_date.sql`
|
|||
|
|
- **Technical Spec:** `.claude/docs/technical/V9D_PHASE2_VITALS_SLEEP.md` (zu aktualisieren)
|
|||
|
|
- **Routen-Mapping:** `.claude/docs/functional/TRAINING_TYPES.md` (zu erweitern)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Dokumentiert:** 2026-03-22
|
|||
|
|
**Autor:** User Konzept + Claude Implementation
|
|||
|
|
**Status:** Living Document (wird mit v9e/f erweitert)
|