Changes for page Fuhrpark (Fleet Manager)
Last modified by Patrizia Gurschka on 2026/09/14 07:51
From version 19.1
edited by Patrizia Gurschka
on 2026/09/14 07:51
on 2026/09/14 07:51
Change comment:
There is no comment for this version
To version 5.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
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 3 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. gurschkap1 +XWiki.drupp - Content
-
... ... @@ -1,145 +1,234 @@ 1 -|((( 2 -= **🚗 **Fuhrpark (Fleet Manager) = 1 +{{box cssClass="floatinginfobox" title="**Auf dieser Seite**"}} 2 +{{toc/}} 3 +{{/box}} 3 3 4 -|((( 5 -{{info}} 6 -**Zweck: **Webbasierte Verwaltung des Firmenfuhrparks — Fahrzeug-/Fahrerstammdaten, Kostenkalkulation, Kilometerauswertung, Ersatzbeschaffungs-Planung (Handlungsbedarf) und monatliche Abrechnung. 7 -**Zielgruppe: **Fuhrpark-/Controlling-Team, Line Manager, IT-Betrieb. 5 +**Ablauf Fleet Manager:** 8 8 9 -{{/info}} 10 10 11 - 12 -))) 8 +**~1. Fahrzeuge verwalten** 13 13 14 - 15 -)))|((( 16 -|((( 17 -**Auf dieser Seite** 10 +Fahrzeuge werden bis jetzt einmal aus Rimo importiert und dann in der App gepflegt. (Geplant: retour schreiben in Rimo) 18 18 19 -* [[🚗 Fuhrpark (Fleet Manager)>>path:#top]] 20 -** [[Überblick>>path:#ueberblick]] 21 -** [[Architektur>>path:#architektur]] 22 -** [[Technologiestack>>path:#technologiestack]] 23 -** [[Hauptfunktionen>>path:#hauptfunktionen]] 24 -*** [[1. Stammdaten-Import>>path:#hf1]] 25 -*** [[2. Fahrzeug-/Fahrer-Zuordnung>>path:#hf2]] 26 -*** [[3. Kilometer-Erfassung>>path:#hf3]] 27 -*** [[4. Kalkulation>>path:#hf4]] 28 -*** [[5. Handlungsbedarf>>path:#hf5]] 29 -*** [[6. Export & Abrechnung>>path:#hf6]] 30 -** [[Nachvollziehbarkeit & Fehlerbehandlung>>path:#orch]] 31 -** [[Cronjobs & Konfiguration>>path:#konfiguration]] 32 -** [[Sicherheit>>path:#sicherheit]] 33 -*** [[Authentifizierung>>path:#auth]] 34 -*** [[Datenschutz>>path:#datenschutz]] 35 -** [[Besondere Geschäftslogik>>path:#geschaeftslogik]] 36 -** [[Offene Punkte / zu verifizieren>>path:#offene-punkte]] 37 -** [[Server / Umgebung>>path:#server]] 38 -))) 39 39 40 - 41 -))) 13 +**Fahrzeug anlegen** 42 42 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 43 43 44 44 45 -= Überblick = 46 46 47 -F uhrpark isteine FastAPI-Backend- + React-Frontend-Anwendung(migriert voneiner Streamlit-Monolith-Anwendung). Die Lösung besteht aus:23 +**Fahrzeug bearbeiten** 48 48 49 -* Frontend: React 18 · Vite · React Query · Axios-Client (nginx-Reverse-Proxy) 50 -* Backend: FastAPI · SQLite (WAL-Modus) · JWT-Authentifizierung 51 -* Datenquellen: RIMO/SQL-Server (Fahrer-Stammdaten) · Microsoft Fabric (SharePoint, KM-Formular-Mails) · GPS-AT/Tesla-APIs (Kilometerstände) 52 -* Orchestrierung: eigenständige Cron-Skripte auf dem Server, unabhängig vom Docker-Container 25 +* Fahrzeug auswählen 26 +* Änderungen durchführen 53 53 54 - =Architektur=28 +Wenn ein Fahrer nur für einen Zeitraum zugewiesen wird, wird nach diesem Zeitraum wieder der Ursprungsfahrer eingetragen. Wenn kein Enddatum eingetragen wird, bleibt der Fahrer bis etwas geändert wird. 55 55 56 - [[image:1789018507266-361.png]]30 +* Speichern 57 57 58 -//Frontend, Backend und Datenbank laufen im Docker-Compose-Stack; die Cron-Skripte laufen direkt auf dem Host und schreiben in dieselbe fleet.db.// 59 59 60 -= Technologiestack = 61 61 62 -**Fr ontend:**React18 · Vite· React Router· React Query (TanStack Query) · Axios34 +**Fahrzeug deaktivieren** 63 63 64 -* *Backend:**FastAPI (Python)· SQLite· Pandas· python-jose(JWT)·passlib/bcrypt·pyodbc36 +* in "bearbeiten" kann das Fahrzeug auf inaktiv gesetzt werden und bleibt in der Tabelle 65 65 66 -**Externe APIs: **RIMO/SQL-Server (ai.sdmperson, rimo.sdmtool) · Microsoft Fabric (SharePoint, KM-Formular-Mails) · GPS-AT- und Tesla-API 67 67 68 -= Hauptfunktionen = 69 69 70 - ==1. Stammdaten-Import ==40 +**Fahrzeug archivieren** 71 71 72 -Fahrzeug ewerdeninitialaus RIMO importiert und danachin derApp gepflegt(Rückschreibennach RIMO ist geplant, aktuellnicht implementiert).Fahrerwerdentäglich um 4:00 Uhr gegenRIMO (ai.sdmperson)abgeglichen— Neuanlagebeiunbekannter Personalnummer, sonst AktualisierungvonStammdaten, KostenstelleundLineManager. ExterneFahrer könnenzusätzlich manuell angelegtwerden; Stammdaten interner(RIMO-importierter)Fahrersindschreibgeschützt.42 +* Fahrzeug kann archiviert werden, dann wird es automatisch auf inaktiv gesetzt und in der „archivierte Fahrzeuge“ Tabelle angezeigt (dort kann es wieder aktiviert werden) 73 73 74 - == 2. Fahrzeug-/Fahrer-Zuordnung ==44 +---- 75 75 76 -Fahrer und Line Manager können einem Fahrzeug direkt zugewiesen werden (Line Manager wird bei Fahrer-Auswahl automatisch ergänzt, bleibt aber überschreibbar). Befristete Zuordnungen kehren nach Ablauf automatisch zum vorherigen Fahrer zurück. Jede Zuordnungs- sowie Line-Manager-/Kostenstellen-Änderung wird vollständig und zeitlich abgegrenzt protokolliert (vehicle_assignment_history, driver_attribute_history) — sowohl bei manueller Änderung als auch beim täglichen RIMO-Sync. 77 77 78 - == 3.Kilometer-Erfassung ==47 +**2. Fahrer verwalten** 79 79 80 - Kilometerstände werdenautomatisiert importiert: GPS-AT täglich, Tesla wöchentlich,jeweils zum Monatsende.Für Fahrzeugeohne automatischeAnbindungwird3 TagevorMonatsende täglicheineErinnerungsmailverschickt,bisein WertinderSharePoint-Listeeingetragenist. Das KM-Dashboardberücksichtigtbei der Auswertungausschließlich den Zeitraum,indem die jeweilige Zuordnungtatsächlichbestand — auch beiunterjährigem Fahrer- oderLine-Manager-Wechsel.49 +Fahrer werden jeden Tag um 4:00 in der Früh in Rimo überprüft und wenn notwendig neu angelegt oder bei Veränderungen angepasst. 81 81 82 -== 4. Kalkulation == 83 83 84 - ProFahrzeug wirdeine Kostenkalkulationaus Anschaffungskosten,laufenden Kosten und Verbrauch/Energiepreisenerstellt(Kosten pro Monat/Jahr/Kilometer). Beim Anlegen werden Default-Parameter aus „Kalkulationsparameter“ nach Fahrzeugtyp übernommen; individuelle Felder werden ergänzt und per „Aktualisieren“ neu berechnet. Änderungen an Kalkulationsparametern wirken sich auf alle Fahrzeuge des jeweiligen Typs aus (Rollen admin/demo/controlling).52 +**Fahrer anlegen (extern)** 85 85 86 -== 5. Handlungsbedarf == 54 +1. Menü **„Fahrer“** öffnen 55 +1. Auf **„Fahrer hinzufügen“** klicken 56 +1. Stammdaten eingeben 57 +1. Speichern 87 87 88 -Hochrechnungen werden bei jedem KM-Stand-Import neu berechnet. Ein bestelltes Fahrzeug wird über das Häkchen „Bestellt“ markiert, erst danach anlegbar. Nach Anlage steht „Geliefert“ zur Verfügung; sobald gesetzt, entfällt das Fahrzeug automatisch aus der Handlungsbedarfsliste. Ein gesetztes „Deactivation Date“ deaktiviert und archiviert ein Fahrzeug automatisch zum entsprechenden Datum. 89 89 90 -== 6. Export & Abrechnung == 91 91 92 - Monatliche Abrechnungen und Kostenstellen-Umbuchungen werden auf Klick erstellt und als CSV exportiert. Die vollständigeFahrzeugliste (inkl. kompletterKalkulationsaufschlüsselung) sowie gefahrene Kilometer können als Excel-Datei heruntergeladen werden.61 +**Fahrer bearbeiten** 93 93 94 - =Nachvollziehbarkeit& Fehlerbehandlung =63 +* Stammdaten ändern (nur bei extern) 95 95 96 - Ändert sich der Line Manager eines Fahrers — manuell oder über den täglichen Cron-Sync — wird nicht nur drivers.user_id aktualisiert, sondern auch jede betroffene vehicle_assignment_history-Zeile korrekt geschlossen und neu angelegt. Ohne diesen Schritt bliebe ein Fahrzeug fälschlich sowohl beim alten als auch beim neuen Line Manager sichtbar (historisch aufgetretener Fehler, mittlerweile behoben und mit einem Reparatur-Skript für Altfälle nachgezogen).65 +---- 97 97 98 -[[image:1789022432806-668.png]] 99 99 100 - //Ablauf bei einem Line-Manager-Wechsel, inkl.Absicherung gegen doppelteSichtbarkeit.//68 +**3. Kilometer-Daten** 101 101 102 -= Cronjobs & Konfiguration = 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. 103 103 104 -|**Bereich**|**Details** 105 -|Täglicher Fahrer-Sync|1_import_users_drivers.py, 4:00 Uhr — Fahrer-Stammdaten, Line Manager, Kostenstelle gegen RIMO (ai.sdmperson) abgleichen 106 -|KM-Import gpsat|import_km.py gpsat, täglich 4:00 Uhr, jeweils zum Monatsende 107 -|KM-Import Tesla|import_km.py tesla, montags 4:00 Uhr, jeweils zum Monatsende 108 -|SharePoint-Erinnerung|3 Tage vor Monatsende täglich, wenn kein KM-Stand in der SharePoint-Liste vorhanden ist 109 -|Docker Compose|Services backend (FastAPI) + frontend (nginx + React-Build) 110 -|Datenbank|SQLite, WAL-Modus, data/fleet.db (Projekt-Root, nicht in Git) 111 -|Reparatur-Skript|repair_stale_line_manager_assignments.py — einmalig, bei Altlasten vor dem Line-Manager-Fix 112 112 113 -= Sicherheit = 114 114 115 -Authentifizierung 78 +* Das System berechnet: 79 +** Differenzen 80 +** Jahreskilometer 81 +** aktuelle Laufleistung 116 116 117 -* JWT (python-jose), OAuth2-Password-Flow, 8-Stunden-Tokens 118 -* Rollen: admin, demo, controlling, Benutzer (Line Manager/Fahrer) 119 -* Zugriff auf Fahrzeug-Zuweisungshistorie und rohe KM-Ablesungen ist admin/demo vorbehalten — serverseitig abgesichert (403), nicht nur im Frontend versteckt 120 120 121 -Datenschutz 122 122 123 - Sichtbarkeit von Fahrzeugenund Fahrernfür normale Nutzer richtetsich ausschließlichnachderLine-Manager-Zuordnung. Passwörter sowie SQL-Server-/Fabric-Zugangsdatenliegeninnicht versionierten .env-Dateien (Docker-.env für Secrets der App,backend/.env fürdie Cron-Skripte).85 +Diese Daten sind im **KM-Dashboard** einsehbar. 124 124 125 - = Besondere Geschäftslogik =87 +---- 126 126 127 -* **Zeitzonen-Korrektur: **sync_vehicle_assignment() vergleicht mit datetime('now','localtime') statt datetime('now') — SQLite liefert sonst UTC, während alle gespeicherten Zeitstempel lokale Zeit sind. Ohne die Korrektur blieb eine gerade beendete Zuordnung bis zu 1–2 Stunden fälschlich „aktiv“. 128 -* **Import-Marker: **Historienzeilen aus der einmaligen Erstbefüllung (changed_by='import') zeigen in der Zuordnungs-Anzeige bewusst kein Startdatum („– 20.04.2026“ statt „28.02.2026 – 20.04.2026“), da dieses Datum nur den Zeitpunkt des Imports, nicht den echten historischen Beginn widerspiegelt. 129 -* **Odometer vs. Jahreskilometer: **vehicles.current_km speichert die im laufenden Kalenderjahr gefahrenen Kilometer (Vergleichswert zu „Max. KM/Jahr“), nicht den tatsächlichen Tacho-Stand. Für die Anzeige des echten Kilometerstands wird stattdessen die letzte Ablesung aus der KM-Historie herangezogen (latest_odometer_km). 130 -* **Zuordnungsende “heute“: **Wird als Enddatum das aktuelle Datum gewählt, wird als Enddatum bewusst der Vortag (23:59:59) gespeichert — damit gilt die Zuordnung ab exakt Mitternacht des gewählten Tages als beendet, ohne Sekundenpräzision oder Sonderfall im Code. 131 131 132 - =Server / Umgebung =90 +**4. Kalkulation** 133 133 134 - Die App läuft auf 192.168.208.2, perDocker Compose(Servicesbackend + frontend),und liegtunter /mnt/data/fleet-manager/fuhrpark.92 +Für jedes Fahrzeug kann eine Kostenkalkulation durchgeführt werden: 135 135 136 -**Deployment bei Codeänderungen** (manuell auf dem Server auszuführen): 94 +* Anschaffungskosten 95 +* Laufende Kosten (Versicherung, Wartung etc.) 96 +* Verbrauch & Energiepreise 137 137 138 -sudo -u www-data git pull 139 139 140 -docker compose up -d ~-~-build 141 141 100 +Ergebnisse: 142 142 143 -**Cronjobs: **sudo -u www-data crontab -e, Logs unter /mnt/data/fleet-manager/fuhrpark/logs. 102 +* Kosten pro Monat 103 +* Kosten pro Jahr 104 +* Kosten pro Kilometer 144 144 145 -Erreichbar unter http:~/~/fleetmanager.spl-tele.com:8501 — mit VPN und im SPL-TELE-Netzwerk. 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 +
- 1789018507266-361.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.gurschkap - Size
-
... ... @@ -1,1 +1,0 @@ 1 -52.2 KB - Content
- 1789018507268-395.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.gurschkap - Size
-
... ... @@ -1,1 +1,0 @@ 1 -19.7 KB - Content
- 1789022432806-668.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.gurschkap - Size
-
... ... @@ -1,1 +1,0 @@ 1 -55.3 KB - Content