- Implemented a new test script `test_activity_registration.py` to verify the registration of Activity placeholders, ensuring all expected placeholders are registered, have complete metadata, and correct evidence distribution. - Created a new smoke test suite `dev-smoke-test.spec.js` to validate the login process, dashboard loading, and navigation to key sections, while checking for critical console errors. - Added a JSON file `test-results.last-run.json` to track the status of the last test run, indicating failures if any tests do not pass.
1 line
441 KiB
JSON
1 line
441 KiB
JSON
{"schema_version":"1.0.0","export_date":"2026-04-02T11:32:04.925481","profile_id":"e3d384e9-66d6-4ffc-ba8d-8dc47c99f076","legacy":{"all_placeholders":{"name":"Lars","age":"55","height":"179.00","geschlecht":"männlich","weight_aktuell":"85.8 kg","weight_trend":"sinkend (-0.5 kg in 28 Tagen)","kf_aktuell":"19.9%","bmi":"26.8","caliper_summary":"19.9% (jackson3 am 2026-03-13)","circ_summary":"Nacken 34.0cm (vor 1 Woche), Brust 99.3cm (vor 2 Wochen), Taille 91.2cm (vor 2 Wochen), Bauch 93.7cm (vor 2 Wochen), Hüfte 101.2cm (vor 2 Wochen), Oberschenkel 61.6cm (vor 2 Wochen), Wade 39.7cm (vor 2 Wochen), Arm 36.3cm (vor 2 Wochen)","goal_weight":"82.0","goal_bf_pct":"14.0","kcal_avg":"1534 kcal/Tag (Ø 30 Tage)","protein_avg":"114g/Tag (Ø 30 Tage)","carb_avg":"152g/Tag (Ø 30 Tage)","fat_avg":"45g/Tag (Ø 30 Tage)","nutrition_days":"31","protein_ziel_low":"137","protein_ziel_high":"188","activity_summary":"17 Einheiten in 14 Tagen (Ø 66 min/Einheit, 5728 kcal gesamt)","activity_detail":"2026-03-28: Traditionelles Krafttraining (47min, 311kcal HF=103)\n2026-03-28: Traditionelles Krafttraining (46min, 181kcal HF=102)\n2026-03-27: Outdoor Spaziergang (83min, 309kcal HF=79)\n2026-03-26: Matrial Arts (195min, 1000kcal HF=85)\n2026-03-25: Traditionelles Krafttraining (50min, 182kcal HF=94)\n2026-03-24: Matrial Arts (69min, 386kcal HF=103)\n2026-03-24: Outdoor Ausführen (46min, 162kcal HF=122)\n2026-03-24: Sportarten auf Rollschuhen (47min, 544kcal HF=136)\n2026-03-23: Traditionelles Krafttraining (48min, 179kcal HF=99)\n2026-03-22: Cardio Dance (115min, 399kcal HF=99)\n2026-03-22: Sportarten auf Rollschuhen (45min, 440kcal HF=143)\n2026-03-21: Traditionelles Krafttraining (35min, 141kcal HF=108)\n2026-03-21: Outdoor Spaziergang (62min, 325kcal HF=86)\n2026-03-20: Outdoor Spaziergang (74min, 379kcal HF=88)\n2026-03-19: Traditionelles Krafttraining (44min, 179kcal HF=102)\n2026-03-19: Matrial Arts (106min, 599kcal HF=103)\n2026-03-19: Matrial Arts (2min, 12kcal HF=96)","trainingstyp_verteilung":"strength: 35%, martial_arts: 23%, cardio: 17%","sleep_avg_duration":"6.8h","sleep_avg_quality":"34% (Deep+REM)","rest_days_count":"2 Ruhetage","vitals_avg_hr":"51 bpm","vitals_avg_hrv":"nicht verfügbar","vitals_vo2_max":"35.5 ml/kg/min","datum_heute":"02.04.2026","zeitraum_7d":"letzte 7 Tage","zeitraum_30d":"letzte 30 Tage","zeitraum_90d":"letzte 90 Tage","goal_progress_score":"51","body_progress_score":"41","nutrition_score":"71","activity_score":"37","recovery_score":"74","data_quality_score":"81","top_goal_name":"Zielgewicht","top_goal_progress_pct":"nicht verfügbar","top_goal_status":"active","top_focus_area_name":"Rhythmusgefühl","top_focus_area_progress":"nicht verfügbar","focus_cat_körper_progress":"41","focus_cat_körper_weight":"100.0","focus_cat_ernährung_progress":"71","focus_cat_ernährung_weight":"135.0","focus_cat_aktivität_progress":"37","focus_cat_aktivität_weight":"30.0","focus_cat_recovery_progress":"74","focus_cat_recovery_weight":"0.0","focus_cat_vitalwerte_progress":"74","focus_cat_vitalwerte_weight":"23.0","focus_cat_mental_progress":"74","focus_cat_mental_weight":"0.0","focus_cat_lebensstil_progress":"81","focus_cat_lebensstil_weight":"23.0","weight_7d_median":"85.8","weight_28d_slope":"nicht verfügbar","weight_90d_slope":"nicht verfügbar","fm_28d_change":"nicht verfügbar","lbm_28d_change":"nicht verfügbar","waist_28d_delta":"nicht verfügbar","hip_28d_delta":"nicht verfügbar","chest_28d_delta":"nicht verfügbar","arm_28d_delta":"nicht verfügbar","thigh_28d_delta":"nicht verfügbar","waist_hip_ratio":"0.901","recomposition_quadrant":"nicht verfügbar","energy_balance_7d":"-1421","energy_deficit_surplus":"deficit","protein_g_per_kg":"1.1","protein_days_in_target":"1/8","protein_adequacy_28d":"88","macro_consistency_score":"70","intake_volatility":"moderate","training_minutes_week":"373","training_frequency_7d":"4","quality_sessions_pct":"10","ability_balance_strength":"nicht verfügbar","ability_balance_endurance":"nicht verfügbar","ability_balance_mental":"nicht verfügbar","ability_balance_coordination":"nicht verfügbar","ability_balance_mobility":"nicht verfügbar","proxy_internal_load_7d":"373","monotony_score":"nicht verfügbar","strain_score":"nicht verfügbar","rest_day_compliance":"0","vo2max_trend_28d":"1.9","hrv_vs_baseline_pct":"nicht verfügbar","rhr_vs_baseline_pct":"nicht verfügbar","sleep_avg_duration_7d":"5.9","sleep_debt_hours":"nicht verfügbar","sleep_regularity_proxy":"34.5","recent_load_balance_3d":"0","sleep_quality_7d":"nicht verfügbar","correlation_energy_weight_lag":"{\"best_lag\": 7, \"correlation\": -0.45, \"direction\": \"negative\", \"confidence\": \"medium\", \"data_points\": 80}","correlation_protein_lbm":"{\"best_lag\": 0, \"correlation\": 0.32, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 28}","correlation_load_hrv":"{\"best_lag\": 1, \"correlation\": -0.38, \"direction\": \"negative\", \"confidence\": \"medium\", \"data_points\": 25}","correlation_load_rhr":"{\"best_lag\": 1, \"correlation\": 0.42, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 25}","correlation_sleep_recovery":"{\"correlation\": 0.65, \"direction\": \"positive\", \"confidence\": \"high\", \"data_points\": 28}","plateau_detected":"{}","top_drivers":"[{\"factor\": \"Energiebilanz\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Sehr großes Defizit (-1421 kcal/Tag) → Risiko für Magermasseverlust\"}, {\"factor\": \"Schlafdauer\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Schlafdauer zu gering (5.9h/Nacht < 7h Empfehlung)\"}, {\"factor\": \"Trainingsqualität\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Nur 10% der Trainings mit guter Qualität\"}, {\"factor\": \"Ruhetagsrespekt\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Ruhetage häufig ignoriert (0%) → Übertrainingsrisiko\"}, {\"factor\": \"Proteinzufuhr\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Proteinzufuhr konstant im Zielbereich (Score: 88)\"}, {\"factor\": \"Schlafregelmäßigkeit\", \"status\": \"förderlich\", \"evidence\": \"mittel\", \"reason\": \"Schlafrhythmus regelmäßig (Abweichung: 34 min)\"}, {\"factor\": \"Trainingskonsistenz\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Trainingsfrequenz im Zielbereich (4× pro Woche)\"}, {\"factor\": \"Recovery\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Recovery Score gut (74/100)\"}]","active_goals_json":"[{\"id\": \"84212e3d-39e5-4a16-92c5-6b3115a61050\", \"goal_type\": \"rhr\", \"name\": \"Ruhepuls\", \"target_value\": \"52.00\", \"target_date\": null, \"current_value\": \"51.00\", \"start_value\": \"54.00\", \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": true, \"created_at\": \"2026-03-26 20:58:57.564807\"}, {\"id\": \"a76dfccc-a543-42e5-8665-471a97eb2078\", \"goal_type\": \"sport_pro_woche\", \"name\": null, \"target_value\": \"3.00\", \"target_date\": null, \"current_value\": null, \"start_value\": null, \"start_date\": \"2026-03-27\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-27 21:11:23.476309\"}, {\"id\": \"4943a889-50ca-4b76-999c-6de0c461b8d7\", \"goal_type\": \"vo2max\", \"name\": null, \"target_value\": \"43.00\", \"target_date\": null, \"current_value\": \"35.50\", \"start_value\": \"35.50\", \"start_date\": \"2026-03-27\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-27 05:17:09.626589\"}, {\"id\": \"fb9b9701-d883-4201-9ee6-c1729b72d551\", \"goal_type\": \"bp\", \"name\": null, \"target_value\": \"120.00\", \"target_date\": null, \"current_value\": null, \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:58:45.860130\"}, {\"id\": \"b3cfb6d1-42e2-4f64-8d16-3f89ac37295c\", \"goal_type\": \"flexibility\", \"name\": null, \"target_value\": \"120.00\", \"target_date\": \"2026-10-01\", \"current_value\": \"30.00\", \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:57:40.832316\"}, {\"id\": \"370afea2-e744-40e2-b778-bebfacebe270\", \"goal_type\": \"strength\", \"name\": null, \"target_value\": \"120.00\", \"target_date\": \"2026-05-31\", \"current_value\": \"88.00\", \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:56:28.974447\"}, {\"id\": \"72dc0225-05a4-4c7f-a27c-da0f5619cb52\", \"goal_type\": \"body_fat\", \"name\": \"K\\u00f6rperfett\", \"target_value\": \"14.00\", \"target_date\": \"2026-05-30\", \"current_value\": \"19.90\", \"start_value\": \"19.90\", \"start_date\": \"2026-03-13\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:54:29.747574\"}, {\"id\": \"acfba058-dd5c-4190-9168-5126a3195a56\", \"goal_type\": \"lean_mass\", \"name\": null, \"target_value\": \"25.00\", \"target_date\": \"2026-05-31\", \"current_value\": \"20.00\", \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:44:18.678284\"}, {\"id\": \"4bd8bcd9-f8b8-424b-9871-a01c15058a52\", \"goal_type\": \"weight\", \"name\": \"Zielgewicht\", \"target_value\": \"82.00\", \"target_date\": \"2026-05-31\", \"current_value\": \"85.20\", \"start_value\": \"87.50\", \"start_date\": \"2026-02-22\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 15:32:21.566137\"}]","active_goals_md":"| Ziel | Aktuell | Ziel | Progress | Status |\n|------|---------|------|----------|--------|\n| Ruhepuls | 51.00 | 52.00 | 100% | 🎯 |\n| sport_pro_woche | - | 3.00 | - | ○ |\n| vo2max | 35.50 | 43.00 | 0% | ○ |\n| bp | - | 120.00 | - | ○ |\n| flexibility | 30.00 | 120.00 | - | ○ |\n| strength | 88.00 | 120.00 | - | ○ |\n| Körperfett | 19.90 | 14.00 | 0% | ○ |\n| lean_mass | 20.00 | 25.00 | - | ○ |\n| Zielgewicht | 85.20 | 82.00 | 41% | ○ |","focus_areas_weighted_json":"[{\"key\": \"rhythm\", \"name\": \"Rhythmusgef\\u00fchl\", \"category\": \"coordination\", \"weight\": 55.0}, {\"key\": \"protein_intake\", \"name\": \"Proteinzufuhr\", \"category\": \"nutrition\", \"weight\": 50.0}, {\"key\": \"calorie_balance\", \"name\": \"Kalorienbilanz\", \"category\": \"nutrition\", \"weight\": 50.0}, {\"key\": \"body_recomposition\", \"name\": \"Body Recomposition\", \"category\": \"body_composition\", \"weight\": 40.0}, {\"key\": \"anaerobic_endurance\", \"name\": \"Anaerobe Ausdauer\", \"category\": \"endurance\", \"weight\": 35.0}, {\"key\": \"macro_consistency\", \"name\": \"Makro-Konsistenz\", \"category\": \"nutrition\", \"weight\": 35.0}, {\"key\": \"weight_loss\", \"name\": \"Gewichtsverlust\", \"category\": \"body_composition\", \"weight\": 30.0}, {\"key\": \"muscle_gain\", \"name\": \"Muskelaufbau\", \"category\": \"body_composition\", \"weight\": 30.0}, {\"key\": \"strength\", \"name\": \"Maximalkraft\", \"category\": \"training\", \"weight\": 25.0}, {\"key\": \"general_health\", \"name\": \"Allgemeine Gesundheit\", \"category\": \"health\", \"weight\": 23.0}, {\"key\": \"aerobic_endurance\", \"name\": \"Aerobe Ausdauer\", \"category\": \"endurance\", \"weight\": 10.0}, {\"key\": \"flexibility\", \"name\": \"Beweglichkeit\", \"category\": \"training\", \"weight\": 5.0}]","focus_areas_weighted_md":"- **Rhythmusgefühl**: 55.0%\n- **Proteinzufuhr**: 50.0%\n- **Kalorienbilanz**: 50.0%\n- **Body Recomposition**: 40.0%\n- **Anaerobe Ausdauer**: 35.0%\n- **Makro-Konsistenz**: 35.0%\n- **Gewichtsverlust**: 30.0%\n- **Muskelaufbau**: 30.0%\n- **Maximalkraft**: 25.0%\n- **Allgemeine Gesundheit**: 23.0%\n- **Aerobe Ausdauer**: 10.0%\n- **Beweglichkeit**: 5.0%","focus_area_weights_json":"{\"strength\": 25.0, \"flexibility\": 5.0, \"aerobic_endurance\": 10.0, \"anaerobic_endurance\": 35.0, \"rhythm\": 55.0, \"body_recomposition\": 40.0, \"weight_loss\": 30.0, \"muscle_gain\": 30.0, \"general_health\": 23.0, \"protein_intake\": 50.0, \"calorie_balance\": 50.0, \"macro_consistency\": 35.0}","top_3_focus_areas":"1. Rhythmusgefühl (55.0%), 2. Proteinzufuhr (50.0%), 3. Kalorienbilanz (50.0%)","top_3_goals_behind_schedule":"vo2max (0% erreicht), Körperfett (0% statt 25%, -25%)","top_3_goals_on_track":"Ruhepuls (100% erreicht), Zielgewicht (41%, +2% voraus)"},"placeholders_by_category":{"Profil":[{"key":"name","description":"Name des Nutzers","value":"Lars","example":"Lars"},{"key":"age","description":"Alter in Jahren","value":"55","example":"55"},{"key":"height","description":"Körpergröße in cm","value":"179.00","example":"179.00"},{"key":"geschlecht","description":"Geschlecht","value":"männlich","example":"männlich"}],"Körper":[{"key":"weight_aktuell","description":"Aktuelles Gewicht in kg","value":"85.8 kg","example":"85.8 kg"},{"key":"weight_trend","description":"Gewichtstrend (7d/30d)","value":"sinkend (-0.5 kg in 28 Tagen)","example":"sinkend (-0.5 kg in 28 Tagen)"},{"key":"kf_aktuell","description":"Aktueller Körperfettanteil in %","value":"19.9%","example":"19.9%"},{"key":"bmi","description":"Body Mass Index","value":"26.8","example":"26.8"},{"key":"weight_7d_median","description":"Gewicht 7d Median (kg)","value":"85.8","example":"85.8"},{"key":"weight_28d_slope","description":"Gewichtstrend 28d (kg/Tag)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"fm_28d_change","description":"Fettmasse Änderung 28d (kg)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"lbm_28d_change","description":"Magermasse Änderung 28d (kg)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"waist_28d_delta","description":"Taillenumfang Änderung 28d (cm)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"waist_hip_ratio","description":"Taille/Hüfte-Verhältnis","value":"0.901","example":"0.901"},{"key":"recomposition_quadrant","description":"Rekomposition-Status","value":"nicht verfügbar","example":"nicht verfügbar"}],"Ernährung":[{"key":"kcal_avg","description":"Durchschn. Kalorien (30d)","value":"1534 kcal/Tag (Ø 30 Tage)","example":"1534 kcal/Tag (Ø 30 Tage)"},{"key":"protein_avg","description":"Durchschn. Protein in g (30d)","value":"114g/Tag (Ø 30 Tage)","example":"114g/Tag (Ø 30 Tage)"},{"key":"carb_avg","description":"Durchschn. Kohlenhydrate in g (30d)","value":"152g/Tag (Ø 30 Tage)","example":"152g/Tag (Ø 30 Tage)"},{"key":"fat_avg","description":"Durchschn. Fett in g (30d)","value":"45g/Tag (Ø 30 Tage)","example":"45g/Tag (Ø 30 Tage)"},{"key":"energy_balance_7d","description":"Energiebilanz 7d (kcal/Tag)","value":"-1421","example":"-1421"},{"key":"protein_g_per_kg","description":"Protein g/kg Körpergewicht","value":"1.1","example":"1.1"},{"key":"protein_adequacy_28d","description":"Protein Adequacy Score (0-100)","value":"88","example":"88"},{"key":"macro_consistency_score","description":"Makro-Konsistenz Score (0-100)","value":"70","example":"70"}],"Training":[{"key":"activity_summary","description":"Aktivitäts-Zusammenfassung (7d)","value":"17 Einheiten in 14 Tagen (Ø 66 min/Einheit, 5728 kcal gesamt)","example":"17 Einheiten in 14 Tagen (Ø 66 min/Einheit, 5728 kcal gesamt)"},{"key":"trainingstyp_verteilung","description":"Verteilung nach Trainingstypen","value":"strength: 35%, martial_arts: 23%, cardio: 17%","example":"strength: 35%, martial_arts: 23%, cardio: 17%"},{"key":"training_minutes_week","description":"Trainingsminuten pro Woche","value":"373","example":"373"},{"key":"training_frequency_7d","description":"Trainingshäufigkeit 7d","value":"4","example":"4"},{"key":"quality_sessions_pct","description":"Qualitätssessions (%)","value":"10","example":"10"},{"key":"ability_balance_strength","description":"Ability Balance - Kraft (0-100)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"ability_balance_endurance","description":"Ability Balance - Ausdauer (0-100)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"proxy_internal_load_7d","description":"Proxy Load 7d","value":"373","example":"373"},{"key":"rest_day_compliance","description":"Ruhetags-Compliance (%)","value":"0","example":"0"}],"Schlaf & Erholung":[{"key":"sleep_avg_duration","description":"Durchschn. Schlafdauer (7d)","value":"6.8h","example":"6.8h"},{"key":"sleep_avg_quality","description":"Durchschn. Schlafqualität (7d)","value":"34% (Deep+REM)","example":"34% (Deep+REM)"},{"key":"rest_days_count","description":"Anzahl Ruhetage (30d)","value":"2 Ruhetage","example":"2 Ruhetage"},{"key":"sleep_avg_duration_7d","description":"Schlaf 7d (Stunden)","value":"5.9","example":"5.9"},{"key":"sleep_debt_hours","description":"Schlafschuld (Stunden)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"sleep_regularity_proxy","description":"Schlaf-Regelmäßigkeit (Min Abweichung)","value":"34.5","example":"34.5"},{"key":"sleep_quality_7d","description":"Schlafqualität 7d (0-100)","value":"nicht verfügbar","example":"nicht verfügbar"}],"Vitalwerte":[{"key":"vitals_avg_hr","description":"Durchschn. Ruhepuls (7d)","value":"51 bpm","example":"51 bpm"},{"key":"vitals_avg_hrv","description":"Durchschn. HRV (7d)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"vitals_vo2_max","description":"Aktueller VO2 Max","value":"35.5 ml/kg/min","example":"35.5 ml/kg/min"},{"key":"hrv_vs_baseline_pct","description":"HRV vs. Baseline (%)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"rhr_vs_baseline_pct","description":"RHR vs. Baseline (%)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"vo2max_trend_28d","description":"VO2max Trend 28d","value":"1.9","example":"1.9"}],"Scores (Phase 0b)":[{"key":"goal_progress_score","description":"Goal Progress Score (0-100)","value":"51","example":"51"},{"key":"body_progress_score","description":"Body Progress Score (0-100)","value":"41","example":"41"},{"key":"nutrition_score","description":"Nutrition Score (0-100)","value":"71","example":"71"},{"key":"activity_score","description":"Activity Score (0-100)","value":"37","example":"37"},{"key":"recovery_score","description":"Recovery Score (0-100)","value":"74","example":"74"},{"key":"data_quality_score","description":"Data Quality Score (0-100)","value":"81","example":"81"}],"Focus Areas":[{"key":"top_focus_area_name","description":"Top Focus Area Name","value":"Rhythmusgefühl","example":"Rhythmusgefühl"},{"key":"top_focus_area_progress","description":"Top Focus Area Progress (%)","value":"nicht verfügbar","example":"nicht verfügbar"},{"key":"focus_cat_körper_progress","description":"Kategorie Körper - Progress (%)","value":"41","example":"41"},{"key":"focus_cat_körper_weight","description":"Kategorie Körper - Gewichtung (%)","value":"100.0","example":"100.0"},{"key":"focus_cat_ernährung_progress","description":"Kategorie Ernährung - Progress (%)","value":"71","example":"71"},{"key":"focus_cat_ernährung_weight","description":"Kategorie Ernährung - Gewichtung (%)","value":"135.0","example":"135.0"},{"key":"focus_cat_aktivität_progress","description":"Kategorie Aktivität - Progress (%)","value":"37","example":"37"},{"key":"focus_cat_aktivität_weight","description":"Kategorie Aktivität - Gewichtung (%)","value":"30.0","example":"30.0"}],"Zeitraum":[{"key":"datum_heute","description":"Heutiges Datum","value":"02.04.2026","example":"02.04.2026"},{"key":"zeitraum_7d","description":"7-Tage-Zeitraum","value":"letzte 7 Tage","example":"letzte 7 Tage"},{"key":"zeitraum_30d","description":"30-Tage-Zeitraum","value":"letzte 30 Tage","example":"letzte 30 Tage"}]},"count":111},"metadata":{"flat":[{"key":"ability_balance_coordination","placeholder":"{{ability_balance_coordination}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"ability_balance_endurance","placeholder":"{{ability_balance_endurance}}","category":"Training","type":"atomic","description":"Ability Balance - Ausdauer (0-100)","semantic_contract":"Ability Balance - Ausdauer (0-100)","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"ability_balance_mental","placeholder":"{{ability_balance_mental}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"ability_balance_mobility","placeholder":"{{ability_balance_mobility}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"ability_balance_strength","placeholder":"{{ability_balance_strength}}","category":"Training","type":"atomic","description":"Ability Balance - Kraft (0-100)","semantic_contract":"Ability Balance - Kraft (0-100)","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"active_goals_json","placeholder":"{{active_goals_json}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"json","format_hint":"JSON object","example_output":null,"value_display":"[{\"id\": \"84212e3d-39e5-4a16-92c5-6b3115a61050\", \"goal_type\": \"rhr\", \"name\": \"Ruhepuls\", \"target_value\": \"52.00\", \"target_date\": null, \"current_value\": \"51.00\", \"start_value\": \"54.00\", \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": true, \"created_at\": \"2026-03-26 20:58:57.564807\"}, {\"id\": \"a76dfccc-a543-42e5-8665-471a97eb2078\", \"goal_type\": \"sport_pro_woche\", \"name\": null, \"target_value\": \"3.00\", \"target_date\": null, \"current_value\": null, \"start_value\": null, \"start_date\": \"2026-03-27\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-27 21:11:23.476309\"}, {\"id\": \"4943a889-50ca-4b76-999c-6de0c461b8d7\", \"goal_type\": \"vo2max\", \"name\": null, \"target_value\": \"43.00\", \"target_date\": null, \"current_value\": \"35.50\", \"start_value\": \"35.50\", \"start_date\": \"2026-03-27\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-27 05:17:09.626589\"}, {\"id\": \"fb9b9701-d883-4201-9ee6-c1729b72d551\", \"goal_type\": \"bp\", \"name\": null, \"target_value\": \"120.00\", \"target_date\": null, \"current_value\": null, \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:58:45.860130\"}, {\"id\": \"b3cfb6d1-42e2-4f64-8d16-3f89ac37295c\", \"goal_type\": \"flexibility\", \"name\": null, \"target_value\": \"120.00\", \"target_date\": \"2026-10-01\", \"current_value\": \"30.00\", \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:57:40.832316\"}, {\"id\": \"370afea2-e744-40e2-b778-bebfacebe270\", \"goal_type\": \"strength\", \"name\": null, \"target_value\": \"120.00\", \"target_date\": \"2026-05-31\", \"current_value\": \"88.00\", \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:56:28.974447\"}, {\"id\": \"72dc0225-05a4-4c7f-a27c-da0f5619cb52\", \"goal_type\": \"body_fat\", \"name\": \"K\\u00f6rperfett\", \"target_value\": \"14.00\", \"target_date\": \"2026-05-30\", \"current_value\": \"19.90\", \"start_value\": \"19.90\", \"start_date\": \"2026-03-13\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:54:29.747574\"}, {\"id\": \"acfba058-dd5c-4190-9168-5126a3195a56\", \"goal_type\": \"lean_mass\", \"name\": null, \"target_value\": \"25.00\", \"target_date\": \"2026-05-31\", \"current_value\": \"20.00\", \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:44:18.678284\"}, {\"id\": \"4bd8bcd9-f8b8-424b-9871-a01c15058a52\", \"goal_type\": \"weight\", \"name\": \"Zielgewicht\", \"target_value\": \"82.00\", \"target_date\": \"2026-05-31\", \"current_value\": \"85.20\", \"start_value\": \"87.50\", \"start_date\": \"2026-02-22\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 15:32:21.566137\"}]","value_raw":[{"id":"84212e3d-39e5-4a16-92c5-6b3115a61050","goal_type":"rhr","name":"Ruhepuls","target_value":"52.00","target_date":null,"current_value":"51.00","start_value":"54.00","start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":true,"created_at":"2026-03-26 20:58:57.564807"},{"id":"a76dfccc-a543-42e5-8665-471a97eb2078","goal_type":"sport_pro_woche","name":null,"target_value":"3.00","target_date":null,"current_value":null,"start_value":null,"start_date":"2026-03-27","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-27 21:11:23.476309"},{"id":"4943a889-50ca-4b76-999c-6de0c461b8d7","goal_type":"vo2max","name":null,"target_value":"43.00","target_date":null,"current_value":"35.50","start_value":"35.50","start_date":"2026-03-27","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-27 05:17:09.626589"},{"id":"fb9b9701-d883-4201-9ee6-c1729b72d551","goal_type":"bp","name":null,"target_value":"120.00","target_date":null,"current_value":null,"start_value":null,"start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:58:45.860130"},{"id":"b3cfb6d1-42e2-4f64-8d16-3f89ac37295c","goal_type":"flexibility","name":null,"target_value":"120.00","target_date":"2026-10-01","current_value":"30.00","start_value":null,"start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:57:40.832316"},{"id":"370afea2-e744-40e2-b778-bebfacebe270","goal_type":"strength","name":null,"target_value":"120.00","target_date":"2026-05-31","current_value":"88.00","start_value":null,"start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:56:28.974447"},{"id":"72dc0225-05a4-4c7f-a27c-da0f5619cb52","goal_type":"body_fat","name":"Körperfett","target_value":"14.00","target_date":"2026-05-30","current_value":"19.90","start_value":"19.90","start_date":"2026-03-13","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:54:29.747574"},{"id":"acfba058-dd5c-4190-9168-5126a3195a56","goal_type":"lean_mass","name":null,"target_value":"25.00","target_date":"2026-05-31","current_value":"20.00","start_value":null,"start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:44:18.678284"},{"id":"4bd8bcd9-f8b8-424b-9871-a01c15058a52","goal_type":"weight","name":"Zielgewicht","target_value":"82.00","target_date":"2026-05-31","current_value":"85.20","start_value":"87.50","start_date":"2026-02-22","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 15:32:21.566137"}],"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"active_goals_md","placeholder":"{{active_goals_md}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"markdown","format_hint":"Markdown-formatted text","example_output":null,"value_display":"| Ziel | Aktuell | Ziel | Progress | Status |\n|------|---------|------|----------|--------|\n| Ruhepuls | 51.00 | 52.00 | 100% | 🎯 |\n| sport_pro_woche | - | 3.00 | - | ○ |\n| vo2max | 35.50 | 43.00 | 0% | ○ |\n| bp | - | 120.00 | - | ○ |\n| flexibility | 30.00 | 120.00 | - | ○ |\n| strength | 88.00 | 120.00 | - | ○ |\n| Körperfett | 19.90 | 14.00 | 0% | ○ |\n| lean_mass | 20.00 | 25.00 | - | ○ |\n| Zielgewicht | 85.20 | 82.00 | 41% | ○ |","value_raw":"| Ziel | Aktuell | Ziel | Progress | Status |\n|------|---------|------|----------|--------|\n| Ruhepuls | 51.00 | 52.00 | 100% | 🎯 |\n| sport_pro_woche | - | 3.00 | - | ○ |\n| vo2max | 35.50 | 43.00 | 0% | ○ |\n| bp | - | 120.00 | - | ○ |\n| flexibility | 30.00 | 120.00 | - | ○ |\n| strength | 88.00 | 120.00 | - | ○ |\n| Körperfett | 19.90 | 14.00 | 0% | ○ |\n| lean_mass | 20.00 | 25.00 | - | ○ |\n| Zielgewicht | 85.20 | 82.00 | 41% | ○ |","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"activity_detail","placeholder":"{{activity_detail}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"2026-03-28: Traditionelles Krafttraining (47min, 311kcal HF=103)\n2026-03-28: Traditionelles Krafttraining (46min, 181kcal HF=102)\n2026-03-27: Outdoor Spaziergang (83min, 309kcal HF=79)\n2026-03-26: Matrial Arts (195min, 1000kcal HF=85)\n2026-03-25: Traditionelles Krafttraining (50min, 182kcal HF=94)\n2026-03-24: Matrial Arts (69min, 386kcal HF=103)\n2026-03-24: Outdoor Ausführen (46min, 162kcal HF=122)\n2026-03-24: Sportarten auf Rollschuhen (47min, 544kcal HF=136)\n2026-03-23: Traditionelles Krafttraining (48min, 179kcal HF=99)\n2026-03-22: Cardio Dance (115min, 399kcal HF=99)\n2026-03-22: Sportarten auf Rollschuhen (45min, 440kcal HF=143)\n2026-03-21: Traditionelles Krafttraining (35min, 141kcal HF=108)\n2026-03-21: Outdoor Spaziergang (62min, 325kcal HF=86)\n2026-03-20: Outdoor Spaziergang (74min, 379kcal HF=88)\n2026-03-19: Traditionelles Krafttraining (44min, 179kcal HF=102)\n2026-03-19: Matrial Arts (106min, 599kcal HF=103)\n2026-03-19: Matrial Arts (2min, 12kcal HF=96)","value_raw":"2026-03-28: Traditionelles Krafttraining (47min, 311kcal HF=103)\n2026-03-28: Traditionelles Krafttraining (46min, 181kcal HF=102)\n2026-03-27: Outdoor Spaziergang (83min, 309kcal HF=79)\n2026-03-26: Matrial Arts (195min, 1000kcal HF=85)\n2026-03-25: Traditionelles Krafttraining (50min, 182kcal HF=94)\n2026-03-24: Matrial Arts (69min, 386kcal HF=103)\n2026-03-24: Outdoor Ausführen (46min, 162kcal HF=122)\n2026-03-24: Sportarten auf Rollschuhen (47min, 544kcal HF=136)\n2026-03-23: Traditionelles Krafttraining (48min, 179kcal HF=99)\n2026-03-22: Cardio Dance (115min, 399kcal HF=99)\n2026-03-22: Sportarten auf Rollschuhen (45min, 440kcal HF=143)\n2026-03-21: Traditionelles Krafttraining (35min, 141kcal HF=108)\n2026-03-21: Outdoor Spaziergang (62min, 325kcal HF=86)\n2026-03-20: Outdoor Spaziergang (74min, 379kcal HF=88)\n2026-03-19: Traditionelles Krafttraining (44min, 179kcal HF=102)\n2026-03-19: Matrial Arts (106min, 599kcal HF=103)\n2026-03-19: Matrial Arts (2min, 12kcal HF=96)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by activity_metrics"},"source":{"resolver":"get_activity_detail","module":"placeholder_resolver.py","function":"get_activity_detail_data","data_layer_module":"activity_metrics","source_tables":["activity_log","training_types"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Aktivität & Training","Pipeline: Aktivitäts-Analyse (JSON)"],"pipelines":["Aktivität & Training","Pipeline: Aktivitäts-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":80,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"activity_score","placeholder":"{{activity_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Activity Score (0-100)","semantic_contract":"Activity Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"37","value_raw":37,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"activity_summary","placeholder":"{{activity_summary}}","category":"Training","type":"raw_data","description":"Aktivitäts-Zusammenfassung (7d)","semantic_contract":"Aktivitäts-Zusammenfassung (7d) [Strukturierte Rohdaten]","unit":null,"time_window":"7d","output_type":"string","format_hint":"Text","example_output":null,"value_display":"17 Einheiten in 14 Tagen (Ø 66 min/Einheit, 5728 kcal gesamt)","value_raw":"17 Einheiten in 14 Tagen (Ø 66 min/Einheit, 5728 kcal gesamt)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by activity_metrics"},"source":{"resolver":"get_activity_summary","module":"placeholder_resolver.py","function":"get_activity_summary_data","data_layer_module":"activity_metrics","source_tables":["activity_log","training_types"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse"],"pipelines":["Gesamtanalyse"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":100,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"age","placeholder":"{{age}}","category":"Profil","type":"atomic","description":"Alter in Jahren","semantic_contract":"Alter in Jahren (letzter verfügbarer Wert)","unit":"Jahre","time_window":"latest","output_type":"string","format_hint":"Wert Jahre","example_output":null,"value_display":"55","value_raw":"55","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"calculate_age","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["profiles"],"source_kind":"computed","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Pipeline: Körper-Analyse (JSON)"],"pipelines":["Pipeline: Körper-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":80,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"arm_28d_delta","placeholder":"{{arm_28d_delta}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 28d)","unit":"cm","time_window":"28d","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"bmi","placeholder":"{{bmi}}","category":"Körper","type":"atomic","description":"Body Mass Index","semantic_contract":"Body Mass Index","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"26.8","value_raw":"26.8","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"calculate_bmi","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["weight_log","profiles"],"source_kind":"computed","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["time_window"]},{"key":"body_progress_score","placeholder":"{{body_progress_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Body Progress Score (0-100)","semantic_contract":"Body Progress Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"41","value_raw":41,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"caliper_summary","placeholder":"{{caliper_summary}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"19.9% (jackson3 am 2026-03-13)","value_raw":"19.9% (jackson3 am 2026-03-13)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_caliper_summary","module":"placeholder_resolver.py","function":"get_body_composition_data","data_layer_module":"body_metrics","source_tables":["caliper_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"carb_avg","placeholder":"{{carb_avg}}","category":"Ernährung","type":"atomic","description":"Durchschn. Kohlenhydrate in g (30d)","semantic_contract":"Durchschn. Kohlenhydrate in g (30d) (Zeitfenster: 30d)","unit":"g","time_window":"30d","output_type":"number","format_hint":"12.3 g","example_output":null,"value_display":"152g/Tag (Ø 30 Tage)","value_raw":152.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_avg","module":"placeholder_resolver.py","function":"get_nutrition_average_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"chest_28d_delta","placeholder":"{{chest_28d_delta}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 28d)","unit":"cm","time_window":"28d","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"circ_summary","placeholder":"{{circ_summary}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Nacken 34.0cm (vor 1 Woche), Brust 99.3cm (vor 2 Wochen), Taille 91.2cm (vor 2 Wochen), Bauch 93.7cm (vor 2 Wochen), Hüfte 101.2cm (vor 2 Wochen), Oberschenkel 61.6cm (vor 2 Wochen), Wade 39.7cm (vor 2 Wochen), Arm 36.3cm (vor 2 Wochen)","value_raw":"Nacken 34.0cm (vor 1 Woche), Brust 99.3cm (vor 2 Wochen), Taille 91.2cm (vor 2 Wochen), Bauch 93.7cm (vor 2 Wochen), Hüfte 101.2cm (vor 2 Wochen), Oberschenkel 61.6cm (vor 2 Wochen), Wade 39.7cm (vor 2 Wochen), Arm 36.3cm (vor 2 Wochen)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_circ_summary","module":"placeholder_resolver.py","function":"get_circumference_summary_data","data_layer_module":"body_metrics","source_tables":["circumference_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"correlation_energy_weight_lag","placeholder":"{{correlation_energy_weight_lag}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"{\"best_lag\": 7, \"correlation\": -0.45, \"direction\": \"negative\", \"confidence\": \"medium\", \"data_points\": 80}","value_raw":7.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"correlation_load_hrv","placeholder":"{{correlation_load_hrv}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Wert bpm","example_output":null,"value_display":"{\"best_lag\": 1, \"correlation\": -0.38, \"direction\": \"negative\", \"confidence\": \"medium\", \"data_points\": 25}","value_raw":"{\"best_lag\": 1, \"correlation\": -0.38, \"direction\": \"negative\", \"confidence\": \"medium\", \"data_points\": 25}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"correlation_load_rhr","placeholder":"{{correlation_load_rhr}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Wert bpm","example_output":null,"value_display":"{\"best_lag\": 1, \"correlation\": 0.42, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 25}","value_raw":"{\"best_lag\": 1, \"correlation\": 0.42, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 25}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"correlation_protein_lbm","placeholder":"{{correlation_protein_lbm}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Wert g","example_output":null,"value_display":"{\"best_lag\": 0, \"correlation\": 0.32, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 28}","value_raw":"{\"best_lag\": 0, \"correlation\": 0.32, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 28}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"correlation_sleep_recovery","placeholder":"{{correlation_sleep_recovery}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"{\"correlation\": 0.65, \"direction\": \"positive\", \"confidence\": \"high\", \"data_points\": 28}","value_raw":"{\"correlation\": 0.65, \"direction\": \"positive\", \"confidence\": \"high\", \"data_points\": 28}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"data_quality_score","placeholder":"{{data_quality_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Data Quality Score (0-100)","semantic_contract":"Data Quality Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"81","value_raw":81,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"datum_heute","placeholder":"{{datum_heute}}","category":"Zeitraum","type":"atomic","description":"Heutiges Datum","semantic_contract":"Heutiges Datum","unit":null,"time_window":"unknown","output_type":"date","format_hint":"YYYY-MM-DD","example_output":null,"value_display":"02.04.2026","value_raw":null,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source","value_raw"]},{"key":"energy_balance_7d","placeholder":"{{energy_balance_7d}}","category":"Ernährung","type":"atomic","description":"Energiebilanz 7d (kcal/Tag)","semantic_contract":"Energiebilanz 7d (kcal/Tag) (Zeitfenster: 7d)","unit":"%","time_window":"7d","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"-1421","value_raw":-1421.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"energy_deficit_surplus","placeholder":"{{energy_deficit_surplus}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"kcal","time_window":"unknown","output_type":"string","format_hint":"Wert kcal","example_output":null,"value_display":"deficit","value_raw":"deficit","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"fat_avg","placeholder":"{{fat_avg}}","category":"Ernährung","type":"atomic","description":"Durchschn. Fett in g (30d)","semantic_contract":"Durchschn. Fett in g (30d) (Zeitfenster: 30d)","unit":"g","time_window":"30d","output_type":"number","format_hint":"12.3 g","example_output":null,"value_display":"45g/Tag (Ø 30 Tage)","value_raw":45.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_avg","module":"placeholder_resolver.py","function":"get_nutrition_average_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"fm_28d_change","placeholder":"{{fm_28d_change}}","category":"Körper","type":"atomic","description":"Fettmasse Änderung 28d (kg)","semantic_contract":"Fettmasse Änderung 28d (kg) (Zeitfenster: 28d)","unit":"kg","time_window":"28d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"focus_area_weights_json","placeholder":"{{focus_area_weights_json}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"json","format_hint":"JSON object","example_output":null,"value_display":"{\"strength\": 25.0, \"flexibility\": 5.0, \"aerobic_endurance\": 10.0, \"anaerobic_endurance\": 35.0, \"rhythm\": 55.0, \"body_recomposition\": 40.0, \"weight_loss\": 30.0, \"muscle_gain\": 30.0, \"general_health\": 23.0, \"protein_intake\": 50.0, \"calorie_balance\": 50.0, \"macro_consistency\": 35.0}","value_raw":{"strength":25.0,"flexibility":5.0,"aerobic_endurance":10.0,"anaerobic_endurance":35.0,"rhythm":55.0,"body_recomposition":40.0,"weight_loss":30.0,"muscle_gain":30.0,"general_health":23.0,"protein_intake":50.0,"calorie_balance":50.0,"macro_consistency":35.0},"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_areas_weighted_json","placeholder":"{{focus_areas_weighted_json}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"json","format_hint":"JSON object","example_output":null,"value_display":"[{\"key\": \"rhythm\", \"name\": \"Rhythmusgef\\u00fchl\", \"category\": \"coordination\", \"weight\": 55.0}, {\"key\": \"protein_intake\", \"name\": \"Proteinzufuhr\", \"category\": \"nutrition\", \"weight\": 50.0}, {\"key\": \"calorie_balance\", \"name\": \"Kalorienbilanz\", \"category\": \"nutrition\", \"weight\": 50.0}, {\"key\": \"body_recomposition\", \"name\": \"Body Recomposition\", \"category\": \"body_composition\", \"weight\": 40.0}, {\"key\": \"anaerobic_endurance\", \"name\": \"Anaerobe Ausdauer\", \"category\": \"endurance\", \"weight\": 35.0}, {\"key\": \"macro_consistency\", \"name\": \"Makro-Konsistenz\", \"category\": \"nutrition\", \"weight\": 35.0}, {\"key\": \"weight_loss\", \"name\": \"Gewichtsverlust\", \"category\": \"body_composition\", \"weight\": 30.0}, {\"key\": \"muscle_gain\", \"name\": \"Muskelaufbau\", \"category\": \"body_composition\", \"weight\": 30.0}, {\"key\": \"strength\", \"name\": \"Maximalkraft\", \"category\": \"training\", \"weight\": 25.0}, {\"key\": \"general_health\", \"name\": \"Allgemeine Gesundheit\", \"category\": \"health\", \"weight\": 23.0}, {\"key\": \"aerobic_endurance\", \"name\": \"Aerobe Ausdauer\", \"category\": \"endurance\", \"weight\": 10.0}, {\"key\": \"flexibility\", \"name\": \"Beweglichkeit\", \"category\": \"training\", \"weight\": 5.0}]","value_raw":[{"key":"rhythm","name":"Rhythmusgefühl","category":"coordination","weight":55.0},{"key":"protein_intake","name":"Proteinzufuhr","category":"nutrition","weight":50.0},{"key":"calorie_balance","name":"Kalorienbilanz","category":"nutrition","weight":50.0},{"key":"body_recomposition","name":"Body Recomposition","category":"body_composition","weight":40.0},{"key":"anaerobic_endurance","name":"Anaerobe Ausdauer","category":"endurance","weight":35.0},{"key":"macro_consistency","name":"Makro-Konsistenz","category":"nutrition","weight":35.0},{"key":"weight_loss","name":"Gewichtsverlust","category":"body_composition","weight":30.0},{"key":"muscle_gain","name":"Muskelaufbau","category":"body_composition","weight":30.0},{"key":"strength","name":"Maximalkraft","category":"training","weight":25.0},{"key":"general_health","name":"Allgemeine Gesundheit","category":"health","weight":23.0},{"key":"aerobic_endurance","name":"Aerobe Ausdauer","category":"endurance","weight":10.0},{"key":"flexibility","name":"Beweglichkeit","category":"training","weight":5.0}],"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_areas_weighted_md","placeholder":"{{focus_areas_weighted_md}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"markdown","format_hint":"Markdown-formatted text","example_output":null,"value_display":"- **Rhythmusgefühl**: 55.0%\n- **Proteinzufuhr**: 50.0%\n- **Kalorienbilanz**: 50.0%\n- **Body Recomposition**: 40.0%\n- **Anaerobe Ausdauer**: 35.0%\n- **Makro-Konsistenz**: 35.0%\n- **Gewichtsverlust**: 30.0%\n- **Muskelaufbau**: 30.0%\n- **Maximalkraft**: 25.0%\n- **Allgemeine Gesundheit**: 23.0%\n- **Aerobe Ausdauer**: 10.0%\n- **Beweglichkeit**: 5.0%","value_raw":"- **Rhythmusgefühl**: 55.0%\n- **Proteinzufuhr**: 50.0%\n- **Kalorienbilanz**: 50.0%\n- **Body Recomposition**: 40.0%\n- **Anaerobe Ausdauer**: 35.0%\n- **Makro-Konsistenz**: 35.0%\n- **Gewichtsverlust**: 30.0%\n- **Muskelaufbau**: 30.0%\n- **Maximalkraft**: 25.0%\n- **Allgemeine Gesundheit**: 23.0%\n- **Aerobe Ausdauer**: 10.0%\n- **Beweglichkeit**: 5.0%","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_aktivität_progress","placeholder":"{{focus_cat_aktivität_progress}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Aktivität - Progress (%)","semantic_contract":"Kategorie Aktivität - Progress (%) [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"37","value_raw":"37","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_aktivität_weight","placeholder":"{{focus_cat_aktivität_weight}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Aktivität - Gewichtung (%)","semantic_contract":"Kategorie Aktivität - Gewichtung (%) [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"30.0","value_raw":30.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_ernährung_progress","placeholder":"{{focus_cat_ernährung_progress}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Ernährung - Progress (%)","semantic_contract":"Kategorie Ernährung - Progress (%) [KI-interpretiert]","unit":"bpm","time_window":"unknown","output_type":"string","format_hint":"Wert bpm","example_output":null,"value_display":"71","value_raw":"71","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_ernährung_weight","placeholder":"{{focus_cat_ernährung_weight}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Ernährung - Gewichtung (%)","semantic_contract":"Kategorie Ernährung - Gewichtung (%) [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"135.0","value_raw":135.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_körper_progress","placeholder":"{{focus_cat_körper_progress}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Körper - Progress (%)","semantic_contract":"Kategorie Körper - Progress (%) [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"41","value_raw":"41","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_körper_weight","placeholder":"{{focus_cat_körper_weight}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Körper - Gewichtung (%)","semantic_contract":"Kategorie Körper - Gewichtung (%) [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"100.0","value_raw":100.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_lebensstil_progress","placeholder":"{{focus_cat_lebensstil_progress}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"81","value_raw":"81","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_lebensstil_weight","placeholder":"{{focus_cat_lebensstil_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"23.0","value_raw":23.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_mental_progress","placeholder":"{{focus_cat_mental_progress}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"74","value_raw":"74","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_mental_weight","placeholder":"{{focus_cat_mental_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"0.0","value_raw":0.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_recovery_progress","placeholder":"{{focus_cat_recovery_progress}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"74","value_raw":"74","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_recovery_weight","placeholder":"{{focus_cat_recovery_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"0.0","value_raw":0.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_vitalwerte_progress","placeholder":"{{focus_cat_vitalwerte_progress}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"74","value_raw":"74","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_vitalwerte_weight","placeholder":"{{focus_cat_vitalwerte_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"23.0","value_raw":23.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"geschlecht","placeholder":"{{geschlecht}}","category":"Profil","type":"atomic","description":"Geschlecht","semantic_contract":"Geschlecht (letzter verfügbarer Wert)","unit":null,"time_window":"latest","output_type":"string","format_hint":"Text","example_output":null,"value_display":"männlich","value_raw":"männlich","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"goal_bf_pct","placeholder":"{{goal_bf_pct}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"14.0","value_raw":14,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_goal_bf_pct","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Pipeline: Körper-Analyse (JSON)","Pipeline: Zielabgleich","Fortschritt zu Zielen"],"pipelines":["Gesamtanalyse","Körperkomposition","Pipeline: Körper-Analyse (JSON)","Pipeline: Zielabgleich","Fortschritt zu Zielen"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"goal_progress_score","placeholder":"{{goal_progress_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Goal Progress Score (0-100)","semantic_contract":"Goal Progress Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"51","value_raw":51,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"goal_weight","placeholder":"{{goal_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"82.0","value_raw":82.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_goal_weight","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Pipeline: Körper-Analyse (JSON)","Pipeline: Zielabgleich","Fortschritt zu Zielen"],"pipelines":["Gesamtanalyse","Pipeline: Körper-Analyse (JSON)","Pipeline: Zielabgleich","Fortschritt zu Zielen"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"height","placeholder":"{{height}}","category":"Profil","type":"atomic","description":"Körpergröße in cm","semantic_contract":"Körpergröße in cm (letzter verfügbarer Wert)","unit":"cm","time_window":"latest","output_type":"string","format_hint":"Wert cm","example_output":null,"value_display":"179.00","value_raw":"179.00","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"hip_28d_delta","placeholder":"{{hip_28d_delta}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 28d)","unit":"cm","time_window":"28d","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"hrv_vs_baseline_pct","placeholder":"{{hrv_vs_baseline_pct}}","category":"Vitalwerte","type":"atomic","description":"HRV vs. Baseline (%)","semantic_contract":"HRV vs. Baseline (%)","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"intake_volatility","placeholder":"{{intake_volatility}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"moderate","value_raw":"moderate","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"kcal_avg","placeholder":"{{kcal_avg}}","category":"Ernährung","type":"atomic","description":"Durchschn. Kalorien (30d)","semantic_contract":"Durchschn. Kalorien (30d) (Zeitfenster: 30d)","unit":"kcal","time_window":"30d","output_type":"number","format_hint":"12.3 kcal","example_output":null,"value_display":"1534 kcal/Tag (Ø 30 Tage)","value_raw":1534.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_avg","module":"placeholder_resolver.py","function":"get_nutrition_average_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"kf_aktuell","placeholder":"{{kf_aktuell}}","category":"Körper","type":"atomic","description":"Aktueller Körperfettanteil in %","semantic_contract":"Aktueller Körperfettanteil in % (letzter verfügbarer Wert)","unit":"%","time_window":"latest","output_type":"string","format_hint":"Wert %","example_output":null,"value_display":"19.9%","value_raw":"19.9%","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_latest_bf","module":"placeholder_resolver.py","function":"get_body_composition_data","data_layer_module":"body_metrics","source_tables":["caliper_log"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Fortschritt zu Zielen"],"pipelines":["Fortschritt zu Zielen"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"lbm_28d_change","placeholder":"{{lbm_28d_change}}","category":"Körper","type":"atomic","description":"Magermasse Änderung 28d (kg)","semantic_contract":"Magermasse Änderung 28d (kg) (Zeitfenster: 28d)","unit":"kg","time_window":"28d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"macro_consistency_score","placeholder":"{{macro_consistency_score}}","category":"Ernährung","type":"atomic","description":"Makro-Konsistenz Score (0-100)","semantic_contract":"Makro-Konsistenz Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"70","value_raw":70,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"monotony_score","placeholder":"{{monotony_score}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"name","placeholder":"{{name}}","category":"Profil","type":"atomic","description":"Name des Nutzers","semantic_contract":"Name des Nutzers (letzter verfügbarer Wert)","unit":null,"time_window":"latest","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Lars","value_raw":"Lars","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_profile_data","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["profiles"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Pipeline: Zielabgleich","Ernährung & Kalorien","Fortschritt zu Zielen"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Pipeline: Zielabgleich","Ernährung & Kalorien","Fortschritt zu Zielen","Gesamtanalyse (advanced)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":80,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"nutrition_days","placeholder":"{{nutrition_days}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85","example_output":null,"value_display":"31","value_raw":31,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_days","module":"placeholder_resolver.py","function":"get_nutrition_days_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"computed","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"nutrition_score","placeholder":"{{nutrition_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Nutrition Score (0-100)","semantic_contract":"Nutrition Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"71","value_raw":71,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"plateau_detected","placeholder":"{{plateau_detected}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"{}","value_raw":"{}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"protein_adequacy_28d","placeholder":"{{protein_adequacy_28d}}","category":"Ernährung","type":"atomic","description":"Protein Adequacy Score (0-100)","semantic_contract":"Protein Adequacy Score (0-100) (Zeitfenster: 28d)","unit":"%","time_window":"28d","output_type":"string","format_hint":"Wert %","example_output":null,"value_display":"88","value_raw":"88","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"protein_avg","placeholder":"{{protein_avg}}","category":"Ernährung","type":"atomic","description":"Durchschn. Protein in g (30d)","semantic_contract":"Durchschn. Protein in g (30d) (Zeitfenster: 30d)","unit":"g","time_window":"30d","output_type":"number","format_hint":"12.3 g","example_output":null,"value_display":"114g/Tag (Ø 30 Tage)","value_raw":114.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_avg","module":"placeholder_resolver.py","function":"get_nutrition_average_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"protein_days_in_target","placeholder":"{{protein_days_in_target}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"g","time_window":"unknown","output_type":"integer","format_hint":"85 g","example_output":null,"value_display":"1/8","value_raw":1,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"protein_g_per_kg","placeholder":"{{protein_g_per_kg}}","category":"Ernährung","type":"atomic","description":"Protein g/kg Körpergewicht","semantic_contract":"Protein g/kg Körpergewicht","unit":"g","time_window":"unknown","output_type":"string","format_hint":"Wert g","example_output":null,"value_display":"1.1","value_raw":"1.1","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"protein_ziel_high","placeholder":"{{protein_ziel_high}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"g","time_window":"unknown","output_type":"string","format_hint":"Wert g","example_output":null,"value_display":"188","value_raw":"188","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_protein_ziel_high","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Pipeline: Ernährungs-Analyse (JSON)","Gesamtanalyse (advanced)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"protein_ziel_low","placeholder":"{{protein_ziel_low}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"g","time_window":"unknown","output_type":"string","format_hint":"Wert g","example_output":null,"value_display":"137","value_raw":"137","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_protein_ziel_low","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Pipeline: Ernährungs-Analyse (JSON)","Gesamtanalyse (advanced)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"proxy_internal_load_7d","placeholder":"{{proxy_internal_load_7d}}","category":"Training","type":"atomic","description":"Proxy Load 7d","semantic_contract":"Proxy Load 7d (Zeitfenster: 7d)","unit":null,"time_window":"7d","output_type":"string","format_hint":"Text","example_output":null,"value_display":"373","value_raw":"373","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"quality_sessions_pct","placeholder":"{{quality_sessions_pct}}","category":"Training","type":"atomic","description":"Qualitätssessions (%)","semantic_contract":"Qualitätssessions (%)","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"10","value_raw":10,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"recent_load_balance_3d","placeholder":"{{recent_load_balance_3d}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"7d","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"0","value_raw":0.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"recomposition_quadrant","placeholder":"{{recomposition_quadrant}}","category":"Körper","type":"atomic","description":"Rekomposition-Status","semantic_contract":"Rekomposition-Status","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"recovery_score","placeholder":"{{recovery_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Recovery Score (0-100)","semantic_contract":"Recovery Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"74","value_raw":74,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"rest_day_compliance","placeholder":"{{rest_day_compliance}}","category":"Training","type":"atomic","description":"Ruhetags-Compliance (%)","semantic_contract":"Ruhetags-Compliance (%)","unit":"%","time_window":"unknown","output_type":"string","format_hint":"Wert %","example_output":null,"value_display":"0","value_raw":"0","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"rest_days_count","placeholder":"{{rest_days_count}}","category":"Schlaf & Erholung","type":"atomic","description":"Anzahl Ruhetage (30d)","semantic_contract":"Anzahl Ruhetage (30d)","unit":null,"time_window":"30d","output_type":"integer","format_hint":"85","example_output":null,"value_display":"2 Ruhetage","value_raw":2,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_rest_days_count","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"rhr_vs_baseline_pct","placeholder":"{{rhr_vs_baseline_pct}}","category":"Vitalwerte","type":"atomic","description":"RHR vs. Baseline (%)","semantic_contract":"RHR vs. Baseline (%)","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"sleep_avg_duration","placeholder":"{{sleep_avg_duration}}","category":"Schlaf & Erholung","type":"atomic","description":"Durchschn. Schlafdauer (7d)","semantic_contract":"Durchschn. Schlafdauer (7d) (Zeitfenster: 30d)","unit":"Stunden","time_window":"7d","output_type":"number","format_hint":"12.3 Stunden","example_output":null,"value_display":"6.8h","value_raw":6.8,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_sleep_avg_duration","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"sleep_avg_duration_7d","placeholder":"{{sleep_avg_duration_7d}}","category":"Schlaf & Erholung","type":"atomic","description":"Schlaf 7d (Stunden)","semantic_contract":"Schlaf 7d (Stunden) (Zeitfenster: 7d)","unit":"Stunden","time_window":"7d","output_type":"number","format_hint":"12.3 Stunden","example_output":null,"value_display":"5.9","value_raw":5.9,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"sleep_avg_quality","placeholder":"{{sleep_avg_quality}}","category":"Schlaf & Erholung","type":"atomic","description":"Durchschn. Schlafqualität (7d)","semantic_contract":"Durchschn. Schlafqualität (7d) (Zeitfenster: 30d)","unit":"%","time_window":"7d","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"34% (Deep+REM)","value_raw":34.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_sleep_avg_quality","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"sleep_debt_hours","placeholder":"{{sleep_debt_hours}}","category":"Schlaf & Erholung","type":"atomic","description":"Schlafschuld (Stunden)","semantic_contract":"Schlafschuld (Stunden)","unit":"Stunden","time_window":"unknown","output_type":"string","format_hint":"Wert Stunden","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"sleep_quality_7d","placeholder":"{{sleep_quality_7d}}","category":"Schlaf & Erholung","type":"atomic","description":"Schlafqualität 7d (0-100)","semantic_contract":"Schlafqualität 7d (0-100) (Zeitfenster: 7d)","unit":"%","time_window":"7d","output_type":"string","format_hint":"Wert %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"sleep_regularity_proxy","placeholder":"{{sleep_regularity_proxy}}","category":"Schlaf & Erholung","type":"atomic","description":"Schlaf-Regelmäßigkeit (Min Abweichung)","semantic_contract":"Schlaf-Regelmäßigkeit (Min Abweichung)","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"34.5","value_raw":"34.5","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"strain_score","placeholder":"{{strain_score}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"thigh_28d_delta","placeholder":"{{thigh_28d_delta}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 28d)","unit":null,"time_window":"28d","output_type":"number","format_hint":"12.3","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"top_3_focus_areas","placeholder":"{{top_3_focus_areas}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"1. Rhythmusgefühl (55.0%), 2. Proteinzufuhr (50.0%), 3. Kalorienbilanz (50.0%)","value_raw":"1. Rhythmusgefühl (55.0%), 2. Proteinzufuhr (50.0%), 3. Kalorienbilanz (50.0%)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_3_goals_behind_schedule","placeholder":"{{top_3_goals_behind_schedule}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"vo2max (0% erreicht), Körperfett (0% statt 25%, -25%)","value_raw":"vo2max (0% erreicht), Körperfett (0% statt 25%, -25%)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_3_goals_on_track","placeholder":"{{top_3_goals_on_track}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Ruhepuls (100% erreicht), Zielgewicht (41%, +2% voraus)","value_raw":"Ruhepuls (100% erreicht), Zielgewicht (41%, +2% voraus)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_drivers","placeholder":"{{top_drivers}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"[{\"factor\": \"Energiebilanz\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Sehr großes Defizit (-1421 kcal/Tag) → Risiko für Magermasseverlust\"}, {\"factor\": \"Schlafdauer\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Schlafdauer zu gering (5.9h/Nacht < 7h Empfehlung)\"}, {\"factor\": \"Trainingsqualität\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Nur 10% der Trainings mit guter Qualität\"}, {\"factor\": \"Ruhetagsrespekt\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Ruhetage häufig ignoriert (0%) → Übertrainingsrisiko\"}, {\"factor\": \"Proteinzufuhr\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Proteinzufuhr konstant im Zielbereich (Score: 88)\"}, {\"factor\": \"Schlafregelmäßigkeit\", \"status\": \"förderlich\", \"evidence\": \"mittel\", \"reason\": \"Schlafrhythmus regelmäßig (Abweichung: 34 min)\"}, {\"factor\": \"Trainingskonsistenz\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Trainingsfrequenz im Zielbereich (4× pro Woche)\"}, {\"factor\": \"Recovery\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Recovery Score gut (74/100)\"}]","value_raw":"[{\"factor\": \"Energiebilanz\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Sehr großes Defizit (-1421 kcal/Tag) → Risiko für Magermasseverlust\"}, {\"factor\": \"Schlafdauer\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Schlafdauer zu gering (5.9h/Nacht < 7h Empfehlung)\"}, {\"factor\": \"Trainingsqualität\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Nur 10% der Trainings mit guter Qualität\"}, {\"factor\": \"Ruhetagsrespekt\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Ruhetage häufig ignoriert (0%) → Übertrainingsrisiko\"}, {\"factor\": \"Proteinzufuhr\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Proteinzufuhr konstant im Zielbereich (Score: 88)\"}, {\"factor\": \"Schlafregelmäßigkeit\", \"status\": \"förderlich\", \"evidence\": \"mittel\", \"reason\": \"Schlafrhythmus regelmäßig (Abweichung: 34 min)\"}, {\"factor\": \"Trainingskonsistenz\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Trainingsfrequenz im Zielbereich (4× pro Woche)\"}, {\"factor\": \"Recovery\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Recovery Score gut (74/100)\"}]","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_focus_area_name","placeholder":"{{top_focus_area_name}}","category":"Focus Areas","type":"interpreted","description":"Top Focus Area Name","semantic_contract":"Top Focus Area Name [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Rhythmusgefühl","value_raw":"Rhythmusgefühl","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_focus_area_progress","placeholder":"{{top_focus_area_progress}}","category":"Focus Areas","type":"interpreted","description":"Top Focus Area Progress (%)","semantic_contract":"Top Focus Area Progress (%) [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_goal_name","placeholder":"{{top_goal_name}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Zielgewicht","value_raw":"Zielgewicht","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_goal_progress_pct","placeholder":"{{top_goal_progress_pct}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_goal_status","placeholder":"{{top_goal_status}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"active","value_raw":"active","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"training_frequency_7d","placeholder":"{{training_frequency_7d}}","category":"Training","type":"atomic","description":"Trainingshäufigkeit 7d","semantic_contract":"Trainingshäufigkeit 7d (Zeitfenster: 7d)","unit":null,"time_window":"7d","output_type":"integer","format_hint":"85","example_output":null,"value_display":"4","value_raw":4,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"training_minutes_week","placeholder":"{{training_minutes_week}}","category":"Training","type":"atomic","description":"Trainingsminuten pro Woche","semantic_contract":"Trainingsminuten pro Woche (Zeitfenster: 7d)","unit":"Minuten","time_window":"7d","output_type":"string","format_hint":"Wert Minuten","example_output":null,"value_display":"373","value_raw":"373","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"trainingstyp_verteilung","placeholder":"{{trainingstyp_verteilung}}","category":"Training","type":"raw_data","description":"Verteilung nach Trainingstypen","semantic_contract":"Verteilung nach Trainingstypen [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"strength: 35%, martial_arts: 23%, cardio: 17%","value_raw":"strength: 35%, martial_arts: 23%, cardio: 17%","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"get_trainingstyp_verteilung","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"vitals_avg_hr","placeholder":"{{vitals_avg_hr}}","category":"Vitalwerte","type":"atomic","description":"Durchschn. Ruhepuls (7d)","semantic_contract":"Durchschn. Ruhepuls (7d) (Zeitfenster: 30d)","unit":"bpm","time_window":"7d","output_type":"number","format_hint":"12.3 bpm","example_output":null,"value_display":"51 bpm","value_raw":51.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_vitals_avg_hr","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"vitals_avg_hrv","placeholder":"{{vitals_avg_hrv}}","category":"Vitalwerte","type":"atomic","description":"Durchschn. HRV (7d)","semantic_contract":"Durchschn. HRV (7d) (Zeitfenster: 30d)","unit":"ms","time_window":"7d","output_type":"number","format_hint":"12.3 bpm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_vitals_avg_hrv","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"vitals_vo2_max","placeholder":"{{vitals_vo2_max}}","category":"Vitalwerte","type":"atomic","description":"Aktueller VO2 Max","semantic_contract":"Aktueller VO2 Max","unit":"ml/kg/min","time_window":"unknown","output_type":"string","format_hint":"Wert ml/kg/min","example_output":null,"value_display":"35.5 ml/kg/min","value_raw":"35.5 ml/kg/min","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_vitals_vo2_max","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"vo2max_trend_28d","placeholder":"{{vo2max_trend_28d}}","category":"Vitalwerte","type":"atomic","description":"VO2max Trend 28d","semantic_contract":"VO2max Trend 28d (Zeitfenster: 28d)","unit":"ml/kg/min","time_window":"28d","output_type":"number","format_hint":"12.3 ml/kg/min","example_output":null,"value_display":"1.9","value_raw":1.9,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"waist_28d_delta","placeholder":"{{waist_28d_delta}}","category":"Körper","type":"atomic","description":"Taillenumfang Änderung 28d (cm)","semantic_contract":"Taillenumfang Änderung 28d (cm) (Zeitfenster: 28d)","unit":"cm","time_window":"28d","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"waist_hip_ratio","placeholder":"{{waist_hip_ratio}}","category":"Körper","type":"atomic","description":"Taille/Hüfte-Verhältnis","semantic_contract":"Taille/Hüfte-Verhältnis","unit":"cm","time_window":"unknown","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"0.901","value_raw":0.901,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"weight_28d_slope","placeholder":"{{weight_28d_slope}}","category":"Körper","type":"atomic","description":"Gewichtstrend 28d (kg/Tag)","semantic_contract":"Gewichtstrend 28d (kg/Tag) (Zeitfenster: 28d)","unit":"kg","time_window":"28d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"weight_7d_median","placeholder":"{{weight_7d_median}}","category":"Körper","type":"atomic","description":"Gewicht 7d Median (kg)","semantic_contract":"Gewicht 7d Median (kg) (Zeitfenster: 7d)","unit":"kg","time_window":"7d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"85.8","value_raw":85.8,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"weight_90d_slope","placeholder":"{{weight_90d_slope}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 90d)","unit":"kg","time_window":"90d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"weight_aktuell","placeholder":"{{weight_aktuell}}","category":"Körper","type":"atomic","description":"Aktuelles Gewicht in kg","semantic_contract":"Aktuelles Gewicht in kg (letzter verfügbarer Wert)","unit":"kg","time_window":"latest","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"85.8 kg","value_raw":85.8,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_latest_weight","module":"placeholder_resolver.py","function":"get_latest_weight_data","data_layer_module":"body_metrics","source_tables":["weight_log"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesundheitsindikatoren","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Fortschritt zu Zielen","Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Gesundheitsindikatoren","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Fortschritt zu Zielen","Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"weight_trend","placeholder":"{{weight_trend}}","category":"Körper","type":"atomic","description":"Gewichtstrend (7d/30d)","semantic_contract":"Gewichtstrend (7d/30d) (Zeitfenster: 28d)","unit":"kg","time_window":"7d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"sinkend (-0.5 kg in 28 Tagen)","value_raw":-0.5,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_weight_trend","module":"placeholder_resolver.py","function":"get_weight_trend_data","data_layer_module":"body_metrics","source_tables":["weight_log"],"source_kind":"computed","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Fortschritt zu Zielen"],"pipelines":["Gesamtanalyse","Körperkomposition","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Fortschritt zu Zielen"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":["Description says 30d/28d but implementation is 7d"],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":true,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"zeitraum_30d","placeholder":"{{zeitraum_30d}}","category":"Zeitraum","type":"atomic","description":"30-Tage-Zeitraum","semantic_contract":"30-Tage-Zeitraum (Zeitfenster: 30d)","unit":null,"time_window":"30d","output_type":"date","format_hint":"YYYY-MM-DD","example_output":null,"value_display":"letzte 30 Tage","value_raw":null,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source","value_raw"]},{"key":"zeitraum_7d","placeholder":"{{zeitraum_7d}}","category":"Zeitraum","type":"atomic","description":"7-Tage-Zeitraum","semantic_contract":"7-Tage-Zeitraum (Zeitfenster: 7d)","unit":null,"time_window":"7d","output_type":"date","format_hint":"YYYY-MM-DD","example_output":null,"value_display":"letzte 7 Tage","value_raw":null,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source","value_raw"]},{"key":"zeitraum_90d","placeholder":"{{zeitraum_90d}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 90d)","unit":null,"time_window":"90d","output_type":"date","format_hint":"YYYY-MM-DD","example_output":null,"value_display":"letzte 90 Tage","value_raw":null,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source","value_raw"]}],"by_category":{"Profil":[{"key":"name","placeholder":"{{name}}","category":"Profil","type":"atomic","description":"Name des Nutzers","semantic_contract":"Name des Nutzers (letzter verfügbarer Wert)","unit":null,"time_window":"latest","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Lars","value_raw":"Lars","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_profile_data","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["profiles"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Pipeline: Zielabgleich","Ernährung & Kalorien","Fortschritt zu Zielen"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Pipeline: Zielabgleich","Ernährung & Kalorien","Fortschritt zu Zielen","Gesamtanalyse (advanced)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":80,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"age","placeholder":"{{age}}","category":"Profil","type":"atomic","description":"Alter in Jahren","semantic_contract":"Alter in Jahren (letzter verfügbarer Wert)","unit":"Jahre","time_window":"latest","output_type":"string","format_hint":"Wert Jahre","example_output":null,"value_display":"55","value_raw":"55","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"calculate_age","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["profiles"],"source_kind":"computed","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Pipeline: Körper-Analyse (JSON)"],"pipelines":["Pipeline: Körper-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":80,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"height","placeholder":"{{height}}","category":"Profil","type":"atomic","description":"Körpergröße in cm","semantic_contract":"Körpergröße in cm (letzter verfügbarer Wert)","unit":"cm","time_window":"latest","output_type":"string","format_hint":"Wert cm","example_output":null,"value_display":"179.00","value_raw":"179.00","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"geschlecht","placeholder":"{{geschlecht}}","category":"Profil","type":"atomic","description":"Geschlecht","semantic_contract":"Geschlecht (letzter verfügbarer Wert)","unit":null,"time_window":"latest","output_type":"string","format_hint":"Text","example_output":null,"value_display":"männlich","value_raw":"männlich","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]}],"Körper":[{"key":"weight_aktuell","placeholder":"{{weight_aktuell}}","category":"Körper","type":"atomic","description":"Aktuelles Gewicht in kg","semantic_contract":"Aktuelles Gewicht in kg (letzter verfügbarer Wert)","unit":"kg","time_window":"latest","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"85.8 kg","value_raw":85.8,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_latest_weight","module":"placeholder_resolver.py","function":"get_latest_weight_data","data_layer_module":"body_metrics","source_tables":["weight_log"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesundheitsindikatoren","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Fortschritt zu Zielen","Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Gesundheitsindikatoren","Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Fortschritt zu Zielen","Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"weight_trend","placeholder":"{{weight_trend}}","category":"Körper","type":"atomic","description":"Gewichtstrend (7d/30d)","semantic_contract":"Gewichtstrend (7d/30d) (Zeitfenster: 28d)","unit":"kg","time_window":"7d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"sinkend (-0.5 kg in 28 Tagen)","value_raw":-0.5,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_weight_trend","module":"placeholder_resolver.py","function":"get_weight_trend_data","data_layer_module":"body_metrics","source_tables":["weight_log"],"source_kind":"computed","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Fortschritt zu Zielen"],"pipelines":["Gesamtanalyse","Körperkomposition","Aktivität & Training","Pipeline: Körper-Analyse (JSON)","Fortschritt zu Zielen"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":["Description says 30d/28d but implementation is 7d"],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":true,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"kf_aktuell","placeholder":"{{kf_aktuell}}","category":"Körper","type":"atomic","description":"Aktueller Körperfettanteil in %","semantic_contract":"Aktueller Körperfettanteil in % (letzter verfügbarer Wert)","unit":"%","time_window":"latest","output_type":"string","format_hint":"Wert %","example_output":null,"value_display":"19.9%","value_raw":"19.9%","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_latest_bf","module":"placeholder_resolver.py","function":"get_body_composition_data","data_layer_module":"body_metrics","source_tables":["caliper_log"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Fortschritt zu Zielen"],"pipelines":["Fortschritt zu Zielen"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"bmi","placeholder":"{{bmi}}","category":"Körper","type":"atomic","description":"Body Mass Index","semantic_contract":"Body Mass Index","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"26.8","value_raw":"26.8","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"calculate_bmi","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["weight_log","profiles"],"source_kind":"computed","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["time_window"]},{"key":"weight_7d_median","placeholder":"{{weight_7d_median}}","category":"Körper","type":"atomic","description":"Gewicht 7d Median (kg)","semantic_contract":"Gewicht 7d Median (kg) (Zeitfenster: 7d)","unit":"kg","time_window":"7d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"85.8","value_raw":85.8,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"weight_28d_slope","placeholder":"{{weight_28d_slope}}","category":"Körper","type":"atomic","description":"Gewichtstrend 28d (kg/Tag)","semantic_contract":"Gewichtstrend 28d (kg/Tag) (Zeitfenster: 28d)","unit":"kg","time_window":"28d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"fm_28d_change","placeholder":"{{fm_28d_change}}","category":"Körper","type":"atomic","description":"Fettmasse Änderung 28d (kg)","semantic_contract":"Fettmasse Änderung 28d (kg) (Zeitfenster: 28d)","unit":"kg","time_window":"28d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"lbm_28d_change","placeholder":"{{lbm_28d_change}}","category":"Körper","type":"atomic","description":"Magermasse Änderung 28d (kg)","semantic_contract":"Magermasse Änderung 28d (kg) (Zeitfenster: 28d)","unit":"kg","time_window":"28d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"waist_28d_delta","placeholder":"{{waist_28d_delta}}","category":"Körper","type":"atomic","description":"Taillenumfang Änderung 28d (cm)","semantic_contract":"Taillenumfang Änderung 28d (cm) (Zeitfenster: 28d)","unit":"cm","time_window":"28d","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"waist_hip_ratio","placeholder":"{{waist_hip_ratio}}","category":"Körper","type":"atomic","description":"Taille/Hüfte-Verhältnis","semantic_contract":"Taille/Hüfte-Verhältnis","unit":"cm","time_window":"unknown","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"0.901","value_raw":0.901,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"recomposition_quadrant","placeholder":"{{recomposition_quadrant}}","category":"Körper","type":"atomic","description":"Rekomposition-Status","semantic_contract":"Rekomposition-Status","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]}],"Unknown":[{"key":"caliper_summary","placeholder":"{{caliper_summary}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"19.9% (jackson3 am 2026-03-13)","value_raw":"19.9% (jackson3 am 2026-03-13)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_caliper_summary","module":"placeholder_resolver.py","function":"get_body_composition_data","data_layer_module":"body_metrics","source_tables":["caliper_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"circ_summary","placeholder":"{{circ_summary}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Nacken 34.0cm (vor 1 Woche), Brust 99.3cm (vor 2 Wochen), Taille 91.2cm (vor 2 Wochen), Bauch 93.7cm (vor 2 Wochen), Hüfte 101.2cm (vor 2 Wochen), Oberschenkel 61.6cm (vor 2 Wochen), Wade 39.7cm (vor 2 Wochen), Arm 36.3cm (vor 2 Wochen)","value_raw":"Nacken 34.0cm (vor 1 Woche), Brust 99.3cm (vor 2 Wochen), Taille 91.2cm (vor 2 Wochen), Bauch 93.7cm (vor 2 Wochen), Hüfte 101.2cm (vor 2 Wochen), Oberschenkel 61.6cm (vor 2 Wochen), Wade 39.7cm (vor 2 Wochen), Arm 36.3cm (vor 2 Wochen)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by body_metrics"},"source":{"resolver":"get_circ_summary","module":"placeholder_resolver.py","function":"get_circumference_summary_data","data_layer_module":"body_metrics","source_tables":["circumference_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)"],"pipelines":["Gesamtanalyse","Körperkomposition","Gesundheitsindikatoren","Pipeline: Körper-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"goal_weight","placeholder":"{{goal_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"82.0","value_raw":82.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_goal_weight","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Pipeline: Körper-Analyse (JSON)","Pipeline: Zielabgleich","Fortschritt zu Zielen"],"pipelines":["Gesamtanalyse","Pipeline: Körper-Analyse (JSON)","Pipeline: Zielabgleich","Fortschritt zu Zielen"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"goal_bf_pct","placeholder":"{{goal_bf_pct}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"14.0","value_raw":14,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_goal_bf_pct","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals"],"source_kind":"direct","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse","Körperkomposition","Pipeline: Körper-Analyse (JSON)","Pipeline: Zielabgleich","Fortschritt zu Zielen"],"pipelines":["Gesamtanalyse","Körperkomposition","Pipeline: Körper-Analyse (JSON)","Pipeline: Zielabgleich","Fortschritt zu Zielen"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"nutrition_days","placeholder":"{{nutrition_days}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85","example_output":null,"value_display":"31","value_raw":31,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_days","module":"placeholder_resolver.py","function":"get_nutrition_days_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"computed","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"protein_ziel_low","placeholder":"{{protein_ziel_low}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"g","time_window":"unknown","output_type":"string","format_hint":"Wert g","example_output":null,"value_display":"137","value_raw":"137","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_protein_ziel_low","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Pipeline: Ernährungs-Analyse (JSON)","Gesamtanalyse (advanced)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"protein_ziel_high","placeholder":"{{protein_ziel_high}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"g","time_window":"unknown","output_type":"string","format_hint":"Wert g","example_output":null,"value_display":"188","value_raw":"188","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_protein_ziel_high","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Ernährung & Kalorien (Kopie)","Ernährung & Kalorien","Pipeline: Ernährungs-Analyse (JSON)","Gesamtanalyse (advanced)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"activity_detail","placeholder":"{{activity_detail}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"2026-03-28: Traditionelles Krafttraining (47min, 311kcal HF=103)\n2026-03-28: Traditionelles Krafttraining (46min, 181kcal HF=102)\n2026-03-27: Outdoor Spaziergang (83min, 309kcal HF=79)\n2026-03-26: Matrial Arts (195min, 1000kcal HF=85)\n2026-03-25: Traditionelles Krafttraining (50min, 182kcal HF=94)\n2026-03-24: Matrial Arts (69min, 386kcal HF=103)\n2026-03-24: Outdoor Ausführen (46min, 162kcal HF=122)\n2026-03-24: Sportarten auf Rollschuhen (47min, 544kcal HF=136)\n2026-03-23: Traditionelles Krafttraining (48min, 179kcal HF=99)\n2026-03-22: Cardio Dance (115min, 399kcal HF=99)\n2026-03-22: Sportarten auf Rollschuhen (45min, 440kcal HF=143)\n2026-03-21: Traditionelles Krafttraining (35min, 141kcal HF=108)\n2026-03-21: Outdoor Spaziergang (62min, 325kcal HF=86)\n2026-03-20: Outdoor Spaziergang (74min, 379kcal HF=88)\n2026-03-19: Traditionelles Krafttraining (44min, 179kcal HF=102)\n2026-03-19: Matrial Arts (106min, 599kcal HF=103)\n2026-03-19: Matrial Arts (2min, 12kcal HF=96)","value_raw":"2026-03-28: Traditionelles Krafttraining (47min, 311kcal HF=103)\n2026-03-28: Traditionelles Krafttraining (46min, 181kcal HF=102)\n2026-03-27: Outdoor Spaziergang (83min, 309kcal HF=79)\n2026-03-26: Matrial Arts (195min, 1000kcal HF=85)\n2026-03-25: Traditionelles Krafttraining (50min, 182kcal HF=94)\n2026-03-24: Matrial Arts (69min, 386kcal HF=103)\n2026-03-24: Outdoor Ausführen (46min, 162kcal HF=122)\n2026-03-24: Sportarten auf Rollschuhen (47min, 544kcal HF=136)\n2026-03-23: Traditionelles Krafttraining (48min, 179kcal HF=99)\n2026-03-22: Cardio Dance (115min, 399kcal HF=99)\n2026-03-22: Sportarten auf Rollschuhen (45min, 440kcal HF=143)\n2026-03-21: Traditionelles Krafttraining (35min, 141kcal HF=108)\n2026-03-21: Outdoor Spaziergang (62min, 325kcal HF=86)\n2026-03-20: Outdoor Spaziergang (74min, 379kcal HF=88)\n2026-03-19: Traditionelles Krafttraining (44min, 179kcal HF=102)\n2026-03-19: Matrial Arts (106min, 599kcal HF=103)\n2026-03-19: Matrial Arts (2min, 12kcal HF=96)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by activity_metrics"},"source":{"resolver":"get_activity_detail","module":"placeholder_resolver.py","function":"get_activity_detail_data","data_layer_module":"activity_metrics","source_tables":["activity_log","training_types"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Aktivität & Training","Pipeline: Aktivitäts-Analyse (JSON)"],"pipelines":["Aktivität & Training","Pipeline: Aktivitäts-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":80,"orphaned_placeholder":false,"unresolved_fields":["time_window"]},{"key":"zeitraum_90d","placeholder":"{{zeitraum_90d}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 90d)","unit":null,"time_window":"90d","output_type":"date","format_hint":"YYYY-MM-DD","example_output":null,"value_display":"letzte 90 Tage","value_raw":null,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source","value_raw"]},{"key":"top_goal_name","placeholder":"{{top_goal_name}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Zielgewicht","value_raw":"Zielgewicht","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_goal_progress_pct","placeholder":"{{top_goal_progress_pct}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_goal_status","placeholder":"{{top_goal_status}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"active","value_raw":"active","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_recovery_progress","placeholder":"{{focus_cat_recovery_progress}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"74","value_raw":"74","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_recovery_weight","placeholder":"{{focus_cat_recovery_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"0.0","value_raw":0.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_vitalwerte_progress","placeholder":"{{focus_cat_vitalwerte_progress}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"74","value_raw":"74","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_vitalwerte_weight","placeholder":"{{focus_cat_vitalwerte_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"23.0","value_raw":23.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_mental_progress","placeholder":"{{focus_cat_mental_progress}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"74","value_raw":"74","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_mental_weight","placeholder":"{{focus_cat_mental_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"0.0","value_raw":0.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_lebensstil_progress","placeholder":"{{focus_cat_lebensstil_progress}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"81","value_raw":"81","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_lebensstil_weight","placeholder":"{{focus_cat_lebensstil_weight}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"23.0","value_raw":23.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"weight_90d_slope","placeholder":"{{weight_90d_slope}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 90d)","unit":"kg","time_window":"90d","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"hip_28d_delta","placeholder":"{{hip_28d_delta}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 28d)","unit":"cm","time_window":"28d","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"chest_28d_delta","placeholder":"{{chest_28d_delta}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 28d)","unit":"cm","time_window":"28d","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"arm_28d_delta","placeholder":"{{arm_28d_delta}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 28d)","unit":"cm","time_window":"28d","output_type":"number","format_hint":"12.3 cm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"thigh_28d_delta","placeholder":"{{thigh_28d_delta}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available (Zeitfenster: 28d)","unit":null,"time_window":"28d","output_type":"number","format_hint":"12.3","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"energy_deficit_surplus","placeholder":"{{energy_deficit_surplus}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"kcal","time_window":"unknown","output_type":"string","format_hint":"Wert kcal","example_output":null,"value_display":"deficit","value_raw":"deficit","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"protein_days_in_target","placeholder":"{{protein_days_in_target}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"g","time_window":"unknown","output_type":"integer","format_hint":"85 g","example_output":null,"value_display":"1/8","value_raw":1,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"intake_volatility","placeholder":"{{intake_volatility}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"moderate","value_raw":"moderate","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"ability_balance_mental","placeholder":"{{ability_balance_mental}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"ability_balance_coordination","placeholder":"{{ability_balance_coordination}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"ability_balance_mobility","placeholder":"{{ability_balance_mobility}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"monotony_score","placeholder":"{{monotony_score}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"strain_score","placeholder":"{{strain_score}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":55,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"recent_load_balance_3d","placeholder":"{{recent_load_balance_3d}}","category":"Unknown","type":"atomic","description":"No description available","semantic_contract":"No description available","unit":"%","time_window":"7d","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"0","value_raw":0.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"correlation_energy_weight_lag","placeholder":"{{correlation_energy_weight_lag}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"{\"best_lag\": 7, \"correlation\": -0.45, \"direction\": \"negative\", \"confidence\": \"medium\", \"data_points\": 80}","value_raw":7.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"correlation_protein_lbm","placeholder":"{{correlation_protein_lbm}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Wert g","example_output":null,"value_display":"{\"best_lag\": 0, \"correlation\": 0.32, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 28}","value_raw":"{\"best_lag\": 0, \"correlation\": 0.32, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 28}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"correlation_load_hrv","placeholder":"{{correlation_load_hrv}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Wert bpm","example_output":null,"value_display":"{\"best_lag\": 1, \"correlation\": -0.38, \"direction\": \"negative\", \"confidence\": \"medium\", \"data_points\": 25}","value_raw":"{\"best_lag\": 1, \"correlation\": -0.38, \"direction\": \"negative\", \"confidence\": \"medium\", \"data_points\": 25}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"correlation_load_rhr","placeholder":"{{correlation_load_rhr}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Wert bpm","example_output":null,"value_display":"{\"best_lag\": 1, \"correlation\": 0.42, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 25}","value_raw":"{\"best_lag\": 1, \"correlation\": 0.42, \"direction\": \"positive\", \"confidence\": \"medium\", \"data_points\": 25}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"correlation_sleep_recovery","placeholder":"{{correlation_sleep_recovery}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"{\"correlation\": 0.65, \"direction\": \"positive\", \"confidence\": \"high\", \"data_points\": 28}","value_raw":"{\"correlation\": 0.65, \"direction\": \"positive\", \"confidence\": \"high\", \"data_points\": 28}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Pearson correlation with significance testing","thresholds":{"min_data_points":7},"notes":"Requires minimum 7 data points for meaningful correlation"},"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"plateau_detected","placeholder":"{{plateau_detected}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"{}","value_raw":"{}","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_drivers","placeholder":"{{top_drivers}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"[{\"factor\": \"Energiebilanz\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Sehr großes Defizit (-1421 kcal/Tag) → Risiko für Magermasseverlust\"}, {\"factor\": \"Schlafdauer\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Schlafdauer zu gering (5.9h/Nacht < 7h Empfehlung)\"}, {\"factor\": \"Trainingsqualität\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Nur 10% der Trainings mit guter Qualität\"}, {\"factor\": \"Ruhetagsrespekt\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Ruhetage häufig ignoriert (0%) → Übertrainingsrisiko\"}, {\"factor\": \"Proteinzufuhr\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Proteinzufuhr konstant im Zielbereich (Score: 88)\"}, {\"factor\": \"Schlafregelmäßigkeit\", \"status\": \"förderlich\", \"evidence\": \"mittel\", \"reason\": \"Schlafrhythmus regelmäßig (Abweichung: 34 min)\"}, {\"factor\": \"Trainingskonsistenz\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Trainingsfrequenz im Zielbereich (4× pro Woche)\"}, {\"factor\": \"Recovery\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Recovery Score gut (74/100)\"}]","value_raw":"[{\"factor\": \"Energiebilanz\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Sehr großes Defizit (-1421 kcal/Tag) → Risiko für Magermasseverlust\"}, {\"factor\": \"Schlafdauer\", \"status\": \"hinderlich\", \"evidence\": \"hoch\", \"reason\": \"Schlafdauer zu gering (5.9h/Nacht < 7h Empfehlung)\"}, {\"factor\": \"Trainingsqualität\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Nur 10% der Trainings mit guter Qualität\"}, {\"factor\": \"Ruhetagsrespekt\", \"status\": \"hinderlich\", \"evidence\": \"mittel\", \"reason\": \"Ruhetage häufig ignoriert (0%) → Übertrainingsrisiko\"}, {\"factor\": \"Proteinzufuhr\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Proteinzufuhr konstant im Zielbereich (Score: 88)\"}, {\"factor\": \"Schlafregelmäßigkeit\", \"status\": \"förderlich\", \"evidence\": \"mittel\", \"reason\": \"Schlafrhythmus regelmäßig (Abweichung: 34 min)\"}, {\"factor\": \"Trainingskonsistenz\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Trainingsfrequenz im Zielbereich (4× pro Woche)\"}, {\"factor\": \"Recovery\", \"status\": \"förderlich\", \"evidence\": \"hoch\", \"reason\": \"Recovery Score gut (74/100)\"}]","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"active_goals_json","placeholder":"{{active_goals_json}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"json","format_hint":"JSON object","example_output":null,"value_display":"[{\"id\": \"84212e3d-39e5-4a16-92c5-6b3115a61050\", \"goal_type\": \"rhr\", \"name\": \"Ruhepuls\", \"target_value\": \"52.00\", \"target_date\": null, \"current_value\": \"51.00\", \"start_value\": \"54.00\", \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": true, \"created_at\": \"2026-03-26 20:58:57.564807\"}, {\"id\": \"a76dfccc-a543-42e5-8665-471a97eb2078\", \"goal_type\": \"sport_pro_woche\", \"name\": null, \"target_value\": \"3.00\", \"target_date\": null, \"current_value\": null, \"start_value\": null, \"start_date\": \"2026-03-27\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-27 21:11:23.476309\"}, {\"id\": \"4943a889-50ca-4b76-999c-6de0c461b8d7\", \"goal_type\": \"vo2max\", \"name\": null, \"target_value\": \"43.00\", \"target_date\": null, \"current_value\": \"35.50\", \"start_value\": \"35.50\", \"start_date\": \"2026-03-27\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-27 05:17:09.626589\"}, {\"id\": \"fb9b9701-d883-4201-9ee6-c1729b72d551\", \"goal_type\": \"bp\", \"name\": null, \"target_value\": \"120.00\", \"target_date\": null, \"current_value\": null, \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:58:45.860130\"}, {\"id\": \"b3cfb6d1-42e2-4f64-8d16-3f89ac37295c\", \"goal_type\": \"flexibility\", \"name\": null, \"target_value\": \"120.00\", \"target_date\": \"2026-10-01\", \"current_value\": \"30.00\", \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:57:40.832316\"}, {\"id\": \"370afea2-e744-40e2-b778-bebfacebe270\", \"goal_type\": \"strength\", \"name\": null, \"target_value\": \"120.00\", \"target_date\": \"2026-05-31\", \"current_value\": \"88.00\", \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:56:28.974447\"}, {\"id\": \"72dc0225-05a4-4c7f-a27c-da0f5619cb52\", \"goal_type\": \"body_fat\", \"name\": \"K\\u00f6rperfett\", \"target_value\": \"14.00\", \"target_date\": \"2026-05-30\", \"current_value\": \"19.90\", \"start_value\": \"19.90\", \"start_date\": \"2026-03-13\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:54:29.747574\"}, {\"id\": \"acfba058-dd5c-4190-9168-5126a3195a56\", \"goal_type\": \"lean_mass\", \"name\": null, \"target_value\": \"25.00\", \"target_date\": \"2026-05-31\", \"current_value\": \"20.00\", \"start_value\": null, \"start_date\": \"2026-03-26\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 20:44:18.678284\"}, {\"id\": \"4bd8bcd9-f8b8-424b-9871-a01c15058a52\", \"goal_type\": \"weight\", \"name\": \"Zielgewicht\", \"target_value\": \"82.00\", \"target_date\": \"2026-05-31\", \"current_value\": \"85.20\", \"start_value\": \"87.50\", \"start_date\": \"2026-02-22\", \"progress_pct\": null, \"status\": \"active\", \"is_primary\": false, \"created_at\": \"2026-03-26 15:32:21.566137\"}]","value_raw":[{"id":"84212e3d-39e5-4a16-92c5-6b3115a61050","goal_type":"rhr","name":"Ruhepuls","target_value":"52.00","target_date":null,"current_value":"51.00","start_value":"54.00","start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":true,"created_at":"2026-03-26 20:58:57.564807"},{"id":"a76dfccc-a543-42e5-8665-471a97eb2078","goal_type":"sport_pro_woche","name":null,"target_value":"3.00","target_date":null,"current_value":null,"start_value":null,"start_date":"2026-03-27","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-27 21:11:23.476309"},{"id":"4943a889-50ca-4b76-999c-6de0c461b8d7","goal_type":"vo2max","name":null,"target_value":"43.00","target_date":null,"current_value":"35.50","start_value":"35.50","start_date":"2026-03-27","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-27 05:17:09.626589"},{"id":"fb9b9701-d883-4201-9ee6-c1729b72d551","goal_type":"bp","name":null,"target_value":"120.00","target_date":null,"current_value":null,"start_value":null,"start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:58:45.860130"},{"id":"b3cfb6d1-42e2-4f64-8d16-3f89ac37295c","goal_type":"flexibility","name":null,"target_value":"120.00","target_date":"2026-10-01","current_value":"30.00","start_value":null,"start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:57:40.832316"},{"id":"370afea2-e744-40e2-b778-bebfacebe270","goal_type":"strength","name":null,"target_value":"120.00","target_date":"2026-05-31","current_value":"88.00","start_value":null,"start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:56:28.974447"},{"id":"72dc0225-05a4-4c7f-a27c-da0f5619cb52","goal_type":"body_fat","name":"Körperfett","target_value":"14.00","target_date":"2026-05-30","current_value":"19.90","start_value":"19.90","start_date":"2026-03-13","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:54:29.747574"},{"id":"acfba058-dd5c-4190-9168-5126a3195a56","goal_type":"lean_mass","name":null,"target_value":"25.00","target_date":"2026-05-31","current_value":"20.00","start_value":null,"start_date":"2026-03-26","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 20:44:18.678284"},{"id":"4bd8bcd9-f8b8-424b-9871-a01c15058a52","goal_type":"weight","name":"Zielgewicht","target_value":"82.00","target_date":"2026-05-31","current_value":"85.20","start_value":"87.50","start_date":"2026-02-22","progress_pct":null,"status":"active","is_primary":false,"created_at":"2026-03-26 15:32:21.566137"}],"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"active_goals_md","placeholder":"{{active_goals_md}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"markdown","format_hint":"Markdown-formatted text","example_output":null,"value_display":"| Ziel | Aktuell | Ziel | Progress | Status |\n|------|---------|------|----------|--------|\n| Ruhepuls | 51.00 | 52.00 | 100% | 🎯 |\n| sport_pro_woche | - | 3.00 | - | ○ |\n| vo2max | 35.50 | 43.00 | 0% | ○ |\n| bp | - | 120.00 | - | ○ |\n| flexibility | 30.00 | 120.00 | - | ○ |\n| strength | 88.00 | 120.00 | - | ○ |\n| Körperfett | 19.90 | 14.00 | 0% | ○ |\n| lean_mass | 20.00 | 25.00 | - | ○ |\n| Zielgewicht | 85.20 | 82.00 | 41% | ○ |","value_raw":"| Ziel | Aktuell | Ziel | Progress | Status |\n|------|---------|------|----------|--------|\n| Ruhepuls | 51.00 | 52.00 | 100% | 🎯 |\n| sport_pro_woche | - | 3.00 | - | ○ |\n| vo2max | 35.50 | 43.00 | 0% | ○ |\n| bp | - | 120.00 | - | ○ |\n| flexibility | 30.00 | 120.00 | - | ○ |\n| strength | 88.00 | 120.00 | - | ○ |\n| Körperfett | 19.90 | 14.00 | 0% | ○ |\n| lean_mass | 20.00 | 25.00 | - | ○ |\n| Zielgewicht | 85.20 | 82.00 | 41% | ○ |","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_areas_weighted_json","placeholder":"{{focus_areas_weighted_json}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"json","format_hint":"JSON object","example_output":null,"value_display":"[{\"key\": \"rhythm\", \"name\": \"Rhythmusgef\\u00fchl\", \"category\": \"coordination\", \"weight\": 55.0}, {\"key\": \"protein_intake\", \"name\": \"Proteinzufuhr\", \"category\": \"nutrition\", \"weight\": 50.0}, {\"key\": \"calorie_balance\", \"name\": \"Kalorienbilanz\", \"category\": \"nutrition\", \"weight\": 50.0}, {\"key\": \"body_recomposition\", \"name\": \"Body Recomposition\", \"category\": \"body_composition\", \"weight\": 40.0}, {\"key\": \"anaerobic_endurance\", \"name\": \"Anaerobe Ausdauer\", \"category\": \"endurance\", \"weight\": 35.0}, {\"key\": \"macro_consistency\", \"name\": \"Makro-Konsistenz\", \"category\": \"nutrition\", \"weight\": 35.0}, {\"key\": \"weight_loss\", \"name\": \"Gewichtsverlust\", \"category\": \"body_composition\", \"weight\": 30.0}, {\"key\": \"muscle_gain\", \"name\": \"Muskelaufbau\", \"category\": \"body_composition\", \"weight\": 30.0}, {\"key\": \"strength\", \"name\": \"Maximalkraft\", \"category\": \"training\", \"weight\": 25.0}, {\"key\": \"general_health\", \"name\": \"Allgemeine Gesundheit\", \"category\": \"health\", \"weight\": 23.0}, {\"key\": \"aerobic_endurance\", \"name\": \"Aerobe Ausdauer\", \"category\": \"endurance\", \"weight\": 10.0}, {\"key\": \"flexibility\", \"name\": \"Beweglichkeit\", \"category\": \"training\", \"weight\": 5.0}]","value_raw":[{"key":"rhythm","name":"Rhythmusgefühl","category":"coordination","weight":55.0},{"key":"protein_intake","name":"Proteinzufuhr","category":"nutrition","weight":50.0},{"key":"calorie_balance","name":"Kalorienbilanz","category":"nutrition","weight":50.0},{"key":"body_recomposition","name":"Body Recomposition","category":"body_composition","weight":40.0},{"key":"anaerobic_endurance","name":"Anaerobe Ausdauer","category":"endurance","weight":35.0},{"key":"macro_consistency","name":"Makro-Konsistenz","category":"nutrition","weight":35.0},{"key":"weight_loss","name":"Gewichtsverlust","category":"body_composition","weight":30.0},{"key":"muscle_gain","name":"Muskelaufbau","category":"body_composition","weight":30.0},{"key":"strength","name":"Maximalkraft","category":"training","weight":25.0},{"key":"general_health","name":"Allgemeine Gesundheit","category":"health","weight":23.0},{"key":"aerobic_endurance","name":"Aerobe Ausdauer","category":"endurance","weight":10.0},{"key":"flexibility","name":"Beweglichkeit","category":"training","weight":5.0}],"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_areas_weighted_md","placeholder":"{{focus_areas_weighted_md}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"markdown","format_hint":"Markdown-formatted text","example_output":null,"value_display":"- **Rhythmusgefühl**: 55.0%\n- **Proteinzufuhr**: 50.0%\n- **Kalorienbilanz**: 50.0%\n- **Body Recomposition**: 40.0%\n- **Anaerobe Ausdauer**: 35.0%\n- **Makro-Konsistenz**: 35.0%\n- **Gewichtsverlust**: 30.0%\n- **Muskelaufbau**: 30.0%\n- **Maximalkraft**: 25.0%\n- **Allgemeine Gesundheit**: 23.0%\n- **Aerobe Ausdauer**: 10.0%\n- **Beweglichkeit**: 5.0%","value_raw":"- **Rhythmusgefühl**: 55.0%\n- **Proteinzufuhr**: 50.0%\n- **Kalorienbilanz**: 50.0%\n- **Body Recomposition**: 40.0%\n- **Anaerobe Ausdauer**: 35.0%\n- **Makro-Konsistenz**: 35.0%\n- **Gewichtsverlust**: 30.0%\n- **Muskelaufbau**: 30.0%\n- **Maximalkraft**: 25.0%\n- **Allgemeine Gesundheit**: 23.0%\n- **Aerobe Ausdauer**: 10.0%\n- **Beweglichkeit**: 5.0%","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_area_weights_json","placeholder":"{{focus_area_weights_json}}","category":"Unknown","type":"raw_data","description":"No description available","semantic_contract":"No description available [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"json","format_hint":"JSON object","example_output":null,"value_display":"{\"strength\": 25.0, \"flexibility\": 5.0, \"aerobic_endurance\": 10.0, \"anaerobic_endurance\": 35.0, \"rhythm\": 55.0, \"body_recomposition\": 40.0, \"weight_loss\": 30.0, \"muscle_gain\": 30.0, \"general_health\": 23.0, \"protein_intake\": 50.0, \"calorie_balance\": 50.0, \"macro_consistency\": 35.0}","value_raw":{"strength":25.0,"flexibility":5.0,"aerobic_endurance":10.0,"anaerobic_endurance":35.0,"rhythm":55.0,"body_recomposition":40.0,"weight_loss":30.0,"muscle_gain":30.0,"general_health":23.0,"protein_intake":50.0,"calorie_balance":50.0,"macro_consistency":35.0},"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_json","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":["goals","focus_area_definitions","goal_focus_contributions"],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"medium","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_3_focus_areas","placeholder":"{{top_3_focus_areas}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"1. Rhythmusgefühl (55.0%), 2. Proteinzufuhr (50.0%), 3. Kalorienbilanz (50.0%)","value_raw":"1. Rhythmusgefühl (55.0%), 2. Proteinzufuhr (50.0%), 3. Kalorienbilanz (50.0%)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_3_goals_behind_schedule","placeholder":"{{top_3_goals_behind_schedule}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"vo2max (0% erreicht), Körperfett (0% statt 25%, -25%)","value_raw":"vo2max (0% erreicht), Körperfett (0% statt 25%, -25%)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_3_goals_on_track","placeholder":"{{top_3_goals_on_track}}","category":"Unknown","type":"interpreted","description":"No description available","semantic_contract":"No description available [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Ruhepuls (100% erreicht), Zielgewicht (41%, +2% voraus)","value_raw":"Ruhepuls (100% erreicht), Zielgewicht (41%, +2% voraus)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":50,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]}],"Ernährung":[{"key":"kcal_avg","placeholder":"{{kcal_avg}}","category":"Ernährung","type":"atomic","description":"Durchschn. Kalorien (30d)","semantic_contract":"Durchschn. Kalorien (30d) (Zeitfenster: 30d)","unit":"kcal","time_window":"30d","output_type":"number","format_hint":"12.3 kcal","example_output":null,"value_display":"1534 kcal/Tag (Ø 30 Tage)","value_raw":1534.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_avg","module":"placeholder_resolver.py","function":"get_nutrition_average_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"protein_avg","placeholder":"{{protein_avg}}","category":"Ernährung","type":"atomic","description":"Durchschn. Protein in g (30d)","semantic_contract":"Durchschn. Protein in g (30d) (Zeitfenster: 30d)","unit":"g","time_window":"30d","output_type":"number","format_hint":"12.3 g","example_output":null,"value_display":"114g/Tag (Ø 30 Tage)","value_raw":114.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_avg","module":"placeholder_resolver.py","function":"get_nutrition_average_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"carb_avg","placeholder":"{{carb_avg}}","category":"Ernährung","type":"atomic","description":"Durchschn. Kohlenhydrate in g (30d)","semantic_contract":"Durchschn. Kohlenhydrate in g (30d) (Zeitfenster: 30d)","unit":"g","time_window":"30d","output_type":"number","format_hint":"12.3 g","example_output":null,"value_display":"152g/Tag (Ø 30 Tage)","value_raw":152.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_avg","module":"placeholder_resolver.py","function":"get_nutrition_average_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"fat_avg","placeholder":"{{fat_avg}}","category":"Ernährung","type":"atomic","description":"Durchschn. Fett in g (30d)","semantic_contract":"Durchschn. Fett in g (30d) (Zeitfenster: 30d)","unit":"g","time_window":"30d","output_type":"number","format_hint":"12.3 g","example_output":null,"value_display":"45g/Tag (Ø 30 Tage)","value_raw":45.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by nutrition_metrics"},"source":{"resolver":"get_nutrition_avg","module":"placeholder_resolver.py","function":"get_nutrition_average_data","data_layer_module":"nutrition_metrics","source_tables":["nutrition_log"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Pipeline: Ernährungs-Analyse (JSON)"],"pipelines":["Pipeline: Ernährungs-Analyse (JSON)"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":95,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"energy_balance_7d","placeholder":"{{energy_balance_7d}}","category":"Ernährung","type":"atomic","description":"Energiebilanz 7d (kcal/Tag)","semantic_contract":"Energiebilanz 7d (kcal/Tag) (Zeitfenster: 7d)","unit":"%","time_window":"7d","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"-1421","value_raw":-1421.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"protein_g_per_kg","placeholder":"{{protein_g_per_kg}}","category":"Ernährung","type":"atomic","description":"Protein g/kg Körpergewicht","semantic_contract":"Protein g/kg Körpergewicht","unit":"g","time_window":"unknown","output_type":"string","format_hint":"Wert g","example_output":null,"value_display":"1.1","value_raw":"1.1","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"protein_adequacy_28d","placeholder":"{{protein_adequacy_28d}}","category":"Ernährung","type":"atomic","description":"Protein Adequacy Score (0-100)","semantic_contract":"Protein Adequacy Score (0-100) (Zeitfenster: 28d)","unit":"%","time_window":"28d","output_type":"string","format_hint":"Wert %","example_output":null,"value_display":"88","value_raw":"88","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"macro_consistency_score","placeholder":"{{macro_consistency_score}}","category":"Ernährung","type":"atomic","description":"Makro-Konsistenz Score (0-100)","semantic_contract":"Makro-Konsistenz Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"70","value_raw":70,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]}],"Training":[{"key":"activity_summary","placeholder":"{{activity_summary}}","category":"Training","type":"raw_data","description":"Aktivitäts-Zusammenfassung (7d)","semantic_contract":"Aktivitäts-Zusammenfassung (7d) [Strukturierte Rohdaten]","unit":null,"time_window":"7d","output_type":"string","format_hint":"Text","example_output":null,"value_display":"17 Einheiten in 14 Tagen (Ø 66 min/Einheit, 5728 kcal gesamt)","value_raw":"17 Einheiten in 14 Tagen (Ø 66 min/Einheit, 5728 kcal gesamt)","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Based on data availability and quality thresholds","thresholds":{"min_data_points":1},"notes":"Confidence determined by activity_metrics"},"source":{"resolver":"get_activity_summary","module":"placeholder_resolver.py","function":"get_activity_summary_data","data_layer_module":"activity_metrics","source_tables":["activity_log","training_types"],"source_kind":"aggregated","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":["Gesamtanalyse"],"pipelines":["Gesamtanalyse"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"validated","provenance_confidence":"high","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":100,"orphaned_placeholder":false,"unresolved_fields":[]},{"key":"trainingstyp_verteilung","placeholder":"{{trainingstyp_verteilung}}","category":"Training","type":"raw_data","description":"Verteilung nach Trainingstypen","semantic_contract":"Verteilung nach Trainingstypen [Strukturierte Rohdaten]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"strength: 35%, martial_arts: 23%, cardio: 17%","value_raw":"strength: 35%, martial_arts: 23%, cardio: 17%","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"get_trainingstyp_verteilung","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"training_minutes_week","placeholder":"{{training_minutes_week}}","category":"Training","type":"atomic","description":"Trainingsminuten pro Woche","semantic_contract":"Trainingsminuten pro Woche (Zeitfenster: 7d)","unit":"Minuten","time_window":"7d","output_type":"string","format_hint":"Wert Minuten","example_output":null,"value_display":"373","value_raw":"373","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"training_frequency_7d","placeholder":"{{training_frequency_7d}}","category":"Training","type":"atomic","description":"Trainingshäufigkeit 7d","semantic_contract":"Trainingshäufigkeit 7d (Zeitfenster: 7d)","unit":null,"time_window":"7d","output_type":"integer","format_hint":"85","example_output":null,"value_display":"4","value_raw":4,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"quality_sessions_pct","placeholder":"{{quality_sessions_pct}}","category":"Training","type":"atomic","description":"Qualitätssessions (%)","semantic_contract":"Qualitätssessions (%)","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"10","value_raw":10,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"ability_balance_strength","placeholder":"{{ability_balance_strength}}","category":"Training","type":"atomic","description":"Ability Balance - Kraft (0-100)","semantic_contract":"Ability Balance - Kraft (0-100)","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"ability_balance_endurance","placeholder":"{{ability_balance_endurance}}","category":"Training","type":"atomic","description":"Ability Balance - Ausdauer (0-100)","semantic_contract":"Ability Balance - Ausdauer (0-100)","unit":"%","time_window":"unknown","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"proxy_internal_load_7d","placeholder":"{{proxy_internal_load_7d}}","category":"Training","type":"atomic","description":"Proxy Load 7d","semantic_contract":"Proxy Load 7d (Zeitfenster: 7d)","unit":null,"time_window":"7d","output_type":"string","format_hint":"Text","example_output":null,"value_display":"373","value_raw":"373","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":75,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"rest_day_compliance","placeholder":"{{rest_day_compliance}}","category":"Training","type":"atomic","description":"Ruhetags-Compliance (%)","semantic_contract":"Ruhetags-Compliance (%)","unit":"%","time_window":"unknown","output_type":"string","format_hint":"Wert %","example_output":null,"value_display":"0","value_raw":"0","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]}],"Schlaf & Erholung":[{"key":"sleep_avg_duration","placeholder":"{{sleep_avg_duration}}","category":"Schlaf & Erholung","type":"atomic","description":"Durchschn. Schlafdauer (7d)","semantic_contract":"Durchschn. Schlafdauer (7d) (Zeitfenster: 30d)","unit":"Stunden","time_window":"7d","output_type":"number","format_hint":"12.3 Stunden","example_output":null,"value_display":"6.8h","value_raw":6.8,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_sleep_avg_duration","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"sleep_avg_quality","placeholder":"{{sleep_avg_quality}}","category":"Schlaf & Erholung","type":"atomic","description":"Durchschn. Schlafqualität (7d)","semantic_contract":"Durchschn. Schlafqualität (7d) (Zeitfenster: 30d)","unit":"%","time_window":"7d","output_type":"number","format_hint":"12.3 %","example_output":null,"value_display":"34% (Deep+REM)","value_raw":34.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_sleep_avg_quality","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"rest_days_count","placeholder":"{{rest_days_count}}","category":"Schlaf & Erholung","type":"atomic","description":"Anzahl Ruhetage (30d)","semantic_contract":"Anzahl Ruhetage (30d)","unit":null,"time_window":"30d","output_type":"integer","format_hint":"85","example_output":null,"value_display":"2 Ruhetage","value_raw":2,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_rest_days_count","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"sleep_avg_duration_7d","placeholder":"{{sleep_avg_duration_7d}}","category":"Schlaf & Erholung","type":"atomic","description":"Schlaf 7d (Stunden)","semantic_contract":"Schlaf 7d (Stunden) (Zeitfenster: 7d)","unit":"Stunden","time_window":"7d","output_type":"number","format_hint":"12.3 Stunden","example_output":null,"value_display":"5.9","value_raw":5.9,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]},{"key":"sleep_debt_hours","placeholder":"{{sleep_debt_hours}}","category":"Schlaf & Erholung","type":"atomic","description":"Schlafschuld (Stunden)","semantic_contract":"Schlafschuld (Stunden)","unit":"Stunden","time_window":"unknown","output_type":"string","format_hint":"Wert Stunden","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"sleep_regularity_proxy","placeholder":"{{sleep_regularity_proxy}}","category":"Schlaf & Erholung","type":"atomic","description":"Schlaf-Regelmäßigkeit (Min Abweichung)","semantic_contract":"Schlaf-Regelmäßigkeit (Min Abweichung)","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"34.5","value_raw":"34.5","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"sleep_quality_7d","placeholder":"{{sleep_quality_7d}}","category":"Schlaf & Erholung","type":"atomic","description":"Schlafqualität 7d (0-100)","semantic_contract":"Schlafqualität 7d (0-100) (Zeitfenster: 7d)","unit":"%","time_window":"7d","output_type":"string","format_hint":"Wert %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["source"]}],"Vitalwerte":[{"key":"vitals_avg_hr","placeholder":"{{vitals_avg_hr}}","category":"Vitalwerte","type":"atomic","description":"Durchschn. Ruhepuls (7d)","semantic_contract":"Durchschn. Ruhepuls (7d) (Zeitfenster: 30d)","unit":"bpm","time_window":"7d","output_type":"number","format_hint":"12.3 bpm","example_output":null,"value_display":"51 bpm","value_raw":51.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_vitals_avg_hr","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"vitals_avg_hrv","placeholder":"{{vitals_avg_hrv}}","category":"Vitalwerte","type":"atomic","description":"Durchschn. HRV (7d)","semantic_contract":"Durchschn. HRV (7d) (Zeitfenster: 30d)","unit":"ms","time_window":"7d","output_type":"number","format_hint":"12.3 bpm","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_vitals_avg_hrv","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"vitals_vo2_max","placeholder":"{{vitals_vo2_max}}","category":"Vitalwerte","type":"atomic","description":"Aktueller VO2 Max","semantic_contract":"Aktueller VO2 Max","unit":"ml/kg/min","time_window":"unknown","output_type":"string","format_hint":"Wert ml/kg/min","example_output":null,"value_display":"35.5 ml/kg/min","value_raw":"35.5 ml/kg/min","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"get_vitals_vo2_max","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"vo2max_trend_28d","placeholder":"{{vo2max_trend_28d}}","category":"Vitalwerte","type":"atomic","description":"VO2max Trend 28d","semantic_contract":"VO2max Trend 28d (Zeitfenster: 28d)","unit":"ml/kg/min","time_window":"28d","output_type":"number","format_hint":"12.3 ml/kg/min","example_output":null,"value_display":"1.9","value_raw":1.9,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source"]},{"key":"hrv_vs_baseline_pct","placeholder":"{{hrv_vs_baseline_pct}}","category":"Vitalwerte","type":"atomic","description":"HRV vs. Baseline (%)","semantic_contract":"HRV vs. Baseline (%)","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"rhr_vs_baseline_pct","placeholder":"{{rhr_vs_baseline_pct}}","category":"Vitalwerte","type":"atomic","description":"RHR vs. Baseline (%)","semantic_contract":"RHR vs. Baseline (%)","unit":"%","time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]}],"Zeitraum":[{"key":"datum_heute","placeholder":"{{datum_heute}}","category":"Zeitraum","type":"atomic","description":"Heutiges Datum","semantic_contract":"Heutiges Datum","unit":null,"time_window":"unknown","output_type":"date","format_hint":"YYYY-MM-DD","example_output":null,"value_display":"02.04.2026","value_raw":null,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source","value_raw"]},{"key":"zeitraum_7d","placeholder":"{{zeitraum_7d}}","category":"Zeitraum","type":"atomic","description":"7-Tage-Zeitraum","semantic_contract":"7-Tage-Zeitraum (Zeitfenster: 7d)","unit":null,"time_window":"7d","output_type":"date","format_hint":"YYYY-MM-DD","example_output":null,"value_display":"letzte 7 Tage","value_raw":null,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source","value_raw"]},{"key":"zeitraum_30d","placeholder":"{{zeitraum_30d}}","category":"Zeitraum","type":"atomic","description":"30-Tage-Zeitraum","semantic_contract":"30-Tage-Zeitraum (Zeitfenster: 30d)","unit":null,"time_window":"30d","output_type":"date","format_hint":"YYYY-MM-DD","example_output":null,"value_display":"letzte 30 Tage","value_raw":null,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"<lambda>","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"unknown","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":true,"unresolved_fields":["source","value_raw"]}],"Scores (Phase 0b)":[{"key":"goal_progress_score","placeholder":"{{goal_progress_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Goal Progress Score (0-100)","semantic_contract":"Goal Progress Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"51","value_raw":51,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"body_progress_score","placeholder":"{{body_progress_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Body Progress Score (0-100)","semantic_contract":"Body Progress Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"41","value_raw":41,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"nutrition_score","placeholder":"{{nutrition_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Nutrition Score (0-100)","semantic_contract":"Nutrition Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"71","value_raw":71,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"activity_score","placeholder":"{{activity_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Activity Score (0-100)","semantic_contract":"Activity Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"37","value_raw":37,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":{"enabled":true,"min_data_points":null,"min_confidence":null,"filter_criteria":null,"default_filter_level":"quality","null_quality_handling":"exclude","includes_poor":false,"includes_excluded":false,"notes":"Activity metrics filter for quality='quality' by default. NULL quality_label excluded."},"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":70,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"recovery_score","placeholder":"{{recovery_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Recovery Score (0-100)","semantic_contract":"Recovery Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"74","value_raw":74,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"data_quality_score","placeholder":"{{data_quality_score}}","category":"Scores (Phase 0b)","type":"atomic","description":"Data Quality Score (0-100)","semantic_contract":"Data Quality Score (0-100)","unit":null,"time_window":"unknown","output_type":"integer","format_hint":"85 %","example_output":null,"value_display":"81","value_raw":81,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":{"supported":true,"calculation":"Based on data completeness for score components","thresholds":null,"notes":"Score confidence correlates with input data availability"},"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":65,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]}],"Focus Areas":[{"key":"top_focus_area_name","placeholder":"{{top_focus_area_name}}","category":"Focus Areas","type":"interpreted","description":"Top Focus Area Name","semantic_contract":"Top Focus Area Name [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"Rhythmusgefühl","value_raw":"Rhythmusgefühl","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_str","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"top_focus_area_progress","placeholder":"{{top_focus_area_progress}}","category":"Focus Areas","type":"interpreted","description":"Top Focus Area Progress (%)","semantic_contract":"Top Focus Area Progress (%) [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"nicht verfügbar","value_raw":null,"available":false,"missing_reason":"nicht verfügbar","missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":[],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":true,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_körper_progress","placeholder":"{{focus_cat_körper_progress}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Körper - Progress (%)","semantic_contract":"Kategorie Körper - Progress (%) [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"41","value_raw":"41","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"inferred","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_körper_weight","placeholder":"{{focus_cat_körper_weight}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Körper - Gewichtung (%)","semantic_contract":"Kategorie Körper - Gewichtung (%) [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"100.0","value_raw":100.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_ernährung_progress","placeholder":"{{focus_cat_ernährung_progress}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Ernährung - Progress (%)","semantic_contract":"Kategorie Ernährung - Progress (%) [KI-interpretiert]","unit":"bpm","time_window":"unknown","output_type":"string","format_hint":"Wert bpm","example_output":null,"value_display":"71","value_raw":"71","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_ernährung_weight","placeholder":"{{focus_cat_ernährung_weight}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Ernährung - Gewichtung (%)","semantic_contract":"Kategorie Ernährung - Gewichtung (%) [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"135.0","value_raw":135.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_aktivität_progress","placeholder":"{{focus_cat_aktivität_progress}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Aktivität - Progress (%)","semantic_contract":"Kategorie Aktivität - Progress (%) [KI-interpretiert]","unit":null,"time_window":"unknown","output_type":"string","format_hint":"Text","example_output":null,"value_display":"37","value_raw":"37","available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_int","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]},{"key":"focus_cat_aktivität_weight","placeholder":"{{focus_cat_aktivität_weight}}","category":"Focus Areas","type":"interpreted","description":"Kategorie Aktivität - Gewichtung (%)","semantic_contract":"Kategorie Aktivität - Gewichtung (%) [KI-interpretiert]","unit":"kg","time_window":"unknown","output_type":"number","format_hint":"12.3 kg","example_output":null,"value_display":"30.0","value_raw":30.0,"available":true,"missing_reason":null,"missing_value_policy":{"legacy_display":"nicht verfügbar","structured_null":true,"reason_codes":["no_data","insufficient_data","resolver_error"]},"exception_handling":{"on_error":"return_null_and_reason","notes":"Keine Exception bis in Prompt-Ebene durchreichen"},"quality_filter_policy":null,"confidence_logic":null,"source":{"resolver":"_safe_float","module":"placeholder_resolver.py","function":null,"data_layer_module":null,"source_tables":[],"source_kind":"wrapper","code_reference":null},"dependencies":["profile_id"],"used_by":{"prompts":[],"pipelines":["test0b"],"charts":[]},"version":"1.0.0","deprecated":false,"replacement":null,"known_issues":[],"notes":[],"schema_status":"draft","provenance_confidence":"low","contract_source":"documented","legacy_contract_mismatch":false,"metadata_completeness_score":60,"orphaned_placeholder":false,"unresolved_fields":["time_window","source"]}]},"summary":{"total_placeholders":111,"available":87,"missing":24,"by_type":{"atomic":72,"raw_data":10,"interpreted":29},"by_schema_status":{"validated":10,"draft":101},"quality_metrics":{"average_completeness_score":64.5,"legacy_mismatches":1,"orphaned":67,"with_quality_filter":16,"with_confidence_logic":26},"coverage":{"time_window_unknown":72,"output_type_unknown":0,"legacy_unknown_type":0,"with_unresolved_fields":101}},"gaps":{"unknown_time_window":["bmi","caliper_summary","circ_summary","goal_weight","goal_bf_pct","nutrition_days","protein_ziel_low","protein_ziel_high","activity_detail","trainingstyp_verteilung","vitals_vo2_max","datum_heute","goal_progress_score","body_progress_score","nutrition_score","activity_score","recovery_score","data_quality_score","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","waist_hip_ratio","recomposition_quadrant","energy_deficit_surplus","protein_g_per_kg","protein_days_in_target","macro_consistency_score","intake_volatility","quality_sessions_pct","ability_balance_strength","ability_balance_endurance","ability_balance_mental","ability_balance_coordination","ability_balance_mobility","monotony_score","strain_score","rest_day_compliance","hrv_vs_baseline_pct","rhr_vs_baseline_pct","sleep_debt_hours","sleep_regularity_proxy","correlation_energy_weight_lag","correlation_protein_lbm","correlation_load_hrv","correlation_load_rhr","correlation_sleep_recovery","plateau_detected","top_drivers","active_goals_json","active_goals_md","focus_areas_weighted_json","focus_areas_weighted_md","focus_area_weights_json","top_3_focus_areas","top_3_goals_behind_schedule","top_3_goals_on_track"],"unknown_output_type":[],"legacy_unknown_type":[],"unresolved_fields":{"height":["source"],"geschlecht":["source"],"bmi":["time_window"],"caliper_summary":["time_window"],"circ_summary":["time_window"],"goal_weight":["time_window"],"goal_bf_pct":["time_window"],"nutrition_days":["time_window"],"protein_ziel_low":["time_window","source"],"protein_ziel_high":["time_window","source"],"activity_detail":["time_window"],"trainingstyp_verteilung":["time_window","source"],"sleep_avg_duration":["source"],"sleep_avg_quality":["source"],"rest_days_count":["source"],"vitals_avg_hr":["source"],"vitals_avg_hrv":["source"],"vitals_vo2_max":["time_window","source"],"datum_heute":["time_window","source","value_raw"],"zeitraum_7d":["source","value_raw"],"zeitraum_30d":["source","value_raw"],"zeitraum_90d":["source","value_raw"],"goal_progress_score":["time_window","source"],"body_progress_score":["time_window","source"],"nutrition_score":["time_window","source"],"activity_score":["time_window","source"],"recovery_score":["time_window","source"],"data_quality_score":["time_window","source"],"top_goal_name":["time_window","source"],"top_goal_progress_pct":["time_window","source"],"top_goal_status":["time_window","source"],"top_focus_area_name":["time_window","source"],"top_focus_area_progress":["time_window","source"],"focus_cat_körper_progress":["time_window","source"],"focus_cat_körper_weight":["time_window","source"],"focus_cat_ernährung_progress":["time_window","source"],"focus_cat_ernährung_weight":["time_window","source"],"focus_cat_aktivität_progress":["time_window","source"],"focus_cat_aktivität_weight":["time_window","source"],"focus_cat_recovery_progress":["time_window","source"],"focus_cat_recovery_weight":["time_window","source"],"focus_cat_vitalwerte_progress":["time_window","source"],"focus_cat_vitalwerte_weight":["time_window","source"],"focus_cat_mental_progress":["time_window","source"],"focus_cat_mental_weight":["time_window","source"],"focus_cat_lebensstil_progress":["time_window","source"],"focus_cat_lebensstil_weight":["time_window","source"],"weight_7d_median":["source"],"weight_28d_slope":["source"],"weight_90d_slope":["source"],"fm_28d_change":["source"],"lbm_28d_change":["source"],"waist_28d_delta":["source"],"hip_28d_delta":["source"],"chest_28d_delta":["source"],"arm_28d_delta":["source"],"thigh_28d_delta":["source"],"waist_hip_ratio":["time_window","source"],"recomposition_quadrant":["time_window","source"],"energy_balance_7d":["source"],"energy_deficit_surplus":["time_window","source"],"protein_g_per_kg":["time_window","source"],"protein_days_in_target":["time_window","source"],"protein_adequacy_28d":["source"],"macro_consistency_score":["time_window","source"],"intake_volatility":["time_window","source"],"training_minutes_week":["source"],"training_frequency_7d":["source"],"quality_sessions_pct":["time_window","source"],"ability_balance_strength":["time_window","source"],"ability_balance_endurance":["time_window","source"],"ability_balance_mental":["time_window","source"],"ability_balance_coordination":["time_window","source"],"ability_balance_mobility":["time_window","source"],"proxy_internal_load_7d":["source"],"monotony_score":["time_window","source"],"strain_score":["time_window","source"],"rest_day_compliance":["time_window","source"],"vo2max_trend_28d":["source"],"hrv_vs_baseline_pct":["time_window","source"],"rhr_vs_baseline_pct":["time_window","source"],"sleep_avg_duration_7d":["source"],"sleep_debt_hours":["time_window","source"],"sleep_regularity_proxy":["time_window","source"],"recent_load_balance_3d":["source"],"sleep_quality_7d":["source"],"correlation_energy_weight_lag":["time_window","source"],"correlation_protein_lbm":["time_window","source"],"correlation_load_hrv":["time_window","source"],"correlation_load_rhr":["time_window","source"],"correlation_sleep_recovery":["time_window","source"],"plateau_detected":["time_window","source"],"top_drivers":["time_window","source"],"active_goals_json":["time_window","source"],"active_goals_md":["time_window","source"],"focus_areas_weighted_json":["time_window","source"],"focus_areas_weighted_md":["time_window","source"],"focus_area_weights_json":["time_window","source"],"top_3_focus_areas":["time_window","source"],"top_3_goals_behind_schedule":["time_window","source"],"top_3_goals_on_track":["time_window","source"]},"legacy_mismatches":["weight_trend"],"orphaned":["bmi","trainingstyp_verteilung","sleep_avg_duration","sleep_avg_quality","rest_days_count","vitals_avg_hr","vitals_avg_hrv","vitals_vo2_max","datum_heute","zeitraum_7d","zeitraum_30d","zeitraum_90d","data_quality_score","top_goal_name","top_goal_progress_pct","top_goal_status","top_focus_area_name","top_focus_area_progress","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","weight_28d_slope","weight_90d_slope","waist_28d_delta","hip_28d_delta","chest_28d_delta","arm_28d_delta","thigh_28d_delta","waist_hip_ratio","energy_deficit_surplus","protein_days_in_target","macro_consistency_score","intake_volatility","training_frequency_7d","ability_balance_endurance","ability_balance_mental","ability_balance_coordination","ability_balance_mobility","proxy_internal_load_7d","monotony_score","strain_score","rest_day_compliance","vo2max_trend_28d","rhr_vs_baseline_pct","sleep_debt_hours","sleep_regularity_proxy","recent_load_balance_3d","correlation_energy_weight_lag","correlation_protein_lbm","correlation_load_hrv","correlation_load_rhr","correlation_sleep_recovery","plateau_detected","top_drivers","active_goals_json","active_goals_md","focus_areas_weighted_json","focus_areas_weighted_md","focus_area_weights_json","top_3_focus_areas","top_3_goals_behind_schedule","top_3_goals_on_track"]}},"validation":{"compliant":72,"non_compliant":0,"issues":[]},"registry_metadata":{"flat":[{"key":"carb_avg","category":"Ernährung","description":"Durchschn. Kohlenhydrate in g (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_avg","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_average_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert den Durchschnitt der dokumentierten täglichen Kohlenhydratzufuhr über das definierte Auswertungsfenster.","business_meaning":"Relevanter Makroindikator für Leistungs-, Energie- und Belastungskontext","unit":"g/day","time_window":"30d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl in g/day","example_output":"210","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"datenpunktbasierte Coverage-Logik (calculate_confidence)","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht genug Daten"},"known_limitations":"allein selten aussagekräftig; meist im Kontext von Ziel, Energie und Belastung relevant","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_average_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"category":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","confidence_logic":"code-derived","missing_value_policy":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed","minimum_data_requirements":"unresolved","quality_filter_policy":"unresolved","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"code-derived","format_hint":"code-derived","example_output":"code-derived","known_limitations":"draft-derived"}},{"key":"energy_balance_7d","category":"Ernährung","description":"Energiebilanz 7-Tage (kcal/Tag Durchschnitt)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_float('energy_balance_7d', pid, decimals=0)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_energy_balance_7d","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert die geschätzte Energiebilanz über 7 Tage als Differenz zwischen durchschnittlicher Energieaufnahme und geschätztem TDEE (Total Daily Energy Expenditure). Positiver Wert = Überschuss, Negativer Wert = Defizit.","business_meaning":"Kernindikator für Defizit-/Überschussrichtung im Kurzfristfenster. Zeigt, ob aktuelle Ernährung auf Gewichtsverlust, Erhaltung oder Aufbau ausgerichtet ist.","unit":"kcal/day (Durchschnitt)","time_window":"7d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl, gerundet auf 0 Dezimalstellen","example_output":"-380","minimum_data_requirements":"Mindestens 4 Tage mit Kalorienerfassung in 7-Tage-Fenster. Aktuelles Gewicht aus weight_log erforderlich.","quality_filter_policy":"Unvollständige Intake-Daten und fehlende Gewichtsmessung reduzieren Verlässlichkeit. TDEE-Schätzung ist vereinfacht (weight_kg × 32.5).","confidence_logic":"Kombiniert Intake-Abdeckung und Robustheit des Verbrauchsmodells. Niedrigere Confidence bei <7 Tagen Daten oder fehlendem Gewicht. TDEE-Modell ist vereinfacht → inherent uncertainty.","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"TDEE-MODELL: Vereinfacht als bodyweight_kg × 32.5 (mittlerer Multiplikator). NICHT berücksichtigt: Aktivitätslevel, Alter, Geschlecht, Stoffwechselanpassungen. TODO in Code: Harris-Benedict oder Mifflin-St Jeor für präzisere TDEE-Schätzung. ACHTUNG: Energiebilanz ist modellbasiert, nicht direkt gemessen. Einheit ist kcal/Tag (daily average), NICHT 7d-Total.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_energy_balance_7d) - berechnet Balance aus Intake und TDEE","layer_2a_decision":"Placeholder Resolver (_safe_float, rundet auf 0 Dezimalstellen)","layer_2b_reuse_possible":"Ja - Chart für Energiebilanz-Verlauf oder Defizit-Trend","architecture_alignment":"Phase 0c conform - Data Layer berechnet Balance, Resolver formatiert","issue_53_alignment":"Konform - Berechnung in Data Layer","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","unit":"mixed","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"code-derived","quality_filter_policy":"code-derived","confidence_logic":"mixed","semantic_contract":"draft-derived","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}},{"key":"energy_deficit_surplus","category":"Ernährung","description":"Energie Defizit/Überschuss Status","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_str('energy_deficit_surplus', pid)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_energy_deficit_surplus","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert qualitative Einordnung, ob aktuelle Energiezufuhr relativ zum geschätzten Bedarf in einem Defizit ('deficit'), auf Erhaltung ('maintenance') oder im Überschuss ('surplus') liegt.","business_meaning":"Leicht interpretierbarer Energie-Statusindikator. Vereinfacht Energiebilanz zu verständlichen Kategorien.","unit":"state (string)","time_window":"7d","output_type":"string","placeholder_type":"interpreted","format_hint":"Einer von drei Statuswerten: 'deficit', 'maintenance', 'surplus'","example_output":"deficit","minimum_data_requirements":"Wie energy_balance_7d: mindestens 4 Tage mit Kalorienerfassung + aktuelles Gewicht.","quality_filter_policy":"Wie energy_balance_7d: unvollständige Intake-Daten und vereinfachte TDEE-Schätzung reduzieren Verlässlichkeit.","confidence_logic":"Abgeleitet von energy_balance_7d. Confidence der Balance überträgt sich auf Status.","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"Status-Schwellen: balance < -200 kcal/day = 'deficit', balance > +200 kcal/day = 'surplus', -200 bis +200 = 'maintenance'. WICHTIG: Nur so gut wie zugrunde liegende TDEE-Schätzung (siehe energy_balance_7d). Minimale Abweichungen nahe Maintenance-Schwelle können zu Statuswechsel führen. 200 kcal Schwelle ist willkürlich gewählt - physiologisch könnten auch 100-300 kcal sinnvoll sein.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_energy_deficit_surplus) - mapped Balance zu Status","layer_2a_decision":"Placeholder Resolver (_safe_str, keine zusätzliche Logik)","layer_2b_reuse_possible":"Ja - Status-Anzeige oder Kategorien-Chart","architecture_alignment":"Phase 0c conform - Status-Mapping in Data Layer","issue_53_alignment":"Konform - Kategorisierung in Data Layer","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"mixed","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"mixed","quality_filter_policy":"mixed","confidence_logic":"mixed","semantic_contract":"draft-derived","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}},{"key":"fat_avg","category":"Ernährung","description":"Durchschn. Fett in g (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_avg","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_average_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert den Durchschnitt der dokumentierten täglichen Fettzufuhr über das definierte Auswertungsfenster.","business_meaning":"Relevanter Makroindikator für Ernährungsstruktur und Zielpassung","unit":"g/day","time_window":"30d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl in g/day","example_output":"72","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"datenpunktbasierte Coverage-Logik (calculate_confidence)","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht genug Daten"},"known_limitations":"meist im Gesamtkontext der Makroverteilung relevant","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_average_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"category":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","confidence_logic":"code-derived","missing_value_policy":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed","minimum_data_requirements":"unresolved","quality_filter_policy":"unresolved","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"code-derived","format_hint":"code-derived","example_output":"code-derived","known_limitations":"draft-derived"}},{"key":"intake_volatility","category":"Ernährung","description":"Intake-Volatilität (Klassifikation)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_str('intake_volatility', pid)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_intake_volatility","source_tables":["nutrition_log"],"semantic_contract":"Liefert qualitative Klassifikation der Variabilität der täglichen Kalorienaufnahme über 28 Tage. 'stable' = hohe Konstanz, 'moderate' = mittlere Schwankung, 'high' = starke Variabilität.","business_meaning":"Konsistenz- und Adhärenzindikator für Ernährungsumsetzung. Zeigt, wie gleichmäßig die Kalorienaufnahme über die Zeit ist.","unit":"category (string)","time_window":"28d","output_type":"string","placeholder_type":"interpreted","format_hint":"Einer von drei Werten: 'stable', 'moderate', 'high'","example_output":"moderate","minimum_data_requirements":"Wie macro_consistency_score: mindestens 18 Einträge in 28 Tagen (60% coverage).","quality_filter_policy":"Ausreißer, lückenhafte Tage und unvollständige Logs reduzieren Verlässlichkeit. Abgeleitet von macro_consistency_score.","confidence_logic":"Aus Datenabdeckung und Vollständigkeit ableiten. Abhängig von macro_consistency_score Confidence.","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"Klassifikation basiert auf macro_consistency_score: score >= 80: 'stable', score >= 60: 'moderate', score < 60: 'high'. WICHTIG: Hohe Volatilität ist nicht automatisch schlecht (bewusste Refeed-/Diet-Break-Tage, unregelmäßige Wochenenden). Interpretation hängt von Zielkontext und Trainingslogik ab. Vereinfacht komplexes Konsistenzmuster zu drei Kategorien.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_intake_volatility) - mapped macro_consistency_score zu Kategorie","layer_2a_decision":"Placeholder Resolver (_safe_str, keine zusätzliche Logik)","layer_2b_reuse_possible":"Ja - Kategorie-Anzeige oder Trend-Chart","architecture_alignment":"Phase 0c conform - Kategorisierung in Data Layer","issue_53_alignment":"Konform - Mapping in Data Layer","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"mixed","quality_filter_policy":"mixed","confidence_logic":"mixed","semantic_contract":"draft-derived","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}},{"key":"kcal_avg","category":"Ernährung","description":"Durchschn. Kalorien (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_avg","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_average_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert den Durchschnitt der dokumentierten täglichen Kalorienaufnahme über das definierte Auswertungsfenster. Der Wert ist als Intake-Mittelwert zu interpretieren, nicht als Energiebedarf oder Energiebilanz.","business_meaning":"Kernwert für Ernährungsstatus, Defizit-/Überschussbewertung und Zielabgleich","unit":"kcal/day","time_window":"30d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl","example_output":"2140","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"datenpunktbasierte Coverage-Logik (calculate_confidence)","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht genug Daten"},"known_limitations":"nur Intake, kein Bedarf; sagt allein nichts über Zielpassung","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_average_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"category":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","confidence_logic":"code-derived","missing_value_policy":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed","minimum_data_requirements":"unresolved","quality_filter_policy":"unresolved","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"code-derived","format_hint":"code-derived","example_output":"code-derived","known_limitations":"draft-derived"}},{"key":"macro_consistency_score","category":"Ernährung","description":"Makro-Konsistenz Score (0-100)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_int('macro_consistency_score', pid)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_macro_consistency_score","source_tables":["nutrition_log"],"semantic_contract":"Liefert einen standardisierten Score (0-100), der die Stabilität bzw. Varianz der Makronährstoffzufuhr über 28 Tage bewertet. Niedriger CV (Coefficient of Variation) = höherer Score.","business_meaning":"Verdichteter Konsistenzindikator für Ernährungsumsetzung. Score basiert auf durchschnittlicher Variabilität der Makros (kcal, protein, fat, carbs).","unit":"score (0-100)","time_window":"28d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl 0-100","example_output":"74","minimum_data_requirements":"Mindestens 18 Einträge in 28 Tagen (60% coverage) für verlässliche Varianzberechnung.","quality_filter_policy":"Unvollständige oder stark lückenhafte Tage schwächen Aussagekraft. NULL-Werte bei einzelnen Makros werden für CV-Berechnung übersprungen.","confidence_logic":"Aus Datenabdeckung ableiten: 18+ Einträge = ausreichend für CV-Berechnung. Score selbst ist bereits ein Konsistenzmaß.","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"Score-Formel: CV (Coefficient of Variation) = std_dev / mean für jeden Makro. Durchschnittlicher CV über alle 4 Makros. Thresholds: CV<0.2=100, CV<0.3=85, CV<0.4=70, CV<0.5=55, CV>=0.5=max(30,100-CV*100). WICHTIG: Niedrige Konsistenz ist nicht automatisch schlecht (bewusste Zyklen, Refeed-Tage). Interpretation hängt vom Zielkontext ab.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_macro_consistency_score)","layer_2a_decision":"Placeholder Resolver (_safe_int, keine zusätzliche Logik)","layer_2b_reuse_possible":"Ja - Chart für Konsistenz-Verlauf oder Score-Trend möglich","architecture_alignment":"Phase 0c conform - Data Layer liefert Score, Resolver formatiert nur","issue_53_alignment":"Konform - Data Layer berechnet, Resolver wraps","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"code-derived","quality_filter_policy":"code-derived","confidence_logic":"code-derived","semantic_contract":"draft-derived","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}},{"key":"nutrition_days","category":"Ernährung","description":"Anzahl valider Ernährungstage (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_days(pid, 30)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_days_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert die Anzahl der Tage mit valider Ernährungserfassung im 30-Tage-Fenster. Zählt alle unique Datums-Einträge in nutrition_log.","business_meaning":"Direktes Maß für Datenabdeckung und Aussagekraft der Ernährungsplaceholder. Zeigt, an wie vielen Tagen im Zeitfenster Ernährungsdaten erfasst wurden.","unit":"days","time_window":"30d","output_type":"numeric","placeholder_type":"meta","format_hint":"Ganzzahl 0-30","example_output":"22","minimum_data_requirements":"Keine Mindestmenge für Existenz des Placeholders selbst. Wert kann 0 sein.","quality_filter_policy":"Definition 'valider Tag': Jeder Tag mit mindestens einem Eintrag in nutrition_log gilt als valide. WICHTIG: Sagt NICHTS über Qualität oder Vollständigkeit des einzelnen Tages. Auch Teil-Tage (z.B. nur Frühstück erfasst) zählen als valider Tag. Keine Prüfung auf Mindest-Kalorienanzahl oder vollständige Makros.","confidence_logic":"Nicht klassisch nötig - der Wert selbst dient als Verlässlichkeitsindikator für andere Ernährungsplaceholder.","missing_value_policy":{"available":true,"value_raw":0,"missing_reason":null,"legacy_display":"0"},"known_limitations":"Zählt nur UNIQUE dates mit Einträgen, nicht die Anzahl der Einträge. Sagt nichts über Qualität der einzelnen Tage (z.B. Vollständigkeit, Plausibilität). Nur Abdeckungsmaß, kein Qualitätsmaß. Bei mehreren Einträgen pro Tag wird Tag nur einmal gezählt.","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_days_data) - zählt unique dates","layer_2a_decision":"Placeholder Resolver (get_nutrition_days, formatiert zu String)","layer_2b_reuse_possible":"Ja - Coverage-Chart oder Datenqualitäts-Dashboard","architecture_alignment":"Phase 0c conform - Count in Data Layer, Formatting in Resolver","issue_53_alignment":"Konform - Zählung in Data Layer","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"code-derived","quality_filter_policy":"mixed","confidence_logic":"draft-derived","semantic_contract":"mixed","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}},{"key":"protein_adequacy_28d","category":"Ernährung","description":"Protein Adequacy Score (0-100)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_int","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_protein_adequacy_28d","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert standardisierten Angemessenheitswert der Proteinversorgung über 28 Tage relativ zu definierten Protein-Zielbereichen (1.6-2.2 g/kg). Score-Logik: - Days in target [1.6-2.2]: 100 points; - Days slightly below [1.4-1.6]: partial points (linear interpolation); - Days far below (<1.4): 0 points; - Days above (>2.2): 100 points (no penalty). Final score: average over 28d.","business_meaning":"Verdichteter Zielerreichungsindikator für Proteinversorgung","unit":"score (0-100)","time_window":"28d","output_type":"numeric","placeholder_type":"score","format_hint":"Integer 0-100, höher = besser","example_output":"82","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Abgeleitet aus Datenabdeckung über 28d","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"Score muss transparent erklärt werden; ohne Skalen-Dokumentation interpretationsanfällig. Scoring-Schwellen [1.4, 1.6, 2.2] nicht explizit im Code dokumentiert, nur in Logik implementiert.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_protein_adequacy_28d)","layer_2a_decision":"Placeholder Resolver (_safe_int wrapper)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"mixed","business_meaning":"draft-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"unresolved","missing_value_policy":"code-derived","known_limitations":"mixed","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}},{"key":"protein_avg","category":"Ernährung","description":"Durchschn. Protein in g (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_avg","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_average_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert den Durchschnitt der dokumentierten täglichen Proteinzufuhr über das definierte Auswertungsfenster.","business_meaning":"Zentraler Placeholder für Muskelerhalt, Muskelaufbau, Recomposition und Absicherung im Defizit","unit":"g/day","time_window":"30d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl in g/day","example_output":"156","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"datenpunktbasierte Coverage-Logik (calculate_confidence)","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht genug Daten"},"known_limitations":"absoluter Wert allein reicht nicht immer; sollte oft relativ zum Körpergewicht interpretiert werden","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_average_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"category":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","confidence_logic":"code-derived","missing_value_policy":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed","minimum_data_requirements":"unresolved","quality_filter_policy":"unresolved","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"code-derived","format_hint":"code-derived","example_output":"code-derived","known_limitations":"draft-derived"}},{"key":"protein_days_in_target","category":"Ernährung","description":"Tage im Protein-Zielbereich (7d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_str","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_protein_days_in_target","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert Anzahl Tage im Protein-Zielbereich relativ zu Gesamttagen. Target-Range: 1.6-2.2 g/kg (hardcoded). Format: 'X/Y' (z.B. '5/7' = 5 von 7 Tagen im Ziel).","business_meaning":"Adhärenz-Indikator für Proteinversorgung","unit":"days_ratio","time_window":"7d","output_type":"string","placeholder_type":"interpreted","format_hint":"String format 'X/Y' (e.g. '5/7')","example_output":"5/7","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Abhängig von nutrition_log Datenabdeckung","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"no_data","legacy_display":"nicht verfügbar"},"known_limitations":"Target-Range 1.6-2.2 g/kg fest kodiert (default parameters), nicht konfigurierbar. Keine Integration mit Goal-System.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_protein_days_in_target)","layer_2a_decision":"Placeholder Resolver (_safe_str wrapper)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"mixed","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"mixed","business_meaning":"draft-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"unresolved","missing_value_policy":"code-derived","known_limitations":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}},{"key":"protein_g_per_kg","category":"Ernährung","description":"Protein g/kg Körpergewicht","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_float","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_protein_g_per_kg","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert die durchschnittliche Proteinzufuhr relativ zum Körpergewicht. Berechnung: protein_7d_avg / latest_weight. WICHTIG: Protein ist geglättet (7d), Gewicht ist single-point.","business_meaning":"Zentraler Zielindikator für Muskelerhalt und Aufbau","unit":"g/kg/day","time_window":"7d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Dezimalzahl (1-2 Stellen)","example_output":"1.95","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Minimum von protein_confidence und weight_availability","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"KRITISCHE INKONSISTENZ: Protein ist geglättet (7d average), Gewicht ist single-point (latest). Anfällig für Gewichts-Outlier. Ein Refeed-Tag kann den Wert stark verfälschen, obwohl Protein-Intake stabil ist.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_protein_g_per_kg)","layer_2a_decision":"Placeholder Resolver (_safe_float wrapper)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"mixed","business_meaning":"draft-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"unresolved","missing_value_policy":"code-derived","known_limitations":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}},{"key":"protein_ziel_high","category":"Ernährung","description":"Oberes Proteinziel (2.2 g/kg)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_protein_ziel_high","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_protein_targets_data","source_tables":["weight_log"],"semantic_contract":"Liefert die obere Proteinziel-Grenze basierend auf aktuellem Körpergewicht (2.2 g/kg). Ziel für Muskelaufbau in hypertrophen Phasen.","business_meaning":"Muskelaufbau-Ziel für hypertrophe Phasen","unit":"g/day","time_window":"snapshot","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl","example_output":"176","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Binary: weight vorhanden/nicht vorhanden","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"no_data","legacy_display":"nicht verfügbar"},"known_limitations":"Basiert auf single-point weight (latest entry); anfällig für Gewichts-Outlier","layer_1_decision":"Data Layer (nutrition_metrics.get_protein_targets_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"mixed","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"mixed","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"code-derived","missing_value_policy":"code-derived","known_limitations":"mixed","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}},{"key":"protein_ziel_low","category":"Ernährung","description":"Unteres Proteinziel (1.6 g/kg)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_protein_ziel_low","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_protein_targets_data","source_tables":["weight_log"],"semantic_contract":"Liefert die untere Proteinziel-Grenze basierend auf aktuellem Körpergewicht (1.6 g/kg). Ziel für Muskelerhalt in Maintenance-Phasen.","business_meaning":"Maintenance-Ziel für Muskelerhalt","unit":"g/day","time_window":"snapshot","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl","example_output":"128","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Binary: weight vorhanden/nicht vorhanden","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"no_data","legacy_display":"nicht verfügbar"},"known_limitations":"Basiert auf single-point weight (latest entry); anfällig für Gewichts-Outlier (z.B. nach Refeed-Tag)","layer_1_decision":"Data Layer (nutrition_metrics.get_protein_targets_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"mixed","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"mixed","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"code-derived","missing_value_policy":"code-derived","known_limitations":"mixed","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}}],"by_category":{"Ernährung":[{"key":"kcal_avg","category":"Ernährung","description":"Durchschn. Kalorien (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_avg","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_average_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert den Durchschnitt der dokumentierten täglichen Kalorienaufnahme über das definierte Auswertungsfenster. Der Wert ist als Intake-Mittelwert zu interpretieren, nicht als Energiebedarf oder Energiebilanz.","business_meaning":"Kernwert für Ernährungsstatus, Defizit-/Überschussbewertung und Zielabgleich","unit":"kcal/day","time_window":"30d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl","example_output":"2140","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"datenpunktbasierte Coverage-Logik (calculate_confidence)","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht genug Daten"},"known_limitations":"nur Intake, kein Bedarf; sagt allein nichts über Zielpassung","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_average_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"category":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","confidence_logic":"code-derived","missing_value_policy":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed","minimum_data_requirements":"unresolved","quality_filter_policy":"unresolved","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"code-derived","format_hint":"code-derived","example_output":"code-derived","known_limitations":"draft-derived"}},{"key":"protein_avg","category":"Ernährung","description":"Durchschn. Protein in g (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_avg","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_average_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert den Durchschnitt der dokumentierten täglichen Proteinzufuhr über das definierte Auswertungsfenster.","business_meaning":"Zentraler Placeholder für Muskelerhalt, Muskelaufbau, Recomposition und Absicherung im Defizit","unit":"g/day","time_window":"30d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl in g/day","example_output":"156","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"datenpunktbasierte Coverage-Logik (calculate_confidence)","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht genug Daten"},"known_limitations":"absoluter Wert allein reicht nicht immer; sollte oft relativ zum Körpergewicht interpretiert werden","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_average_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"category":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","confidence_logic":"code-derived","missing_value_policy":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed","minimum_data_requirements":"unresolved","quality_filter_policy":"unresolved","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"code-derived","format_hint":"code-derived","example_output":"code-derived","known_limitations":"draft-derived"}},{"key":"carb_avg","category":"Ernährung","description":"Durchschn. Kohlenhydrate in g (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_avg","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_average_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert den Durchschnitt der dokumentierten täglichen Kohlenhydratzufuhr über das definierte Auswertungsfenster.","business_meaning":"Relevanter Makroindikator für Leistungs-, Energie- und Belastungskontext","unit":"g/day","time_window":"30d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl in g/day","example_output":"210","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"datenpunktbasierte Coverage-Logik (calculate_confidence)","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht genug Daten"},"known_limitations":"allein selten aussagekräftig; meist im Kontext von Ziel, Energie und Belastung relevant","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_average_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"category":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","confidence_logic":"code-derived","missing_value_policy":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed","minimum_data_requirements":"unresolved","quality_filter_policy":"unresolved","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"code-derived","format_hint":"code-derived","example_output":"code-derived","known_limitations":"draft-derived"}},{"key":"fat_avg","category":"Ernährung","description":"Durchschn. Fett in g (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_avg","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_average_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert den Durchschnitt der dokumentierten täglichen Fettzufuhr über das definierte Auswertungsfenster.","business_meaning":"Relevanter Makroindikator für Ernährungsstruktur und Zielpassung","unit":"g/day","time_window":"30d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl in g/day","example_output":"72","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"datenpunktbasierte Coverage-Logik (calculate_confidence)","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht genug Daten"},"known_limitations":"meist im Gesamtkontext der Makroverteilung relevant","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_average_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"category":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","confidence_logic":"code-derived","missing_value_policy":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed","minimum_data_requirements":"unresolved","quality_filter_policy":"unresolved","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"code-derived","format_hint":"code-derived","example_output":"code-derived","known_limitations":"draft-derived"}},{"key":"protein_ziel_low","category":"Ernährung","description":"Unteres Proteinziel (1.6 g/kg)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_protein_ziel_low","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_protein_targets_data","source_tables":["weight_log"],"semantic_contract":"Liefert die untere Proteinziel-Grenze basierend auf aktuellem Körpergewicht (1.6 g/kg). Ziel für Muskelerhalt in Maintenance-Phasen.","business_meaning":"Maintenance-Ziel für Muskelerhalt","unit":"g/day","time_window":"snapshot","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl","example_output":"128","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Binary: weight vorhanden/nicht vorhanden","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"no_data","legacy_display":"nicht verfügbar"},"known_limitations":"Basiert auf single-point weight (latest entry); anfällig für Gewichts-Outlier (z.B. nach Refeed-Tag)","layer_1_decision":"Data Layer (nutrition_metrics.get_protein_targets_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"mixed","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"mixed","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"code-derived","missing_value_policy":"code-derived","known_limitations":"mixed","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}},{"key":"protein_ziel_high","category":"Ernährung","description":"Oberes Proteinziel (2.2 g/kg)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_protein_ziel_high","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_protein_targets_data","source_tables":["weight_log"],"semantic_contract":"Liefert die obere Proteinziel-Grenze basierend auf aktuellem Körpergewicht (2.2 g/kg). Ziel für Muskelaufbau in hypertrophen Phasen.","business_meaning":"Muskelaufbau-Ziel für hypertrophe Phasen","unit":"g/day","time_window":"snapshot","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl","example_output":"176","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Binary: weight vorhanden/nicht vorhanden","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"no_data","legacy_display":"nicht verfügbar"},"known_limitations":"Basiert auf single-point weight (latest entry); anfällig für Gewichts-Outlier","layer_1_decision":"Data Layer (nutrition_metrics.get_protein_targets_data)","layer_2a_decision":"Placeholder Resolver (formatting only)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"mixed","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"draft-derived","business_meaning":"draft-derived","unit":"mixed","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"code-derived","missing_value_policy":"code-derived","known_limitations":"mixed","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}},{"key":"protein_g_per_kg","category":"Ernährung","description":"Protein g/kg Körpergewicht","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_float","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_protein_g_per_kg","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert die durchschnittliche Proteinzufuhr relativ zum Körpergewicht. Berechnung: protein_7d_avg / latest_weight. WICHTIG: Protein ist geglättet (7d), Gewicht ist single-point.","business_meaning":"Zentraler Zielindikator für Muskelerhalt und Aufbau","unit":"g/kg/day","time_window":"7d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Dezimalzahl (1-2 Stellen)","example_output":"1.95","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Minimum von protein_confidence und weight_availability","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"KRITISCHE INKONSISTENZ: Protein ist geglättet (7d average), Gewicht ist single-point (latest). Anfällig für Gewichts-Outlier. Ein Refeed-Tag kann den Wert stark verfälschen, obwohl Protein-Intake stabil ist.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_protein_g_per_kg)","layer_2a_decision":"Placeholder Resolver (_safe_float wrapper)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"mixed","business_meaning":"draft-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"unresolved","missing_value_policy":"code-derived","known_limitations":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}},{"key":"protein_days_in_target","category":"Ernährung","description":"Tage im Protein-Zielbereich (7d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_str","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_protein_days_in_target","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert Anzahl Tage im Protein-Zielbereich relativ zu Gesamttagen. Target-Range: 1.6-2.2 g/kg (hardcoded). Format: 'X/Y' (z.B. '5/7' = 5 von 7 Tagen im Ziel).","business_meaning":"Adhärenz-Indikator für Proteinversorgung","unit":"days_ratio","time_window":"7d","output_type":"string","placeholder_type":"interpreted","format_hint":"String format 'X/Y' (e.g. '5/7')","example_output":"5/7","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Abhängig von nutrition_log Datenabdeckung","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"no_data","legacy_display":"nicht verfügbar"},"known_limitations":"Target-Range 1.6-2.2 g/kg fest kodiert (default parameters), nicht konfigurierbar. Keine Integration mit Goal-System.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_protein_days_in_target)","layer_2a_decision":"Placeholder Resolver (_safe_str wrapper)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"mixed","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"mixed","business_meaning":"draft-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"unresolved","missing_value_policy":"code-derived","known_limitations":"code-derived","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}},{"key":"protein_adequacy_28d","category":"Ernährung","description":"Protein Adequacy Score (0-100)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_int","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_protein_adequacy_28d","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert standardisierten Angemessenheitswert der Proteinversorgung über 28 Tage relativ zu definierten Protein-Zielbereichen (1.6-2.2 g/kg). Score-Logik: - Days in target [1.6-2.2]: 100 points; - Days slightly below [1.4-1.6]: partial points (linear interpolation); - Days far below (<1.4): 0 points; - Days above (>2.2): 100 points (no penalty). Final score: average over 28d.","business_meaning":"Verdichteter Zielerreichungsindikator für Proteinversorgung","unit":"score (0-100)","time_window":"28d","output_type":"numeric","placeholder_type":"score","format_hint":"Integer 0-100, höher = besser","example_output":"82","minimum_data_requirements":null,"quality_filter_policy":null,"confidence_logic":"Abgeleitet aus Datenabdeckung über 28d","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"Score muss transparent erklärt werden; ohne Skalen-Dokumentation interpretationsanfällig. Scoring-Schwellen [1.4, 1.6, 2.2] nicht explizit im Code dokumentiert, nur in Logik implementiert.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_protein_adequacy_28d)","layer_2a_decision":"Placeholder Resolver (_safe_int wrapper)","layer_2b_reuse_possible":null,"architecture_alignment":"Phase 0c Multi-Layer Architecture conform","issue_53_alignment":"Layer separation established","evidence":{"key":"code-derived","category":"code-derived","description":"code-derived","resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","semantic_contract":"mixed","business_meaning":"draft-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","placeholder_type":"mixed","format_hint":"code-derived","example_output":"code-derived","confidence_logic":"unresolved","missing_value_policy":"code-derived","known_limitations":"mixed","layer_1_decision":"code-derived","layer_2a_decision":"code-derived","layer_2b_reuse_possible":"to_verify","architecture_alignment":"code-derived","issue_53_alignment":"mixed"}},{"key":"macro_consistency_score","category":"Ernährung","description":"Makro-Konsistenz Score (0-100)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_int('macro_consistency_score', pid)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_macro_consistency_score","source_tables":["nutrition_log"],"semantic_contract":"Liefert einen standardisierten Score (0-100), der die Stabilität bzw. Varianz der Makronährstoffzufuhr über 28 Tage bewertet. Niedriger CV (Coefficient of Variation) = höherer Score.","business_meaning":"Verdichteter Konsistenzindikator für Ernährungsumsetzung. Score basiert auf durchschnittlicher Variabilität der Makros (kcal, protein, fat, carbs).","unit":"score (0-100)","time_window":"28d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl 0-100","example_output":"74","minimum_data_requirements":"Mindestens 18 Einträge in 28 Tagen (60% coverage) für verlässliche Varianzberechnung.","quality_filter_policy":"Unvollständige oder stark lückenhafte Tage schwächen Aussagekraft. NULL-Werte bei einzelnen Makros werden für CV-Berechnung übersprungen.","confidence_logic":"Aus Datenabdeckung ableiten: 18+ Einträge = ausreichend für CV-Berechnung. Score selbst ist bereits ein Konsistenzmaß.","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"Score-Formel: CV (Coefficient of Variation) = std_dev / mean für jeden Makro. Durchschnittlicher CV über alle 4 Makros. Thresholds: CV<0.2=100, CV<0.3=85, CV<0.4=70, CV<0.5=55, CV>=0.5=max(30,100-CV*100). WICHTIG: Niedrige Konsistenz ist nicht automatisch schlecht (bewusste Zyklen, Refeed-Tage). Interpretation hängt vom Zielkontext ab.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_macro_consistency_score)","layer_2a_decision":"Placeholder Resolver (_safe_int, keine zusätzliche Logik)","layer_2b_reuse_possible":"Ja - Chart für Konsistenz-Verlauf oder Score-Trend möglich","architecture_alignment":"Phase 0c conform - Data Layer liefert Score, Resolver formatiert nur","issue_53_alignment":"Konform - Data Layer berechnet, Resolver wraps","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"code-derived","quality_filter_policy":"code-derived","confidence_logic":"code-derived","semantic_contract":"draft-derived","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}},{"key":"energy_balance_7d","category":"Ernährung","description":"Energiebilanz 7-Tage (kcal/Tag Durchschnitt)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_float('energy_balance_7d', pid, decimals=0)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_energy_balance_7d","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert die geschätzte Energiebilanz über 7 Tage als Differenz zwischen durchschnittlicher Energieaufnahme und geschätztem TDEE (Total Daily Energy Expenditure). Positiver Wert = Überschuss, Negativer Wert = Defizit.","business_meaning":"Kernindikator für Defizit-/Überschussrichtung im Kurzfristfenster. Zeigt, ob aktuelle Ernährung auf Gewichtsverlust, Erhaltung oder Aufbau ausgerichtet ist.","unit":"kcal/day (Durchschnitt)","time_window":"7d","output_type":"numeric","placeholder_type":"interpreted","format_hint":"Ganzzahl, gerundet auf 0 Dezimalstellen","example_output":"-380","minimum_data_requirements":"Mindestens 4 Tage mit Kalorienerfassung in 7-Tage-Fenster. Aktuelles Gewicht aus weight_log erforderlich.","quality_filter_policy":"Unvollständige Intake-Daten und fehlende Gewichtsmessung reduzieren Verlässlichkeit. TDEE-Schätzung ist vereinfacht (weight_kg × 32.5).","confidence_logic":"Kombiniert Intake-Abdeckung und Robustheit des Verbrauchsmodells. Niedrigere Confidence bei <7 Tagen Daten oder fehlendem Gewicht. TDEE-Modell ist vereinfacht → inherent uncertainty.","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"TDEE-MODELL: Vereinfacht als bodyweight_kg × 32.5 (mittlerer Multiplikator). NICHT berücksichtigt: Aktivitätslevel, Alter, Geschlecht, Stoffwechselanpassungen. TODO in Code: Harris-Benedict oder Mifflin-St Jeor für präzisere TDEE-Schätzung. ACHTUNG: Energiebilanz ist modellbasiert, nicht direkt gemessen. Einheit ist kcal/Tag (daily average), NICHT 7d-Total.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_energy_balance_7d) - berechnet Balance aus Intake und TDEE","layer_2a_decision":"Placeholder Resolver (_safe_float, rundet auf 0 Dezimalstellen)","layer_2b_reuse_possible":"Ja - Chart für Energiebilanz-Verlauf oder Defizit-Trend","architecture_alignment":"Phase 0c conform - Data Layer berechnet Balance, Resolver formatiert","issue_53_alignment":"Konform - Berechnung in Data Layer","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","unit":"mixed","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"code-derived","quality_filter_policy":"code-derived","confidence_logic":"mixed","semantic_contract":"draft-derived","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}},{"key":"energy_deficit_surplus","category":"Ernährung","description":"Energie Defizit/Überschuss Status","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_str('energy_deficit_surplus', pid)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_energy_deficit_surplus","source_tables":["nutrition_log","weight_log"],"semantic_contract":"Liefert qualitative Einordnung, ob aktuelle Energiezufuhr relativ zum geschätzten Bedarf in einem Defizit ('deficit'), auf Erhaltung ('maintenance') oder im Überschuss ('surplus') liegt.","business_meaning":"Leicht interpretierbarer Energie-Statusindikator. Vereinfacht Energiebilanz zu verständlichen Kategorien.","unit":"state (string)","time_window":"7d","output_type":"string","placeholder_type":"interpreted","format_hint":"Einer von drei Statuswerten: 'deficit', 'maintenance', 'surplus'","example_output":"deficit","minimum_data_requirements":"Wie energy_balance_7d: mindestens 4 Tage mit Kalorienerfassung + aktuelles Gewicht.","quality_filter_policy":"Wie energy_balance_7d: unvollständige Intake-Daten und vereinfachte TDEE-Schätzung reduzieren Verlässlichkeit.","confidence_logic":"Abgeleitet von energy_balance_7d. Confidence der Balance überträgt sich auf Status.","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"Status-Schwellen: balance < -200 kcal/day = 'deficit', balance > +200 kcal/day = 'surplus', -200 bis +200 = 'maintenance'. WICHTIG: Nur so gut wie zugrunde liegende TDEE-Schätzung (siehe energy_balance_7d). Minimale Abweichungen nahe Maintenance-Schwelle können zu Statuswechsel führen. 200 kcal Schwelle ist willkürlich gewählt - physiologisch könnten auch 100-300 kcal sinnvoll sein.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_energy_deficit_surplus) - mapped Balance zu Status","layer_2a_decision":"Placeholder Resolver (_safe_str, keine zusätzliche Logik)","layer_2b_reuse_possible":"Ja - Status-Anzeige oder Kategorien-Chart","architecture_alignment":"Phase 0c conform - Status-Mapping in Data Layer","issue_53_alignment":"Konform - Kategorisierung in Data Layer","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"mixed","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"mixed","quality_filter_policy":"mixed","confidence_logic":"mixed","semantic_contract":"draft-derived","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}},{"key":"intake_volatility","category":"Ernährung","description":"Intake-Volatilität (Klassifikation)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"_safe_str('intake_volatility', pid)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"calculate_intake_volatility","source_tables":["nutrition_log"],"semantic_contract":"Liefert qualitative Klassifikation der Variabilität der täglichen Kalorienaufnahme über 28 Tage. 'stable' = hohe Konstanz, 'moderate' = mittlere Schwankung, 'high' = starke Variabilität.","business_meaning":"Konsistenz- und Adhärenzindikator für Ernährungsumsetzung. Zeigt, wie gleichmäßig die Kalorienaufnahme über die Zeit ist.","unit":"category (string)","time_window":"28d","output_type":"string","placeholder_type":"interpreted","format_hint":"Einer von drei Werten: 'stable', 'moderate', 'high'","example_output":"moderate","minimum_data_requirements":"Wie macro_consistency_score: mindestens 18 Einträge in 28 Tagen (60% coverage).","quality_filter_policy":"Ausreißer, lückenhafte Tage und unvollständige Logs reduzieren Verlässlichkeit. Abgeleitet von macro_consistency_score.","confidence_logic":"Aus Datenabdeckung und Vollständigkeit ableiten. Abhängig von macro_consistency_score Confidence.","missing_value_policy":{"available":false,"value_raw":null,"missing_reason":"insufficient_data","legacy_display":"nicht verfügbar"},"known_limitations":"Klassifikation basiert auf macro_consistency_score: score >= 80: 'stable', score >= 60: 'moderate', score < 60: 'high'. WICHTIG: Hohe Volatilität ist nicht automatisch schlecht (bewusste Refeed-/Diet-Break-Tage, unregelmäßige Wochenenden). Interpretation hängt von Zielkontext und Trainingslogik ab. Vereinfacht komplexes Konsistenzmuster zu drei Kategorien.","layer_1_decision":"Data Layer (nutrition_metrics.calculate_intake_volatility) - mapped macro_consistency_score zu Kategorie","layer_2a_decision":"Placeholder Resolver (_safe_str, keine zusätzliche Logik)","layer_2b_reuse_possible":"Ja - Kategorie-Anzeige oder Trend-Chart","architecture_alignment":"Phase 0c conform - Kategorisierung in Data Layer","issue_53_alignment":"Konform - Mapping in Data Layer","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"mixed","quality_filter_policy":"mixed","confidence_logic":"mixed","semantic_contract":"draft-derived","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}},{"key":"nutrition_days","category":"Ernährung","description":"Anzahl valider Ernährungstage (30d)","resolver_module":"backend/placeholder_resolver.py","resolver_function":"get_nutrition_days(pid, 30)","data_layer_module":"backend/data_layer/nutrition_metrics.py","data_layer_function":"get_nutrition_days_data","source_tables":["nutrition_log"],"semantic_contract":"Liefert die Anzahl der Tage mit valider Ernährungserfassung im 30-Tage-Fenster. Zählt alle unique Datums-Einträge in nutrition_log.","business_meaning":"Direktes Maß für Datenabdeckung und Aussagekraft der Ernährungsplaceholder. Zeigt, an wie vielen Tagen im Zeitfenster Ernährungsdaten erfasst wurden.","unit":"days","time_window":"30d","output_type":"numeric","placeholder_type":"meta","format_hint":"Ganzzahl 0-30","example_output":"22","minimum_data_requirements":"Keine Mindestmenge für Existenz des Placeholders selbst. Wert kann 0 sein.","quality_filter_policy":"Definition 'valider Tag': Jeder Tag mit mindestens einem Eintrag in nutrition_log gilt als valide. WICHTIG: Sagt NICHTS über Qualität oder Vollständigkeit des einzelnen Tages. Auch Teil-Tage (z.B. nur Frühstück erfasst) zählen als valider Tag. Keine Prüfung auf Mindest-Kalorienanzahl oder vollständige Makros.","confidence_logic":"Nicht klassisch nötig - der Wert selbst dient als Verlässlichkeitsindikator für andere Ernährungsplaceholder.","missing_value_policy":{"available":true,"value_raw":0,"missing_reason":null,"legacy_display":"0"},"known_limitations":"Zählt nur UNIQUE dates mit Einträgen, nicht die Anzahl der Einträge. Sagt nichts über Qualität der einzelnen Tage (z.B. Vollständigkeit, Plausibilität). Nur Abdeckungsmaß, kein Qualitätsmaß. Bei mehreren Einträgen pro Tag wird Tag nur einmal gezählt.","layer_1_decision":"Data Layer (nutrition_metrics.get_nutrition_days_data) - zählt unique dates","layer_2a_decision":"Placeholder Resolver (get_nutrition_days, formatiert zu String)","layer_2b_reuse_possible":"Ja - Coverage-Chart oder Datenqualitäts-Dashboard","architecture_alignment":"Phase 0c conform - Count in Data Layer, Formatting in Resolver","issue_53_alignment":"Konform - Zählung in Data Layer","evidence":{"resolver_module":"code-derived","resolver_function":"code-derived","data_layer_module":"code-derived","data_layer_function":"code-derived","source_tables":"code-derived","unit":"code-derived","time_window":"code-derived","output_type":"code-derived","format_hint":"code-derived","minimum_data_requirements":"code-derived","quality_filter_policy":"mixed","confidence_logic":"draft-derived","semantic_contract":"mixed","business_meaning":"draft-derived","known_limitations":"mixed","layer_1_decision":"to_verify","layer_2a_decision":"to_verify","layer_2b_reuse_possible":"to_verify"}}]},"evidence_report":{"statistics":{"code_derived":14,"draft_derived":14,"mixed":14,"unresolved":7,"to_verify":14},"detail":{"code-derived":{"kcal_avg":["category","resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","time_window","output_type","confidence_logic","missing_value_policy","layer_1_decision","layer_2a_decision","architecture_alignment","unit","format_hint","example_output"],"protein_avg":["category","resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","time_window","output_type","confidence_logic","missing_value_policy","layer_1_decision","layer_2a_decision","architecture_alignment","unit","format_hint","example_output"],"carb_avg":["category","resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","time_window","output_type","confidence_logic","missing_value_policy","layer_1_decision","layer_2a_decision","architecture_alignment","unit","format_hint","example_output"],"fat_avg":["category","resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","time_window","output_type","confidence_logic","missing_value_policy","layer_1_decision","layer_2a_decision","architecture_alignment","unit","format_hint","example_output"],"protein_ziel_low":["key","category","resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","time_window","output_type","format_hint","example_output","confidence_logic","missing_value_policy","layer_1_decision","layer_2a_decision","architecture_alignment"],"protein_ziel_high":["key","category","resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","time_window","output_type","format_hint","example_output","confidence_logic","missing_value_policy","layer_1_decision","layer_2a_decision","architecture_alignment"],"protein_g_per_kg":["key","category","description","resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","unit","time_window","output_type","format_hint","example_output","missing_value_policy","known_limitations","layer_1_decision","layer_2a_decision","architecture_alignment"],"protein_days_in_target":["key","category","resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","unit","time_window","output_type","format_hint","example_output","missing_value_policy","known_limitations","layer_1_decision","layer_2a_decision","architecture_alignment"],"protein_adequacy_28d":["key","category","description","resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","unit","time_window","output_type","format_hint","example_output","missing_value_policy","layer_1_decision","layer_2a_decision","architecture_alignment"],"macro_consistency_score":["resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","unit","time_window","output_type","format_hint","minimum_data_requirements","quality_filter_policy","confidence_logic"],"energy_balance_7d":["resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","time_window","output_type","format_hint","minimum_data_requirements","quality_filter_policy"],"energy_deficit_surplus":["resolver_module","resolver_function","data_layer_module","data_layer_function","unit","time_window","output_type","format_hint"],"intake_volatility":["resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","unit","time_window","output_type","format_hint"],"nutrition_days":["resolver_module","resolver_function","data_layer_module","data_layer_function","source_tables","unit","time_window","output_type","format_hint","minimum_data_requirements"]},"draft-derived":{"kcal_avg":["semantic_contract","business_meaning","known_limitations"],"protein_avg":["semantic_contract","business_meaning","known_limitations"],"carb_avg":["semantic_contract","business_meaning","known_limitations"],"fat_avg":["semantic_contract","business_meaning","known_limitations"],"protein_ziel_low":["semantic_contract","business_meaning"],"protein_ziel_high":["semantic_contract","business_meaning"],"protein_g_per_kg":["business_meaning"],"protein_days_in_target":["business_meaning"],"protein_adequacy_28d":["business_meaning"],"macro_consistency_score":["semantic_contract","business_meaning"],"energy_balance_7d":["semantic_contract","business_meaning"],"energy_deficit_surplus":["semantic_contract","business_meaning"],"intake_volatility":["semantic_contract","business_meaning"],"nutrition_days":["confidence_logic","business_meaning"]},"mixed":{"kcal_avg":["placeholder_type","issue_53_alignment"],"protein_avg":["placeholder_type","issue_53_alignment"],"carb_avg":["placeholder_type","issue_53_alignment"],"fat_avg":["placeholder_type","issue_53_alignment"],"protein_ziel_low":["description","unit","placeholder_type","known_limitations","issue_53_alignment"],"protein_ziel_high":["description","unit","placeholder_type","known_limitations","issue_53_alignment"],"protein_g_per_kg":["semantic_contract","placeholder_type","issue_53_alignment"],"protein_days_in_target":["description","semantic_contract","placeholder_type","issue_53_alignment"],"protein_adequacy_28d":["semantic_contract","placeholder_type","known_limitations","issue_53_alignment"],"macro_consistency_score":["known_limitations"],"energy_balance_7d":["unit","confidence_logic","known_limitations"],"energy_deficit_surplus":["source_tables","minimum_data_requirements","quality_filter_policy","confidence_logic","known_limitations"],"intake_volatility":["minimum_data_requirements","quality_filter_policy","confidence_logic","known_limitations"],"nutrition_days":["quality_filter_policy","semantic_contract","known_limitations"]},"unresolved":{"kcal_avg":["minimum_data_requirements","quality_filter_policy"],"protein_avg":["minimum_data_requirements","quality_filter_policy"],"carb_avg":["minimum_data_requirements","quality_filter_policy"],"fat_avg":["minimum_data_requirements","quality_filter_policy"],"protein_g_per_kg":["confidence_logic"],"protein_days_in_target":["confidence_logic"],"protein_adequacy_28d":["confidence_logic"]},"to_verify":{"kcal_avg":["layer_2b_reuse_possible"],"protein_avg":["layer_2b_reuse_possible"],"carb_avg":["layer_2b_reuse_possible"],"fat_avg":["layer_2b_reuse_possible"],"protein_ziel_low":["layer_2b_reuse_possible"],"protein_ziel_high":["layer_2b_reuse_possible"],"protein_g_per_kg":["layer_2b_reuse_possible"],"protein_days_in_target":["layer_2b_reuse_possible"],"protein_adequacy_28d":["layer_2b_reuse_possible"],"macro_consistency_score":["layer_1_decision","layer_2a_decision","layer_2b_reuse_possible"],"energy_balance_7d":["layer_1_decision","layer_2a_decision","layer_2b_reuse_possible"],"energy_deficit_surplus":["layer_1_decision","layer_2a_decision","layer_2b_reuse_possible"],"intake_volatility":["layer_1_decision","layer_2a_decision","layer_2b_reuse_possible"],"nutrition_days":["layer_1_decision","layer_2a_decision","layer_2b_reuse_possible"]}}},"validation_report":{}}} |