- .gitignore: .claude/docs, rules, commands tracken; settings.local weiter ignorieren - DOCUMENTATION.md: verbindliche Ablage functional/technical/working/issues - .claude/README.md: Agent-Einstieg; GITEA_ISSUES_INDEX aus MCP (Stand 2026-04-08) - Arbeitspapiere von docs/ nach .claude/docs/working/ verschoben - docs/MEMBERSHIP_SYSTEM.md als Stub; kanonisch technical/MEMBERSHIP_SYSTEM.md - CLAUDE.md Pflichtlektüre und Links angepasst; docs/README.md vereinfacht Made-with: Cursor
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)
|