# Fachliche Datenarchitektur – Mitai Jinkendo

**Version:** 2.0
**Status:** Living Document
**Letzte Aktualisierung:** 29. März 2026

---

## Überblick

Dieses Dokument beschreibt die **fachliche Datenarchitektur** von Mitai Jinkendo aus Domänen-Perspektive. Es zeigt:
- Welche **Datenobjekte** (Domänen-Entitäten) existieren
- Wie sie **zusammenhängen** (Beziehungen)
- Welche Daten **gespeichert** vs. **berechnet** werden
- Welche **Anreicherungen** stattfinden (z.B. Trainingsqualität, Recovery Score)
- Wie Daten **fließen** (Import → Speicherung → Anreicherung → Auswertung)

**Technische Schema-Details:** Siehe `DATABASE.md` in `.claude/library/`

**Berechnungen & Chart-Schicht (Code):** `backend/data_layer/` · Leitfaden: `../technical/DATA_LAYER_EXTENSION_GUIDE.md`

---

## Domänen-Übersicht

```
┌─────────────────────────────────────────────────────────────────┐
│                    NUTZER & ZIELSETZUNG                          │
├─────────────────────────────────────────────────────────────────┤
│ Profil → Goal Mode (Strategic) → Ziele (Tactical)              │
│ Focus Areas (Dynamic) → Membership → Access Control            │
└─────────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        ▼                     ▼                     ▼
┌──────────────┐    ┌──────────────┐      ┌──────────────┐
│   KÖRPER     │    │   TRAINING   │      │  LIFESTYLE   │
├──────────────┤    ├──────────────┤      ├──────────────┤
│ Gewicht      │    │ Aktivitäten  │      │ Schlaf       │
│ Umfänge      │    │ Trainingstyp │      │ Ernährung    │
│ Caliper      │    │ HF-Daten     │      │ Ruhetage     │
│ Vitalwerte   │    │ Fähigkeiten ⚡│      │ Vitalwerte   │
│ Progress-Foto│    │ Qualität ⚡  │      │ Custom Goals │
└──────────────┘    └──────────────┘      └──────────────┘
        │                     │                     │
        └─────────────────────┼─────────────────────┘
                              ▼
                    ┌──────────────────┐
                    │   AUSWERTUNGEN   │
                    ├──────────────────┤
                    │ Charts (20+) ⚡  │
                    │ KI-Analysen      │
                    │ Korrelationen ⚡ │
                    │ Scores ⚡        │
                    └──────────────────┘

⚡ = Berechnete/angereicherte Daten
```

---

## 1. Nutzer & Zielsetzung

### 1.1 Profil

**Fachliche Bedeutung:** Zentrale Nutzer-Entität mit persönlichen Daten, Auth und Zielsetzung

**Gespeicherte Daten:**
- **Stammdaten:** Name, Geschlecht, Geburtsdatum, Größe
- **Auth:** E-Mail, Passwort (bcrypt), Role (user/admin)
- **Membership:** Tier (free/premium/...), Trial-Ende
- **Goal Mode:** Strategische Ausrichtung (weight_loss, strength, endurance, recomposition, health)
- **Einstellungen:** Avatar-Farbe, Foto-ID, KI-Features

**Berechnete Werte:**
- Alter (aus Geburtsdatum)
- BMI (aus aktuellem Gewicht + Größe)
- Trial-Status (Tage verbleibend)
- TDEE (geschätzt, Harris-Benedict oder Profil-basiert)

**Beziehungen:**
- 1:N → Alle Tracking-Objekte (Gewicht, Aktivitäten, etc.)
- 1:1 → Goal Mode (aktuell)
- 1:N → Ziele (konkret)
- 1:N → Focus Area Weights (Prioritäten)
- 1:N → Sessions, Access Grants, Feature Usage

**Datenquellen:**
- Manuelle Eingabe (Registrierung, Settings)
- System-generiert (Trial-Start, Tier-Zuweisung)

---

### 1.2 Goal Mode (Strategic Layer)

**Fachliche Bedeutung:** Strategische Ausrichtung die KI-Analysen und Score-Gewichtung steuert

**Verfügbare Modi:**
- **Weight Loss:** Gewichtsreduktion, Kaloriendefizit
- **Strength:** Kraftaufbau, Muskelwachstum
- **Endurance:** Ausdauer, kardiovaskuläre Fitness
- **Recomposition:** Simultaner Fettabbau + Muskelaufbau
- **Health:** Gesundheit, Vitalwerte-Optimierung

**Auswirkungen:**
- Bestimmt Score-Gewichtung in KI-Analysen
- Beeinflusst automatische Trainingsphasen-Erkennung
- Steuert Empfehlungs-Algorithmen

**Beziehungen:**
- N:1 → Profil (ein aktiver Mode pro Nutzer)
- Beeinflusst: Focus Areas, Ziel-Priorisierung, KI-Prompts

---

### 1.3 Ziele (Tactical Layer)

**Fachliche Bedeutung:** Konkrete, messbare Ziele mit Fortschritts-Tracking

**Ziel-Typen:**
- **Body Composition:** weight, body_fat, lean_mass
- **Fitness:** vo2max, strength (1RM), flexibility
- **Health:** blood_pressure, resting_heart_rate
- **Custom:** Beliebige nutzerdefinierte Ziele

