- .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
35 KiB
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)