Einsatzplanung & Touren
Live-Karte & Disponent-Cockpit: Echtzeit-Übersicht
Live-Karte & Disponent-Cockpit: Echtzeit-Übersicht
<!-- screenshot: kb-live-karte-cockpit -->Das Disponent-Cockpit zeigt eine Vollbild-Karte mit allen Live-Positionen deiner Mitarbeiter. Das Cockpit ist für Disponenten gedacht, die den ganzen Tag die Touren überwachen.
Für: Büro & Verwaltung (Disponenten)
Wo finde ich das?
Zugang: Dashboard → Klienten-Karte → rechts oben Button „Cockpit“ öffnet die eigene Seite /dashboard/cockpit. Der „Karte“-Button in der Tourenplanung führt nicht zum Disponent-Cockpit, sondern zu einer einfachen Klienten-Karte.
Live-Positionen verstehen
Wie funktioniert Live-GPS?
- Mitarbeiter-App sendet: GPS-Koordinaten ca. alle 30 Sekunden
- Backend speichert: aktuellster Standort in Redis (5 Minuten gültig, keine dauerhafte Speicherung)
- Frontend aktualisiert: via Socket.IO in Echtzeit (< 1 Sekunde Latenz)
- Fallback: Wenn die App offline ist, zeigt die Karte die letzte bekannte Position
Farb-Codes im Cockpit
Marker sind einheitlich eingefärbt und werden nach Alter der letzten Position abgestuft: normal sichtbar, ab 5 Minuten blass, ab 10 Minuten ausgeblendet. Eine Statusfarbe nach Einsatz-Fortschritt gibt es aktuell nicht.
Sidebar (rechts)
Rechts siehst du eine Seitenleiste mit drei Bereichen: Timeline mit einer Spalte pro Mitarbeiter und den Einsätzen des Tages, Konflikte, und Details mit Kennzahlen.
Karten-Bedienelemente
Zoom & Verschieben
- Scroll: Zoom rein/raus
- Klick & Ziehen: Karte verschieben
- Doppelklick: Zeigt aktuell keine Details. Beim Hover erscheint ein Tooltip mit Name und Alter der letzten Position, Details liefert die Seitenleiste im Tab Details.
Filter & Anzeigeoptionen (in der Karten-Seite)
- Pflegegrad-Filter: Nur Klienten mit bestimmtem Pflegegrad zeigen
- Bezirk-Filter: Nur Klienten in ausgewählten Bezirken
- Versicherungs-Filter: Nach Kasse/Versicherer filtern
- Mitarbeiter-Hover: Klicke auf einen MA in der Sidebar → seine Touren werden hervorgehoben
Status-Updates verstehen
Wenn ein Mitarbeiter einen Einsatz startet/beendet, bekommt der Disponent:
- Socket-Event
einsatz:status(Echtzeit-Benachrichtigung) - Karte aktualisiert automatisch
- Timeline-Tab der Seitenleiste aktualisiert sich.
Datenfluss:
- Mitarbeiter-App: Einsatz starten →
POST /api/einsaetze/{id}/zeiterfassung/start - Backend: Speichert + sendet Socket
einsatz:statusan alle Disponenten des Tenants - Frontend: Karte & Sidebar re-rendern
Einsatz-Koordinaten auf der Karte
Jeder Marker auf der Karte zeigt:
- Name des Klienten
- Adresse (Straße, PLZ, Ort)
- Pflegegrad (Farbabzeichen)
Klick auf einen Marker → Details-Popover mit:
- Telefon
- Zugeordneter Mitarbeiter (wenn im Einsatzplan)
Technische Details
GPS-Daten-Quellen
- Mobile App: Periodisches Polling oder GPS-Service-Hintergrund
- Fallback:
GET /api/mitarbeiter/positions(Snapshot aller aktuellen Standorte) - Persistierung:
socket_events-Tabelle mit 7-Tage-TTL (automatische Bereinigung)
Performance-Optimierungen
- useMemo(): Verhindert unnötige Neu-Renderings bei Position-Updates (100+ Positionen/min bei 50 MAs möglich)
- Debounce: Status-Updates werden gebündelt (2s Sammlung) statt einzeln zu verarbeiten
- Lazy Loading: Karte lädt nur sichtbare Bezirke (viewport-tracking)
Häufige Fragen
F: Ein Mitarbeiter wird auf der Karte nicht mehr angezeigt (ausgeblendet). Was kann ich tun?
A: Prüfe, ob die App auf den Geräten läuft und GPS aktiviert ist. Kein mobiles Internet → kein GPS-Upload. Manuell checken: GET /api/mitarbeiter/positions: zeigt den letzten bekannten Timestamp.
F: Kann ich die Positionen als Bericht exportieren?
A: Aktuell nein (geplant für Phase C). Workaround: Screenshot vom Cockpit (Bild-Nachweis möglich) oder manueller Export via GET /api/mitarbeiter/positions + Verarbeitung in Excel.
F: Verstellt sich die Karte, wenn viele Positionen ankommen?
A: Nein, die Karte zentriert sich nicht auf neue Positionen. Nur neue Marker werden gezeichnet. Falls Performance-Probleme: Nutze den Pflegegrad/Bezirk-Filter, um die Sichtbarkeit zu reduzieren.
Frage nicht beantwortet? Schreiben Sie uns: Wir antworten so schnell wie möglich.