Auf dieser Seite
Zugang zur App
Seite: /monteur/login
- E-Mail + Passwort (vom Partner angelegt)
- Button: Anmelden
- Passwort-Wechsel jederzeit über Einstellungen möglich
Dashboard-Übersicht
Seite: /monteur/dashboard
Header-Leiste (oben, blau)
| Element | Beschreibung |
|---|---|
| Nodika Monteur + Name | Logo + eingeloggter Vorname/Nachname |
| ● Verbunden / ● Getrennt | WebSocket-Verbindungsstatus in Echtzeit |
| ⋮ | Öffnet Einstellungen-Drawer (rechts) |
Online/Offline-Toggle
Herzstück des Dashboards: ein großer runder Button (192×192px) in der Mitte.
| Status | Farbe | Symbol | Funktion |
|---|---|---|---|
| ONLINE | Grün | ● | Monteur empfängt Aufträge, GPS sendet alle 30s |
| OFFLINE | Grau | ○ | Keine Aufträge, kein GPS |
- Bei Tippen auf OFFLINE → ONLINE: GPS-Berechtigung wird ggf. angefordert
- Status wird per PATCH
/api/monteur/statusgesetzt - Letzter Status wird in
localStoragegespeichert und nach Reconnect automatisch wiederhergestellt
Auftragsannahme — Alarm-Overlay
Wenn ein Auftrag eingeht, erscheint sofort ein Vollbild-Overlay (roter Hintergrund):
Overlay-Inhalt
| Element | Beschreibung |
|---|---|
| Header | „Neuer Auftrag!" + „Einsatzanfrage" |
| Countdown-Ring | 45-Sekunden-Kreis (weiß auf rot), zählt rückwärts |
| Weiße Karte | Service, Adresse, Kundenname, Entfernung (km), Preis (€) |
| Ablehnen | Auftrag ablehnen → Overlay schließt sich |
| Annehmen | Auftrag annehmen → Status-Flow beginnt |
- Klingelton spielt in Schleife (wählbar, Standard: ringtone-1)
- Push-Benachrichtigung auch im Hintergrund (Web Push / FCM)
- Nach Ablauf der 45s: Overlay zeigt „Abgelaufen", schließt sich automatisch
- Recovery: Beim Öffnen der App prüft
/api/monteur/pending-dispatchob eine offene Anfrage vorliegt
Status-Flow nach Annahme
Nach Annahme wechselt das Overlay von Rot auf Grün (Status-Overlay):
Angenommen
Losfahren
Angekommen
Abgeschlossen
Status-Buttons im grünen Overlay
| Aktueller Status | Button | Nächster Status |
|---|---|---|
| EN_ROUTE | Losfahren | IN_PROGRESS |
| IN_PROGRESS | Angekommen | ARRIVED |
| ARRIVED | Abgeschlossen | COMPLETED |
| COMPLETED | — | Overlay schließt sich nach 1,5s |
Weitere Buttons im Status-Overlay:
- Zum Auftrag — öffnet Auftragsdetail-Seite
- Auftrag stornieren — öffnet Storno-Dialog
Warteschlange (2 Aufträge gleichzeitig)
Ein Monteur kann bis zu 2 Aufträge gleichzeitig in der Queue haben.
- Bei Annahme eines zweiten Auftrags (erster noch aktiv): Overlay wechselt auf Amber/Orange — „In der Warteschlange"
- Gelber Banner oben im Dashboard zeigt aktive Aufträge: Aktive Aufträge (2/2)
- Pro Auftrag in der Liste: Status-Label + Adresse/Service + Button Öffnen →
- Erster Auftrag = primär (fett hervorgehoben), zweiter = Warteschlange
Chat mit Kunden
Im grünen Status-Overlay (nach Annahme) gibt es eine eingebettete Chat-Box:
- Höhe: 192px, scrollbar
- Eigene Nachrichten: rechts, dunkelgrün. Kunden-Nachrichten: links, hellgrau
- Input + ➤-Button; Senden auch per Enter
- Audio-Bing + Browser-Benachrichtigung bei neuer Kunden-Nachricht
- Chat-Verlauf wird beim Öffnen des Status-Overlays automatisch nachgeladen (
/api/orders/{id}/chat)
Stornierung durch Monteur
Button: Auftrag stornieren im Status-Overlay öffnet den Storno-Dialog:
- Dropdown: vordefinierte Stornogründe (
/api/cancellation-reasons?cancelledBy=monteur) - Option „Anderer Grund" → Freitext-Textarea
- Buttons: Abbrechen Stornieren (deaktiviert bis Grund gewählt)
- Nach Storno: Re-Dispatching — Auftrag geht zurück in den Pool, Overlay schließt sich
Einstellungen — Drawer (rechts)
Öffnet sich per ⋮-Button oben rechts, schiebt von rechts rein (Breite: 320px):
| Menüpunkt | Icon | Funktion |
|---|---|---|
| Aufträge | 📋 | Navigiert zu /monteur/auftraege — Auftragshistorie |
| Interne Aufträge | 🏢 | Navigiert zu /monteur/internal-orders — ggf. mit rotem Badge (Anzahl offener) |
| Passwort ändern | 🔒 | Öffnet Modal: Altes PW + Neues PW + Bestätigung |
| Service Verfügbarkeit | ⚙️ | Öffnet Modal: Liste aller zugewiesenen Services mit Toggle (aktiv/inaktiv) |
| Klingelton | 🔔 | Öffnet Sheet von unten: 5 Klingeltöne wählbar mit ▶ Vorschau |
| Sprache / Language | 🌐 | Öffnet Sheet: Sprachauswahl (DE, EN, weitere) |
| Debug & Logs | 🐛 | Navigiert zu /monteur/debug-logs |
| Abmelden | 🚪 | Setzt Status OFFLINE, trennt Socket, löscht Token, weiterleitung zu Login |
Klingelton-Auswahl
| ID | Label | Datei |
|---|---|---|
| ringtone-1 | Standard | /sounds/ringtone-1.wav |
| ringtone-2 | Digital | /sounds/ringtone-2.wav |
| ringtone-3 | Klassisch | /sounds/ringtone-3.wav |
| ringtone-4 | Alarm | /sounds/ringtone-4.wav |
| ringtone-5 | Sanft | /sounds/ringtone-5.wav |
Interne Aufträge
Seite: /monteur/internal-orders — Aufträge, die der Partner direkt dem Monteur zugewiesen hat (nicht über den normalen Dispatch-Flow).
- Status: PENDING EN_ROUTE COMPLETED REJECTED
- Monteur kann Annehmen oder Ablehnen
- Offene interne Aufträge zeigen ein rotes Badge im Drawer-Menüpunkt und einen Amber-Banner auf dem Dashboard
Auftrag selbst eingeben
Button: + Auftrag eingeben auf dem Dashboard — für Fälle, wo der Monteur selbst einen Kundenauftrag erfasst (z. B. Vor-Ort-Bestellung).
- Öffnet Modal von unten: zuerst Kategorie wählen, dann das normale Auftragsformular
- Nach Absenden: weiterleitung zu
/monteur/auftraege - Browser-Zurück-Button schließt das Modal
Screenshots