**Gespeicherte Daten:**
- Ziel-Typ, Start-Wert, Start-Datum
- Ziel-Wert, Ziel-Datum (optional)
- Beschreibung, Primär/Sekundär-Flag
- Focus Area Contributions (M:N, gewichtet)

**Berechnete Werte:**
- **Aktueller Wert:** Automatisch aus Datenquellen (weight_log, vitals, etc.)
- **Progress (%):** (Aktuell - Start) / (Ziel - Start) × 100
- **Linear Projection:** Fortschritts-Hochrechnung auf Ziel-Datum
- **Time-Based Tracking:**
  - Expected Progress = (elapsed_days / total_days) × 100
  - Deviation = actual_progress - expected_progress
  - Status: "behind schedule", "on track", "ahead of schedule"

**Beziehungen:**
- N:1 → Profil
- N:M → Focus Areas (via goal_focus_contributions)
- 1:N → Custom Goal Entries (tägliche Werterfassung)

**Datenquellen:**
- Manuelle Definition (Goals Page)
- Auto-Population: Start-Wert/-Datum aus historischen Messungen
- Fortschritt: Automatisch aus body metrics, vitals, fitness tests

---

### 1.4 Focus Areas (Dynamic)

**Fachliche Bedeutung:** Flexibles System zur Priorisierung von Lebensbereichen

**26 Basis-Bereiche in 7 Kategorien:**
- **Körperkomposition (5):** Gewicht, Körperfett, Magermasse, Umfänge, Ästhetik
- **Kraft (4):** Maximalkraft, Kraftausdauer, funktionelle Kraft, Core-Stabilität
- **Ausdauer (4):** Kardio, muskuläre Ausdauer, VO2 Max, Erholungsfähigkeit
- **Mobilität (2):** Flexibilität, Beweglichkeit
- **Gesundheit (5):** Blutdruck, Ruhepuls, HRV, Schlafqualität, Vitalwerte
- **Leistungsfähigkeit (3):** Energie-Level, Belastbarkeit, Reaktionsvermögen
- **Lifestyle (3):** Ernährungsqualität, Konsistenz, Balance

**Gespeicherte Daten:**
- **Definitions:** Name, Beschreibung, Kategorie, Icon (admin-erweiterbar)
- **User Weights:** Prozentuale Gewichtung pro Nutzer (dynamisch, summiert zu 100%)
- **Goal Contributions:** M:N Verknüpfung mit Gewichtung (ein Ziel zahlt auf 1-n Areas ein)

**Berechnete Werte:**
- **Progress per Focus Area:** Gewichtete Summe aller zugeordneten Ziele
- **Category Scores:** Aggregierte Fortschritte pro Kategorie

**Beziehungen:**
- N:M → Ziele (via goal_focus_contributions)
- N:1 → User Weights (Profil-spezifisch)
- 1:N → Definitions (admin-verwaltet)

**Datenquellen:**
- Definitions: Admin-UI (erweiterbar)
- Weights: Goals Page Edit-Modus
- Contributions: Ziel-Formular (Multi-Select mit Gewichtung)

---

### 1.5 Training Phases

**Fachliche Bedeutung:** Automatisch erkannte oder manuell definierte Trainingszyklen

**Phase-Typen:**
- **Calorie Deficit:** Diät-Phase (Weight Loss)
- **Calorie Surplus:** Aufbau-Phase (Strength/Muscle)
- **Deload:** Regenerations-Woche
- **Maintenance:** Status-Quo-Erhaltung
- **Periodization:** Zyklische Periodisierung

**Gespeicherte Daten:**
- Typ, Start-/End-Datum, Status (suggested/accepted/active/completed)
- Confidence Score (bei KI-Erkennung)
- Beschreibung, Notizen

**Status-Flow:**
```
suggested → (User-Approval) → accepted → (Start-Datum erreicht) → active → (End-Datum) → completed
```

**Beziehungen:**
- N:1 → Profil
- Beeinflusst: KI-Analysen, Empfehlungen, Score-Berechnung

**Datenquellen:**
- Automatische Erkennung (KI-basiert, Phase 0b+)
- Manuelle Definition (Goals Page, geplant)

---

### 1.6 Fitness Tests

**Fachliche Bedeutung:** Standardisierte Tests zur objektiven Leistungserfassung

**Test-Typen:**
- **Cardio:** Cooper-Test (12 min Lauf), VO2 Max Test, Step Test
- **Kraft:** 1RM Squat, 1RM Bench Press, Pushups (max), Plank (Zeit)
- **Flexibilität:** Sit-and-Reach

**Gespeicherte Daten:**
- Test-Typ, Datum, Ergebnis (Zeit/Distanz/Gewicht/Wiederholungen)
- Normwert-Klassifizierung (sehr gut, gut, durchschnittlich, unterdurchschnittlich)

**Berechnete Werte:**
- VO2 Max (aus Cooper-Test)
- Relative Kraft (1RM / Körpergewicht)
- Vergleich zu Normwerten (alters-/geschlechtsspezifisch)

**Beziehungen:**
- N:1 → Profil
- Kann verknüpft werden mit: Zielen (vo2max, strength)

**Datenquellen:**
- Manuelle Eingabe (Fitness Tests Page, geplant)

---

## 2. Körper-Tracking

### 2.1 Gewicht

