From 3ad1a19dce02c1ef3b68277671011ba5545f3cc9 Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 26 Mar 2026 10:19:36 +0100 Subject: [PATCH] fix: calculate_age now handles PostgreSQL date objects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: dob Spalte ist DATE (PostgreSQL) → Python bekommt datetime.date, nicht String → strptime() schlägt fehl → age = "unbekannt" Fix: Prüfe isinstance(dob, str) und handle beide Typen: - String → strptime() - date object → direkt verwenden Jetzt funktioniert {{age}} Platzhalter korrekt. Co-Authored-By: Claude Opus 4.6 --- backend/placeholder_resolver.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/backend/placeholder_resolver.py b/backend/placeholder_resolver.py index 928fd0e..efb8835 100644 --- a/backend/placeholder_resolver.py +++ b/backend/placeholder_resolver.py @@ -225,16 +225,21 @@ def get_activity_summary(profile_id: str, days: int = 14) -> str: return f"{row['count']} Einheiten in {days} Tagen (Ø {avg_min} min/Einheit, {int(row['total_kcal'] or 0)} kcal gesamt)" -def calculate_age(dob: Optional[str]) -> str: - """Calculate age from date of birth.""" +def calculate_age(dob) -> str: + """Calculate age from date of birth (accepts date object or string).""" if not dob: return "unbekannt" try: - birth = datetime.strptime(dob, '%Y-%m-%d') - today = datetime.now() + # Handle both datetime.date objects and strings + if isinstance(dob, str): + birth = datetime.strptime(dob, '%Y-%m-%d').date() + else: + birth = dob # Already a date object from PostgreSQL + + today = datetime.now().date() age = today.year - birth.year - ((today.month, today.day) < (birth.month, birth.day)) return str(age) - except: + except Exception as e: return "unbekannt"