mitai-jinkendo/.claude/docs/functional/DATA_ARCHITECTURE.md
Lars 7940dc7560 docs: Struktur .claude/docs versionieren, working/, Gitea-Index, Regeln
- .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
2026-04-08 13:01:49 +02:00

35 KiB
Raw Blame History

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)