**Fachliche Bedeutung:** Tägliche Gewichtsmessungen als Basis-Metrik

**Gespeicherte Daten:**
- Datum, Gewicht (kg), Quelle (manual/apple_health/withings)

**Berechnete Werte:**
- **BMI:** Gewicht / (Größe in m)²
- **Trends:** 7d/28d/90d Steigung (lineare Regression)
- **Prognose:** Extrapolation auf Ziel-Datum
- **Ziel-Fortschritt:** % zum Zielgewicht
- **Gewichtsänderung:** Δ 7d/28d/90d

**Beziehungen:**
- N:1 → Profil
- Korreliert mit: Ernährung (Energie-Bilanz), Aktivität, Schlaf
- Verknüpft mit: Ziel-Typ "weight"

**Datenquellen:**
- Manuelle Eingabe (Dashboard, Weight Page)
- CSV-Import (Apple Health, Withings)

---

### 2.2 Umfänge

**Fachliche Bedeutung:** 8 Körperumfangspunkte zur Tracking von Muskelaufbau/Fettabbau

**Messpunkte:**
- Brust (c_chest), Bauch (c_waist), Hüfte (c_hip)
- Oberschenkel links/rechts (c_thigh_l/r)
- Wade links/rechts (c_calf_l/r)
- Oberarm (c_arm)

**Gespeicherte Daten:**
- Datum, 8 Messpunkte (cm), Quelle (manual)

**Berechnete Werte:**
- **Trends:** 7d/28d/90d pro Messpunkt
- **Delta:** Veränderung zu letzter Messung, zu Ausgangswert
- **Best-of-Each:** Beste Messung pro Punkt mit Altersangabe

**Beziehungen:**
- N:1 → Profil
- Korreliert mit: Gewicht, Körperfett, Training (Hypertrophie)

**Datenquellen:**
- Manuelle Eingabe (Circumference Page)

---

### 2.3 Caliper (Hautfaltenmessung)

**Fachliche Bedeutung:** Körperfettanteil via Hautfaltenmessung

**7 Messpunkte:**
- Brust, Axilla, Trizeps, Subscapular, Abdominal, Suprailiac, Oberschenkel

**Gespeicherte Daten:**
- Datum, 7 Hautfalten (mm), Methode (3/4/7-Site Jackson-Pollock)

**Berechnete Werte:**
- **Körperfettanteil (BF%):** Alters-/geschlechtsspezifische Formeln
- **Magermasse (LBM):** Gewicht × (1 - BF%)
- **Fettmasse (FM):** Gewicht × BF%
- **Trends:** LBM/FM Änderungen über Zeit

**Beziehungen:**
- N:1 → Profil
- Erfordert: Aktuelles Gewicht
- Verknüpft mit: Ziel-Typ "body_fat", "lean_mass"

**Datenquellen:**
- Manuelle Eingabe (Caliper Page)

---

### 2.4 Vitalwerte

**Fachliche Bedeutung:** Gesundheits- und Erholungs-Indikatoren

#### 2.4.1 Baseline Vitals (Morgenmessung)

**Gespeicherte Daten:**
- Datum (1x täglich, morgens)
- Ruhepuls (bpm), HRV (ms), VO2 Max (ml/kg/min)
- SpO2 (%), Atemfrequenz (bpm)

**Berechnete Werte:**
- **Baselines:** 7d/14d/30d Durchschnitte (RHR, HRV)
- **Abweichungen:** Aktuell vs. Baseline (%)
- **Recovery Score:** Basierend auf HRV/RHR/Schlaf
- **Trends:** 7d/28d Steigung

**Beziehungen:**
- N:1 → Profil
- Korreliert mit: Schlaf, Aktivität (Load), Ruhetage
- Verknüpft mit: Ziel-Typ "rhr", Recovery Score

**Datenquellen:**
- Manuelle Eingabe (Vitals Page - Baseline Tab)
- CSV-Import (Apple Health, Garmin)

#### 2.4.2 Blutdruck (mehrfach täglich)

**Gespeicherte Daten:**
- Datum + Uhrzeit (mehrfach möglich)
- Systolisch (mmHg), Diastolisch (mmHg), Puls (bpm)
- Context-Tag (nüchtern, nach Essen, Training, Stress, Medikation, Ruhe, Krank, Sonstiges)
- Unregelmäßiger Herzschlag (Flag), AFib-Warnung (Flag)

**Berechnete Werte:**
- **WHO/ISH Klassifizierung:**
  - Optimal (<120/80)
  - Normal (120-129/80-84)
  - Hochnormal (130-139/85-89)
  - Hypertonie Grad 1-3 (≥140/90)
- **Trends:** 7d/14d/30d Durchschnitte (Systolisch, Diastolisch)

**Beziehungen:**
- N:1 → Profil
- Korreliert mit: Stress, Aktivität, Medikation, Schlaf
- Verknüpft mit: Ziel-Typ "blood_pressure"

**Datenquellen:**
- Manuelle Eingabe (Vitals Page - Blutdruck Tab)
- CSV-Import (Omron Deutsch, Apple Health)

---

### 2.5 Progress-Fotos

**Fachliche Bedeutung:** Visuelle Fortschritts-Dokumentation

**Gespeicherte Daten:**
- Datum, Pose (front/side/back), Dateiname
- Caption (optional)

