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