Fix: Progress-Timer zeigte negative Zahlen (-58:-10)

Ursache: Server sendete started_at als Lokalzeit (Europe/Berlin),
aber der Client interpretierte es als UTC via parseUTC().
Bei UTC+1 lag die Startzeit dadurch 1 Stunde in der Zukunft.

- orchestrator.py: started_at in WebSocket-Nachrichten als echtes UTC
  (ISO 8601 mit Z-Suffix) senden, DB-Timestamps bleiben Lokalzeit
- components.js: elapsed auf min. 0 clampen als Sicherheitsnetz

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
claude-dev
2026-03-07 10:51:33 +01:00
Ursprung f7809ccc77
Commit 1c7adafa70
2 geänderte Dateien mit 77 neuen und 4 gelöschten Zeilen

Datei anzeigen

@@ -548,6 +548,7 @@ class AgentOrchestrator:
# Refresh-Log starten
now = datetime.now(TIMEZONE).strftime('%Y-%m-%d %H:%M:%S')
now_utc = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
cursor = await db.execute(
"INSERT INTO refresh_log (incident_id, started_at, status, trigger_type, retry_count, tenant_id) VALUES (?, ?, 'running', ?, ?, ?)",
(incident_id, now, trigger_type, retry_count, tenant_id),
@@ -562,7 +563,7 @@ class AgentOrchestrator:
await self._ws_manager.broadcast_for_incident({
"type": "status_update",
"incident_id": incident_id,
"data": {"status": research_status, "detail": research_detail, "started_at": now},
"data": {"status": research_status, "detail": research_detail, "started_at": now_utc},
}, visibility, created_by, tenant_id)
# Schritt 1+2: RSS-Feeds und Claude-Recherche parallel ausführen
@@ -840,7 +841,7 @@ class AgentOrchestrator:
await self._ws_manager.broadcast_for_incident({
"type": "status_update",
"incident_id": incident_id,
"data": {"status": "factchecking", "detail": "Prüft Fakten gegen unabhängige Quellen...", "started_at": now},
"data": {"status": "factchecking", "detail": "Prüft Fakten gegen unabhängige Quellen...", "started_at": now_utc},
}, visibility, created_by, tenant_id)
# Schritt 4: Faktencheck