**Berechnete Werte:**
- Zeitlicher Vergleich (Side-by-Side View)

**Beziehungen:**
- N:1 → Profil
- Kann verknüpft werden mit: Gewicht, Umfängen (Kontext)

**Datenquellen:**
- Foto-Upload (Photos Page)

---

## 3. Training

### 3.1 Aktivitäten

**Fachliche Bedeutung:** Training-Sessions mit Typ, Dauer, Intensität

**Gespeicherte Daten:**
- Datum, Trainingstyp, Dauer (min), Distanz (km)
- Ø Herzfrequenz, Max Herzfrequenz
- Kalorien (geschätzt oder gemessen)
- Notizen, Quelle (manual/apple_health/garmin)

**Berechnete Werte:**
- **Training Volume:** Dauer × Intensität (aus HF-Zonen)
- **Quality Session:** Boolean (≥45min + HF in Zielzone)
- **ACWR (Acute:Chronic Workload Ratio):** 7d Load / 28d Load
- **Monotony:** Standardabweichung der Last (inversiert)
- **Strain:** Load × Monotony
- **Ability Balance:** Verteilung über 7 Fähigkeiten (Radar)

**Beziehungen:**
- N:1 → Profil
- N:1 → Trainingstyp (via activity_type_mappings)
- Korreliert mit: Vitalwerte (RHR, HRV), Schlaf, Ruhetage

**Datenquellen:**
- Manuelle Eingabe (Activity Page)
- CSV-Import (Apple Health Deutsch/English)
- Automatisches Mapping (lernendes System)

---

### 3.2 Trainingstypen

**Fachliche Bedeutung:** 29 kategorisierte Trainingstypen zur systematischen Erfassung

**7 Kategorien:**
- **Kraft (5):** Krafttraining, Bodyweight, Crossfit, Functional, Powerlifting
- **Cardio (6):** Laufen, Radfahren, Schwimmen, Rudern, HIIT, Wandern
- **Kampfsport (6):** Boxen, Kickboxen, MMA, Karate, Judo, Jiu-Jitsu
- **Beweglichkeit (4):** Yoga, Stretching, Mobility, Pilates
- **Sport (4):** Fußball, Basketball, Tennis, Bouldern
- **Alltag (2):** Gehen, Tanzen
- **Geist (2):** Meditation, Achtsamkeit

**Gespeicherte Daten:**
- Name, Kategorie, Farbe, Icon
- Fähigkeiten-Mapping (7 Dimensionen, JSONB)

**7 Fähigkeiten-Dimensionen:**
- Maximalkraft, Kraftausdauer, Cardio, Flexibilität, Koordination, Schnelligkeit, Mentale Stärke

**Berechnete Werte:**
- **Ability Balance:** Fähigkeiten-Verteilung über alle Trainings (28d)
- **Volume by Ability:** Trainingsvolumen pro Fähigkeit

**Beziehungen:**
- 1:N → Aktivitäten
- N:M → Activity Type Mappings (lernendes System)

**Datenquellen:**
- System-definiert (29 Basis-Typen)
- Admin-erweiterbar (Admin Panel)

---

### 3.3 Activity Type Mappings (Lernendes System)

**Fachliche Bedeutung:** Automatisches Mapping von Import-Daten zu Trainingstypen

**Gespeicherte Daten:**
- Import-Name (z.B. "Traditionelles Krafttraining", "Traditional Strength Training")
- Training Type ID, Sprache
- User-spezifisch (optional) oder global
- Confidence Score

**Lern-Mechanismus:**
- Bulk-Kategorisierung im Admin-Panel speichert Mappings
- Zukünftige Imports nutzen gelernte Mappings automatisch
- Coverage-Stats: % zugeordnet vs. unkategorisiert

**Beziehungen:**
- N:1 → Training Type
- N:1 → Profil (bei user-spezifischen Mappings)

**Datenquellen:**
- Bulk-Kategorisierung (Admin Panel)
- CSV-Import (lernt bei jeder Zuordnung)

---

## 4. Lifestyle

### 4.1 Ernährung

**Fachliche Bedeutung:** Tägliche Makronährstoff- und Kalorien-Erfassung

**Gespeicherte Daten:**
- Datum, Kalorien (kcal)
- Protein (g), Kohlenhydrate (g), Fett (g)
- Quelle (manual/myfitnesspal/yazio)

**Berechnete Werte:**
- **Makro-Verteilung:** Protein/Carbs/Fat in % (28d Durchschnitt)
- **Protein-Adequacy:** Ist vs. Soll (1.6-2.2 g/kg LBM)
- **Energie-Bilanz:** Intake - (TDEE + Training kcal)
- **Konsistenz-Score:** Standardabweichung (inversiert)
- **Intake Volatility:** Schwankungen über Zeit

**Beziehungen:**
- N:1 → Profil
- Korreliert mit: Gewicht (Energie-Bilanz), Training, Ziele

**Datenquellen:**
- Manuelle Eingabe (Nutrition Page)
- CSV-Import (MyFitnessPal, Yazio)

---

### 4.2 Schlaf

**Fachliche Bedeutung:** Nächtliche Schlaferfassung mit Phasen-Details

