Die Ampel wurde ROT: ruff DTZ007, `datetime.strptime()` ohne Offset in services/agent_aktivitaet.py. Lokal war alles gruen, weil ich ruff nicht laufen liess — nur py_compile, tsc, vitest und den Build. Mein Fehler, nicht der der Regel. Und die Regel ist keine Schikane: AGENTS.md haelt fest, dass naive Zeiten ueber MC_LOCAL_TZ aufzuloesen sind, nie zu raten. Hermes schreibt Ortszeit ohne Offset; das so durchzureichen waere bequem gewesen (der Klient zeigt sie nur an) — aber sobald jemand spaeter damit RECHNET (Dauer ueber Mitternacht, Abgleich mit einem Cron-Plan), waere es eine Falle, die erst zur Zeitumstellung zuschnappt. vorher: 2026-08-28T07:03:18 jetzt: 2026-08-28T07:03:18+02:00 Gegengeprueft am echten Box-Log; die Anzeige schneidet weiterhin Stelle 11-19 heraus und zeigt unveraendert 07:03:18. `ruff check .` laeuft jetzt ueber das ganze Repo sauber durch — ab hier gehoert es vor jeden Commit, der Python anfasst. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
33032f8fb0
commit
041ede7f8d
@@ -25,9 +25,13 @@ import os
|
|||||||
import re
|
import re
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
from zoneinfo import ZoneInfo
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
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(
|
LOG_PFAD = Path(os.path.expanduser(
|
||||||
os.environ.get("MC_HERMES_AGENT_LOG", "~/.hermes/logs/agent.log")))
|
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:
|
def _iso(s: str) -> str:
|
||||||
"""`2026-08-28 07:03:18` → ISO. Die Box läuft in Europe/Berlin; die Zeit bleibt naiv,
|
"""`2026-08-28 07:03:18` → ISO MIT Zeitzone.
|
||||||
weil der Klient sie ohnehin nur anzeigt und nicht rechnet."""
|
|
||||||
|
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:
|
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:
|
except ValueError:
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user