Operator-App-Routen
Wenn AI Ops auf der Enterprise-Stufe aktiv ist, sehen Techniker einen neuen Route-Tab in der operator-app, zwischen Customers und Operations. In diesem Tab liegen die Swap- und Rebalance-Stopps des Tages.
Sichtbarkeit des Tabs
Der Route-Tab erscheint für jeden Benutzer mit der Service-Tech-Rolle in einem Subaccount mit ai_ops_tier='enterprise'. Gehört der Techniker mehreren Subaccounts an, zeigt der Tab die Route für den gerade gewählten Subaccount.
Die heutige Route
Beim Öffnen des Tabs wird GET /api/operator/swap-routes/today aufgerufen. Die Antwort ist die geplante oder laufende Route des Technikers für die aktuelle Schicht, mit ihren geordneten Stopps.
Der Bildschirm rendert:
| Element | Zweck |
|---|---|
| Route-Summary-Header | Gesamtstopps, Gesamtdistanz, geschätzte Minuten, Schichtende |
Accept-Route-Modal (beim ersten Öffnen einer planned-Route) | Kartenvorschau + "Accept today's route?"-Prompt |
| Stoppliste | Geordnete Karten, eine pro Stopp, mit Sequenznummer und Action-Chip |
| Mid-Stop-UI | Aktueller Stopp hervorgehoben mit ETA-Countdown |
Eine Route akzeptieren
Wenn eine Route neu erzeugt wird, ist ihr Status planned. Der Techniker muss sie akzeptieren, um zu beginnen. Beim Akzeptieren:
- Wechselt der Routenstatus auf
in_progress. - Greift die Auto-Maintenance-Regel: Jedes Pickup-Stopp-Fahrzeug wird auf
maintenancegesetzt, um Rider-Zugriffe zu verhindern. - Wird die Route gesperrt — eine spätere Neuplanung mischt die Stopps nicht mehr um.
Akzeptiert der Techniker nicht, bleibt die Route planned und die Auto-Maintenance-Regel greift nicht.
Stoppkarten
Jede Stoppkarte zeigt:
- Sequenznummer (1, 2, 3 …)
- Fahrzeug-Kurz-ID (z. B.
VH-042) - Adresse (geocodiert aus der letzten Fahrzeug-GPS-Position oder Hex-Mittelpunkt für Dropoffs)
- Action-Chip — Pickup / Dropoff / Swap, farbcodiert
- ETA — Ankunftsschätzung des Solvers
- Zeitfenster verbleibend — Sekunden bis
time_window_end
Zwei Buttons pro Karte:
- Start nav — öffnet einen Deeplink zu nativen Karten (Apple Maps auf iOS, Google Maps auf Android) mit den Stopp-Koordinaten.
- Complete stop — ruft
POST /api/operator/route/[id]/complete-stopmit Stopp-ID, Abschlusszeitstempel und optionaler Notiz auf.
Zustandsautomat pro Stopp
Ein Stopp durchläuft in der UI diese Zustände:
- Upcoming — grau. Nicht das aktuelle Ziel.
- On the way — gelb. Das ist der nächste Stopp in der Reihenfolge.
- Arrived — blau. Die App erkennt, dass der Techniker innerhalb von ~30 Metern um den Stopp ist.
- Completed — grün.
completed_atist gesetzt.
Die "Arrived"-Erkennung nutzt Background-Geolocation, falls verfügbar. Ist Geolocation verweigert, kann der Techniker manuell auf "Mark Arrived" tippen.
Offline-Queue
Die operator-app ist für lückenhafte Verbindungen gebaut. Tippt ein Techniker auf Complete stop ohne Netz:
- Wird das Ereignis in AsyncStorage mit Stopp-ID, Abschlusszeitstempel und optionaler Notiz zwischengespeichert.
- Markiert die UI den Stopp sofort lokal als abgeschlossen.
- Erscheint oben im Route-Tab ein Queue-Indikator: "1 pending sync."
- Wird die Queue beim nächsten Fokus-Event und alle 60 Sekunden im Hintergrund gegen
POST /api/operator/route/[id]/complete-stopgeleert.
Damit kann ein Techniker eine ganze Route durch einen toten U-Bahn-Tunnel abschließen und alles synchronisiert sich, sobald er wieder Empfang hat.
Die Route abschließen
Wird der letzte Stopp abgeschlossen, wechselt der Routenstatus automatisch auf completed. Der Techniker sieht einen Summary-Screen mit:
- Abgeschlossene Stopps (z. B. 14 von 15)
- Insgesamt zurückgelegte Distanz (vs. Solver-Schätzung)
- Gesamtzeit im Dienst
- Geschätzter Mehrertrag (aufsummiert aus den akzeptierten Empfehlungen)
Sind Stopps ausgelassen, werden sie als Empfehlungen für die nächste Route oder den nächsten Techniker wieder geöffnet.
Eine Route abbrechen
Manchmal lassen sich Routen nicht zu Ende bringen — Transporter-Defekt, Techniker krank, Wetter zu schlecht. Tippen auf Abandon Route öffnet ein Modal mit Grund-Abfrage und ruft dann POST /api/operator/route/[id]/abandon auf.
Beim Abbruch:
- Routenstatus wechselt auf
abandoned. - Alle Fahrzeuge, die wegen der Auto-Maintenance-Regel in
maintenancewaren, werden aufavailablezurückgesetzt. - Unvollständige, an die Stopps der Route gebundene Empfehlungen werden wieder geöffnet (Status zurück auf
open), damit der nächste Solver-Lauf sie neu einplanen kann.
Berechtigungen
| Rolle | Route-Tab sichtbar | Stopps abschließen | Abbrechen |
|---|---|---|---|
| Service Tech | ja | ja (nur eigene Routen) | ja (nur eigene Routen) |
| Fleet Manager / Admin | ja (alle Techniker) | nein | ja (jede Route) |
| Viewer | nein | nein | nein |
Was nicht im Screen ist
- Routenreihenfolge bearbeiten. Der Techniker folgt der Sequenz des Solvers. Ist die Route falsch, brechen Sie sie ab und planen Sie über das Dashboard neu.
- Stopps spontan hinzufügen. Mitten in der Schicht hinzugefügte Stopps müssen vom Operator über das Dashboard bestätigt werden.
- Multi-Route-Support. Ein Techniker, eine Route pro Schicht. Soll ein Techniker zwei Routen abdecken, planen Sie zwei Schichten.
Verwandt
- Techniker-Routen — wie Routen gebaut werden und die Auto-Maintenance-Regel.
- Rebalance-Empfehlungen — die Quelle der Pickup/Dropoff-Paare.