mitai-jinkendo/.claude/docs/audit/platzhalter/placeholder_requirements_for_development.md

704 lines
16 KiB
Markdown
Raw Normal View History

# 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_<name>`
---
## 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.