# Placeholder-Gap- und Governance-Dokument für Vibe-Coding / Entwickler **Datei:** `placeholder_requirements_for_development.md` **Zweck:** Arbeitsgrundlage für Entwickler, damit die Prompt-Bibliothek mit stabilen, fachlich sauberen Platzhaltern betrieben werden kann. **Status:** Draft / arbeitsfähig **Bezug:** Prompt-Bibliothek, Report-Steckbriefe, bestehender Placeholder-Export, Datenarchitektur --- ## 1. Ziel dieses Dokuments Dieses Dokument beschreibt: 1. **welche Platzhalter bereits vorhanden und nutzbar sind** 2. **welche Platzhalter fachlich geschärft werden müssen** 3. **welche neuen Platzhalter für V1 zusätzlich bereitgestellt werden sollten** 4. **welche Platzhalter nur als spätere Erweiterung gelten** 5. **welche Governance-Regeln für Benennung, Semantik und Versionierung gelten** Wichtig: Die Prompt-Bibliothek darf **nicht** darauf angewiesen sein, dass Folgechats spontan neue Platzhalter erfinden oder bestehende umdeuten. Die API-/Export-Seite muss deshalb eine **kontrollierte, stabile Placeholder-Oberfläche** bereitstellen. --- ## 2. Grundprinzipien für Platzhalter ### 2.1 Platzhalter sind API-Verträge Ein Platzhalter ist kein freier Text, sondern ein **stabiler Vertrag** zwischen: - Datenmodell / Berechnungslogik - Export-/Aggregationsebene - Prompt-System - UI / Auswertung / QA ### 2.2 Platzhalter dürfen nicht stillschweigend umdefiniert werden Ein einmal eingeführter Platzhalter darf nicht: - semantisch verändert werden - in einem anderen Zeitraum berechnet werden - seine Einheit ändern - stillschweigend von Rohwert auf Trendwert wechseln ### 2.3 Fehlende Werte müssen explizit sein Wenn ein Wert nicht berechnet werden kann, soll dies **strukturiert** erfolgen, nicht als vager Freitext. Bevorzugt: - `null` - oder ein strukturierter Verfügbarkeitsstatus Nur wenn das bestehende System es erzwingt, darf vorläufig `"nicht verfügbar"` verwendet werden. ### 2.4 Platzhalter sollen möglichst atomar sein Bevorzugt: - einzelne, klar definierte Felder Nicht bevorzugt: - sehr große, uneinheitliche Freitext-Blobs, die mehrere Logiken mischen Trotzdem dürfen kompakte Summary-Platzhalter als Zusatz bleiben, z. B. für einfache Prompts oder UI-Kurztexte. ### 2.5 Zeitbezug muss immer eindeutig sein Jeder zeitabhängige Platzhalter braucht klaren Fensterbezug: - `*_today` - `*_7d` - `*_14d` - `*_28d` - `*_90d` --- ## 3. Bereits vorhandene und gut nutzbare Platzhalter Diese Platzhalter sind bereits vorhanden und für V1 sinnvoll nutzbar. ## 3.1 Profil / Stammdaten - `name` - `age` - `height` - `geschlecht` ## 3.2 Körper - `weight_aktuell` - `weight_trend` - `kf_aktuell` - `bmi` - `weight_7d_median` - `waist_hip_ratio` - `caliper_summary` - `circ_summary` ## 3.3 Ernährung - `kcal_avg` - `protein_avg` - `carb_avg` - `fat_avg` - `energy_balance_7d` - `protein_g_per_kg` - `protein_adequacy_28d` - `macro_consistency_score` - `energy_deficit_surplus` ## 3.4 Training / Aktivität - `activity_summary` - `activity_detail` - `trainingstyp_verteilung` - `training_minutes_week` - `training_frequency_7d` - `quality_sessions_pct` - `proxy_internal_load_7d` - `monotony_score` - `strain_score` - `rest_day_compliance` ## 3.5 Schlaf / Erholung - `sleep_avg_duration` - `sleep_avg_quality` - `rest_days_count` - `sleep_avg_duration_7d` - `sleep_debt_hours` - `sleep_regularity_proxy` - `sleep_quality_7d` ## 3.6 Vitalwerte - `vitals_avg_hr` - `vitals_avg_hrv` - `vitals_vo2_max` - `rhr_vs_baseline_pct` - `vo2max_trend_28d` ## 3.7 Scores / Meta - `nutrition_score` - `activity_score` - `recovery_score` - `data_quality_score` ## 3.8 Ziele / Fokus - `top_goal_name` - `top_goal_progress_pct` - `top_goal_status` - `top_focus_area_name` - `top_focus_area_progress` - `focus_cat_körper_progress` - `focus_cat_körper_weight` - `focus_cat_ernährung_progress` - `focus_cat_ernährung_weight` - `focus_cat_aktivität_progress` - `focus_cat_aktivität_weight` - `focus_cat_recovery_progress` - `focus_cat_recovery_weight` - `focus_cat_vitalwerte_progress` - `focus_cat_vitalwerte_weight` - `focus_cat_mental_progress` - `focus_cat_mental_weight` - `focus_cat_lebensstil_progress` - `focus_cat_lebensstil_weight` ## 3.9 Zeitraum - `datum_heute` - `zeitraum_7d` - `zeitraum_30d` - `zeitraum_90d` ## 3.10 Korrelation / Diagnose - `correlation_energy_weight_lag` --- ## 4. Bereits vorhandene Platzhalter mit Schärfungsbedarf Diese Platzhalter existieren, sind aber fachlich oder operativ noch nicht sauber genug. ## 4.1 "nicht verfügbar" als String Betroffen u. a.: - `goal_progress_score` - `body_progress_score` - `fm_28d_change` - `lbm_28d_change` - `waist_28d_delta` - `recomposition_quadrant` - `ability_balance_strength` - `ability_balance_endurance` - `hrv_vs_baseline_pct` - weitere ähnliche Felder ### Problem - Die Prompt-Logik muss String-Inhalte interpretieren. - Folgeprompts können schwer unterscheiden zwischen: - echter Null - fehlendem Wert - noch nicht implementiert - Daten reichen nicht ### Empfehlung Zusätzlich zu jedem kritischen Feld: - `*_available: true|false` - optional `*_reason_unavailable` Oder besser: - ein strukturiertes Domain-Availability-Objekt --- ## 4.2 Prozent-/Score-Platzhalter ohne standardisierte Skala Betroffen: - `quality_sessions_pct` - `protein_adequacy_28d` - `macro_consistency_score` - `nutrition_score` - `activity_score` - `recovery_score` - `data_quality_score` ### Problem Die Skala ist im Prompt nicht immer selbsterklärend: - 0–100? - Prozent? - normierter Score? - je höher desto besser? ### Empfehlung Für jeden solchen Platzhalter intern dokumentieren: - Skala - Richtung - Berechnungsbasis - sinnvolle Interpretationszonen Optional zusätzliche Entwickler-Metadaten: - `score_meta_` --- ## 4.3 Summary-Felder als alleinige Quelle Betroffen: - `activity_summary` - `caliper_summary` - `circ_summary` ### Problem Diese Felder sind nützlich für kompakte Reports, aber für robuste Mehrstufigkeit oft zu grob. ### Empfehlung Summary-Felder behalten, aber ergänzen durch strukturierte Roh-/Aggregatfelder. --- ## 4.4 Fokuskategorien nicht sauber auf 100 normiert Im Export fallen z. B. Gewichte wie `135.0` oder andere Summen auf. ### Problem Für Prompts und Zielgewichtung ist unklar: - sind das Rohgewichte? - normierte Gewichte? - gruppeninterne Punkte? - Prozentangaben? ### Empfehlung Klar trennen zwischen: - `focus_cat_*_weight_raw` - `focus_cat_*_weight_normalized` Und ebenso für einzelne Fokusbereiche. --- ## 4.5 Zeitfenster-Mischung Einige Felder sind 7d, andere 14d, 28d oder unklar verdichtet. ### Problem Prompts können unabsichtlich Zeitfenster vergleichen, die nicht zusammenpassen. ### Empfehlung Zeitfenster im Feldnamen vereinheitlichen und konsequent dokumentieren. --- ## 5. Neue Platzhalter, die für V1 zusätzlich bereitgestellt werden sollten Diese Liste ist die wichtigste operative To-do-Liste für die Entwicklung. ## 5.1 Höchste Priorität – Zielsystem / Fokus / Kontext ### P1. `goal_summary_json` **Zweck:** kompakte, strukturierte Zielübersicht für Zielreports und zielgewichtete Synthesen. **Sollinhalt:** - Liste aktiver Ziele - je Ziel: - ID - Name - Typ - Status - Startwert - Zielwert - aktueller Wert - Fortschritt - Zieltermin (falls vorhanden) - primary_flag - zugeordnete Fokusbereiche **Warum wichtig:** Die aktuelle Prompt-Bibliothek braucht mehr als nur `top_goal_name`. --- ### P2. `focus_area_summary_json` **Zweck:** strukturierte Liste der aktiven Fokusbereiche. **Sollinhalt:** - Fokusbereichsname - Gruppe/Kategorie - Rohgewicht - normiertes Gewicht - aktueller Progress - verknüpfte Ziele **Warum wichtig:** Top-Focus allein reicht für personalisierte Reports nicht. --- ### P3. `goal_progress_score_available` **Typ:** bool **Warum:** sauber zwischen fehlend und vorhanden unterscheiden. ### P4. `body_progress_score_available` **Typ:** bool **Warum:** dito. --- ## 5.2 Höchste Priorität – Domain Availability / Confidence ### P5. `domain_availability_json` **Zweck:** zentrale Verfügbarkeit pro Domäne. **Sollinhalt:** - body - nutrition - activity - sleep - recovery - vitals - goals - focus_areas - correlations jeweils mit: - available - confidence - main_gaps - last_valid_window **Warum wichtig:** Vereinfacht Fallbacks und verhindert Scheinpräzision. --- ### P6. `domain_confidence_json` Falls `domain_availability_json` nicht reicht oder zu groß wird. --- ### P7. `critical_missing_fields_json` **Zweck:** welche fehlenden Daten würden den größten Erkenntnisgewinn bringen? **Warum wichtig:** Für Datenqualitätsreport und Nutzerführung. --- ## 5.3 Höchste Priorität – Körperentwicklung ### P8. `fm_28d_change_available` ### P9. `lbm_28d_change_available` ### P10. `waist_28d_delta_available` ### P11. `recomposition_quadrant_available` **Warum:** Körper- und Plateau-Reports brauchen robuste Verfügbarkeitslogik. --- ### P12. `body_change_summary_json` **Zweck:** strukturierte Körperentwicklung. **Sollinhalt:** - weight trend - FM delta - LBM delta - waist delta - hip delta - recomposition quadrant - confidence --- ## 5.4 Höchste Priorität – Training / Belastung ### P13. `activity_structure_json` **Zweck:** kompakter Trainingsstrukturblock. **Sollinhalt:** - Volumen - Frequenz - Typverteilung - Qualitätsanteil - Lastniveau - Monotonie - Strain - Rest-day compliance - auffällige Muster --- ### P14. `training_quality_score` **Zweck:** standardisierte Trainingsqualitätsbewertung über Sessions hinweg **Warum:** Aktuell gibt es `quality_sessions_pct`, aber noch keinen robusten verdichteten Qualitätsanker. --- ### P15. `load_balance_class` Wertebeispiele: - low - moderate - high - strained **Warum:** Erleichtert Diagnose-Prompts. --- ## 5.5 Höchste Priorität – Schlaf / Recovery / Vitals ### P16. `sleep_summary_json` **Sollinhalt:** - duration - quality - debt - regularity - trend - confidence ### P17. `recovery_summary_json` **Sollinhalt:** - recovery score - main drivers - RHR status - HRV status - recent load interaction - confidence ### P18. `vitals_summary_json` **Sollinhalt:** - resting HR - HRV - VO2max - trend - baseline deviation - confidence ### P19. `hrv_vs_baseline_pct_available` ### P20. `rhr_vs_baseline_pct_available` --- ## 5.6 Höchste Priorität – Korrelation / Diagnose ### P21. `correlation_summary_json` **Zweck:** strukturierte Zusammenfassung mehrerer Korrelationen / Lag-Beziehungen. **Sollinhalt:** - energy_weight_lag - training_hrv_lag - training_rhr_lag - sleep_recovery_lag - confidence je Zusammenhang --- ### P22. `plateau_status` Wertebeispiele: - likely - possible - not_detected - insufficient_data ### P23. `top_drivers_positive_json` ### P24. `top_drivers_negative_json` **Warum:** Top-Driver-Report und Plateau-Detektor profitieren stark von einer vorberechneten Zwischenebene. --- ## 5.7 Höchste Priorität – Energieverfügbarkeit / Schutzlogik ### P25. `underfueling_risk_flag` **Typ:** bool / enum ### P26. `underfueling_risk_reason` **Typ:** text / enum / json ### P27. `energy_availability_summary_json` **Sollinhalt:** - intake adequacy - deficit magnitude - load context - recovery context - warning level - confidence --- ## 6. Mittlere Priorität – sollte bald folgen ## 6.1 Gesundheitsstabilität ### P28. `health_stability_score` ### P29. `health_stability_summary_json` ## 6.2 Blutdruck ### P30. `blood_pressure_summary_json` **Sollinhalt:** - mean systolic/diastolic - category - contexts - trend - irregularity flags - confidence ## 6.3 Fokus-/Zielgewichtung ### P31. `goal_weighted_priority_json` **Zweck:** priorisierte Ziel-/Fokuslogik für Synthese ## 6.4 Reporting-Hilfsfelder ### P32. `main_constraint_json` ### P33. `main_strength_json` ### P34. `next_best_actions_json` --- ## 7. Niedrigere Priorität / spätere Ausbaustufe Diese Platzhalter sind wertvoll, aber für V1 nicht zwingend: - `session_rpe` - `fatigue_score` - `pain_flag` - `illness_flag` - `travel_flag` - `competition_flag` - `measurement_time_consistency` - `training_age` - `secondary_goals_json` - `waist_to_height_ratio` - `sleep_segment_quality_score` - `steps_summary_json` --- ## 8. Platzhalter, die geschärft statt neu erfunden werden sollten Statt wild neue Namen einzuführen, sollten folgende Bereiche zuerst **semantisch sauber definiert** werden. ## 8.1 Goal / Focus Bestehend, aber zu flach: - `top_goal_name` - `top_goal_progress_pct` - `top_focus_area_name` - `top_focus_area_progress` **Schärfung:** Ergänzen durch strukturierte JSONs, nicht ersetzen. ## 8.2 Körperentwicklung Bestehend, aber oft nicht verfügbar: - `fm_28d_change` - `lbm_28d_change` - `waist_28d_delta` - `recomposition_quadrant` **Schärfung:** Verfügbarkeitsflags + strukturierte Summary. ## 8.3 Activity-Qualität Bestehend: - `quality_sessions_pct` **Schärfung:** ergänzen durch: - `training_quality_score` - ggf. `quality_sessions_count` - optional `quality_definition_version` ## 8.4 Recovery Bestehend: - `recovery_score` **Schärfung:** ergänzen durch Komponenten-/Treiberdarstellung. ## 8.5 Data Quality Bestehend: - `data_quality_score` **Schärfung:** ergänzen durch Domain-Ebene und konkrete Lückenbeschreibung. --- ## 9. Governance-Regeln für Platzhalter Diese Regeln sollten für Entwicklung und Prompting verbindlich sein. ### G1. Keine eigenmächtige Umbenennung Bestehende Platzhalter dürfen nicht ohne Migration umbenannt werden. ### G2. Keine stillschweigende Semantikänderung Wenn Berechnungslogik geändert wird, braucht der Platzhalter: - Versionierung intern - oder einen neuen Namen ### G3. Neue Platzhalter nur kontrolliert Neue Platzhalter nur einführen, wenn: - Zweck klar - Datenquelle klar - Zeitfenster klar - Einheit klar - Fallback klar ### G4. JSON vor Freitext Für komplexe Mehrstufenlogik sollen neue Platzhalter bevorzugt als strukturierte JSON-Container bereitgestellt werden. ### G5. Zeitfenster im Namen Zeitfenster müssen im Namen explizit sein, falls nicht universell. ### G6. Verfügbarkeit trennen von Inhalt Für kritische Felder besser: - Wert - Verfügbarkeitsflag - optional Grund ### G7. Keine Ad-hoc-Platzhalter in Folgechats Folgechats für Prompt-Ausarbeitung dürfen keine neuen Platzhalter stillschweigend voraussetzen. --- ## 10. Konkrete Entwickler-Backlog-Empfehlung ## Sprint / Paket 1 – notwendig für robuste V1-Reports 1. `goal_summary_json` 2. `focus_area_summary_json` 3. `domain_availability_json` 4. `critical_missing_fields_json` 5. Verfügbarkeitsflags für Body-Change-Felder 6. `sleep_summary_json` 7. `recovery_summary_json` 8. `activity_structure_json` 9. `correlation_summary_json` 10. `plateau_status` ## Sprint / Paket 2 – starke Verbesserung der Ziel- und Diagnoseebene 1. `top_drivers_positive_json` 2. `top_drivers_negative_json` 3. `energy_availability_summary_json` 4. `underfueling_risk_flag` 5. `health_stability_score` 6. `blood_pressure_summary_json` 7. `goal_weighted_priority_json` ## Sprint / Paket 3 – spätere Verfeinerung 1. `training_quality_score` 2. `session_rpe` 3. `fatigue_score` 4. `measurement_time_consistency` 5. `illness_flag` / `travel_flag` 6. `waist_to_height_ratio` --- ## 11. Abnahmekriterien für die Placeholder-Schicht Die Placeholder-Schicht ist fachlich gut genug, wenn: 1. **alle Core-Reports der V1-Bibliothek ohne stillschweigende Erfindungen lauffähig sind** 2. fehlende Werte **strukturiert** behandelt werden können 3. Ziel-/Fokus-Logik nicht nur über ein einzelnes „Top“-Feld abgebildet wird 4. Datenqualität und Confidence nicht nur global, sondern domänenspezifisch beschrieben werden 5. Diagnose-Reports mindestens auf vorbereiteten Zwischenobjekten statt nur Freitextsummaries aufsetzen können --- ## 12. Kurzfazit Für V1 ist die Placeholder-Basis bereits gut, aber noch nicht stabil genug für eine große professionelle Prompt-Bibliothek. Der größte Handlungsbedarf liegt in vier Bereichen: - **strukturierte Ziel-/Fokus-JSONs** - **domänenspezifische Availability-/Confidence-Objekte** - **robustere Diagnose-/Driver-/Plateau-Zwischenfelder** - **saubere Verfügbarkeits- und Schärfungslogik für kritische Body-/Recovery-Felder** Dieses Dokument ist bewusst entwicklungsnah formuliert und soll als Arbeitsgrundlage für die Implementierung dienen.