gwoe-antragspruefer/app/templates
Dotty Dotter d24949740b #99 Queue: 3 parallele Worker + Job-Visualisierung + Admin-Schutz
Queue (queue.py):
- QUEUE_CONCURRENCY ENV (default 3) statt hartcodiert 1
- N Worker-Coroutines via asyncio tasks (nicht Semaphore — jeder
  Worker pickt eigenständig von der Queue)
- Per-Job-Tracking: job_id → {status, drucksache, duration, error}
- get_queue_status() liefert jobs-Array für UI-Tabelle

Visualisierung (index.html):
- Fortschrittsbalken (X/Y fertig, grün)
- Job-Tabelle: Drucksache + Status-Icon + Dauer
- Fertige Jobs klickbar → Detail-Ansicht
- Auto-Refresh alle 3s

Admin-Schutz (auth.py + main.py):
- Neue require_admin Dependency: prüft Keycloak-Rolle "admin" oder
  "gwoe-admin". Im Dev-Modus durchlassen.
- Batch-Analyse, Programme-Index, Assessment-Delete: require_admin
- Einzelanalyse, Bookmarks, Kommentare: bleiben require_auth
- Keycloak: Rolle "admin" erstellt + User tobias zugewiesen

Tests: 206 passed.

Refs: #99
2026-04-10 23:15:42 +02:00
..
auswertungen.html Phase E (substituted): Auswertungen-Drilldown-Modal (#59) 2026-04-09 11:30:10 +02:00
index.html #99 Queue: 3 parallele Worker + Job-Visualisierung + Admin-Schutz 2026-04-10 23:15:42 +02:00
methodik.html UI-Polish: 6 Fixes aus visuellem Review 2026-04-10 22:13:30 +02:00
quellen.html UI-Polish: 6 Fixes aus visuellem Review 2026-04-10 22:13:30 +02:00