Changes for page Fuhrpark (Fleet Manager)
Last modified by Patrizia Gurschka on 2026/09/14 07:51
From version 13.1
edited by Patrizia Gurschka
on 2026/09/10 08:23
on 2026/09/10 08:23
Change comment:
There is no comment for this version
To version 7.2
edited by Patrizia Gurschka
on 2026/09/09 13:08
on 2026/09/09 13:08
Change comment:
Auto-saved during real-time collaboration
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 2 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,158 +1,157 @@ 1 -|((( 2 -= **🚗 Fuhrpark (Fleet Manager)** = 1 += 🚗 Fuhrpark (Fleet Manager) = 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. 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. 8 8 9 - {{/info}}5 +== Übersicht == 10 10 11 - 12 -))) 7 +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. 13 13 14 - 15 -)))|((( 16 -|((( 17 -**Auf dieser Seite** 9 +Das Projekt wurde von einer Streamlit-Monolith-Anwendung auf eine FastAPI-Backend- + React-Frontend-Architektur umgestellt. 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 -))) 11 +== Technologie-Stack == 39 39 40 - 41 -))) 13 +**Frontend:** React 18 · Vite · React Router · React Query (TanStack Query) · Axios · eigene UI-Komponentenbibliothek (kein UI-Framework wie MUI/shadcn) 42 42 15 +**Backend:** FastAPI (Python) · SQLite (WAL-Modus) · Pandas · python-jose (JWT) · passlib/bcrypt · pyodbc (SQL-Server-Anbindung) 43 43 17 +**Externe Anbindungen:** 44 44 45 -= Überblick = 19 +* **RIMO / SQL-Server (ai.sdmperson, rimo.sdmtool):** täglicher Fahrer-/Line-Manager-Sync, Datumsermittlung für Nachkorrekturen 20 +* **Microsoft Fabric:** KM-Formular-E-Mails, SharePoint-Listenabgleich 21 +* **GPS-AT / Tesla:** automatischer Kilometerstand-Import 46 46 47 - Fuhrparkist eine FastAPI-Backend- + React-Frontend-Anwendung (migriertvon einer Streamlit-Monolith-Anwendung). Die Lösung besteht aus:23 +== Projektstruktur == 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 +{{{fuhrpark/ 26 +├── _bootstrap.py Gemeinsames Setup für alle Skripte 27 +├── 1_import_users_drivers.py Täglicher Fahrer-/Line-Manager-Sync (Cron) 28 +├── 2_import_vehicles.py Einmaliger Fahrzeug-Erstimport 29 +├── 3_import_vehicle_data.py Manueller Excel-Import (Fahrzeugdaten) 30 +├── 4_import_km_history.py Manueller Excel-Import (KM-Historie) 31 +├── import_km.py KM-Stand-Import (gpsat/tesla/sharepoint) 32 +├── repair_stale_line_manager_assignments.py Einmaliges Reparatur-Skript (Altlasten) 33 +├── docker-compose.yml 34 +├── .env Secrets für Docker (SECRET_KEY, CORS) 35 +├── data/ fleet.db, fleet_demo.db (nicht in Git) 36 +├── abrechnungen/ Export-Ablage (nicht in Git) 37 +├── backend/ 38 +│ ├── Dockerfile 39 +│ ├── .env Secrets für Cron-Skripte (CONN_STR, SP_*, SMTP_*) 40 +│ ├── requirements.txt 41 +│ └── app/ 42 +│ ├── main.py FastAPI-Einstiegspunkt, Hintergrund-Jobs 43 +│ ├── config.py Zentrale Konfiguration (ENV-Variablen) 44 +│ ├── db.py Schema, Migrationen, Indizes 45 +│ ├── auth.py JWT/Passwort-Logik 46 +│ ├── services.py Geschäftslogik (Kalkulation, Zuordnung, ...) 47 +│ └── routers/ vehicles, drivers, users, dashboard, calc_params, auth 48 +└── frontend/ 49 + ├── Dockerfile 50 + ├── nginx.conf Reverse-Proxy zu /api, SPA-Routing 51 + └── src/ 52 + ├── api/ zentraler Axios-Client 53 + ├── context/ AuthContext 54 + ├── components/ VehicleFormModal, DriverFormModal, ui/, ... 55 + └── pages/ Dashboard, Fahrzeuge, Fahrer, KM-Dashboard, ... 56 +}}} 53 53 54 -= Architektur=58 +== Hauptfunktionen == 55 55 56 - [[image:1789018507266-361.png]]60 +=== Fahrzeuge verwalten === 57 57 58 - //Frontend,BackendundDatenbanklaufen im Docker-Compose-Stack;dieCron-Skripte laufen direkt aufdemHostund schreiben in dieselbefleet.db.//62 +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. 59 59 60 -= Technologiestack=64 +=== Fahrer verwalten === 61 61 62 - **Frontend:**React18· Vite·ReactRouter·ReactQuery(TanStackQuery)·Axios66 +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. 63 63 64 - **Backend:**FastAPI (Python) · SQLite· Pandas · python-jose(JWT) · passlib/bcrypt · pyodbc68 +=== Kilometer-Daten === 65 65 66 - **ExterneAPIs: **RIMO/SQL-Server(ai.sdmperson,rimo.sdmtool)·MicrosoftFabric(SharePoint,KM-Formular-Mails)·GPS-AT-undTesla-API70 +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. 67 67 68 -= Hauptfunktionen=72 +=== Kalkulation === 69 69 70 - ~1.Stammdaten-Import74 +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. 71 71 72 - Fahrzeugewerden initial aus RIMO importiert unddanach in der App gepflegt (Rückschreiben nach RIMO ist geplant, aktuellnicht implementiert). Fahrer werden täglich um 4:00 Uhr gegen RIMO (ai.sdmperson) abgeglichen — Neuanlage bei unbekannter Personalnummer, sonst Aktualisierung von Stammdaten, Kostenstelle und Line Manager.Externe Fahrer können zusätzlich manuell angelegt werden; Stammdaten interner (RIMO-importierter) Fahrer sind schreibgeschützt.76 +=== Handlungsbedarf === 73 73 74 - 2. Fahrzeug-/Fahrer-Zuordnung78 +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. 75 75 76 - Fahrerund 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. JedeZuordnungs- 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.80 +=== Dashboard === 77 77 78 - 3.Kilometer-Erfassung82 +Zentrale Übersicht: Anzahl Fahrzeuge, Kostenübersicht und relevante Kennzahlen zum aktuellen Fuhrparkstatus. Komponente: DashboardPage. 79 79 80 - Kilometerständewerdenautomatisiert importiert: GPS-AT täglich, Tesla wöchentlich, jeweilszum Monatsende. FürFahrzeuge ohne automatische Anbindung wird 3 Tagevor Monatsende täglich eine Erinnerungsmail verschickt, bis ein Wert in der SharePoint-Liste eingetragen ist. Das KM-Dashboard berücksichtigt bei der Auswertungausschließlich den Zeitraum, indem die jeweiligeZuordnung tatsächlich bestand — auch bei unterjährigemFahrer- oder Line-Manager-Wechsel.84 +=== Benutzerverwaltung (Admin) === 81 81 82 - 4. Kalkulation86 +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. 83 83 84 - ProFahrzeug wird eineKostenkalkulationausAnschaffungskosten, laufenden Kosten und Verbrauch/Energiepreisen erstellt (Kosten pro Monat/Jahr/Kilometer). Beim Anlegen werden Default-Parameteraus „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).88 +=== Kalkulationsparameter === 85 85 86 - 5. Handlungsbedarf90 +Anpassungen hier wirken sich auf **alle** Fahrzeuge des jeweiligen Typs aus. Dem Controlling vorbehalten (Rollen admin, demo, controlling). Komponente: KalkParamsPage. 87 87 88 - Hochrechnungenwerden bei jedem KM-Stand-Importneuberechnet. Ein bestelltes Fahrzeug wird über das Häkchen „Bestellt“ markiert, erst danachanlegbar. 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.92 +=== Export & Berichte === 89 89 90 - 6.Export&Abrechnung94 +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. 91 91 92 - MonatlicheAbrechnungen und Kostenstellen-Umbuchungen werden auf Klick erstellt und als CSV exportiert. Die vollständigeFahrzeugliste (inkl. kompletter Kalkulationsaufschlüsselung) sowie gefahrene Kilometer können als Excel-Datei heruntergeladen werden.96 +== Routing == 93 93 94 -= Nachvollziehbarkeit & Fehlerbehandlung = 98 +|=Seite|=Beschreibung 99 +|Dashboard|Startseite, zentrale Kennzahlen 100 +|Fahrzeuge|Fahrzeugverwaltung, Zuordnung, Archiv 101 +|Fahrer|Fahrerverwaltung 102 +|KM-Dashboard|Kilometerauswertung, Monatsabrechnung 103 +|Kalkulation|Kostenkalkulation je Fahrzeug 104 +|Handlungsbedarf|Ersatzbeschaffung, Forecast 105 +|Kalkulationsparameter|Typ-Defaults (Controlling) 106 +|Benutzer|Benutzerverwaltung (Admin) 107 +|Login|Anmeldung 95 95 96 - Ändertsich der Line Manager eines Fahrers — manuell oder über dentäglichenCron-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 Fahrzeugfälschlich sowohl beim alten als auch beim neuen Line Managersichtbar (historisch aufgetretener Fehler, mittlerweile behoben und mit einem Reparatur-SkriptfürAltfälle nachgezogen).109 +== Datenzugriff == 97 97 98 - [[image:1789018507268-395.png||height="336"width="979"]]111 +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). 99 99 100 - //Ablaufbei einem Line-Manager-Wechsel, inkl. Absicherung gegendoppelteSichtbarkeit.//113 +== Backend == 101 101 102 - = Cronjobs&Konfiguration=115 +**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. 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 117 +**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). 112 112 119 +**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. 113 113 121 +== Architektur == 114 114 115 -= Sicherheit = 123 +{{{flowchart TD 124 + A[React Frontend] --> B[React Query / Axios-Client] 125 + B --> C[nginx Reverse-Proxy] 126 + C --> D[FastAPI Backend] 127 + D --> E[(SQLite<br/>fleet.db)] 128 + D --> F[JWT Auth] 116 116 117 -Authentifizierung 130 + G[Cron-Skripte<br/>Projekt-Root] --> E 131 + G --> H[SQL-Server / RIMO<br/>ai.sdmperson, rimo.sdmtool] 132 + G --> I[Microsoft Fabric<br/>SharePoint / KM-Mails] 133 + G --> J[GPS-AT / Tesla APIs] 134 +}}} 118 118 119 -* JWT (python-jose), OAuth2-Password-Flow, 8-Stunden-Tokens 120 -* Rollen: admin, demo, controlling, Benutzer (Line Manager/Fahrer) 121 -* Zugriff auf Fahrzeug-Zuweisungshistorie und rohe KM-Ablesungen ist admin/demo vorbehalten — serverseitig abgesichert (403), nicht nur im Frontend versteckt 136 +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. 122 122 123 - Datenschutz138 +== Server == 124 124 125 -Sichtbarkeit von Fahrzeugen und Fahrern für normale Nutzer richtet sich ausschließlich nach der Line-Manager-Zuordnung. Passwörter sowie SQL-Server-/Fabric-Zugangsdaten liegen in nicht versionierten .env-Dateien (Docker-.env für Secrets der App, backend/.env für die Cron-Skripte). 126 - 127 -= Besondere Geschäftslogik = 128 - 129 -* **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“. 130 -* **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. 131 -* **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). 132 -* **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. 133 - 134 -|((( 135 -**⚠️ Offene Punkte / zu verifizieren** 136 - 137 -* Flottenweite Reaktivierung in apply_due_deactivations(): Die automatische Reaktivierung („kein Deactivation Date mehr“) wirkt aktuell auf ALLE Fahrzeuge mit deactivation_date=NULL, nicht nur auf das gerade bearbeitete — kann manuell archivierte Fahrzeuge versehentlich mit reaktivieren. Fix identifiziert (Reaktivierung auf die eine Fahrzeug-ID scopen), Umsetzung noch ausständig. 138 -* Genaues Schema von rimo.sdmtool (Spaltennamen name/last_update) ist aus einer Beschreibung übernommen, nicht 1:1 gegen die echte Tabelle verifiziert. 139 -* Kein bestätigtes automatisches Backup der Produktivdatenbank gefunden — falls vorhanden, läuft es außerhalb des Anwendungscodes; sollte auf dem Server verifiziert werden. 140 -* Exakte SharePoint-/Fabric-Spaltennamen (SP_LIST_ITEMS_URL u. Ä.) sollten einmalig gegen die reale Liste geprüft werden. 141 -))) 142 - 143 - 144 - 145 -= Server / Umgebung = 146 - 147 147 Die App läuft auf 192.168.208.2, per Docker Compose (Services backend + frontend), und liegt unter /mnt/data/fleet-manager/fuhrpark. 148 148 149 149 **Deployment bei Codeänderungen** (manuell auf dem Server auszuführen): 150 150 151 -sudo -u www-data git pull 144 +{{{sudo -u www-data git pull 145 +docker compose up -d --build 146 +}}} 152 152 153 -doc kercompose up-d~-~-build148 +**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). 154 154 150 +Erreichbar unter [[http:~~/~~/fleetmanager.spl-tele.com:8501>>url:http://fleetmanager.spl-tele.com:8501/]] — mit VPN und im SPL-TELE-Netzwerk. 155 155 156 - **Cronjobs:**sudo -u www-data crontab -e, Logsunter/mnt/data/fleet-manager/fuhrpark/logs.152 +== Hinweise == 157 157 158 -Erreichbar unter http:~/~/fleetmanager.spl-tele.com:8501 — mit VPN und im SPL-TELE-Netzwerk. 154 +* Änderungen im Demo-Modus werden nicht gespeichert. 155 +* Benutzerrechte bestimmen die Sichtbarkeit der Daten (Line-Manager-Zuordnung). 156 +* Regelmäßige Datenpflege (z. B. Fahrerzuordnung) ist wichtig für korrekte Auswertungen. 157 +* 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.
- 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