From 2e27a7fcae9b8d9a6bd2cac9300b12c78b99f87a Mon Sep 17 00:00:00 2001 From: patrick Date: Wed, 9 Sep 2026 23:59:25 +0200 Subject: [PATCH] fix(time): Mikrosekunden bei Zeitstempeln kappen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit start_time/end_time/break_start wurden mit vollen Mikrosekunden gespeichert (datetime.now(timezone.utc).time() ohne microsecond=0), was Clients ohne Mikrosekunden-Parsing brechen konnte (siehe Mobile-App-Crash). Sekunden- Genauigkeit reicht für Zeiterfassung. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1 --- backend/app/services/time_service.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/app/services/time_service.py b/backend/app/services/time_service.py index f47e661..753c521 100644 --- a/backend/app/services/time_service.py +++ b/backend/app/services/time_service.py @@ -79,7 +79,7 @@ class TimeService: db: AsyncSession, ) -> tuple[TimeEntry, list[str]]: today = datetime.now(timezone.utc).date() - now_time = datetime.now(timezone.utc).time().replace(tzinfo=None) + now_time = datetime.now(timezone.utc).time().replace(microsecond=0, tzinfo=None) # Offenen Eintrag für heute prüfen open_entry = await self._get_open_entry(user.id, db) @@ -125,7 +125,7 @@ class TimeService: if entry is None: raise HTTPException(status_code=404, detail="Kein offener Zeitstempel gefunden.") - now_time = datetime.now(timezone.utc).time().replace(tzinfo=None) + now_time = datetime.now(timezone.utc).time().replace(microsecond=0, tzinfo=None) # Aktive Pause beenden falls vergessen if entry.break_start is not None: @@ -148,7 +148,7 @@ class TimeService: if entry.break_start is not None: raise HTTPException(status_code=409, detail="Pause bereits aktiv.") - now_time = datetime.now(timezone.utc).time().replace(tzinfo=None) + now_time = datetime.now(timezone.utc).time().replace(microsecond=0, tzinfo=None) entry.break_start = now_time entry.updated_at = datetime.now(timezone.utc) return entry @@ -160,7 +160,7 @@ class TimeService: if entry.break_start is None: raise HTTPException(status_code=409, detail="Keine aktive Pause.") - now_time = datetime.now(timezone.utc).time().replace(tzinfo=None) + now_time = datetime.now(timezone.utc).time().replace(microsecond=0, tzinfo=None) extra = self._calc_break_minutes(entry.break_start, now_time) entry.break_minutes += extra entry.break_start = None