Geplante Zeiten (Scan/Update-Prüfung) laufen fest auf UTC statt der eigenen Zeitzone #10
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Unter Einstellungen → Allgemein ("Automatischer Scan") und Einstellungen → Updates ("Automatische Prüfung") kann man eine Uhrzeit für den geplanten Lauf einstellen — die Auswahl ist aber ausdrücklich als "Uhr (UTC)" beschriftet. Man muss also selbst manuell in UTC umrechnen, um z. B. "jeden Tag um 4 Uhr morgens meiner Zeit" einzustellen. Das ist unpraktisch und fehleranfällig, besonders bei der Zeitumstellung (Sommer-/Winterzeit).
Codeanalyse
backend/scheduler.py:BackgroundScheduler(timezone="UTC")global, und_make_trigger()baut jedenCronTrigger(...)fest mittimezone="UTC"— betrifft den Scan-Job, den Update-Prüfungs-Job UND die Script-Zeitpläne gleichermaßen.frontend/src/pages/Settings.tsx:CronPicker-Komponente beschriftet die Auswahl explizit mit "Uhr (UTC)", Stunde/Minute werden 1:1 in den Cron-String übernommen, keine Umrechnung.frontend/src/pages/Scripts.tsxhat exakt dieselbeCronPicker-Komponente dupliziert (für Script-Zeitpläne) — dieselbe Einschränkung besteht dort ebenfalls.zoneinfo/pytzim Backend nochIntl.DateTimeFormat/getTimezoneOffsetim Frontend.apscheduler(bereits Abhängigkeit, sieherequirements.txt) unterstütztCronTrigger(..., timezone=...)nativ — keine neue Abhängigkeit nötig.Vorschlag
Wichtig: Nicht clientseitig einmalig nach UTC umrechnen und nur den umgerechneten Cron-String speichern — das würde bei der nächsten Zeitumstellung um eine Stunde falsch laufen. Stattdessen die eingegebene Uhrzeit unverändert (in der lokalen Zeitzone) speichern und zusätzlich die Zeitzone selbst mitspeichern; APScheduler übernimmt dann die Umrechnung inkl. Sommer-/Winterzeit korrekt bei jedem Lauf automatisch.
Intl.DateTimeFormat().resolvedOptions().timeZoneermitteln (liefert z. B."Europe/Berlin"), imCronPickeranzeigen/mitschicken statt "UTC" fest zu beschriften.scan_cron_tz,update_check_cron_tz, analog für Script-Zeitpläne), Default"UTC"(Rückwärtskompatibilität für bereits gespeicherte Werte ohne Zeitzone).backend/scheduler.py::_make_trigger()um einentz-Parameter erweitern,timezone="UTC"durch den übergebenen Wert ersetzen (Fallback"UTC", falls nicht gesetzt).toLocaleString).frontend/src/pages/Scripts.tsx) haben dieselbe Einschränkung — bietet sich an, im selben Zug mitzuziehen, da es exakt derselbe Code-Pfad/dieselbe Komponente ist.Akzeptanzkriterien