4.0 KiB
Raceplaner Anwendung
Dies ist eine Flask-Anwendung zur Planung und Verwaltung von Rennstrategien. Sie ermöglicht die Konfiguration von Rennen, die Verwaltung von Fahrern und die Erstellung von Stint-Plänen, die auch als PDFs exportiert werden können.
Struktur
Die Anwendung besteht hauptsächlich aus der Datei app/main.py, die folgende Hauptkomponenten enthält:
- Flask App-Instanz: Initialisiert die Flask-Anwendung.
- Konfiguration: Enthält Einstellungen für die Datenbank (SQLite), den geheimen Schlüssel für Sessions und die Dauer von Remember-Me-Cookies.
- Datenbank (SQLAlchemy): Definiert die Modelle für
User,Driver,StintundRaceConfig.User: Für die Benutzerauthentifizierung.Driver: Speichert Informationen über die Fahrer, wie Name, Startnummer, Verbrauch und Rundenzeiten.Stint: Definiert die einzelnen Fahrabschnitte im Rennen und weist sie Fahrern zu.RaceConfig: Speichert globale Rennparameter wie Tankkapazität, Renndauer und Pit-Stop-Zeiten.
- Login Manager (Flask-Login): Verwaltet die Benutzeranmeldung und -abmeldung.
- Szenario-Verwaltung: Speichert und lädt Rennszenarien im JSON-Format.
- Routen: Definiert die verschiedenen Endpunkte der Webanwendung:
/: Startseite, zeigt Rennkonfiguration und Zeitpläne an./update_config: Aktualisiert die Rennkonfiguration./add_driver,/update_driver/<int:id>,/delete_driver/<int:id>: CRUD-Operationen für Fahrer./update_stint_driver,/reorder_stints: Aktualisiert Fahrer in Stints und ordnet Stints neu an./undo/<int:car_num>: Macht Änderungen an Stints rückgängig./generate_schedule/<int:car_num>: Generiert einen automatischen Stint-Plan./save_scenario,/load_scenario: Speichert und lädt Rennszenarien./export/car/<int:car_num>,/export/driver/<int:driver_id>: Exportiert Zeitpläne als PDF./driver/<int:id>: Zeigt Details und Stints für einen bestimmten Fahrer an./login,/logout: Benutzerauthentifizierung.
Installation und Ausführung
-
Voraussetzungen:
- Python 3.x
- pip (Python-Paketmanager)
- Docker und Docker Compose (für die Bereitstellung in einer Container-Umgebung)
-
Abhängigkeiten installieren:
pip install -r requirements.txt -
Datenbank-Migrationen anwenden (falls noch nicht geschehen):
flask db upgrade -
Anwendung starten:
python app/main.pyDie Anwendung ist dann unter
http://127.0.0.1:5000erreichbar.
Docker-Bereitstellung
Die Anwendung kann auch mit Docker und Docker Compose bereitgestellt werden. Die Dockerfile und docker-compose.yml Dateien im Root-Verzeichnis definieren die Container-Umgebung.
Zum Starten der Anwendung mit Docker Compose:
docker-compose up --build
Die Anwendung ist dann auf Port 80 erreichbar (konfiguriert über Nginx).
Benutzerauthentifizierung
Standard-Benutzername: mscaltenbach
Standard-Passwort: SendIt123!
Verbesserungsvorschläge
Um die Wartbarkeit und Skalierbarkeit der Anwendung zu verbessern, könnte man folgende Maßnahmen in Betracht ziehen:
- Modulare Struktur: Aufteilung der
app/main.py-Datei in kleinere, logische Module (z.B.routes.py,models.py,services.py) zur besseren Organisation und Trennung der Verantwortlichkeiten. - Blueprints: Verwendung von Flask Blueprints zur Gruppierung verwandter Routen und Ansichten, was die Strukturierung größerer Anwendungen vereinfacht.
- Fehlerbehandlung: Erweiterte Fehlerbehandlung und Logging, um Probleme in der Produktion besser identifizieren und beheben zu können.
- Frontend-Verbesserungen: Einsatz eines Frontend-Frameworks (z.B. React, Vue.js) für eine dynamischere Benutzeroberfläche und eine bessere Trennung von Frontend und Backend.
- Tests: Implementierung von Unit- und Integrationstests, um die Funktionalität der Anwendung sicherzustellen und Regressionen zu vermeiden.