mitai-jinkendo/.claude/docs/audit/platzhalter/placeholder_requirements_for_development.md
Lars 7940dc7560 docs: Struktur .claude/docs versionieren, working/, Gitea-Index, Regeln
- .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
2026-04-08 13:01:49 +02:00

16 KiB
Raw Blame 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:

  • 0100?
  • 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.