feat: Slot-basierter Auto-Refresh mit konfigurierbarer Startzeit

Auto-Refresh nutzt jetzt eine feste Anker-Uhrzeit (refresh_start_time) statt
reinem Intervall-basiertem Driften. Verpasste Slots werden max. 1x aufgeholt.
Bestehendes Intervall-Verhalten bleibt als Fallback erhalten (ohne Startzeit).

Migration: Bestehende Auto-Lagen erhalten 07:00 als Startzeit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
Claude Dev
2026-04-03 13:14:34 +02:00
Ursprung 68c6666d87
Commit d3e8c0adc7
6 geänderte Dateien mit 93 neuen und 20 gelöschten Zeilen

Datei anzeigen

@@ -68,6 +68,7 @@ CREATE TABLE IF NOT EXISTS incidents (
type TEXT DEFAULT 'adhoc',
refresh_mode TEXT DEFAULT 'manual',
refresh_interval INTEGER DEFAULT 15,
refresh_start_time TEXT,
retention_days INTEGER DEFAULT 0,
visibility TEXT DEFAULT 'public',
summary TEXT,
@@ -362,6 +363,12 @@ async def init_db():
await db.commit()
logger.info("Migration: tenant_id zu incidents hinzugefuegt")
if "refresh_start_time" not in columns:
await db.execute("ALTER TABLE incidents ADD COLUMN refresh_start_time TEXT")
await db.execute("UPDATE incidents SET refresh_start_time = '07:00' WHERE refresh_mode = 'auto'")
await db.commit()
logger.info("Migration: refresh_start_time zu incidents hinzugefuegt (bestehende Auto-Lagen auf 07:00)")
# Migration: Token-Spalten fuer refresh_log
cursor = await db.execute("PRAGMA table_info(refresh_log)")
rl_columns = [row[1] for row in await cursor.fetchall()]