Changes for page Fuhrpark (Fleet Manager)
Last modified by Patrizia Gurschka on 2026/09/14 07:51
From version 6.1
edited by Dimitri Rupp
on 2026/07/08 13:55
on 2026/07/08 13:55
Change comment:
There is no comment for this version
To version 7.3
edited by Patrizia Gurschka
on 2026/09/09 13:21
on 2026/09/09 13:21
Change comment:
Auto-saved during real-time collaboration
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. drupp1 +XWiki.gurschkap - Content
-
... ... @@ -1,234 +1,180 @@ 1 -{{box cssClass="floatinginfobox" title="**Auf dieser Seite**"}} 2 -{{toc/}} 3 -{{/box}} 1 += 🚗 Fuhrpark (Fleet Manager) = 4 4 5 -** Ablauf FleetManager:**3 +>ℹ️ **Zweck:** Webbasiertes System zur Verwaltung des Firmenfuhrparks — von Fahrzeug- und Fahrerstammdaten über Kostenkalkulation und Kilometerauswertung bis zu automatisierter Ersatzbeschaffungs-Planung (Handlungsbedarf) und monatlicher Abrechnung. 6 6 5 +**Auf dieser Seite** 7 7 8 -**~1. Fahrzeuge verwalten** 7 +* 🚗 [[Fuhrpark (Fleet Manager)>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#-fuhrpark-fleet-manager]] 8 +** [[Übersicht>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#%C3%BCbersicht]] 9 +** [[Technologie-Stack>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#technologie-stack]] 10 +** [[Projektstruktur>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#projektstruktur]] 11 +** [[Hauptfunktionen>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#hauptfunktionen]] 12 +*** [[Fahrzeuge verwalten>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#fahrzeuge-verwalten]] 13 +*** [[Fahrer verwalten>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#fahrer-verwalten]] 14 +*** [[Kilometer-Daten>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#kilometer-daten]] 15 +*** [[Kalkulation>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#kalkulation]] 16 +*** [[Handlungsbedarf>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#handlungsbedarf]] 17 +*** [[Dashboard>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#dashboard]] 18 +*** [[Benutzerverwaltung (Admin)>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#benutzerverwaltung-admin]] 19 +*** [[Kalkulationsparameter>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#kalkulationsparameter]] 20 +*** [[Export & Berichte>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#export--berichte]] 21 +** [[Routing>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#routing]] 22 +** [[Datenzugriff>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#datenzugriff]] 23 +** [[Backend>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#backend]] 24 +** [[Architektur>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#architektur]] 25 +** [[Server>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#server]] 26 +** [[Hinweise>>url:https://claude.ai/chat/bbe27d6f-4606-42f0-8e93-34a994469548#hinweise]] 9 9 10 - Fahrzeugewerdenbis jetzt einmal aus Rimo importiert und dann in der App gepflegt. (Geplant: retourschreibenin Rimo)28 +== Übersicht == 11 11 30 +Fuhrpark unterstützt den gesamten Lebenszyklus eines Firmenfahrzeugs: Anlage und Zuordnung, laufende Kostenkalkulation, Kilometer-Tracking, Handlungsbedarf/Ersatzbeschaffung bis zur monatlichen Abrechnung und Kostenstellen-Umbuchung. Fahrzeug- und Fahrerstammdaten werden aus dem unternehmensweiten RIMO-System (SQL-Server-DWH) synchronisiert, Kilometerstände automatisiert über GPS-/Tesla-Anbindung und SharePoint importiert. 12 12 13 - **Fahrzeuganlegen**32 +Das Projekt wurde von einer Streamlit-Monolith-Anwendung auf eine FastAPI-Backend- + React-Frontend-Architektur umgestellt. 14 14 15 -1. Menü **„Fahrzeuge“** öffnen 16 -1. Auf **„Fahrzeug hinzufügen“** klicken 17 -1. Pflichtfelder ausfüllen (MAT-ID, Marke, Modell verpflichtend) 18 -1. Fahrer und Line Manager (wird automatisch ergänzt, kann dennoch selbst ausgewählt werden) auswählen 19 -1. Speichern 34 +== Technologie-Stack == 20 20 36 +**Frontend:** React 18 · Vite · React Router · React Query (TanStack Query) · Axios · eigene UI-Komponentenbibliothek (kein UI-Framework wie MUI/shadcn) 21 21 38 +**Backend:** FastAPI (Python) · SQLite (WAL-Modus) · Pandas · python-jose (JWT) · passlib/bcrypt · pyodbc (SQL-Server-Anbindung) 22 22 23 -** Fahrzeugbearbeiten**40 +**Externe Anbindungen:** 24 24 25 -* Fahrzeug auswählen 26 -* Änderungen durchführen 42 +* **RIMO / SQL-Server (ai.sdmperson, rimo.sdmtool):** täglicher Fahrer-/Line-Manager-Sync, Datumsermittlung für Nachkorrekturen 43 +* **Microsoft Fabric:** KM-Formular-E-Mails, SharePoint-Listenabgleich 44 +* **GPS-AT / Tesla:** automatischer Kilometerstand-Import 27 27 28 - Wennein Fahrer nur für einen Zeitraum zugewiesen wird, wird nach diesem Zeitraum wieder der Ursprungsfahrer eingetragen. Wennkein Enddatum eingetragenwird, bleibt der Fahrer bis etwas geändert wird.46 +== Projektstruktur == 29 29 30 -* Speichern 48 +{{{fuhrpark/ 49 +├── _bootstrap.py Gemeinsames Setup für alle Skripte 50 +├── 1_import_users_drivers.py Täglicher Fahrer-/Line-Manager-Sync (Cron) 51 +├── 2_import_vehicles.py Einmaliger Fahrzeug-Erstimport 52 +├── 3_import_vehicle_data.py Manueller Excel-Import (Fahrzeugdaten) 53 +├── 4_import_km_history.py Manueller Excel-Import (KM-Historie) 54 +├── import_km.py KM-Stand-Import (gpsat/tesla/sharepoint) 55 +├── repair_stale_line_manager_assignments.py Einmaliges Reparatur-Skript (Altlasten) 56 +├── docker-compose.yml 57 +├── .env Secrets für Docker (SECRET_KEY, CORS) 58 +├── data/ fleet.db, fleet_demo.db (nicht in Git) 59 +├── abrechnungen/ Export-Ablage (nicht in Git) 60 +├── backend/ 61 +│ ├── Dockerfile 62 +│ ├── .env Secrets für Cron-Skripte (CONN_STR, SP_*, SMTP_*) 63 +│ ├── requirements.txt 64 +│ └── app/ 65 +│ ├── main.py FastAPI-Einstiegspunkt, Hintergrund-Jobs 66 +│ ├── config.py Zentrale Konfiguration (ENV-Variablen) 67 +│ ├── db.py Schema, Migrationen, Indizes 68 +│ ├── auth.py JWT/Passwort-Logik 69 +│ ├── services.py Geschäftslogik (Kalkulation, Zuordnung, ...) 70 +│ └── routers/ vehicles, drivers, users, dashboard, calc_params, auth 71 +└── frontend/ 72 + ├── Dockerfile 73 + ├── nginx.conf Reverse-Proxy zu /api, SPA-Routing 74 + └── src/ 75 + ├── api/ zentraler Axios-Client 76 + ├── context/ AuthContext 77 + ├── components/ VehicleFormModal, DriverFormModal, ui/, ... 78 + └── pages/ Dashboard, Fahrzeuge, Fahrer, KM-Dashboard, ... 79 +}}} 31 31 81 +== Hauptfunktionen == 32 32 83 +=== Fahrzeuge verwalten === 33 33 34 - **Fahrzeug deaktivieren**85 +Fahrzeuge werden initial aus RIMO importiert und danach in der App gepflegt (Rückschreiben nach RIMO ist geplant, aktuell nicht implementiert). Anlegen erfordert MAT-ID, Marke und Modell als Pflichtfelder; Fahrer und Line Manager können direkt zugewiesen werden (Line Manager wird bei Fahrer-Auswahl automatisch ergänzt, ist aber weiterhin manuell überschreibbar). Zuordnungen mit befristetem Zeitraum kehren nach Ablauf automatisch zum vorherigen Fahrer zurück — ohne Enddatum bleibt die Zuordnung bestehen, bis sie aktiv geändert wird. Fahrzeuge können auf inaktiv gesetzt (bleiben sichtbar) oder archiviert werden (wandern in die Archiv-Ansicht, von dort reaktivierbar). Ein gesetztes „Deactivation Date" deaktiviert und archiviert das Fahrzeug automatisch zum entsprechenden Datum. Komponenten: FahrzeugePage, VehicleFormModal, VehicleDrawer. 35 35 36 - *in "bearbeiten" kann dasFahrzeugauf inaktivgesetzt werden und bleibtinder Tabelle87 +=== Fahrer verwalten === 37 37 89 +Fahrer werden täglich um 4:00 Uhr gegen RIMO abgeglichen (Neuanlage bei unbekannter Personalnummer, sonst Aktualisierung von Stammdaten, Kostenstelle und Line Manager). Externe Fahrer können manuell angelegt und bearbeitet werden; Stammdaten interner (per RIMO importierter) Fahrer sind schreibgeschützt. Komponenten: FahrerPage, DriverFormModal. 38 38 91 +=== Kilometer-Daten === 39 39 40 - **Fahrzeug archivieren**93 +Kilometerstände werden automatisiert importiert: GPS-AT täglich um 4:00, Tesla montags um 4:00, jeweils zum Monatsende. Für Fahrzeuge ohne automatische Anbindung wird 3 Tage vor Monatsende täglich eine Erinnerungsmail verschickt, bis ein Wert in der SharePoint-Liste eingetragen ist; sobald die Liste vollständig ist, wird sie automatisch übernommen. Berechnet werden Differenzen, Jahreskilometer und aktuelle Laufleistung, einsehbar im KM-Dashboard — inklusive korrekter Zeitraum-Begrenzung bei unterjährigem Fahrer-/Line-Manager-Wechsel. Komponente: KmDashboardPage. 41 41 42 - *Fahrzeugkann archiviert werden, dann wird es automatisch auf inaktiv gesetzt und in der „archivierte Fahrzeuge“ Tabelleangezeigt(dort kannes wieder aktiviert werden)95 +=== Kalkulation === 43 43 44 -- ---97 +Pro Fahrzeug wird eine Kostenkalkulation aus Anschaffungskosten, laufenden Kosten (Versicherung, Wartung etc.) sowie Verbrauch und Energiepreisen erstellt. Ergebnis: Kosten pro Monat, Jahr und Kilometer. Beim Anlegen eines Fahrzeugs werden die Default-Parameter aus „Kalkulationsparameter" nach Fahrzeugtyp übernommen; die verbleibenden individuellen Felder werden in „Kalkulation" ergänzt und per „Aktualisieren" neu berechnet. Komponente: KalkulationPage. 45 45 99 +=== Handlungsbedarf === 46 46 47 - **2. Fahrerverwalten**101 +Hochrechnungen werden bei jedem KM-Stand-Import neu berechnet. Ein neu bestelltes Fahrzeug wird zunächst über das Häkchen „Bestellt" markiert — erst danach kann es im System angelegt werden. Nach Anlage steht die Funktion „Geliefert" zur Verfügung; sobald ein Fahrzeug als geliefert markiert wird, entfällt es automatisch aus der Handlungsbedarfsliste, der Beschaffungsprozess gilt als abgeschlossen. Neu angelegte sowie aus dem Handlungsbedarf stammende Fahrzeuge erscheinen automatisch im Forecast; Ersatzfahrzeuge enthalten dort eine Referenz auf das ursprüngliche (ersetzte) Fahrzeug. Komponente: HandlungsbedarfPage. 48 48 49 - Fahrerwerden jeden Tag um 4:00 in der Frühin Rimo überprüft und wenn notwendig neuangelegt oderbei Veränderungenangepasst.103 +=== Dashboard === 50 50 105 +Zentrale Übersicht: Anzahl Fahrzeuge, Kostenübersicht und relevante Kennzahlen zum aktuellen Fuhrparkstatus. Komponente: DashboardPage. 51 51 52 - **Fahreranlegen (extern)**107 +=== Benutzerverwaltung (Admin) === 53 53 54 -1. Menü **„Fahrer“** öffnen 55 -1. Auf **„Fahrer hinzufügen“** klicken 56 -1. Stammdaten eingeben 57 -1. Speichern 109 +Admins können Benutzer anlegen, Passwörter ändern sowie Fahrer und Fahrzeuge zuweisen. Änderungen an Line Manager und Kostenstelle werden nachvollziehbar protokolliert (driver_attribute_history), sowohl bei manueller Änderung als auch beim täglichen RIMO-Sync. Komponente: BenutzerPage. 58 58 111 +=== Kalkulationsparameter === 59 59 113 +Anpassungen hier wirken sich auf **alle** Fahrzeuge des jeweiligen Typs aus. Dem Controlling vorbehalten (Rollen admin, demo, controlling). Komponente: KalkParamsPage. 60 60 61 - **Fahrerbearbeiten**115 +=== Export & Berichte === 62 62 63 - *Stammdaten ändern(nurbei extern)117 +Monatliche Abrechnungen und Kostenstellen-Umbuchungen werden auf Klick erstellt und als CSV exportiert, zur Weiterverarbeitung in Excel. Gefahrene Kilometer sowie die vollständige Fahrzeugliste (inkl. Kalkulationsaufschlüsselung) können als Excel-Datei heruntergeladen werden. 64 64 65 - ----119 +== Routing == 66 66 121 +|=Seite|=Beschreibung 122 +|Dashboard|Startseite, zentrale Kennzahlen 123 +|Fahrzeuge|Fahrzeugverwaltung, Zuordnung, Archiv 124 +|Fahrer|Fahrerverwaltung 125 +|KM-Dashboard|Kilometerauswertung, Monatsabrechnung 126 +|Kalkulation|Kostenkalkulation je Fahrzeug 127 +|Handlungsbedarf|Ersatzbeschaffung, Forecast 128 +|Kalkulationsparameter|Typ-Defaults (Controlling) 129 +|Benutzer|Benutzerverwaltung (Admin) 130 +|Login|Anmeldung 67 67 68 - **3.Kilometer-Daten**132 +== Datenzugriff == 69 69 70 -* Kilometerstände werden automatisch importiert (z. B. GPS / Tesla) 71 -** gpsat täglich um 4:00 72 -** tesla montags 4:00 73 -** beides jeweils Ende des Monats 74 -** Erinnerungsmail wird 3 Tage von Ende des Monats täglich ausgeschickt, wenn kein KM Stand in der Sharepoint Liste vorhanden ist. Sobald die Liste vollständig ist, wird sie auf die App übertragen. 134 +Der Zugriff erfolgt über einen zentralen Axios-Client (api/index.js) in Verbindung mit React Query für Caching, Invalidierung und Hintergrund-Aktualisierung. Jede Seite bindet die für sie relevanten REST-Endpunkte des FastAPI-Backends ein (vehiclesApi, driversApi, usersApi, calcParamsApi). 75 75 136 +== Backend == 76 76 138 +**Authentifizierung:** JWT (python-jose), OAuth2-Password-Flow, 8-Stunden-Tokens. Rollen: admin, demo, controlling, Benutzer (Line Manager/Fahrer). Sichtbarkeit von Fahrzeugen/Fahrern für normale Nutzer richtet sich nach Line-Manager-Zuordnung. 77 77 78 -* Das System berechnet: 79 -** Differenzen 80 -** Jahreskilometer 81 -** aktuelle Laufleistung 140 +**Datenbank:** SQLite im WAL-Modus. Schema und nicht-destruktive Migrationen in db.py. Änderungen an Fahrzeugen, Fahrern, Kalkulationsparametern und Passwörtern werden inklusive verantwortlicher Person nachvollzogen (updated_by); Zuordnungsänderungen (Fahrzeug↔Fahrer, Fahrer↔Line-Manager/Kostenstelle) führen eine vollständige, zeitlich abgegrenzte Historie (vehicle_assignment_history, driver_attribute_history). 82 82 142 +**Externe Anbindung:** SQL-Server-Zugriff über pyodbc (CONN_STR) für den täglichen RIMO-Sync sowie Datumsermittlung bei nachträglichen Korrekturen (rimo.sdmtool.last_update). Microsoft-Fabric-Anbindung für KM-Formular-E-Mails und SharePoint-Abgleich. 83 83 144 +== Architektur == 84 84 85 -Diese Daten sind im **KM-Dashboard** einsehbar. 146 +{{{flowchart TD 147 + A[React Frontend] --> B[React Query / Axios-Client] 148 + B --> C[nginx Reverse-Proxy] 149 + C --> D[FastAPI Backend] 150 + D --> E[(SQLite<br/>fleet.db)] 151 + D --> F[JWT Auth] 86 86 87 ----- 153 + G[Cron-Skripte<br/>Projekt-Root] --> E 154 + G --> H[SQL-Server / RIMO<br/>ai.sdmperson, rimo.sdmtool] 155 + G --> I[Microsoft Fabric<br/>SharePoint / KM-Mails] 156 + G --> J[GPS-AT / Tesla APIs] 157 +}}} 88 88 159 +Die Cron-Skripte laufen **unabhängig** von der FastAPI-App direkt auf dem Server (nicht im Docker-Container), schreiben aber in dieselbe fleet.db wie das Backend. 89 89 90 - **4.Kalkulation**161 +== Server == 91 91 92 - FürjedesFahrzeugkanneineKostenkalkulationdurchgeführt werden:163 +Die App läuft auf 192.168.208.2, per Docker Compose (Services backend + frontend), und liegt unter /mnt/data/fleet-manager/fuhrpark. 93 93 94 -* Anschaffungskosten 95 -* Laufende Kosten (Versicherung, Wartung etc.) 96 -* Verbrauch & Energiepreise 165 +**Deployment bei Codeänderungen** (manuell auf dem Server auszuführen): 97 97 167 +{{{sudo -u www-data git pull 168 +docker compose up -d --build 169 +}}} 98 98 171 +**Cronjobs:** sudo -u www-data crontab -e, Logs unter /mnt/data/fleet-manager/fuhrpark/logs. Enthält u. a. den täglichen Fahrer-Sync (1_import_users_drivers.py) und die KM-Stand-Importe (gpsat/tesla/sharepoint über import_km.py). 99 99 100 -Er gebnisse:173 +Erreichbar unter [[http:~~/~~/fleetmanager.spl-tele.com:8501>>url:http://fleetmanager.spl-tele.com:8501/]] — mit VPN und im SPL-TELE-Netzwerk. 101 101 102 -* Kosten pro Monat 103 -* Kosten pro Jahr 104 -* Kosten pro Kilometer 175 +== Hinweise == 105 105 106 - 107 - 108 -Wenn ein Fahrzeug hinzugefügt wird, werden die Default Parameter aus „Kalkulationsparameter“ nach Typ übernommen. Die 7 fehlenden Felder werden in „Kalkulation“ bei "bearbeiten" eingetragen und beim auf „Aktualisieren“ Drücken werden die Werte berechnet in die Tabelle eingetragen. 109 - 110 ----- 111 - 112 - 113 -**5. Handlungsbedarf** 114 - 115 -Die Hochrechnungen in Handlungsbedarf werden immer neu berechnet mit den Importen der KM Stände. 116 - 117 - 118 -**Neues Fahrzeug bestellen** 119 - 120 -* Wenn neues Fahrzeug bestellt wurde, muss im Bereich „Handlungsbedarf“ das Häkchen bei „Bestellt“ gesetzt werden. 121 -* Erst danach ist es möglich, ein neues Fahrzeug im System anzulegen. 122 - 123 - 124 - 125 -**Neues Fahrzeug anlegen** 126 - 127 -* Ein Fahrzeug kann erst bearbeitet werden, nachdem es angelegt wurde 128 -* Nach der Anlage steht die Funktion „Geliefert“ zur Verfügung 129 - 130 - 131 - 132 -**Fahrzeug als geliefert markieren** 133 - 134 -* Sobald ein Fahrzeug als „geliefert“ markiert wird: 135 -** wird es automatisch aus der Handlungsbedarfsliste entfernt 136 -** gilt der Beschaffungsprozess als abgeschlossen 137 - 138 - 139 - 140 -**Darstellung im Forecast** 141 - 142 -* Neu hinzugefügte Fahrzeuge (Bereich „Fahrzeuge“) 143 -* sowie im Handlungsbedarf angelegte Fahrzeuge 144 - 145 -werden automatisch im Bereich „Forecast“ angezeigt. 146 - 147 -Zusätzlich gilt: 148 - 149 -* Fahrzeuge aus dem Handlungsbedarf enthalten im Forecast eine 150 -Referenz zum alten (ersetzten) Fahrzeug 151 - 152 - 153 - 154 -**Deaktivierung von Fahrzeugen** 155 - 156 -Wenn im Feld „Deactivation Date“ ein Datum eingetragen wird: 157 - 158 -wird das Fahrzeug ab diesem Datum automatisch: 159 - 160 -* deaktiviert 161 -* in den Bereich „Archivierte Fahrzeuge**“** verschoben 162 - 163 ----- 164 - 165 - 166 -**6. Dashboard** 167 - 168 -Das Dashboard zeigt: 169 - 170 -* Anzahl Fahrzeuge 171 -* Kostenübersicht 172 -* relevante Kennzahlen 173 - 174 -Es dient als zentrale Übersicht für den aktuellen Fuhrparkstatus. 175 - 176 ----- 177 - 178 - 179 -**7. Benutzerverwaltung (Admin)** 180 - 181 -Admins können: 182 - 183 -* Benutzer anlegen 184 -* Passwörter ändern 185 -* Fahrer und Fahrzeuge zuweisen 186 - 187 ----- 188 - 189 - 190 -**8. Kalkulationsparameter** 191 - 192 -Wenn hier etwas angepasst wird, werden die Werte für alle Fahrzeuge dieses Typs abgeändert. Ist dem Controlling vorbehalten. 193 - 194 ----- 195 - 196 - 197 -**9. Export & Berichte** 198 - 199 -* Monatliche Abrechnungen und Kostenstellen-Umbuchungen werden auf Klick erstellt 200 -* Export erfolgt als CSV-Datei 201 -* Daten können in Excel weiterverarbeitet werden 202 -* gefahrene KM können als Excel heruntergeladen werden 203 - 204 ----- 205 - 206 - 207 -**10. Hinweise** 208 - 209 -* Änderungen im Demo-Modus werden nicht gespeichert 210 -* Benutzerrechte bestimmen die Sichtbarkeit der Daten 211 -* Regelmäßige Datenpflege (z. B. Fahrerzuordnung) ist wichtig für korrekte Auswertungen 212 - 213 - 214 - 215 - 216 -**Fehlerbehebung** 217 - 218 -* **Frontend:** Streamlit 219 -* **Backend:** Python 220 -* **Datenbank:** SQLite 221 -* **Externe APIs:** Microsoft Fabric Integration 222 - 223 -Die App läuft auf 192.168.208.2, in einem Docker und liegt in: /mnt/data/fleet-manager/fuhrpark. 224 - 225 -Falls etwas in Github geändert wird muss der git pull manuell auf dem Server passieren: 226 - 227 -* sudo -u www-data git pull 228 -* docker compose up -d –build 229 - 230 -Es gibt cronjobs in sudo www-data crontab -e, mit logs in /mnt/data/fleet-manager/fuhrpark/logs. 231 - 232 -Erreichbar unter: [[http:~~/~~/fleetmanager.spl-tele.com:8501>>http://fleetmanager.spl-tele.com:8501]] mit VPN und im SPL TELE Netzwerk 233 - 234 - 177 +* Änderungen im Demo-Modus werden nicht gespeichert. 178 +* Benutzerrechte bestimmen die Sichtbarkeit der Daten (Line-Manager-Zuordnung). 179 +* Regelmäßige Datenpflege (z. B. Fahrerzuordnung) ist wichtig für korrekte Auswertungen. 180 +* backend/data/ bzw. data/ (Projekt-Root) enthält die produktive Datenbank und ist **nicht** Teil des Git-Repos — ein git pull verändert die Datenbank nie.