diff --git a/backend/routers/goals.py b/backend/routers/goals.py index 9f172b9..a8239ce 100644 --- a/backend/routers/goals.py +++ b/backend/routers/goals.py @@ -444,10 +444,17 @@ def _get_current_value_for_goal_type(conn, profile_id: str, goal_type: str) -> O bf_row = cur.fetchone() if weight_row and bf_row: - weight = float(weight_row['weight']) - bf_pct = float(bf_row['body_fat_pct']) - lean_mass = weight - (weight * bf_pct / 100.0) - return round(lean_mass, 2) + try: + weight = float(weight_row['weight']) + bf_pct = float(bf_row['body_fat_pct']) + lean_mass = weight - (weight * bf_pct / 100.0) + return round(lean_mass, 2) + except (ValueError, TypeError) as e: + print(f"[DEBUG] lean_mass calculation error: {e}, weight={weight_row}, bf={bf_row}") + return None + + # Debug: Log why calculation failed + print(f"[DEBUG] lean_mass calc failed - weight_row: {weight_row is not None}, bf_row: {bf_row is not None}") return None elif goal_type == 'vo2max': diff --git a/frontend/src/pages/GoalsPage.jsx b/frontend/src/pages/GoalsPage.jsx index 84f091f..817e438 100644 --- a/frontend/src/pages/GoalsPage.jsx +++ b/frontend/src/pages/GoalsPage.jsx @@ -167,6 +167,8 @@ export default function GoalsPage() { description: formData.description || null } + console.log('[DEBUG] Saving goal:', { editingGoal, data }) + if (editingGoal) { await api.updateGoal(editingGoal, data) showToast('✓ Ziel aktualisiert') @@ -493,6 +495,24 @@ export default function GoalsPage() { ))} + + {/* Warning for incomplete goal types */} + {['bp', 'strength', 'flexibility'].includes(formData.goal_type) && ( +