**Gespeicherte Daten:**
- Datum (Nacht vom X auf Y)
- Gesamtdauer (h), Qualität (1-10)
- Sleep Segments (JSONB): Start, Ende, Phase (deep/rem/light/awake)

**Berechnete Werte:**
- **Schlaf-Statistiken:**
  - Ø Dauer (7d/28d)
  - Ø Qualität (Deep + REM %, 7d)
  - Schlafschuld (kumulativ): Σ(7.5h - Ist-Dauer)
- **Sleep Score:** Basierend auf Dauer + Deep/REM %

**Beziehungen:**
- N:1 → Profil
- Korreliert mit: Vitalwerte (RHR, HRV), Aktivität (Load), Recovery Score

**Datenquellen:**
- Manuelle Eingabe (Sleep Page)
- CSV-Import (Apple Health Deutsch/English)

---

### 4.3 Ruhetage

**Fachliche Bedeutung:** Multi-dimensionale Regenerations-Tracking

**3 Ruhe-Typen:**
- **Kraft-Ruhe:** Keine Kraft-/Muskeltraining
- **Cardio-Ruhe:** Keine intensive Ausdauer-Einheiten
- **Entspannung:** Aktive Erholung (Mobility, Spazieren)

**Gespeicherte Daten:**
- Datum, Ruhe-Typ (kann mehrfach kombiniert werden)
- Notizen

**Berechnete Werte:**
- **Rest Days Count:** Anzahl pro Typ (28d)
- **Recovery Ratio:** Rest Days / Training Days
- **Validierung:** Warnung bei geplanter Aktivität trotz Ruhetag

**Beziehungen:**
- N:1 → Profil
- Kann kollidieren mit: Aktivitäten (Validierung)

**Datenquellen:**
- Manuelle Eingabe (Rest Days Page - Quick Mode/Custom)

---

### 4.4 Custom Goals (Eigene Ziele)

**Fachliche Bedeutung:** Tägliche Werterfassung für individuell definierte Ziele

**Gespeicherte Daten:**
- Datum, Goal ID, Wert (Zahl oder Text)
- Notizen

**Berechnete Werte:**
- **Fortschritt:** Automatisch aus Einträgen berechnet
- **Konsistenz:** % Tage mit Eintrag
- **Verlauf:** Letzte 5 Einträge

**Beziehungen:**
- N:1 → Goal (source_table = NULL, custom goal)
- N:1 → Profil

**Datenquellen:**
- Manuelle Eingabe (Custom Goals Page - Capture Hub)

---

## 5. Auswertungen & KI

### 5.1 Charts & Visualisierungen

**Fachliche Bedeutung:** 20+ vorgefertigte Auswertungs-Charts

**Chart-Kategorien:**

#### Ernährung (E1-E5, 4 Charts)
- **E1: Energiebilanz:** Kalorien-Timeline vs. TDEE, Bilanz als Balken
- **E2: Makro-Verteilung:** Protein/Carbs/Fat (Pie Chart)
- **E3: Protein-Adequacy:** Protein vs. Ziel-Range (Timeline)
- **E4: Ernährungs-Konsistenz:** Konsistenz-Score (Bar)

#### Aktivität (A1-A8, 7 Charts)
- **A1: Trainingsvolumen:** Wöchentliches Volumen (Bar)
- **A2: Trainingstyp-Verteilung:** Typen (Pie)
- **A3: Quality Sessions:** Rate qualitativ hochwertiger Trainings (Bar)
- **A4: Load Monitoring:** Acute/Chronic Load + ACWR (Line)
- **A5: Monotony & Strain:** Monotonie + Strain (Bar)
- **A6: Ability Balance:** Fähigkeiten-Verteilung (Radar)
- **A7: Volume by Ability:** Volumen pro Fähigkeit (Bar)

#### Erholung (R1-R5, 5 Charts)
- **R1: Recovery Score:** Recovery-Timeline (Line)
- **R2: HRV/RHR Baseline:** HRV & RHR vs. Baseline (Multi-Line)
- **R3: Schlaf Dauer + Qualität:** Dauer + Deep/REM % (Multi-Line)
- **R4: Schlafschuld:** Kumulative Schuld (Line)
- **R5: Vital Signs Matrix:** Aktuelle Vitalwerte (Bar)

#### Korrelationen (C1-C4, 4 Charts)
- **C1: Gewicht ↔ Energie:** Scatter mit Lag-Korrelation
- **C2: Magermasse ↔ Protein:** Scatter mit Lag-Korrelation
- **C3: Load ↔ Vitalwerte:** Training Load vs. HRV/RHR (Scatter)
- **C4: Recovery ↔ Performance:** Top Treiber (Bar)

**Berechnete Werte:**
- Alle Chart-Daten kommen aus **Data Layer** (Single Source of Truth)
- Confidence Scores (Datenqualität)
- Metadata (Durchschnitte, Korrelationen, etc.)

**Beziehungen:**
- Konsumieren: Alle Tracking-Objekte
- Nutzen: Data Layer Funktionen (97 Funktionen in 6 Modulen)

**Datenquellen:**
- Chart Endpoints (20 neue APIs)
- Data Layer: body_metrics, nutrition_metrics, activity_metrics, recovery_metrics, scores, correlations

---

### 5.2 Data Layer (Phase 0c)

**Fachliche Bedeutung:** Zentrale Berechnungs-Schicht (Single Source of Truth)

