diff --git a/backend/services/agent_aktivitaet.py b/backend/services/agent_aktivitaet.py index 3ba5115..44ffce6 100644 --- a/backend/services/agent_aktivitaet.py +++ b/backend/services/agent_aktivitaet.py @@ -25,9 +25,13 @@ import os import re from datetime import datetime from pathlib import Path +from zoneinfo import ZoneInfo log = logging.getLogger(__name__) +# Die Box läuft in Europe/Berlin (AGENTS.md). Hermes' Log trägt Ortszeit ohne Offset. +LOCAL_TZ = ZoneInfo(os.environ.get("MC_LOCAL_TZ", "Europe/Berlin")) + LOG_PFAD = Path(os.path.expanduser( os.environ.get("MC_HERMES_AGENT_LOG", "~/.hermes/logs/agent.log"))) @@ -109,10 +113,16 @@ def rufe(limit: int = 60) -> list[dict]: def _iso(s: str) -> str: - """`2026-08-28 07:03:18` → ISO. Die Box läuft in Europe/Berlin; die Zeit bleibt naiv, - weil der Klient sie ohnehin nur anzeigt und nicht rechnet.""" + """`2026-08-28 07:03:18` → ISO MIT Zeitzone. + + Hermes schreibt seine Log-Zeitstempel in Ortszeit ohne Offset. Die naiv zu lassen + wäre bequem (der Klient zeigt sie nur an) — aber genau daran hängt eine + Projektregel: Naive Zeiten werden über MC_LOCAL_TZ aufgelöst, nie geraten + (AGENTS.md; ruff DTZ007 erzwingt es). Sobald jemand später damit rechnet — Dauer + über Mitternacht, Vergleich mit einem Cron-Plan — wäre eine offsetlose Zeit eine + Falle, die erst zur Zeitumstellung zuschnappt.""" try: - return datetime.strptime(s, "%Y-%m-%d %H:%M:%S").isoformat() + return datetime.strptime(s, "%Y-%m-%d %H:%M:%S").replace(tzinfo=LOCAL_TZ).isoformat() except ValueError: return s