mitai-jinkendo/.claude/docs/functional/DEVELOPMENT_ROUTES.md

418 lines
10 KiB
Markdown
Raw Normal View History

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