**6 Module, 97 Funktionen:**

#### body_metrics.py (20 Funktionen)
- Weight trends, goal projections
- Body composition: FM/LBM changes, recomposition quadrants
- Circumferences: Delta-Berechnungen, Fortschritts-Scores

#### nutrition_metrics.py (16 Funktionen)
- Energy balance, protein adequacy, macro consistency
- Intake volatility, nutrition scoring

#### activity_metrics.py (20 Funktionen)
- Training volume, quality sessions, load monitoring
- Monotony/Strain scores, ability balance

#### recovery_metrics.py (16 Funktionen)
- Sleep metrics, HRV/RHR baselines, recovery scoring

#### scores.py (14 Funktionen)
- Focus weights, goal progress, category scores

#### correlations.py (11 Funktionen)
- Lag correlations, plateau detection, top drivers

**Architektur-Prinzip:**
- Alle Berechnungen in Data Layer (keine Duplikation)
- Nutzbar für: Chart Endpoints + KI-Platzhalter
- Flexible Zeitfenster (7-365 Tage)
- Confidence System (Datenqualität-Prüfung)

**Beziehungen:**
- Konsumieren: Alle Tracking-Tabellen
- Genutzt von: Chart Endpoints, KI-Platzhalter, Frontend-Statistiken

---

### 5.3 KI-Analysen

**Fachliche Bedeutung:** Multi-Stage Pipeline-basierte KI-Auswertungen

**Unified Prompt System:**
- **Basis-Prompts:** Wiederverwendbare Templates (z.B. "Body Analysis")
- **Pipeline-Prompts:** Multi-Stage Workflows (z.B. "Complete Insight")
- **Stages:** Unbegrenzte Anzahl, parallele Ausführung möglich
- **Platzhalter:** 32+ dynamische Platzhalter ({{weight_current}}, {{goal_weight}}, etc.)

**Gespeicherte Daten:**
- Prompt-Typ (base/pipeline), Stages-Config (JSONB)
- Output-Format (text/json), Output-Schema (optional)
- AI-Response, Metadata (genutzte Platzhalter mit Werten)

**Berechnete Werte:**
- **Stage-Outputs:** JSON-Extraktion aus Basis-Prompts
- **Cross-Stage References:** {{stage_N_key}} Platzhalter
- **Expert Mode:** Vollständige Werte-Tabelle (nicht gekürzt)

**Beziehungen:**
- N:1 → Profil
- Nutzt: Data Layer, alle Tracking-Objekte
- Konsumiert: Platzhalter-Resolver (32 Funktionen)

**Datenquellen:**
- KI-Prompt-Editor (Admin Panel)
- Automatische Ausführung (Analysis Page)
- Test-Modus mit Debug-Info

---

### 5.4 Korrelationen & Scores

**Fachliche Bedeutung:** Automatische Muster-Erkennung und Fortschritts-Scores

**Korrelations-Typen:**
- **Lag-Korrelationen:** Energie-Bilanz → Gewichtsänderung (3d/7d/14d)
- **Activity ↔ Recovery:** Training Load → HRV/RHR
- **Nutrition ↔ Body Composition:** Protein → Magermasse
- **Sleep ↔ Performance:** Schlafqualität → Trainingsleistung

**Score-Typen:**
- **Body Composition Score:** Fortschritt zu Körper-Zielen
- **Nutrition Score:** Makro-Adherence + Konsistenz
- **Activity Score:** Volumen + Qualität + Balance
- **Recovery Score:** Schlaf + HRV/RHR + Rest Days
- **Focus Area Scores:** Gewichtete Ziel-Fortschritte

**Berechnete Werte:**
- **Pearson Correlation:** r-Wert + p-value
- **Plateau Detection:** Stagnation-Erkennung (21d ohne Fortschritt)
- **Top Drivers:** Rangliste der Einflussfaktoren
- **Confidence Scores:** Datenqualität (Anzahl Data Points)

**Beziehungen:**
- Konsumieren: Alle Tracking-Objekte
- Nutzen: Data Layer (correlations.py, scores.py)

**Datenquellen:**
- Automatische Berechnung (täglich/wöchentlich)
- Abrufbar via Chart Endpoints

---

## 6. Membership & Access Control

### 6.1 Membership Tiers

**Fachliche Bedeutung:** Stufen-basiertes Feature-Access-System

**Tiers:**
- **Free:** Basis-Features (Gewicht, Ernährung, 10 KI-Calls/Tag)
- **Premium:** Alle Features, unbegrenzte KI-Calls
- **Trial:** 14-Tage Premium-Test

**Gespeicherte Daten:**
- Tier, Trial-Start/-Ende
- Stripe Customer ID, Subscription ID (für spätere Payment-Integration)

**Berechnete Werte:**
- Trial-Status (aktiv/abgelaufen, Tage verbleibend)
- Feature-Zugriff (basierend auf Tier + Access Grants)

**Beziehungen:**
- 1:1 → Profil
- 1:N → Access Grants (individuelle Freischaltungen)
- Steuert: Feature Usage Tracking

---

### 6.2 Features & Limits

**11 Feature-Kategorien:**
- weight_entries, circumference_entries, caliper_entries
- activity_entries, nutrition_entries, photos
- ai_calls, ai_pipeline, data_export, data_import
- advanced_charts (geplant)

