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
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user