# 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)