**Tier Limits:**
- Free: 1000 Einträge/Monat, 10 KI-Calls/Tag, 50 Fotos
- Premium: Unbegrenzt

**Feature Usage Tracking:**
- Tägliche/Monatliche Zähler pro Feature
- JSON-Logs (feature-usage.log)
- Reset: Täglich (ai_calls) oder monatlich (Einträge)

**Beziehungen:**
- N:1 → Profil
- Enforcement: HTTP 403 bei Limit-Überschreitung

---

### 6.3 Access Grants

**Fachliche Bedeutung:** Individuelle Feature-Freischaltungen (außerhalb des Tiers)

**Gespeicherte Daten:**
- Feature-Name, Granted-By (Admin-Profil)
- Grant-Date, Expiry-Date (optional)
- Grund/Notizen

**Anwendungsfälle:**
- Beta-Tester (früher Zugriff auf neue Features)
- Kompensation (nach Downtime)
- Partner/Freunde (kostenlose Premium-Features)

**Beziehungen:**
- N:1 → Profil
- Überschreibt: Tier-Limits für spezifisches Feature

---

## 7. Datenfluss & Anreicherung

```
┌────────────────────────────────────────────────────────────────┐
│                        DATENQUELLEN                             │
├────────────────────────────────────────────────────────────────┤
│ Manuelle Eingabe │ CSV-Import │ API-Sync (geplant)             │
└────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌────────────────────────────────────────────────────────────────┐
│                    SPEICHERUNG (PostgreSQL)                     │
├────────────────────────────────────────────────────────────────┤
│ Raw Data: weight_log, activity_log, nutrition_log, etc.       │
│ Source-Tracking: manual/import (Reimport-Schutz)              │
│ Profile-Isolation: profile_id auf allen Tabellen              │
└────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌────────────────────────────────────────────────────────────────┐
│                  DATA LAYER (Berechnungen)                      │
├────────────────────────────────────────────────────────────────┤
│ 97 Funktionen in 6 Modulen:                                   │
│ • body_metrics: Trends, Projections, Body Composition         │
│ • nutrition_metrics: Energy Balance, Macro Consistency        │
│ • activity_metrics: Volume, Load, Quality, Abilities          │
│ • recovery_metrics: Sleep, HRV/RHR, Recovery Score            │
│ • scores: Focus Scores, Goal Progress, Category Scores        │
│ • correlations: Lag-Korrelationen, Plateau Detection          │
└────────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        ▼                     ▼                     ▼
┌──────────────┐    ┌──────────────┐      ┌──────────────┐
│   CHARTS     │    │  KI-ANALYSEN │      │  FRONTEND    │
├──────────────┤    ├──────────────┤      ├──────────────┤
│ 20 Endpoints │    │ 32 Platzh.   │      │ Statistiken  │
│ Chart.js     │    │ Multi-Stage  │      │ Dashboards   │
│ Format       │    │ Pipelines    │      │ Progress     │
└──────────────┘    └──────────────┘      └──────────────┘
```

---

## 8. Daten-Qualität & Confidence

### Confidence Scoring

**Fachliche Bedeutung:** Automatische Bewertung der Datenqualität

**Kriterien:**
- **Anzahl Datenpunkte:** Mehr Daten = höhere Confidence
- **Zeitspanne:** Längere Historie = zuverlässigere Trends
- **Konsistenz:** Regelmäßige Erfassung (keine Lücken)
- **Vollständigkeit:** Alle relevanten Felder ausgefüllt

**Confidence Levels:**
```
0-29 Tage:    LOW (zu wenig Daten)
30-89 Tage:   MEDIUM (ausreichend)
90+ Tage:     HIGH (zuverlässig)
```

**Anwendungen:**
- Chart Metadata (Datenqualität anzeigen)
- KI-Analysen (Confidence-basierte Empfehlungen)
- Automatische Warnungen (bei zu wenig Daten)

**Beziehungen:**
- Berechnet von: Data Layer Funktionen
- Genutzt von: Chart Endpoints, KI-Platzhalter

---

## 9. Import & Export

### 9.1 CSV-Import

**Unterstützte Formate:**
- **Gewicht:** Apple Health (Deutsch/Englisch), Withings
- **Ernährung:** MyFitnessPal, Yazio
- **Aktivität:** Apple Health (Deutsch/Englisch)
- **Schlaf:** Apple Health (Deutsch/Englisch)
- **Vitalwerte:** Apple Health (Deutsch/Englisch), Omron (Deutsch)

**Import-Logik:**
- **Duplikat-Erkennung:** Nach (profile_id, date) oder (profile_id, date, start_time)
- **Reimport-Schutz:** Manuelle Einträge (source='manual') NIEMALS überschreiben
- **Auto-Mapping:** Activity Types via lernendes Mapping-System
- **Error-Handling:** Erste 10 Fehler im Frontend angezeigt

**Beziehungen:**
- Nutzt: activity_type_mappings (lernendes System)
- Speichert: source-Feld für Reimport-Tracking

---

### 9.2 Export

**Formate:**
- **CSV:** Pro Datentyp (weight.csv, activity.csv, etc.)
- **JSON:** Vollständiger Export (alle Daten, strukturiert)
- **ZIP:** Kombinierter Export (alle CSVs + JSON + Metadaten)

