Dokumentation hinzugefügt

This commit is contained in:
2026-01-23 22:01:23 +01:00
parent 634d3d865a
commit 8e0a27de5b

78
documentation.md Normal file
View File

@@ -0,0 +1,78 @@
# 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`, `Stint` und `RaceConfig`.
* `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
1. **Voraussetzungen**:
* Python 3.x
* pip (Python-Paketmanager)
* Docker und Docker Compose (für die Bereitstellung in einer Container-Umgebung)
2. **Abhängigkeiten installieren**:
```bash
pip install -r requirements.txt
```
3. **Datenbank-Migrationen anwenden** (falls noch nicht geschehen):
```bash
flask db upgrade
```
4. **Anwendung starten**:
```bash
python app/main.py
```
Die Anwendung ist dann unter `http://127.0.0.1:5000` erreichbar.
## 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:
```bash
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.