Zum Inhalt

Code-Refactoring – ScenarioRoutes.py

Datum: 20.11.2025
Autor: Claude Code (Automated Refactoring)
Commit: b4bd184


Zusammenfassung

Das monolithische ScenarioRoutes.py (729 Zeilen, 11 Routen) wurde in ein Paket mit vier klar getrennten Modulen umgebaut. Alle Endpunkte, Auth-Decorators und Datenbankzugriffe bleiben unverändert, die Wartbarkeit steigt deutlich.


Neue Struktur

Modul Zweck Wichtige Routen
scenario_crud.py Szenario-CRUD (Listen, Details, Anlegen, Bearbeiten, Löschen) /admin/scenarios, /admin/create_scenario, /admin/delete_scenario/<id>
scenario_management.py Thread-/Evaluator-Verteilung (Round-Robin) /admin/add_threads_to_scenario, /admin/add_viewers_to_scenario
scenario_resources.py Referenzdaten für das UI /admin/get_function_types, /admin/get_users, /admin/get_threads_from_function_type/<id>
scenario_stats.py Fortschritts- und Statusberechnung /admin/scenario_progress_stats/<id>

__init__.py registriert die Module im Paket.


Qualitätsgewinne

  • Single Responsibility: CRUD, Management, Ressourcen und Stats sind getrennt.
  • Wartbarkeit: Kleinere Dateien, klare Grenzen, leichteres Debugging.
  • Testbarkeit: Module können separat geprüft werden (Syntax-Checks bestanden).
  • Dokumentation: Modul- und Routen-Docstrings hinzugefügt.

Änderungen im Repository

D  app/routes/ScenarioRoutes.py      # monolithisch (Backup separat)
A  app/routes/scenarios/__init__.py
A  app/routes/scenarios/scenario_crud.py
A  app/routes/scenarios/scenario_management.py
A  app/routes/scenarios/scenario_resources.py
A  app/routes/scenarios/scenario_stats.py
M  app/routes/__init__.py            # neue Imports

Kompatibilität & Sicherheit

  • Alle 11 Routen behalten URL, Methoden, Decorators (@admin_required) und Responses.
  • Authentik-Auth (mit optionaler Legacy-Kompatibilität) unverändert, User-Kontext (g.keycloak_user) bleibt bestehen.
  • Keine DB-Migration nötig, Query- und Transaktionslogik unverändert.

Empfehlungen

  • Ähnliche Aufteilung für weitere große Dateien (z. B. routes_socketio.py, MailRatingRoutes.py, routes.py, UserPromptRoutes.py).
  • Unit-Tests je Modul ergänzen, um die Trennung langfristig abzusichern.