**Umfang:**
- Alle Tracking-Daten (Gewicht, Ernährung, Aktivität, Schlaf, Vitalwerte)
- Ziele, Focus Areas, Training Phases
- KI-Analysen (Insights)
- Membership-Daten (für Backup)

**Beziehungen:**
- Nutzt: Alle Tabellen (außer Auth-sensible Daten)
- Feature-Limit: 5 Exports/Monat (Free), unbegrenzt (Premium)

---

## 10. Fachliche Regeln & Constraints

### 10.1 Datenvalidierung

**Gewicht:**
- 30 kg ≤ Gewicht ≤ 300 kg
- Max 1 Eintrag pro Tag (Upsert bei Duplikat)

**Körperfett:**
- 3% ≤ BF% ≤ 60%
- Plausibilitäts-Check: LBM nicht höher als Gewicht

**Vitalwerte:**
- Ruhepuls: 30-200 bpm
- HRV: 10-300 ms
- Blutdruck: Systolisch 60-260 mmHg, Diastolisch 40-150 mmHg

**Ernährung:**
- Kalorien: 500-10000 kcal
- Protein/Carbs/Fat: 0-1000 g

**Aktivität:**
- Dauer: 1-1440 min (24h)
- Herzfrequenz: 40-220 bpm

---

### 10.2 Abhängigkeiten & Voraussetzungen

**Caliper → Gewicht:**
- Körperfettberechnung erfordert aktuelles Gewicht (±3 Tage)
- Wenn kein Gewicht: Warnung im Frontend

**Ziele → Datenquellen:**
- Ziel-Typ "weight" erfordert weight_log Einträge
- Ziel-Typ "vo2max" erfordert vitals_baseline Einträge
- Custom Goals: Keine Datenquelle (manuelle Erfassung)

**KI-Analysen → Mindestdaten:**
- Mindestens 7 Tage Daten für Trends
- Mindestens 30 Tage für Korrelationen
- Confidence-Warnung bei <30 Tagen

---

### 10.3 Zeitliche Constraints

**Reimport-Schutz:**
- Manuelle Einträge (source='manual') haben IMMER Vorrang
- Imports überschreiben nur source != 'manual'

**Automatische Bereinigung:**
- Sessions: Ablauf nach 7 Tagen (rolling refresh)
- Feature Usage: Reset täglich (KI) oder monatlich (Einträge)

**Historische Daten:**
- Keine Löschung (nur Soft-Delete geplant)
- Unbegrenzte Speicherung (außer bei GDPR-Request)

---

## 11. Erweiterbarkeit

### Admin-erweiterbare Elemente

**Training Types:**
- Admin kann neue Typen hinzufügen (Name, Kategorie, Icon, Fähigkeiten)
- Automatisch verfügbar für alle Nutzer

**Focus Areas:**
- Admin kann neue Bereiche definieren (Name, Beschreibung, Kategorie)
- User können eigene Gewichtung setzen

**KI-Prompts:**
- Admin kann neue Prompts/Pipelines erstellen
- Unbegrenzte Stages möglich
- Basis-Prompts wiederverwendbar

**Activity Mappings:**
- System lernt automatisch bei Bulk-Kategorisierung
- Admin kann Mappings inline editieren

### User-erweiterbare Elemente

**Custom Goals:**
- User kann beliebige Ziele definieren (Name, Typ, Einheit)
- Tägliche Werterfassung (Capture Page)

**Focus Area Weights:**
- User kann eigene Prioritäten setzen (Schieberegler)
- Dynamische Anpassung (jederzeit änderbar)

**Training Phases:**
- User kann manuelle Phasen definieren (geplant)
- Akzeptieren/Ablehnen von KI-Vorschlägen

---

## Zusammenfassung: Daten-Architektur im Überblick

**Datenobjekte (gespeichert):**
- 1 Profil → N (Gewicht, Umfänge, Caliper, Vitalwerte, Fotos)
- 1 Profil → N (Aktivitäten, Ernährung, Schlaf, Ruhetage)
- 1 Profil → 1 Goal Mode → N Ziele → N Custom Goal Entries
- 1 Profil → N Focus Area Weights → N Goal Focus Contributions
- 1 Profil → N Training Phases, Fitness Tests, KI-Analysen

**Berechnete Werte (Data Layer):**
- 97 Funktionen in 6 Modulen
- Body, Nutrition, Activity, Recovery, Scores, Correlations
- Single Source of Truth für Charts + KI

**Visualisierungen:**
- 20+ Chart Endpoints (E1-E5, A1-A8, R1-R5, C1-C4)
- Chart.js Format, Confidence Scores, Metadata

**KI-Integration:**
- 32+ Platzhalter, Multi-Stage Pipelines, JSON-Output
- Expert Mode (vollständige Werte-Tabelle)

**Access Control:**
- Membership Tiers (Free, Premium, Trial)
- Feature Limits, Usage Tracking, Access Grants

**Import/Export:**
- CSV-Import (Apple Health, Garmin, Omron, etc.)
- Lernendes Mapping-System (Activity Types)
- CSV/JSON/ZIP Export

---

**Stand:** Phase 0c Complete (Multi-Layer Architecture)
**Nächste Phase:** Phase 0d (Frontend Chart Integration)
**Version:** v0.9h → v0.9i (geplant)
