fix(time): Mikrosekunden bei Zeitstempeln kappen
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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
This commit is contained in:
1 parent
4398632880
commit
2e27a7fcae
1 file changed
+4
-4
@@ -79,7 +79,7 @@ class TimeService:
|
|||||||
db: AsyncSession,
|
db: AsyncSession,
|
||||||
) -> tuple[TimeEntry, list[str]]:
|
) -> tuple[TimeEntry, list[str]]:
|
||||||
today = datetime.now(timezone.utc).date()
|
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
|
# Offenen Eintrag für heute prüfen
|
||||||
open_entry = await self._get_open_entry(user.id, db)
|
open_entry = await self._get_open_entry(user.id, db)
|
||||||
@@ -125,7 +125,7 @@ class TimeService:
|
|||||||
if entry is None:
|
if entry is None:
|
||||||
raise HTTPException(status_code=404, detail="Kein offener Zeitstempel gefunden.")
|
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
|
# Aktive Pause beenden falls vergessen
|
||||||
if entry.break_start is not None:
|
if entry.break_start is not None:
|
||||||
@@ -148,7 +148,7 @@ class TimeService:
|
|||||||
if entry.break_start is not None:
|
if entry.break_start is not None:
|
||||||
raise HTTPException(status_code=409, detail="Pause bereits aktiv.")
|
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.break_start = now_time
|
||||||
entry.updated_at = datetime.now(timezone.utc)
|
entry.updated_at = datetime.now(timezone.utc)
|
||||||
return entry
|
return entry
|
||||||
@@ -160,7 +160,7 @@ class TimeService:
|
|||||||
if entry.break_start is None:
|
if entry.break_start is None:
|
||||||
raise HTTPException(status_code=409, detail="Keine aktive Pause.")
|
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)
|
extra = self._calc_break_minutes(entry.break_start, now_time)
|
||||||
entry.break_minutes += extra
|
entry.break_minutes += extra
|
||||||
entry.break_start = None
|
entry.break_start = None
|
||||||
|
|||||||
Reference in new issue
Block a user