# Konzept – Diagramme, Scores und regelbasierte Auswertungen für Mitai Jinkendo **Stand:** 24.03.2026 **Ziel:** Fachlich belastbares Konzept für Diagramme, Kennzahlen, Scores, Warnungen und regelbasierte Empfehlungen **ohne KI**, aber so strukturiert, dass ein Coding Agent es direkt umsetzen kann. **Basis:** Analyse des hochgeladenen Datenmodells `DATA_ARCHITECTURE.md` (Gewicht, Umfänge, Caliper, Aktivitäten, Vitalwerte, Blutdruck, Schlaf, Ernährung, geplante Recovery-/Korrelations-Logik). --- ## 1. Zielbild Das System soll vor einer späteren KI-Stufe bereits drei Ebenen sauber abdecken: 1. **Deskriptiv:** Was ist passiert? - Zeitreihen, Verteilungen, Trends, Volumina, Zielabweichungen 2. **Diagnostisch:** Was hängt wahrscheinlich zusammen? - Lag-basierte Zusammenhänge, Baseline-Abweichungen, Muster, Plateaus, Wechselwirkungen 3. **Präskriptiv (regelbasiert, nicht KI):** Was ist als nächste Handlung naheliegend? - konkrete, nachvollziehbare Hinweise mit Trigger-Logik und Vertrauensstufe Wichtig ist, dass das System **zielabhängig** interpretiert: - Gewichtsreduktion - Muskel-/Kraftaufbau - Konditions-/Ausdaueraufbau - Körperrekomposition - allgemeine Gesundheit - Mischziele Dasselbe Rohsignal kann je nach Ziel anders bewertet werden. Ein Kaloriendefizit ist z. B. bei Gewichtsreduktion oft positiv, bei Kraftaufbau aber potenziell hinderlich. --- ## 2. Fachliche Bewertung des aktuellen Datenmodells ## 2.1 Stärken des vorhandenen Modells Das vorhandene Modell ist bereits ungewöhnlich stark, weil es mehrere Domänen zusammenführt: - **Körper:** Gewicht, Umfänge, Caliper, BF%, LBM, FM - **Aktivität:** Trainingstypen, Qualität, Dauer, HR, Kalorien, Fähigkeiten-Beitrag - **Recovery / Gesundheit:** RHR, HRV, VO2max, SpO2, Atemfrequenz, Blutdruck - **Lifestyle:** Schlafdauer, Schlafsegmente, Ernährung, Ruhetage - **Korrelationen / spätere KI:** bereits als Richtung angelegt Dadurch sind nicht nur Einzelcharts möglich, sondern **wirkliche Mehrfaktorauswertungen**. Das ist ein zentraler Vorteil des Modells. ## 2.2 Fachliche Schwächen / Risiken im aktuellen Konzept ### A. Recovery Score aktuell zu grob Die aktuell vorgesehene Recovery-Logik (HRV vs. 7-Tage-Mittel, RHR invertiert, Schlafqualität) ist als Startpunkt brauchbar, aber fachlich zu fragil für harte Entscheidungen. Probleme: - HRV ist stark mess- und tagesformabhängig. - Ein bloßer Quotient gegen den 7-Tage-Mittelwert ist ausreißeranfällig. - Es fehlt eine **Messqualitätslogik**. - Es fehlt eine **individuelle Normalzone** statt reinem Durchschnitt. - Es fehlt eine **Kontextlogik** für Schlafschuld, Vorbelastung und Messlücken. ### B. Trainingsqualität darf nicht HR-zentriert sein Die vorhandene `quality_label`-Logik ist für Cardio sinnvoll, aber nicht für alle Trainingstypen. Krafttraining, Mobility, Meditation oder Techniktraining dürfen nicht primär an Avg-HR/Max-HR gemessen werden. ### C. BMI nur als Nebenindikator BMI kann angezeigt werden, sollte aber im System **nicht dominant** interpretiert werden, wenn bereits BF%, LBM und Umfänge vorliegen. ### D. Korrelationen nicht als simples Pearson auf Rohzeitreihen Reine Pearson-Korrelationen auf gleitenden Alltagsdaten können bei Trends, Saisonmustern und Lags irreführend sein. Für Trainings- und Ernährungsdaten sind **Verzögerungen (lags)**, Detrending und Mindeststichproben deutlich robuster. ### E. Zielbezug fehlt noch als Steuerungszentrum Fachlich entscheidend ist ein expliziter `goal_mode`, der Score-Gewichtung, Diagramm-Priorisierung und Textbewertung steuert. --- ## 3. Zwingende Analyse-Prinzipien für alle Diagramme und Scores Diese Regeln sollten global gelten. ## 3.1 Analysefenster Für fast alle Kennzahlen sollten parallel drei Ebenen geführt werden: - **kurzfristig:** 7 Tage - **mittelfristig:** 28 Tage - **langfristig:** 90 Tage Empfehlung: - 7 Tage = Tagesform / Reaktion - 28 Tage = Verhalten / Adhärenz - 90 Tage = echte Entwicklung ## 3.2 Mindestdatenmenge / Confidence Jede Auswertung bekommt eine **Confidence-Klasse**: - **hoch** = ausreichend Daten, wenig Lücken, mehrere Messpunkte - **mittel** = brauchbar, aber eingeschränkt - **niedrig** = nur orientierend - **nicht auswertbar** = Datenbasis zu klein Default-Regeln: - 7d-Auswertung nur ab **mind. 4 gültigen Tagen** - 28d-Auswertung nur ab **mind. 18 gültigen Tagen** - 90d-Auswertung nur ab **mind. 60 gültigen Tagen** - Korrelationen nur ab **mind. 21 gepaarten Tageswerten** - lag-basierte Korrelationen nur ab **mind. 28 gepaarten Tagen** ## 3.3 Ausreißerbehandlung Für Gewicht, HRV, RHR, Blutdruck, Schlaf und Ernährung sollten extreme Einzelwerte nicht direkt in Scores laufen. Empfehlung: - primär **Rolling Median** oder **EWMA** für Trenddarstellung - Ausreißererkennung per **Hampel Filter** oder Winsorizing - Rohwert bleibt sichtbar, geht aber nicht ungefiltert in Score-Berechnung ## 3.4 Individuelle Baselines statt nur Normwerte Für Sport- und Recovery-Daten sind **intraindividuelle Baselines** oft wichtiger als Populationsnormen. Empfehlung: - HRV, RHR, Schlafdauer, Blutdruck, Gewicht, Trainingsvolumen immer gegen - 7d Trend - 28d Baseline - optional 90d Baseline vergleichen ## 3.5 Lags immer mitdenken Viele Effekte sind verzögert: - Kalorienbilanz → Gewicht oft mit 2–14 Tagen Verzögerung - Protein / Krafttraining → LBM eher mit 2–6 Wochen Verzögerung - Trainingslast → HRV/RHR häufig mit 1–3 Tagen Verzögerung - Schlafdefizit → Recovery / Leistung typischerweise 1–3 Tage verzögert Darum sollen Korrelationen nie nur `lag=0` prüfen. ## 3.6 Medizinischer Sicherheitsmodus Gesundheitsnahe Kennzahlen müssen in drei Schichten bewertet werden: - **Info** - **Hinweis** - **Abklärung empfohlen** Das System darf motivieren und priorisieren, aber **nicht diagnostizieren**. --- ## 4. Zusätzliche Felder, die fachlich sehr sinnvoll wären Diese Felder sind nicht zwingend für die erste Umsetzung, würden aber die Qualität stark erhöhen: ### Pflichtnah für Phase 2 - `goal_mode` (weight_loss, strength, endurance, recomposition, health) - `secondary_goals[]` - `goal_priority_weights` - `training_age` / Trainingserfahrung - `measurement_time_consistency` (z. B. Gewicht morgens nüchtern ja/nein) - `illness_flag` - `travel_flag` - `competition_flag` ### Sehr wertvoll - subjektive Belastung / `session_rpe` - subjektive Müdigkeit / `fatigue_score` - subjektive Schlafqualität, wenn Gerätedaten fehlen - Schrittzahl / Alltagsbewegung - geschätzter Grundumsatz / TDEE - Taillenumfang-zu-Körpergröße (`waist_to_height_ratio`) - standardisierte Blutdruck-Heimmessung-Markierung Ohne diese Felder bleiben einige Interpretationen möglich, aber weniger präzise. --- ## 5. Ziel-Modi und ihre Wirkung auf Diagramme und Scores ## 5.1 Ziel-Modi ```yaml goal_modes: weight_loss: focus: [fettmasse, gewichtstrend, kalorienbilanz, protein_sicherung, aktivitaetsvolumen, schlaf] strength: focus: [trainingsqualitaet, protein, lbm, recovery, progressionslogik, schlaf] endurance: focus: [trainingsvolumen, intensitaetsverteilung, vo2max, recovery, schlaf, energieverfuegbarkeit] recomposition: focus: [lbm, fettmasse, protein, trainingsqualitaet, kalorienbalance, schlaf] health: focus: [bewegung, blutdruck, schlaf, gewicht, taille, regelmaessigkeit, moderates trainingsvolumen] ``` ## 5.2 Score-Gewichtung je Ziel ```yaml score_weights: weight_loss: body_progress: 0.30 nutrition: 0.25 activity: 0.20 recovery: 0.15 health_risk: 0.10 strength: body_progress: 0.20 nutrition: 0.25 activity: 0.30 recovery: 0.20 health_risk: 0.05 endurance: body_progress: 0.10 nutrition: 0.20 activity: 0.35 recovery: 0.25 health_risk: 0.10 recomposition: body_progress: 0.30 nutrition: 0.25 activity: 0.25 recovery: 0.15 health_risk: 0.05 health: body_progress: 0.20 nutrition: 0.20 activity: 0.20 recovery: 0.20 health_risk: 0.20 ``` --- ## 6. Kategoriemodell für Visualisierungen Die Diagramme werden in vier Hauptgruppen ausgeliefert: - **Körper** - **Ernährung** - **Aktivität** - **Korrelation** Jede Visualisierung erhält: - `chart_id` - `category` - `title` - `purpose` - `required_fields` - `optional_fields` - `derived_metrics` - `aggregation` - `default_range` - `goal_relevance` - `interpretation_rules` - `recommendation_rules` - `confidence_logic` --- ## 7. Diagrammkatalog – KÖRPER ## K1. Gewichtstrend + Trendkanal + Zielprojektion **Typ:** Linienchart mit Trendband **Ziel:** echte Entwicklung statt Tagesrauschen sichtbar machen **Einzubeziehende Werte** - `weight.value` - Profilgröße für BMI optional - Zielgewicht - Startgewicht **Berechnungen** - Tagesgewicht (Rohwerte) - 7d Rolling Median - 28d Trend-Slope - 90d Trend-Slope - Zielprojektion auf Basis 28d-Trend - prozentuale Zielannäherung **Aussagen** - Gewicht sinkt/stagniert/steigt - Trend ist stabil oder volatil - aktuelles Tempo ist schneller/langsamer als nachhaltiger Zielkorridor **Regelbasierte Hinweise** - bei Gewichtsreduktion: Warnung, wenn 28d-Trend = flach und dokumentierte Energiebilanz im Defizit - Hinweis, wenn Gewichtsverlust sehr schnell ist und gleichzeitig LBM sinkt - Hinweis auf Messrauschen, wenn Tagesvolatilität hoch, aber 28d-Trend stabil **Coding-Hinweis** - Rohwerte immer mit anzeigen, aber Standardfokus auf geglättetem Trend --- ## K2. Körperzusammensetzung: Gewicht vs. Fettmasse vs. Magermasse **Typ:** kombinierter Linienchart oder gestapelter Flächenchart **Ziel:** Gewichtsänderung in Bestandteile zerlegen **Einzubeziehende Werte** - Gewicht - BF% - FM - LBM **Berechnungen** - FM = Gewicht × BF% - LBM = Gewicht × (1 - BF%) - 28d- und 90d-Änderung von FM und LBM **Aussagen** - Gewichtsverlust stammt überwiegend aus Fettmasse - Gewichtsverlust geht mit LBM-Verlust einher - Gewicht bleibt stabil, aber Rekomposition liegt vor **Regelbasierte Hinweise** - positiv bei Gewichtsreduktion/Rekomposition: FM runter, LBM stabil - kritisch bei Kraftziel: LBM sinkt trotz Training/Protein - positiv bei Kraftziel: LBM steigt bei stabiler oder leicht sinkender FM **Wichtig** - BF%-Messungen via Caliper sind nützlich, aber messfehleranfällig; deshalb Confidence reduzieren, wenn Messfrequenz niedrig oder Abstände stark unregelmäßig sind --- ## K3. Umfangs-Panel als Small Multiples **Typ:** 8 Mini-Liniencharts statt Radar als Standard **Ziel:** lokale Veränderungen sichtbar machen **Einzubeziehende Werte** - chest - waist - hip - arm - thigh_l / thigh_r - calf_l / calf_r **Berechnungen** - 28d und 90d Delta je Umfang - links-rechts Asymmetrie bei Bein/Wade - optional Verhältnis Taille/Hüfte - optional Taille/Körpergröße **Aussagen** - zentrale Adiposität verändert sich - Muskelaufbau eher Oberkörper/Arme/Beine - Asymmetrien wachsen oder sinken **Regelbasierte Hinweise** - Gewichtsverlust ohne sinkende Taille = möglicher Hinweis auf Wasser-/Mess- oder Adhärenzthema - Taillenumfang sinkt trotz stabilem Gewicht = sehr positives Signal für Rekomposition - starke Seitendifferenz = Asymmetrie-Hinweis --- ## K4. Rekompositions-Detektor **Typ:** Quadranten-Chart **X-Achse:** 28d Δ FM **Y-Achse:** 28d Δ LBM **Quadrantenlogik** - **optimal recomposition:** FM runter, LBM rauf - **cut with risk:** FM runter, LBM runter - **bulk / gain:** FM rauf, LBM rauf - **unfavorable:** FM rauf, LBM runter **Ziel:** schnelle Interpretation komplexer Körperveränderung **Einsatz:** besonders stark für Mischziele --- ## K5. Body Progress Score (0–100) **Typ:** Score + Sparklines **Ziel:** Zielbezogene Gesamtbewertung der Körperentwicklung **Komponenten je Zielmodus** ```yaml body_progress_score: weight_loss: fm_change: 0.40 waist_change: 0.25 weight_trend: 0.20 lbm_preservation: 0.15 strength: lbm_change: 0.45 arm_thigh_change: 0.20 weight_trend: 0.10 bf_stability: 0.10 waist_stability: 0.15 recomposition: fm_change: 0.35 lbm_change: 0.35 waist_change: 0.20 weight_neutrality: 0.10 ``` **Regel** - Score nur anzeigen, wenn in den letzten 28 Tagen ausreichende Körperdaten vorliegen --- ## 8. Diagrammkatalog – ERNÄHRUNG ## E1. Energieaufnahme vs. geschätzter Energieverbrauch vs. Gewichtstrend **Typ:** kombinierter Linien-/Balkenchart **Ziel:** Energielogik in Relation zum Gewicht sichtbar machen **Einzubeziehende Werte** - Kalorienaufnahme täglich - Trainingskalorien - optional geschätzter Grundumsatz / TDEE - Gewichtstrend **Berechnungen** - tägliche Aufnahme - 7d Durchschnitt Aufnahme - Energieüberschuss/-defizit - 7d geglättete Bilanz - lagged comparison zur Gewichtsentwicklung (3d, 7d, 14d) **Aussagen** - Bilanz passt nicht zur Gewichtsrealität - Wochenendeffekt vorhanden - Intake ist hoch volatil **Regelbasierte Hinweise** - Gewicht sinkt nicht trotz dokumentiertem Defizit → Messlücke, Verbrauchsüberschätzung oder kurze Beobachtungsdauer möglich - anhaltend großes Defizit + Recovery-Verschlechterung → Belastungshinweis - deutliche Intake-Volatilität → Adhärenz-Hinweis **Wichtige fachliche Anmerkung** Trainingskalorien aus Wearables sind ungenau. Für Scores sollten sie mit geringerer Priorität eingehen als dokumentierte Zufuhr und Gewichtsrealität. --- ## E2. Protein adequacy chart (g/Tag, g/kg KG, optional g/kg LBM) **Typ:** Linienchart mit Zielband **Ziel:** Protein nicht nur absolut, sondern relativ interpretieren **Einzubeziehende Werte** - Protein g - Körpergewicht - optional LBM - Zielmodus **Berechnungen** - Protein absolut - Protein g/kg Körpergewicht - optional Protein g/kg LBM - 7d und 28d Mittel - Tage im Zielbereich **Default-Referenzlogik** - allgemeine Aktivität / Gewichtsreduktion: individueller Zielkorridor konfigurierbar - Kraft/Rekomposition: höherer Zielkorridor - App-seitig als konfigurierbare Logik aufsetzen, nicht als starren globalen Wert **Mindestfachliche Defaults** - für trainierende Personen ist höhere Proteinzufuhr als bei Inaktiven sinnvoll - pro Mahlzeit bzw. Portion sind 20–40 g bzw. etwa 0,25 g/kg hochwertige Proteinmenge ein belastbarer Referenzanker **Regelbasierte Hinweise** - Kraftziel + Protein an <4 Tagen/Woche im Zielband → Protein-Hinweis - Defizitphase + Protein unter Zielband → Hinweis auf erhöhtes LBM-Verlustrisiko --- ## E3. Makroverteilung und Wochenkonsistenz **Typ:** 100%-gestapelter Wochenbalken + Streuungsindikator **Ziel:** weniger „Makro-Schönheit“, mehr Verhaltenskonsistenz **Einzubeziehende Werte** - Protein - Fett - Kohlenhydrate - Kalorien - optional Zucker - optional Ballaststoffe **Berechnungen** - Wochenmittel je Makro - Variationskoeffizient - Wochenende vs. Werktag **Aussagen** - stark schwankende Ernährung - proteinarm an Belastungstagen - hoher Zuckerschwerpunkt bei gleichzeitig niedrigem Ballaststoffniveau **Regelbasierte Hinweise** - bei Gesundheit/Zielreduktion: hoher Zucker + niedrige Ballaststoffe → Qualitäts-Hinweis - bei Ausdauer: Kohlenhydrate an Belastungstagen zu niedrig → Performance-Hinweis --- ## E4. Ernährungs-Adhärenz-Score (0–100) **Typ:** Scorecard **Ziel:** nicht die „perfekte Ernährung“, sondern Zieltreue messen **Komponenten** ```yaml nutrition_score: weight_loss: calorie_target_adherence: 0.35 protein_target_adherence: 0.25 intake_consistency: 0.20 fiber_or_food_quality: 0.10 sugar_control: 0.10 strength: protein_target_adherence: 0.35 calorie_support: 0.25 intake_consistency: 0.20 carb_support_on_training_days: 0.20 endurance: energy_adequacy: 0.30 carb_support: 0.30 protein_adequacy: 0.20 intake_consistency: 0.20 ``` **Hinweis** Ballaststoffe und Zucker nur dann relevant gewichten, wenn Datenqualität ausreichend ist. --- ## E5. Energieverfügbarkeits-Warnung (heuristisch, klar als Heuristik markieren) **Typ:** Ampel / Warnkarte **Ziel:** Unterversorgung erkennen, ohne klinische Diagnose zu behaupten **Einzubeziehende Werte** - Kalorienaufnahme - Trainingskalorien - Gewichtstrend - Recovery Score - Schlaf - ggf. LBM **Heuristische Trigger** - anhaltendes großes Defizit über mehrere Tage/Wochen - Recovery sinkt gleichzeitig - Schlaf verschlechtert sich gleichzeitig - LBM sinkt gleichzeitig **Ausgabe** - „mögliche Unterversorgung / zu aggressives Defizit“ - keine Diagnoseformulierung --- ## 9. Diagrammkatalog – AKTIVITÄT ## A1. Trainingsvolumen pro Woche **Typ:** gestapelte Wochenbalken **Ziel:** Umfang und Mix sichtbar machen **Einzubeziehende Werte** - Dauer - Trainingskalorien - Trainingstyp - quality_label **Berechnungen** - Einheiten pro Woche - Minuten pro Woche - Minuten je Kategorie - Anteil qualitativ brauchbarer Sessions **Aussagen** - Training ist regelmäßig oder sprunghaft - relevante Kategorien fehlen - „viel trainiert“ vs. „viel dokumentiert, aber wenig qualitativ“ --- ## A2. Intensitätsverteilung / Zonenbild **Typ:** gestapelter Flächenchart oder Wochenbalken **Ziel:** Intensitätsmuster sichtbar machen **Einzubeziehende Werte** - HR-Zonen-Verteilung, sobald vorhanden - bis dahin: `avg_hr`, `max_hr`, `quality_label`, Trainingstyp **Fallback-Logik ohne echte Zonen** - Proxy-Intensität in 3 Stufen: - niedrig - moderat - hoch - Ableitung aus Kombination von Dauer, avg_hr, max_hr und Typ **Aussagen** - Ausdauerziel: zu wenig Grundlagentraining oder zu viel harte Belastung - Gesundheit: Bewegung vorhanden, aber kaum moderat/vigorous - Kraftziel: hohe HR ist kein Muss, daher Zonen nur begrenzt gewichten --- ## A3. Trainingsqualitäts-Matrix **Typ:** Heatmap **Achsen:** Woche × Trainingstyp **Ziel:** Qualität nicht nur als Einzelbadge, sondern als Muster darstellen **Einzubeziehende Werte** - training_type - quality_label - duration - avg_hr / max_hr optional **Darstellung** - Zellenfarbe = mittlere Qualitätsstufe - Zellgröße optional = Anzahl Sessions **Nutzen** - zeigt, ob bestimmte Typen regelmäßig unter Mindestqualität bleiben - sehr gut für Coaching und Programmsteuerung --- ## A4. Fähigkeiten-Balance / Ability Radar **Typ:** Radar + Zeittrend **Ziel:** zeigen, welche Entwicklungsdimensionen systematisch trainiert werden **Einzubeziehende Werte** - `training_types.abilities` - Aktivitäten - Dauer / Qualität **Berechnungen** - wöchentlicher Ability Load je Dimension - geglätteter 28d-Wert - Balance-Index **Dimensionen** - Kraft - Ausdauer - Mental - Koordination - Mobilität **Aussagen** - Training ist einseitig - Mobilität/Mental fehlen - gute Balance oder starke Spezialisierung **Regelbasierte Hinweise** - bei Stagnation und sehr einseitiger Belastung → Balance-Hinweis - bei Gesundheit/Zielbreite → zu schmale Bewegungsbasis --- ## A5. Load-Monitoring: interne Last, Monotony, Strain **Typ:** Wochenchart mit Warnbändern **Ziel:** Belastungssteuerung sichtbar machen **Wichtiger fachlicher Hinweis** Da `session_rpe` aktuell fehlt, sollte ein **Proxy-Load** verwendet werden und klar als Proxy gekennzeichnet sein. **Proxy-Load-Vorschlag** ```yaml proxy_internal_load: formula: duration_min * intensity_factor * quality_factor intensity_factor: low: 1.0 moderate: 1.5 high: 2.0 quality_factor: excellent: 1.15 very_good: 1.05 good: 1.0 acceptable: 0.9 poor: 0.75 excluded: 0.0 ``` **Darstellungen** - Wochenlast - Monotony = Wochenmittel / Wochen-Standardabweichung - Strain = Wochenlast × Monotony **Wichtiger Hinweis** Monotony/Strain sind nützliche Coach-Metriken, aber **nicht als medizinische Wahrheit** interpretieren. --- ## A6. Aktivitäts-Goal-Alignment-Score (0–100) **Typ:** Scorecard **Ziel:** Training im Verhältnis zum Nutzerziel bewerten **Beispiel-Logik** ```yaml activity_score: weight_loss: weekly_minutes: 0.25 frequency: 0.20 quality_sessions: 0.20 strength_presence: 0.15 activity_consistency: 0.20 strength: strength_session_presence: 0.35 quality_strength_sessions: 0.25 recovery_respect: 0.15 supportive_cardio: 0.10 consistency: 0.15 endurance: weekly_minutes: 0.25 intensity_distribution: 0.25 frequency: 0.20 load_progression: 0.15 recovery_respect: 0.15 ``` --- ## A7. Ruhetags-/Recovery-Compliance **Typ:** Kalender-Heatmap **Ziel:** zeigen, ob Belastung und Erholung zusammenpassen **Einzubeziehende Werte** - geplante Ruhetage - tatsächliche Aktivitäten - Recovery Score - Schlafschuld **Aussagen** - Ruhetag wird respektiert oder regelmäßig „durchtrainiert“ - schlechte Recovery trotz fehlender Ruhetage - unnötig viele Ruhetage bei Leistungsziel --- ## A8. VO2max-Entwicklung **Typ:** Linienchart **Ziel:** kardiorespiratorische Entwicklung sichtbar machen **Einzubeziehende Werte** - VO2max - Aktivitätsvolumen - Intensitätsverteilung - Ruhepuls optional **Regelbasierte Hinweise** - steigendes Volumen ohne VO2max-Fortschritt → Programm-/Intensitätsfrage - sinkende VO2max + sinkende Aktivität → Deconditioning-Hinweis - bei Kraftziel nur sekundär priorisieren --- ## 10. Diagrammkatalog – KORRELATIONEN / KOMPLEXE ZUSAMMENHÄNGE ## Grundsatz Korrelationen müssen **explizit als explorativ** gekennzeichnet sein. Sie zeigen Hinweise, keine Beweise. Jeder Korrelationschart bekommt: - Effektstärke - Vorzeichen - bestes Lag-Fenster - Datenanzahl - Confidence - Text: „Hinweis“, nicht „Ursache“ --- ## C1. Energie-Balance vs. Gewichtsveränderung (lagged) **Typ:** Lag-Heatmap oder Cross-Correlation Panel **Ziel:** erkennen, nach wie vielen Tagen Energiebilanz und Gewicht am plausibelsten zusammenlaufen **Einzubeziehende Werte** - tägliche Kalorienbilanz - 7d Gewichtsänderung **Lags** - 0, 3, 7, 10, 14 Tage **Ausgabe** - bestes Lag - Richtung des Zusammenhangs - Confidence **Nutzen** - deutlich besser als einfache Same-Day-Pearson-Korrelation --- ## C2. Protein adequacy vs. LBM-Trend **Typ:** Scatter + Trend + 28d Fenstervergleich **Ziel:** erkennen, ob Proteinversorgung mit Magermasse-Stabilität oder -Anstieg einhergeht **Einzubeziehende Werte** - Protein g/kg - LBM - Krafttrainingslast **Hinweis** Protein nie isoliert interpretieren; Training muss als Moderator mitgedacht werden. --- ## C3. Trainingslast vs. HRV/RHR (1–3 Tage verzögert) **Typ:** duale Lag-Auswertung **Ziel:** individuelle Ermüdungsreaktion erkennen **Einzubeziehende Werte** - Proxy-Load / Volumen - HRV - RHR - Schlaf **Lags** - 1, 2, 3 Tage **Aussagen** - hohe Last führt individuell eher zu HRV-Abfall / RHR-Anstieg - keine klare Reaktion erkennbar - Reaktion nur bei Schlafmangel ausgeprägt --- ## C4. Schlafdauer + Schlafregularität vs. Recovery **Typ:** Bubble-/Quadrantenchart **Achsen:** Schlafdauer, Schlafregularität **Bubble:** Recovery Score **Ziel:** zeigen, dass nicht nur Menge, sondern auch Regelmäßigkeit relevant ist **Einzubeziehende Werte** - Schlafdauer - Bedtime/Waketime - daraus Sleep Regularity Index oder einfacher Regularity Proxy - Recovery Score **Empfehlung** Mindestens eine einfache Regularitätsmetrik ergänzen: ```yaml sleep_regularity_proxy: inputs: [bedtime, waketime] metric: mean_absolute_shift_from_previous_day_minutes lower_is_better: true ``` Optional später: - echter `Sleep Regularity Index (SRI)` --- ## C5. Blutdruck-Kontextmatrix vs. Schlaf / Training / Stress-naher Kontext **Typ:** Matrix / Boxplots nach Kontext **Ziel:** nicht nur Höhe, sondern Situation verstehen **Einzubeziehende Werte** - systolisch - diastolisch - Puls - Messkontext - Schlaf der Vor-Nacht - Training am selben / Vortag **Aussagen** - Blutdruck morgens systematisch höher - Training scheint akut positiv/neutral/negativ assoziiert - Stress-Kontexte sind Ausreißerträger **Medizinischer Hinweis** Das System soll hier eher **Screening-/Monitoring-Logik** abbilden, nicht Diagnose. --- ## C6. Plateau-Detektor **Typ:** Ereignis-Karte / Warnpanel **Ziel:** „viel Einsatz, wenig Fortschritt“ identifizieren **Plateau-Definitionen je Zielmodus** ```yaml plateau_logic: weight_loss: condition: - 28d_weight_slope_flat - waist_change_small - adherence_high strength: condition: - activity_score_high - lbm_change_flat - recovery_low_or_variable endurance: condition: - volume_high - vo2max_flat - monotony_high ``` **Ausgabe** - Plateau wahrscheinlich / möglich / nicht erkennbar - Top-3 plausible Einflussfaktoren --- ## C7. Multi-Faktor Driver Panel **Typ:** priorisierte Einflusskarten **Ziel:** ohne KI eine „Top-Treiber“-Ansicht erzeugen **Mechanik** Das System bewertet für ein Ziel die wichtigsten beeinflussbaren Faktoren regelbasiert: - Energie - Protein - Schlafdauer - Schlafregelmäßigkeit - Trainingskonsistenz - Qualitätsanteil - Recovery - Ruhetagsrespekt **Ausgabe pro Faktor** - Status: förderlich / neutral / hinderlich - Evidenz: hoch / mittel / niedrig - Begründung: 1 Satz Das ist eine sehr starke Brücke zur späteren KI-Stufe. --- ## 11. Zentrale Scores ## S1. Recovery / Readiness Score (verbesserte Version) Die bestehende Idee ist gut, sollte aber robuster umgesetzt werden. ### Eingangswerte - HRV vs. 28d Baseline - RHR vs. 28d Baseline - Schlafdauer vs. Ziel - Schlafschuld - Schlafregularität - Vorbelastung 1–3 Tage - Messqualität / Datenvollständigkeit ### Empfohlene Logik Nicht rohe Quotienten, sondern normalisierte Abweichungszonen. ```yaml recovery_score: components: hrv_status: 0.25 rhr_status: 0.20 sleep_duration: 0.20 sleep_debt: 0.10 sleep_regularity: 0.10 recent_load_balance: 0.10 data_quality: 0.05 output: 0_39: low 40_59: strained 60_79: normal 80_100: ready ``` ### Zusätzliche Regeln - Kein Score bei zu wenigen validen Datenpunkten - Fallback-Modus ohne HRV möglich - Separate Anzeige „Messqualität“ --- ## S2. Health Risk / Health Stability Score **Typ:** Score 0–100 **Ziel:** allgemeine Gesundheitsstabilität abbilden **Komponenten** - Blutdruckstatus - Schlafbasis - Bewegungsbasis - Gewicht/Umfangsrisiko - Regelmäßigkeit **Hinweis** Dieser Score ist für allgemeine Gesundheit sehr sinnvoll, aber für Leistungssport sekundär. --- ## S3. Goal Progress Score (Meta-Score) **Typ:** Zielabhängiger Gesamtscore **Formel:** gewichtete Summe aus Body, Nutrition, Activity, Recovery, Health Risk **Regeln** - nie ohne Teilscore-Transparenz anzeigen - immer mit Treiberaufschlüsselung - nie als „Gesundheitsnote“ formulieren --- ## S4. Data Quality Score **Typ:** technischer Fachscore **Ziel:** schlechte Daten nicht mit scheinbarer Präzision interpretieren **Komponenten** - Messhäufigkeit - Regelmäßigkeit - Lücken - Konsistenz - Anzahl gepaarter Datenpunkte für Korrelationen Dieser Score ist extrem wichtig. Ohne ihn werden schlechte Daten zu scheinbar präzisen Aussagen führen. --- ## 12. Regelbasierte Aussagen und Empfehlungen ohne KI Die Formulierungen sollten knapp, neutral und nachvollziehbar sein. ## 12.1 Beispiel-Statements – Gewichtsreduktion ### Positiv - „Dein 28-Tage-Trend zeigt eine stabile Gewichtsabnahme innerhalb eines nachhaltigen Bereichs.“ - „Der Taillenumfang sinkt parallel zum Gewicht. Das spricht für echten Fortschritt.“ - „Die Magermasse ist trotz Defizit stabil. Das ist in einer Reduktionsphase ein gutes Signal.“ ### Neutral / Beobachtung - „Die Tageswerte schwanken deutlich, der 28-Tage-Trend ist aber nahezu stabil.“ - „Die dokumentierte Kalorienbilanz spricht für ein Defizit, das Gewicht reagiert bisher aber nur schwach.“ ### Kritisch - „Die Magermasse sinkt parallel zur Gewichtsabnahme. Prüfe Defizithöhe, Protein und Krafttraining.“ - „Der Gewichtsverlauf stagniert seit 4 Wochen trotz hoher Dokumentationsrate.“ - „Das Defizit wirkt im Verhältnis zu Recovery und Schlaf aktuell eher aggressiv.“ ## 12.2 Beispiel-Statements – Kraftaufbau - „Dein Trainingsmuster ist konsistent, die Körperdaten zeigen aber noch keinen klaren LBM-Anstieg.“ - „Die Proteinzufuhr liegt an mehreren Tagen unter dem Zielbereich für dein Kraftziel.“ - „Recovery und Schlaf sprechen aktuell gegen weitere Steigerung der Trainingslast.“ - „Deine Ability-Balance ist stark kraftlastig, Mobilität und Regeneration sind schwach ausgeprägt.“ ## 12.3 Beispiel-Statements – Ausdauer - „Die Wochenminuten steigen, aber die Intensitätsverteilung ist unausgeglichen.“ - „VO2max verbessert sich trotz Trainingsvolumen derzeit nicht sichtbar.“ - „Die letzten Wochen zeigen hohe Monotonie. Das spricht für wenig Variation in der Belastung.“ ## 12.4 Beispiel-Statements – Gesundheit - „Dein Schlaf liegt wiederholt unter 7 Stunden und ist unregelmäßig.“ - „Die Bewegung erfüllt den Mindestrahmen teilweise, Kraftreize fehlen jedoch.“ - „Deine Blutdruckwerte sollten im Verlauf enger beobachtet werden, insbesondere im Morgenkontext.“ --- ## 13. Medizinische und fachliche Grenzlogik ## 13.1 Bewegung Für erwachsene Personen sind als allgemeiner Gesundheitsrahmen mindestens **150–300 Minuten moderate** oder **75–150 Minuten intensive** Aktivität pro Woche plus **Muskelkräftigung an mindestens 2 Tagen/Woche** ein sinnvoller Referenzrahmen. Dieser Rahmen ist für die Kategorie „Gesundheit“ wichtig, aber nicht automatisch Leistungsoptimum. [R1] ## 13.2 Schlaf Für Erwachsene ist **7+ Stunden Schlaf pro Nacht** ein belastbarer allgemeiner Mindestanker. Schlafdauer allein reicht aber nicht; Regelmäßigkeit und Qualität sind zusätzlich relevant. [R2][R8][R9] ## 13.3 Protein Für Trainierende ist eine relativ höhere Proteinzufuhr fachlich sinnvoll; als gut belastbare Referenz für die Darstellung eignen sich **20–40 g pro Proteinportion** oder etwa **0,25 g/kg pro Portion**. Tagesziele sollten zielabhängig und konfigurierbar sein. [R3] ## 13.4 Blutdruck Die App sollte sich in der Darstellung am aktuellen europäischen Begriffsrahmen orientieren: **elevated BP** bei Büro-/Praxiswerten **120–139 systolisch oder 70–89 diastolisch**, Hypertonie wie bisher ab **≥140/90 mmHg**. Für die App heißt das: Verlauf und Kontext zeigen, aber Diagnose vermeiden. [R4] ## 13.5 Trainingslast Trainingsmonitoring ist fachlich sinnvoll, aber nie mit nur einer Kennzahl. Deshalb sollten Last, Erholung, Schlaf und Ziel-Fortschritt immer gemeinsam interpretiert werden. [R5] --- ## 14. Priorisierte Umsetzungsreihenfolge ## Phase 1 – sofort umsetzen 1. Gewichtstrend + Zielprojektion 2. Gewicht/FM/LBM-Chart 3. Umfangs-Panel 4. Energieaufnahme vs. Gewichtstrend 5. Protein adequacy chart 6. Trainingsvolumen pro Woche 7. Trainingsqualitäts-Matrix 8. Recovery Score verbessert 9. Goal Progress Score 10. einfache Korrelationen mit Confidence und Mindestdatenlogik ## Phase 2 – stark empfohlen 1. Sleep Regularity Proxy 2. Lag-Korrelationen 3. Plateaudetektor 4. Driver Panel 5. Health Stability Score 6. Ability-Balance-Radar 7. Ruhetags-/Recovery-Compliance ## Phase 3 – Vorbereitung für KI 1. Feature Store je 7/28/90 Tage 2. erklärbare Vorstufen-Texte aus Regeln 3. Ereignismarker (Infekt, Reise, Wettkampf, Stressphasen) 4. subjektive Daten (RPE, Müdigkeit, Schmerz, Motivation) --- ## 15. Konkrete technische Spezifikation für den Coding Agent ## 15.1 Chart Definition Contract ```json { "chart_id": "K1_weight_trend", "category": "body", "title": "Gewichtstrend + Zielprojektion", "purpose": "Tagesrauschen von echter Entwicklung trennen", "required_fields": ["weight.date", "weight.value", "profile.target_weight"], "optional_fields": ["profile.height_cm"], "derived_metrics": [ "weight_7d_median", "weight_28d_slope", "weight_90d_slope", "goal_projection_date", "goal_progress_pct" ], "default_range": "90d", "goal_relevance": ["weight_loss", "recomposition", "health"], "confidence_logic": { "7d_min_points": 4, "28d_min_points": 18, "90d_min_points": 60 }, "interpretation_rules": [ "stable_downward_trend", "volatile_but_flat", "rapid_loss_with_lbm_drop" ], "recommendation_rules": [ "review_deficit", "review_protein", "hold_course" ] } ``` ## 15.2 Statement Contract ```json { "statement_id": "WL_rapid_loss_lbm_drop", "severity": "warning", "goal_modes": ["weight_loss", "recomposition"], "conditions": [ "weight_28d_slope < -0.75_percent_per_week", "lbm_28d_change < -0.5kg", "nutrition_score < 70 OR protein_target_days_per_week < 4" ], "message": "Der Gewichtsverlust ist aktuell relativ schnell und geht mit sinkender Magermasse einher. Prüfe Defizithöhe, Protein und Kraftreize.", "confidence": "derived_from_data_quality" } ``` ## 15.3 Score Contract ```json { "score_id": "goal_progress_score", "range": [0, 100], "goal_mode_dependent": true, "components": [ "body_progress_score", "nutrition_score", "activity_score", "recovery_score", "health_risk_score" ], "weights_source": "config/goal_weights.yaml", "output": { "value": 78, "label": "gut", "drivers_positive": ["protein_adherence", "stable_weight_trend"], "drivers_negative": ["sleep_irregularity"] } } ``` --- ## 16. Fachliches Fazit ## Aus Perspektive der Datenanalyse Ich würde das Modell klar als **mehrdimensional leistungsfähig** einstufen. Es ist weit über einem typischen Fitness-Tracker, weil es Körper, Training, Schlaf, Vitalwerte und Ernährung zusammenführt. ## Aus Perspektive eines Sportwissenschaftlers / Gesundheitsanalysten Der größte Mehrwert entsteht nicht durch noch mehr Einzelmetriken, sondern durch: - **zielabhängige Interpretation** - **Baseline-Logik statt bloßer Rohwerte** - **lag-basierte Zusammenhänge statt naiver Gleichzeitigkeit** - **Confidence / Datenqualität** - **klare Trennung zwischen Gesundheitsmonitoring, Performance und Heuristik** ## Zusammengeführt Die beste Umsetzung ist **nicht** eine endlose Sammlung bunter Charts. Die beste Umsetzung ist ein System mit: 1. wenigen, starken Standardcharts, 2. robusten Scores, 3. erklärbaren Regeln, 4. einer sauberen Brücke zur späteren KI. Wenn diese Struktur sauber umgesetzt wird, ist bereits ohne KI ein sehr hoher fachlicher Nutzen erreichbar. --- ## 17. Referenzbasis **[R1]** ACSM / Physical Activity Guidelines: mindestens 150–300 min moderate oder 75–150 min intensive Aktivität pro Woche plus Muskelkräftigung an mindestens 2 Tagen/Woche. Quelle: ACSM, Physical Activity Guidelines FAQ https://acsm.org/physical-activity-guidelines-faqs/ **[R2]** AASM / Sleep Research Society: Erwachsene sollten regelmäßig 7 oder mehr Stunden pro Nacht schlafen. Quelle: AASM https://aasm.org/seven-or-more-hours-of-sleep-per-night-a-health-necessity-for-adults/ **[R3]** ISSN Position Stand Protein and Exercise: allgemeine Empfehlung pro Portion etwa 0,25 g/kg bzw. 20–40 g hochwertiges Protein; höhere Gesamtzufuhr bei Trainierenden oft sinnvoll. Quelle: Journal of the International Society of Sports Nutrition https://link.springer.com/article/10.1186/s12970-017-0177-8 **[R4]** ESC 2024 Guidelines: neue Kategorie „elevated BP“ 120–139 mmHg systolisch oder 70–89 mmHg diastolisch; Hypertonie weiterhin ab ≥140/90 mmHg. Quelle: European Society of Cardiology https://www.escardio.org/news/news-room/congress-news/2024-esc-clinical-practice-guidelines-for-the-management-of-elevated-blood-pressure-and-hypertension/ **[R5]** Athlete load monitoring soll als gemeinsamer Rahmen aus Last, Reaktion und Kontext verstanden werden, nicht als Einzelmetrik. Quelle: Monitoring Athlete Training Loads: Consensus Statement https://pubmed.ncbi.nlm.nih.gov/28463642/ **[R6]** Progressive resistance training muss zielgerichtet ausgestaltet werden; starre Einheitsregeln sind fachlich ungeeignet. Quelle: ACSM Position Stand – Progression Models in Resistance Training for Healthy Adults https://pubmed.ncbi.nlm.nih.gov/19204579/ **[R7]** Für Gewichtsreduktion gelten etwa 0,5–1,0 kg/Woche allgemein als sicher und nachhaltig, aber individualisiert. Quelle: NICE Overweight and Obesity Management https://www.nice.org.uk/guidance/ng246/resources/a-guide-for-prescribing-medicines-to-manage-overweight-and-obesity-15299628589/chapter/Prescribing-reviewing-and-stopping-tirzepatide **[R8]** Schlafregularität ist als Gesundheitsfaktor eigenständig relevant und teils prädiktiver als bloße Schlafdauer. Quelle: Sleep regularity is a stronger predictor of mortality risk than sleep duration https://pubmed.ncbi.nlm.nih.gov/37738616/ **[R9]** Für die Messung von Schlafregularität sind mehrere Metriken möglich; Auswahl hängt von Studiendauer und Ziel ab. Quelle: Measuring sleep regularity: theoretical properties and practical usage of existing metrics https://pubmed.ncbi.nlm.nih.gov/33864369/ --- ## 16. Ergänzung V2 – Trainingsqualitäts-Engine je Trainingstyp Die neue Anforderung präzisiert einen zentralen Punkt des Gesamtsystems: **Trainingsqualität** wird pro **Trainingstyp** über definierbare Regeln ermittelt. Dabei können mehrere Messparameter kombiniert werden, und je Trainingstyp stehen unterschiedliche Berechnungsstrategien zur Verfügung: - **Gewichteter Score** - **Alle Regeln müssen erfüllt sein** - **Mindestens N Regeln müssen erfüllt sein** Diese Architektur ist fachlich sinnvoll, muss aber sauber modelliert werden, damit aus heterogenen Sensordaten kein irreführender Einheits-Score entsteht. ### 16.1 Fachliche Grundsätze 1. **Qualität ist nicht gleich Last.** Dauer, Distanz, Puls, Leistung, Pace, RPE oder Kalorien beschreiben teils die externe Last, teils die interne Belastung und nur indirekt die „Qualität“. Darum sollte das System **drei getrennte Konzepte** führen: - `quality_score` = Wie gut erfüllt die Einheit die typ-spezifische Zielcharakteristik? - `load_score` = Wie hoch war der Trainingsreiz / die Belastung? - `confidence_score` = Wie belastbar ist die Bewertung auf Basis der verfügbaren Daten? 2. **Nicht jeder Parameter ist für jeden Trainingstyp sinnvoll.** Avg-HR und Max-HR sind bei Laufen oder HIIT oft nützlich, bei Mobility, Technik, Meditation oder leichtem Krafttraining aber nur begrenzt aussagekräftig. **Folge:** Jeder Trainingstyp erhält eine eigene Parameter-Matrix mit Relevanz, Pflichtstatus und Gewicht. 3. **Subjektive und objektive Daten sollen kombiniert, aber nicht vermischt werden.** RPE liefert eine andere Information als HR, Pace oder Distanz und sollte deshalb als eigenständiger Marker behandelt werden. 4. **Regelbasierte Scoring-Engines sollten hybrid arbeiten.** Rein gewichtete Modelle sind flexibel, aber anfällig für „falsche Positivbewertungen“. Reine `all_rules_must_pass`-Modelle sind oft zu hart. Fachlich am stabilsten ist meist ein **Hybrid aus Gates + eigentlicher Strategie**. ### 16.2 Empfohlene Architektur: 3-stufige Quality Engine ```yaml training_quality_engine: stage_1_exclusion_gates: purpose: "Offensichtlich unbrauchbare oder falsch klassifizierte Sessions ausfiltern" examples: - duration_min < absolute_minimum - missing_all_primary_metrics == true - training_type_mismatch_flag == true - manually_marked_invalid == true stage_2_rule_evaluation: purpose: "Trainingstyp-spezifische Qualitätsbewertung" supported_strategies: - weighted_score - all_rules_must_pass - at_least_n_rules stage_3_labeling_and_confidence: purpose: "Normierung, Qualitätslabel, Datenvertrauen" outputs: - quality_score_0_100 - quality_label - rules_passed_count - rules_total_count - confidence_score_0_100 - confidence_label ``` ### 16.3 Empfohlene Outputs pro Einheit ```yaml activity_quality_result: quality_score: 0-100 quality_label: [excellent, very_good, good, acceptable, poor, excluded] confidence_score: 0-100 confidence_label: [high, medium, low] strategy_used: [weighted_score, all_rules_must_pass, at_least_n_rules] rules_passed_count: integer rules_total_count: integer mandatory_rules_passed: boolean parameter_breakdown: - parameter_key - raw_value - normalized_score_0_100 - weight - passed - relevance - reason exclusion_reason: nullable ``` ### 16.4 Datenmodell für Regeln je Trainingstyp Empfehlung: Die Quality Rules im Trainingstyp nicht mehr nur als einfache Minima speichern, sondern als vollständige Regelobjekte. ```yaml training_type_quality_config: strategy: weighted_score min_rules_required: null mandatory_gate_mode: any_fail_excludes missing_data_policy: renormalize_non_missing label_thresholds: excellent: 90 very_good: 80 good: 65 acceptable: 50 poor: 1 excluded: 0 parameters: - key: duration_min source: duration comparator: range unit: min required: true mandatory: true weight: 0.20 min: 30 max: 75 tolerance_below: 10 tolerance_above: 20 scoring_curve: trapezoid - key: avg_hr source: avg_heart_rate comparator: range_relative_to_hrmax unit: bpm required: false mandatory: false weight: 0.20 min_pct_hrmax: 0.70 max_pct_hrmax: 0.85 scoring_curve: trapezoid - key: rpe source: rpe comparator: range unit: borg_cr10 required: false mandatory: false weight: 0.15 min: 5 max: 7 scoring_curve: trapezoid ``` ### 16.5 Unterstützte Regeltypen / Comparatoren Die Engine sollte mindestens diese Comparatoren unterstützen: ```yaml comparators: - min # Wert muss >= Grenzwert sein - max # Wert muss <= Grenzwert sein - range # Wert innerhalb eines Bereichs - target # Zielwert, Score sinkt mit Abstand - range_relative_to_hrmax - range_relative_to_resting_hr - range_relative_to_baseline - ratio_min - ratio_max - boolean_true - derived_formula ``` ### 16.6 Sinnvolle Scoring-Kurven Nicht jede Regel sollte nur binär bewertet werden. Für die meisten Trainingsdaten sind **weiche Übergänge** fachlich besser. ```yaml scoring_curves: binary: description: "0 oder 100" linear: description: "lineare Annäherung an Zielbereich" trapezoid: description: "optimaler Bereich = 100, davor/danach weicher Abfall" gaussian_like: description: "Zielwert-orientiert, symmetrischer Abfall" asymmetric: description: "unter Ziel anders bestrafen als über Ziel" ``` **Praxisregel:** - `binary` nur für harte Compliance-Vorgaben - `trapezoid` für Dauer, Pace, HR, Leistung - `asymmetric` für Überlastungsrisiken (z. B. „zu hart“ stärker bestrafen als „etwas zu leicht“) ### 16.7 Die 3 Berechnungsstrategien – fachliche Bewertung #### A. `weighted_score` **Geeignet für:** die meisten freien Trainingsformen mit mehreren Einflussgrößen **Vorteile** - robust bei teilweise fehlenden Daten - fein abstufbar - gut visualisierbar - ideal für Laufen, Radfahren, allgemeine Cardio-Sessions **Risiko** - eine Session kann trotz fehlender Kernanforderung noch „gut“ aussehen, wenn Nebenparameter stark sind **Daher Empfehlung** - immer mit vorgeschalteten **Mandatory Gates** kombinieren **Formel** ```yaml weighted_score: formula: sum(parameter_score_i * weight_i) / sum(active_weights_i) result_scale: 0_100 ``` #### B. `all_rules_must_pass` **Geeignet für:** standardisierte Protokolle, Reha-Übungen, Technik- oder Compliance-Sessions **Vorteile** - sehr klar - leicht erklärbar - hohe fachliche Stringenz **Risiko** - zu hart bei natürlicher Messvariabilität - problematisch bei Sensorausfällen - wenig differenziert **Empfehlung** - eher für „Pflichtprogramm erfüllt / nicht erfüllt“ einsetzen - zusätzlich einen separaten `soft_score` berechnen, damit die UI nicht nur schwarz/weiß bleibt #### C. `at_least_n_rules` **Geeignet für:** Daten mit Lücken, Wearable-Heterogenität, flexibel definierte Trainingsformen **Vorteile** - robust gegen fehlende Messkanäle - gut für Alltagssport und gemischte Datenquellen **Risiko** - alle Regeln werden implizit gleich wichtig, falls keine Zusatzlogik vorliegt **Empfehlung** - nur in Kombination mit `mandatory_rules` - für N-Regelmodelle zusätzlich `priority_groups` definieren ### 16.8 Fachlich empfohlener Standard: Hybrid-Modell Die beste Standardarchitektur ist **nicht** eine einzelne Strategie, sondern: ```yaml recommended_default_strategy: stage_1: mandatory_gates: true stage_2: primary_strategy: weighted_score stage_3: fallback_when_sparse_data: at_least_n_rules ``` **Begründung:** So werden offensichtlich ungeeignete Sessions ausgeschlossen, gleichzeitig bleibt die Bewertung flexibel und datenrobust. Das entspricht der sportwissenschaftlichen Praxis besser als ein starres Alles-oder-Nichts-Modell. ### 16.9 Parameterklassifikation Die aktuell genannten Parameter sollten fachlich in Klassen eingeteilt werden. #### A. Externe Last / Umfang - Dauer - Distanz - Höhenmeter - aktive Kalorien - Ruhekalorien - Kalorien pro km #### B. Interne Belastung / Intensität - Durchschnittspuls - Maximalpuls - Minimalpuls - RPE #### C. Leistungs-/Effizienzmarker - Pace - Trittfrequenz - Durchschnittsleistung #### D. Zukünftige sinnvolle Ergänzungen - Zeit in HF-Zonen - Leistung in Zonen - Satz-/Wiederholungsvolumen bei Krafttraining - Intervallstruktur - subjektive Trainingszielerfüllung - Technik-/Skill-Flags ### 16.10 Parameter-Relevanz nach Trainingstyp Die Engine sollte **keine globale Gleichbehandlung** der Parameter vornehmen. #### Beispielhafte Relevanzmatrix ```yaml parameter_relevance_examples: running_endurance: duration: high distance: high avg_hr: high max_hr: medium pace: high cadence: medium elevation_gain: medium avg_power: medium rpe: high active_calories: low resting_calories: none calories_per_km: low intervals_hiit: duration: medium distance: medium avg_hr: medium max_hr: high pace: high cadence: medium avg_power: high rpe: high elevation_gain: low active_calories: low strength_general: duration: medium avg_hr: low max_hr: low min_hr: none rpe: medium active_calories: low resting_calories: none avg_power: low pace: none cadence: none calories_per_km: none walking_health: duration: high distance: medium avg_hr: medium max_hr: low pace: medium cadence: medium rpe: low elevation_gain: low mobility_yoga: duration: high avg_hr: none max_hr: none pace: none cadence: none rpe: low ``` **Fachliche Korrektur:** `active_calories`, `resting_calories` und `calories_per_km` sollten fast nie Kernparameter der Qualität sein. Sie können Zusatzmarker sein, aber keine Primärlogik tragen, weil sie stark von Gerät, Körpermasse und Algorithmus abhängen. ### 16.11 Relative statt absolute Zielbereiche Wo immer möglich, sollten Regeln **relativ zur Person** und nicht nur absolut formuliert werden. #### Beispiele - Avg-HR relativ zu HRmax oder besser HRR - Pace relativ zur persönlichen 28d-Baseline oder Zielzone - Leistung relativ zur persönlichen Baseline - Dauer relativ zum üblichen Session-Typ-Fenster - Kalorien pro km nur relativ und nur explorativ **Begründung:** Absolute Schwellen bestrafen Anfänger und unterschätzen Fortgeschrittene. Relative Zonen sind individualisierter. ### 16.12 Vorsicht bei Herzfrequenz-Regeln HF-basierte Regeln sind nützlich, aber nie allein ausreichend: - geschätzte HRmax ist fehleranfällig - Medikamente, Stress, Hitze, Dehydrierung und Messfehler beeinflussen HR - Krafttraining und technische Sportarten bilden sich über HF oft schlecht ab Daher: ```yaml hr_rule_policy: never_use_as_only_primary_rule: true prefer_relative_thresholds: true downweight_if_hrmax_estimated_only: true combine_with_rpe_or_external_load: true ``` ### 16.13 Umgang mit fehlenden Werten Die Engine braucht eine explizite `missing_data_policy`. ```yaml missing_data_policies: fail: description: "fehlender Pflichtwert = Regel nicht bestanden" renormalize_non_missing: description: "nur vorhandene Gewichte werden neu normiert" impute_from_baseline: description: "nur für robuste Langzeitmarker verwenden" downgrade_confidence: description: "Score bleibt, Confidence sinkt" ``` **Empfehlung** - Pflichtparameter: `fail` - optionale Parameter: `renormalize_non_missing` + `downgrade_confidence` ### 16.14 Empfohlene Score-Logik pro Trainingstyp #### 16.14.1 Ausdauer – lockerer Dauerlauf ```yaml training_type_example_running_easy: strategy: weighted_score mandatory_gates: - key: duration_min comparator: min threshold: 20 - key: distance_km comparator: min threshold: 2 parameters: - key: duration_min weight: 0.25 comparator: range min: 30 max: 75 scoring_curve: trapezoid - key: avg_hr weight: 0.20 comparator: range_relative_to_hrmax min_pct_hrmax: 0.65 max_pct_hrmax: 0.78 scoring_curve: trapezoid - key: pace_relative_to_28d_baseline weight: 0.15 comparator: range min: 0.92 max: 1.05 scoring_curve: trapezoid - key: cadence weight: 0.10 comparator: range_relative_to_baseline min_ratio: 0.95 max_ratio: 1.08 scoring_curve: trapezoid - key: rpe weight: 0.20 comparator: range min: 3 max: 5 scoring_curve: trapezoid - key: elevation_gain_per_km weight: 0.10 comparator: max threshold: 35 scoring_curve: asymmetric ``` #### 16.14.2 HIIT / Intervalle ```yaml training_type_example_hiit: strategy: at_least_n_rules min_rules_required: 4 mandatory_gates: - key: duration_min comparator: min threshold: 12 parameters: - key: max_hr comparator: range_relative_to_hrmax min_pct_hrmax: 0.88 max_pct_hrmax: 0.98 mandatory: false - key: avg_hr comparator: range_relative_to_hrmax min_pct_hrmax: 0.75 max_pct_hrmax: 0.90 - key: rpe comparator: range min: 7 max: 9 - key: avg_power_relative_to_baseline comparator: min min_ratio: 1.03 - key: pace_relative_to_baseline comparator: min min_ratio: 1.03 ``` #### 16.14.3 Krafttraining allgemein **Wichtige fachliche Einschränkung:** Mit den aktuell genannten Parametern ist Krafttrainingsqualität nur eingeschränkt beurteilbar. Wirklich gute Kraftbewertung braucht später zusätzlich: - Satzanzahl - Wiederholungen - verwendete Last - Volumenlast - Übungstypen - Satz-RPE oder Reps in Reserve (RIR) Bis dahin sollte die Qualität **nur vorsichtig** bewertet werden. ```yaml training_type_example_strength_general: strategy: at_least_n_rules min_rules_required: 2 mandatory_gates: - key: duration_min comparator: min threshold: 20 parameters: - key: duration_min comparator: range min: 35 max: 90 weight: 0.40 - key: rpe comparator: range min: 5 max: 8 weight: 0.35 - key: avg_hr comparator: min threshold: 85 weight: 0.10 - key: active_calories comparator: min threshold: 120 weight: 0.05 - key: max_hr comparator: min threshold: 110 weight: 0.10 ``` **Interpretation:** Hier ist klar: HR und Kalorien sind nur schwache Hilfsmarker. Das System sollte dies in der UI offenlegen. #### 16.14.4 Gehen / Gesundheitssport ```yaml training_type_example_walking: strategy: weighted_score mandatory_gates: - key: duration_min comparator: min threshold: 10 parameters: - key: duration_min weight: 0.35 comparator: range min: 20 max: 60 - key: pace weight: 0.20 comparator: range_relative_to_baseline min_ratio: 0.95 max_ratio: 1.20 - key: avg_hr weight: 0.20 comparator: range_relative_to_hrmax min_pct_hrmax: 0.50 max_pct_hrmax: 0.72 - key: cadence weight: 0.15 comparator: range_relative_to_baseline min_ratio: 0.95 max_ratio: 1.15 - key: elevation_gain weight: 0.10 comparator: max threshold: 150 ``` ### 16.15 Label-Mapping Der 0–100 Score sollte immer zusätzlich in ein erklärbares Label übersetzt werden. ```yaml quality_label_thresholds_default: excluded: 0 poor: 1-49 acceptable: 50-64 good: 65-79 very_good: 80-89 excellent: 90-100 ``` Empfehlung: - Trainingstyp-spezifisch überschreibbar - zusätzlich `goal_mode`-abhängig feinjustierbar ### 16.16 Confidence-Score Neben dem Qualitäts-Score braucht jede Session einen Vertrauenswert. ```yaml confidence_score: components: required_data_completeness: 0.40 optional_data_completeness: 0.15 sensor_reliability_profile: 0.15 baseline_availability: 0.15 training_type_specificity: 0.15 ``` **Beispiel** - Laufen mit Dauer, Distanz, Pace, Avg-HR, Max-HR, RPE → hohe Confidence - Krafttraining nur mit Dauer und Kalorien → niedrige Confidence ### 16.17 Trennung von Qualität, Dosis und Regelmäßigkeit Für die Gesamtanalyse des Nutzers sollten drei Kennzahlen parallel geführt werden: ```yaml session_metrics: quality_score: meaning: "Wie gut war die einzelne Einheit relativ zum Ziel des Trainingstyps?" load_score: meaning: "Wie belastend war die Einheit?" consistency_score: meaning: "Wie regelmäßig wurde trainiert?" ``` **Wichtige Folge:** Eine harte, sehr belastende Einheit kann `load_score` hoch, aber `quality_score` nur mittel haben, wenn sie nicht zum Trainingsziel passte. ### 16.18 Neue Visualisierungen speziell für Trainingsqualität #### TQ1. Rule Fulfillment Breakdown **Typ:** gestapelter Horizontalbalken pro Session **Inhalt:** erfüllt / teilweise erfüllt / nicht erfüllt / nicht verfügbar **Nutzen:** höchste Erklärbarkeit für den Nutzer #### TQ2. Parameter Contribution Chart **Typ:** Balkendiagramm **Inhalt:** Beitrag jedes Parameters zum `quality_score` **Nutzen:** zeigt, warum eine Einheit gut oder schwach bewertet wurde #### TQ3. Training Type Quality Trend **Typ:** Linienchart **Inhalt:** 7d / 28d gleitender Qualitätsmittelwert pro Trainingstyp **Nutzen:** erkennt, ob ein Typ systematisch zu leicht, zu hart oder inkonsistent trainiert wird #### TQ4. Quality vs Load Quadrant **Typ:** Scatterplot **Achsen:** `quality_score` × `load_score` **Quadranten:** - hoch Qualität / hoch Last - hoch Qualität / niedrig Last - niedrig Qualität / hoch Last - niedrig Qualität / niedrig Last **Nutzen:** Zeigt besonders wertvoll, ob der Nutzer „hart, aber unsauber“ trainiert. #### TQ5. Confidence Overlay **Typ:** Punkt- oder Linien-Overlay **Inhalt:** Qualitätswerte werden nach Confidence visuell abgeschwächt **Nutzen:** verhindert Fehlinterpretationen bei dünner Datenlage #### TQ6. Weekly Rule Heatmap **Typ:** Heatmap **Achsen:** Woche × Regelgruppe **Nutzen:** identifiziert wiederkehrende Defizite, z. B. „zu kurz“, „zu geringe Intensität“, „fehlender RPE-Eintrag“ ### 16.19 Regelbasierte Aussagen ohne KI Die Engine kann bereits sehr gute nicht-KI-basierte Aussagen erzeugen. #### Beispiele - „Deine Laufeinheiten sind regelmäßig vorhanden, bleiben aber in 4 der letzten 6 Wochen unter dem Zielbereich für Dauer.“ - „Die Intensität deiner Intervall-Einheiten ist meist passend, jedoch fehlen häufig belastbare RPE-Daten; die Bewertung ist daher nur eingeschränkt sicher.“ - „Beim Krafttraining ist die aktuelle Qualitätsbewertung nur orientierend, da zentrale Kraftparameter wie Satzanzahl, Wiederholungen und Last bisher nicht erfasst werden.“ - „Du erreichst hohe Belastungswerte, aber die Zielkriterien des gewählten Trainingstyps werden nur teilweise erfüllt. Das spricht eher für Belastung als für zielgenaue Qualität.“ ### 16.20 Empfehlungen ohne KI #### Automatische Empfehlungen ```yaml rule_based_recommendations: - trigger: "quality_score_28d < 60 and frequency_28d >= threshold" message: "Du trainierst regelmäßig, triffst aber die Qualitätskriterien des Typs noch nicht stabil. Prüfe Zieltempo, Dauer und Intensitätssteuerung." - trigger: "confidence_score < 50" message: "Die Bewertung ist nur eingeschränkt belastbar. Ergänze – wenn möglich – RPE oder Herzfrequenzdaten." - trigger: "training_type == strength and missing_strength_specific_metrics == true" message: "Für Krafttraining sollten später Satzanzahl, Wiederholungen und Last ergänzt werden, da Puls- und Kaloriendaten nur begrenzt aussagekräftig sind." - trigger: "high_load_low_quality_pattern == true" message: "Mehr Belastung führt aktuell nicht automatisch zu besserer Trainingsqualität. Wahrscheinlich ist die Steuerung des Reizes noch zu ungenau." ``` ### 16.21 API-/Backend-Contract für Coding Agents ```yaml POST /activity/{id}/evaluate-quality request: activity_id: uuid profile_id: uuid training_type_id: uuid evaluation_mode: default response: quality_score: 0-100 quality_label: good load_score: 0-100 confidence_score: 0-100 strategy_used: weighted_score mandatory_rules_passed: true rules_passed_count: 5 rules_total_count: 7 parameter_breakdown: - key: duration_min raw_value: 42 normalized_score: 100 weight: 0.25 passed: true contribution: 25.0 explanation: "liegt im Zielbereich 30-75 min" - key: avg_hr raw_value: 146 normalized_score: 82 weight: 0.20 passed: true contribution: 16.4 explanation: "leicht oberhalb des idealen Bereichs" warnings: - "hrmax_is_estimated" exclusion_reason: null ``` ### 16.22 Admin-UI für Trainingstyp-Regeln Die Admin-Oberfläche sollte je Trainingstyp editierbar machen: ```yaml admin_quality_rule_editor: fields: - strategy - min_rules_required - label_thresholds - missing_data_policy - mandatory_gate_mode - parameter_rows[] parameter_rows: - source_field - comparator - thresholds - scoring_curve - weight - required - mandatory - rationale_text ``` **Zusätzlicher Praxisnutzen:** Wenn `rationale_text` gepflegt wird, kann die UI dem Nutzer später direkt erklären, warum diese Regel existiert. ### 16.23 Fachliches Fazit zur Trainingsscore-Erweiterung Die von dir beschriebene Architektur ist **grundsätzlich sehr gut anschlussfähig**, weil sie sportartspezifische Regeln pro Trainingstyp erlaubt. Fachlich optimal wird sie aber erst dann, wenn: 1. **Qualität, Last und Confidence getrennt werden** 2. **Parameter pro Trainingstyp unterschiedlich gewichtet werden** 3. **Mandatory Gates vor den eigentlichen Score geschaltet werden** 4. **relative, personenbezogene Zielbereiche absolute Schwellen möglichst oft ersetzen** 5. **Krafttraining später eigene Strukturmetriken erhält** 6. **RPE systematisch erfasst wird** 7. **fehlende Daten nicht nur den Score, sondern auch die Confidence beeinflussen** --- ## 17. Quellen / fachliche Fundierung Die Architektur oben orientiert sich an den folgenden belastbaren Quellen und konsensnahen Leitlinien: 1. **Bourdon et al. – Monitoring Athlete Training Loads: Consensus Statement** Kernaussage: Interne und externe Last sollten gemeinsam betrachtet werden; idealerweise werden objektive und subjektive Werkzeuge kombiniert. Link: https://pubmed.ncbi.nlm.nih.gov/28463642/ Zusätzlich: https://journals.humankinetics.com/view/journals/ijspp/12/s2/article-pS2-161.pdf 2. **Halson – Monitoring Training Load to Understand Fatigue in Athletes** Kernaussage: Lastmonitoring hilft, Anpassung, Müdigkeit und Risiko von Fehlsteuerung besser zu erkennen. Link: https://pmc.ncbi.nlm.nih.gov/articles/PMC4213373/ 3. **Haddad et al. – Session-RPE Method for Training Load Monitoring: Validity, Ecological Usefulness, and Influencing Factors** Kernaussage: sRPE ist ein praxistauglicher interner Lastmarker, der Intensität und Dauer integriert. Link: https://pubmed.ncbi.nlm.nih.gov/29163016/ Zusätzlich: https://pmc.ncbi.nlm.nih.gov/articles/PMC5673663/ 4. **Coyne et al. – The Current State of Subjective Training Load Monitoring** Kernaussage: subjektive und objektive Lastmaße sind nicht austauschbar; subjektive Maße erfassen zusätzliche psychophysiologische Dimensionen. Link: https://pmc.ncbi.nlm.nih.gov/articles/PMC6301906/ Update/Follow-up: https://pmc.ncbi.nlm.nih.gov/articles/PMC9012875/ 5. **ACSM – Monitoring Aerobic Exercise Intensity / Exercise Intensity Guidance** Kernaussage: Intensität sollte über mehrere Verfahren überwacht werden, darunter Herzfrequenz und RPE. Link: https://acsm.org/monitoring-aerobic-exercise-intensity/ Zusätzlich: https://acsm.org/wp-content/uploads/2025/02/Exercise-intensity-infographic-PDF.pdf 6. **ACSM – We Can and Should Do Better When Estimating Cardiorespiratory Fitness** Kernaussage: geschätzte HRmax und indirekte Intensitätssteuerung haben individuelle Fehler; reine HR-Grenzwerte sind daher begrenzt präzise. Link: https://acsm.org/estimating-cardiorespiratory-fitness/ 7. **Tanaka et al. – Age-predicted maximal heart rate revisited** Kernaussage: HRmax-Schätzformeln sind populationsbasiert und individuell ungenau; 208 − 0.7 × Alter ist robuster als 220 − Alter, bleibt aber eine Schätzung. Link: https://pubmed.ncbi.nlm.nih.gov/11153730/ 8. **ACSM Position Stand – Progression Models in Resistance Training for Healthy Adults** Kernaussage: Krafttraining sollte über echte Struktur- und Progressionsmerkmale gesteuert werden; Pulsdaten allein reichen dafür nicht. Link: https://pubmed.ncbi.nlm.nih.gov/19204579/