Drei Mitigations:
1) Admin-Queue-Polling 5s → 15s. Die Queue ändert sich pro Sekunde
ohnehin nicht spürbar; senkt CPU + Network ohne UX-Verlust.
2) ``pagehide``-Listener in admin_queue.html, admin_stand.html und
auswertungen.html. Zerstört Chart.js-Instanzen + cleart setInterval-
Handles, sobald die Page in den Back/Forward-Cache geht oder
geschlossen wird. Bisher hingen sie bis Browser-GC.
3) /auswertungen: zentrales Cleanup für ``_histChart``, alle ``_svCharts.*``
und ``window._zeitreiheModalChart`` beim pagehide. Bisher zerstört
nur die einzelnen Render-Funktionen ihre Vorgänger; beim Page-Verlassen
blieben sie alle stehen.
Was nicht abgedeckt ist (für eventuelle Folge-Iteration mit konkretem
Heap-Snapshot):
- Lazy-Render lange News-/Drucksachen-Listen via IntersectionObserver
- Detaillierte Detached-DOM-Untersuchung pro Seite
Bestehende Maßnahmen (bereits da, hier nicht angefasst): chart.destroy()
vor jedem neuen Chart, sim.stop() in cluster.html, visibilitychange-
Pause für Polling.
- **Zeitreihe-Modal-Chart**: vor Re-Render alte Chart.destroy(),
bei closeModal() + Escape ebenfalls. Vorher akkumulierten sich
Chart-Instanzen bei jedem Modal-Open (Listener bleiben hängen).
- **Cluster-Force-Sim**: `_currentForceSim` global gemerkt, beim
Verlassen Detail-View (showList) und vor neuem renderClusterGraph
per sim.stop() beendet. Vorher liefen tick-Listener weiter, hielten
nodes/links/SVG-Refs.
- **Polling-Pause auf visibilitychange** in queue_widget, admin_stand
und admin_queue. Wenn Tab versteckt → clearInterval, beim Show wieder
starten. Spart CPU/Akku + verhindert verwaiste Polls.
Refs: #183. Heap-Snapshot-Verifikation in Folge-Schritt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bug: Template erwartete data.running, data.queued, data.failed.
API liefert aber data.jobs (mit status-Feld pro Job). Daher waren
alle drei Tabellen IMMER leer, selbst bei laufenden Jobs.
Fix:
- jobs nach status filtern (running | queued/pending | completed | failed)
- Neue Sektion "Zuletzt abgeschlossen" — vorher gar nicht angezeigt
(20 completed Jobs auf dev waren unsichtbar)
- 4. Stat-Kachel "Abgeschlossen (Total)" mit data.processed_total
- Konfig-Info-Zeile: workers_running, max_size, avg_job_duration_seconds,
estimated_wait_seconds — alles vorher ungenutzt im API-Response
- Spalte "Gestartet" → "Dauer (s)" (Daten-mismatch, started_at gibt's
im API nicht)
- Wartende Jobs: bundesland-Spalte raus (nicht im API), durch
Job-ID-Kurzform ersetzt
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>