Changes for page Fuhrpark (Fleet Manager)
Last modified by Patrizia Gurschka on 2026/09/14 07:51
From version 10.1
edited by Patrizia Gurschka
on 2026/09/10 07:35
on 2026/09/10 07:35
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,154 +1,157 @@ 1 -|((( 2 -**🚗 Fuhrpark (Fleet Manager)** 1 += 🚗 Fuhrpark (Fleet Manager) = 3 3 4 -|((( 5 -**Zweck: **Webbasierte Verwaltung des Firmenfuhrparks — Fahrzeug-/Fahrerstammdaten, Kostenkalkulation, Kilometerauswertung, Ersatzbeschaffungs-Planung (Handlungsbedarf) und monatliche Abrechnung. 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 7 -**Zielgruppe: **Fuhrpark-/Controlling-Team, Line Manager, IT-Betrieb. 8 -))) 5 +== Übersicht == 9 9 10 - 11 -)))|((( 12 -|((( 13 -**Auf dieser Seite** 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. 14 14 15 -* [[🚗 Fuhrpark (Fleet Manager)>>path:#top]] 16 -** [[Überblick>>path:#ueberblick]] 17 -** [[Architektur>>path:#architektur]] 18 -** [[Technologiestack>>path:#technologiestack]] 19 -** [[Hauptfunktionen>>path:#hauptfunktionen]] 20 -*** [[1. Stammdaten-Import>>path:#hf1]] 21 -*** [[2. Fahrzeug-/Fahrer-Zuordnung>>path:#hf2]] 22 -*** [[3. Kilometer-Erfassung>>path:#hf3]] 23 -*** [[4. Kalkulation>>path:#hf4]] 24 -*** [[5. Handlungsbedarf>>path:#hf5]] 25 -*** [[6. Export & Abrechnung>>path:#hf6]] 26 -** [[Nachvollziehbarkeit & Fehlerbehandlung>>path:#orch]] 27 -** [[Cronjobs & Konfiguration>>path:#konfiguration]] 28 -** [[Sicherheit>>path:#sicherheit]] 29 -*** [[Authentifizierung>>path:#auth]] 30 -*** [[Datenschutz>>path:#datenschutz]] 31 -** [[Besondere Geschäftslogik>>path:#geschaeftslogik]] 32 -** [[Offene Punkte / zu verifizieren>>path:#offene-punkte]] 33 -** [[Server / Umgebung>>path:#server]] 34 -))) 9 +Das Projekt wurde von einer Streamlit-Monolith-Anwendung auf eine FastAPI-Backend- + React-Frontend-Architektur umgestellt. 35 35 36 - 37 -))) 11 +== Technologie-Stack == 38 38 13 +**Frontend:** React 18 · Vite · React Router · React Query (TanStack Query) · Axios · eigene UI-Komponentenbibliothek (kein UI-Framework wie MUI/shadcn) 39 39 15 +**Backend:** FastAPI (Python) · SQLite (WAL-Modus) · Pandas · python-jose (JWT) · passlib/bcrypt · pyodbc (SQL-Server-Anbindung) 40 40 41 - = Überblick =17 +**Externe Anbindungen:** 42 42 43 -Fuhrpark ist eine FastAPI-Backend- + React-Frontend-Anwendung (migriert von einer Streamlit-Monolith-Anwendung). Die Lösung besteht aus: 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 44 44 45 -* Frontend: React 18 · Vite · React Query · Axios-Client (nginx-Reverse-Proxy) 46 -* Backend: FastAPI · SQLite (WAL-Modus) · JWT-Authentifizierung 47 -* Datenquellen: RIMO/SQL-Server (Fahrer-Stammdaten) · Microsoft Fabric (SharePoint, KM-Formular-Mails) · GPS-AT/Tesla-APIs (Kilometerstände) 48 -* Orchestrierung: eigenständige Cron-Skripte auf dem Server, unabhängig vom Docker-Container 23 +== Projektstruktur == 49 49 50 -= Architektur = 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 +}}} 51 51 52 - [[image:1789018507266-361.png]]58 +== Hauptfunktionen == 53 53 54 - //Frontend, Backendund Datenbanklaufen im Docker-Compose-Stack; die Cron-Skriptelaufen direktauf dem Host undschreiben in dieselbe fleet.db.//60 +=== Fahrzeuge verwalten === 55 55 56 - =Technologiestack=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. 57 57 58 - **Frontend: **React 18 · Vite · React Router· ReactQuery (TanStackQuery) · Axios64 +=== Fahrer verwalten === 59 59 60 - **Backend:**FastAPI(Python)·SQLite·Pandas·python-jose (JWT)·passlib/bcrypt·pyodbc66 +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. 61 61 62 - **ExterneAPIs: **RIMO/SQL-Server (ai.sdmperson, rimo.sdmtool) · Microsoft Fabric (SharePoint, KM-Formular-Mails) · GPS-AT- undTesla-API68 +=== Kilometer-Daten === 63 63 64 - =Hauptfunktionen=70 +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. 65 65 66 - ~1.Stammdaten-Import72 +=== Kalkulation === 67 67 68 -Fahrzeug ewerdeninitialausRIMOimportiertunddanachinderAppgepflegt (Rückschreibennach RIMO ist geplant, aktuellnicht implementiert).Fahrerwerdentäglichum 4:00 UhrgegenRIMO(ai.sdmperson)abgeglichen— Neuanlagebei unbekannterPersonalnummer, sonst Aktualisierung von Stammdaten,KostenstelleundLineManager.ExterneFahrer könnenzusätzlichmanuellangelegtwerden;Stammdateninterner(RIMO-importierter)Fahrer sind schreibgeschützt.74 +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. 69 69 70 - 2.Fahrzeug-/Fahrer-Zuordnung76 +=== Handlungsbedarf === 71 71 72 - FahrerundLine ManagerkönneneinemFahrzeugdirektzugewiesenwerden(LineManagerwirdbeiFahrer-Auswahlautomatischergänzt,bleibt aberüberschreibbar).BefristeteZuordnungenkehrennachAblauf automatischzumvorherigen Fahrerzurück. JedeZuordnungs- sowieLine-Manager-/Kostenstellen-Änderung wirdvollständigundzeitlichabgegrenztprotokolliert(vehicle_assignment_history,driver_attribute_history)— sowohl beimanuellerÄnderungalsauchbeim täglichen RIMO-Sync.78 +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. 73 73 74 - 3.Kilometer-Erfassung80 +=== Dashboard === 75 75 76 - Kilometerständewerden automatisiertimportiert:GPS-AT täglich, Teslawöchentlich,jeweils zum Monatsende.Für Fahrzeuge ohne automatischeAnbindung wird 3 TagevorMonatsende täglicheineErinnerungsmailverschickt, bis ein Wert in der SharePoint-Liste eingetragenist.Das KM-Dashboard berücksichtigt bei der Auswertung ausschließlich denZeitraum, in dem die jeweilige Zuordnungtatsächlichbestand — auch bei unterjährigemFahrer-oderLine-Manager-Wechsel.82 +Zentrale Übersicht: Anzahl Fahrzeuge, Kostenübersicht und relevante Kennzahlen zum aktuellen Fuhrparkstatus. Komponente: DashboardPage. 77 77 78 - 4.Kalkulation84 +=== Benutzerverwaltung (Admin) === 79 79 80 - Pro Fahrzeug wirdeineKostenkalkulationaus Anschaffungskosten,laufendenKostenundVerbrauch/Energiepreisen erstellt (Kostenpro Monat/Jahr/Kilometer).Beim AnlegenwerdenDefault-Parameteraus„Kalkulationsparameter“nach Fahrzeugtyp übernommen; individuelleFelderwerdenergänzt und per„Aktualisieren“ neu berechnet.Änderungenan Kalkulationsparameternwirkensichauf alleFahrzeugedesjeweiligenTypsaus (Rollenadmin/demo/controlling).86 +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. 81 81 82 - 5.Handlungsbedarf88 +=== Kalkulationsparameter === 83 83 84 - Hochrechnungenwerdenbeijedem KM-Stand-Importneu berechnet.EinbestelltesFahrzeugwird überdasHäkchen „Bestellt“ markiert,erstdanach anlegbar.Nach Anlagesteht „Geliefert“ zur Verfügung;sobald gesetzt,entfällt das FahrzeugautomatischausderHandlungsbedarfsliste. Eingesetztes„DeactivationDate“deaktiviert undarchiviert ein Fahrzeug automatisch zum entsprechenden Datum.90 +Anpassungen hier wirken sich auf **alle** Fahrzeuge des jeweiligen Typs aus. Dem Controlling vorbehalten (Rollen admin, demo, controlling). Komponente: KalkParamsPage. 85 85 86 - 6.Export &Abrechnung92 +=== Export & Berichte === 87 87 88 -Monatliche Abrechnungen und Kostenstellen-Umbuchungen werden auf Klick erstellt und als CSV exportiert. Die vollständige Fahrzeugliste (inkl.kompletterKalkulationsaufschlüsselung)sowie gefahrene Kilometerkönnen als Excel-Datei heruntergeladen werden.94 +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. 89 89 90 -= Nachvollziehbarkeit& Fehlerbehandlung =96 +== Routing == 91 91 92 -Ä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). 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 93 93 94 - [[image:1789018507268-395.png]]109 +== Datenzugriff == 95 95 96 - //Ablauf beieinemLine-Manager-Wechsel,inkl.Absicherunggegen doppelte Sichtbarkeit.//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). 97 97 98 -= Cronjobs & Konfiguration =113 +== Backend == 99 99 100 -|**Bereich**|**Details** 101 -|Täglicher Fahrer-Sync|1_import_users_drivers.py, 4:00 Uhr — Fahrer-Stammdaten, Line Manager, Kostenstelle gegen RIMO (ai.sdmperson) abgleichen 102 -|KM-Import gpsat|import_km.py gpsat, täglich 4:00 Uhr, jeweils zum Monatsende 103 -|KM-Import Tesla|import_km.py tesla, montags 4:00 Uhr, jeweils zum Monatsende 104 -|SharePoint-Erinnerung|3 Tage vor Monatsende täglich, wenn kein KM-Stand in der SharePoint-Liste vorhanden ist 105 -|Docker Compose|Services backend (FastAPI) + frontend (nginx + React-Build) 106 -|Datenbank|SQLite, WAL-Modus, data/fleet.db (Projekt-Root, nicht in Git) 107 -|Reparatur-Skript|repair_stale_line_manager_assignments.py — einmalig, bei Altlasten vor dem Line-Manager-Fix 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. 108 108 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). 109 109 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. 110 110 111 -= Sicherheit =121 +== Architektur == 112 112 113 -Authentifizierung 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] 114 114 115 -* JWT (python-jose), OAuth2-Password-Flow, 8-Stunden-Tokens 116 -* Rollen: admin, demo, controlling, Benutzer (Line Manager/Fahrer) 117 -* Zugriff auf Fahrzeug-Zuweisungshistorie und rohe KM-Ablesungen ist admin/demo vorbehalten — serverseitig abgesichert (403), nicht nur im Frontend versteckt 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 -Datensch utz136 +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. 120 120 121 - Sichtbarkeitvon Fahrzeugen und Fahrern für normale Nutzer richtet sich ausschließlich nach der Line-Manager-Zuordnung. Passwörter sowieSQL-Server-/Fabric-Zugangsdatenliegen in nicht versionierten .env-Dateien (Docker-.env für Secrets der App, backend/.env für die Cron-Skripte).138 +== Server == 122 122 123 -= Besondere Geschäftslogik = 124 - 125 -* **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“. 126 -* **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. 127 -* **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). 128 -* **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. 129 - 130 -|((( 131 -**⚠️ Offene Punkte / zu verifizieren** 132 - 133 -* 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. 134 -* Genaues Schema von rimo.sdmtool (Spaltennamen name/last_update) ist aus einer Beschreibung übernommen, nicht 1:1 gegen die echte Tabelle verifiziert. 135 -* Kein bestätigtes automatisches Backup der Produktivdatenbank gefunden — falls vorhanden, läuft es außerhalb des Anwendungscodes; sollte auf dem Server verifiziert werden. 136 -* Exakte SharePoint-/Fabric-Spaltennamen (SP_LIST_ITEMS_URL u. Ä.) sollten einmalig gegen die reale Liste geprüft werden. 137 -))) 138 - 139 - 140 - 141 -= Server / Umgebung = 142 - 143 143 Die App läuft auf 192.168.208.2, per Docker Compose (Services backend + frontend), und liegt unter /mnt/data/fleet-manager/fuhrpark. 144 144 145 145 **Deployment bei Codeänderungen** (manuell auf dem Server auszuführen): 146 146 147 -sudo -u www-data git pull 144 +{{{sudo -u www-data git pull 145 +docker compose up -d --build 146 +}}} 148 148 149 -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). 150 150 150 +Erreichbar unter [[http:~~/~~/fleetmanager.spl-tele.com:8501>>url:http://fleetmanager.spl-tele.com:8501/]] — mit VPN und im SPL-TELE-Netzwerk. 151 151 152 - **Cronjobs:**sudo -u www-data crontab -e, Logsunter/mnt/data/fleet-manager/fuhrpark/logs.152 +== Hinweise == 153 153 154 -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