beginner
auftraege
operator-app
techniker

Technician App Flow

Was Aussendiensttechniker im Tasks-Tab der operator-app sehen, inkl. Offline-Queue und Foto-Erfassung

Levy Fleets TeamMay 18, 20267 min read

Technician App Flow

Techniker oeffnen das Dashboard nicht. Die Levy operator-app ist ihre gesamte Oberflaeche, und der Tasks-Tab ist da, wo sie ihren Tag verbringen. Dieser Artikel beschreibt den Ablauf von "App oeffnen" bis "Resolve antippen".

Wo Tasks in der App lebt

Nach dem Phase-1-Release fuehrt die untere Navigation der operator-app einen neuen Tasks-Tab zwischen Customers und Operations. Ein Tipp oeffnet TasksScreen.tsx.

Oben auf dem Screen gibt es drei Filter-Chips:

  • Mine - Tasks, die dem eingeloggten Tech zugewiesen sind
  • Nearby - nicht beanspruchte Tasks im Umkreis von etwa 5 km
  • All - jeder offene Task im Subaccount (read-only, wenn nicht zugewiesen)

Sortieroptionen: Distanz, Prioritaet, Alter.

Jede Zeile zeigt Vehicle Number, Type-Icon, Priority Chip, Distanz zum Fahrzeug ("0,3 mi") und SLA-Badge.

Einen Task annehmen

Liegt der Task in der Nearby-Liste, tippt der Tech auf Accept in der Zeile. Das:

  1. Schreibt eine neue task_assignments-Zeile mit is_current = true und tauscht die vorherige Zeile atomar auf is_current = false
  2. Bewegt den Task von Created nach Assigned
  3. Pusht einen Bestaetigungs-Toast und aktualisiert den lokalen SQLite-Cache

Tippen zwei Techs gleichzeitig auf Accept, gewinnt der erste Write. Der zweite sieht eine 409 mit dem Namen des aktuellen Assignees.

Der Task Detail Screen

Ein Tipp auf eine Zeile oeffnet TaskDetailScreen.tsx, eine einzelne scrollbare Oberflaeche:

  • Header - Vehicle Number, Title, Priority Chip, SLA Badge
  • Vehicle Photo - aus dem letzten Condition Report gezogen
  • Location Card - letzter bekannter GPS-Punkt mit einem Navigate-Button, der zu Apple Maps (iOS) oder Google Maps (Android) deep-linkt
  • Description - was die Rule Engine oder der Ops Manager geschrieben hat
  • Parts Checklist - siehe Parts and Labor Tracking
  • Photos - gruppiert nach Phase (before, during, after)
  • Action Buttons - Start, Resolve, Block, Decline

Das Foto-Gate

Zwei Statusuebergaenge sind fotopflichtig:

  • assigned nach in_progress erfordert ein before-Foto
  • in_progress nach resolved erfordert ein after-Foto

Start und Resolve sind deaktiviert, bis das passende Foto angehaengt ist. Ein Tipp auf das Kamera-Icon oeffnet die In-App-Erfassung. Die App entfernt EXIF aus der Datei vor dem Upload, behaelt aber den Geotag in einer separaten Spalte (task_photos.geotag_lat/lng) fuer Audit.

Fotos werden zuerst lokal unter ${FileSystem.documentDirectory}task-photos/<task_id>/ gecached und dann mit FileSystem.uploadAsync hochgeladen. Upload-Fortschritt ist pro Task sichtbar. Bricht der Empfang mitten im Upload ab, bleibt die Datei im lokalen Cache und wird beim Reconnect erneut versucht.

Block - wenn Arbeit nicht weitergeht

Kommt der Tech an und das Fahrzeug fehlt, ist hinter einem Tor verschlossen oder braucht ein Teil, das er nicht dabei hat, tippt er Block und waehlt einen Grund. Der Task geht auf blocked und taucht beim ops_manager im Dashboard mit dem Block-Grund auf. Sobald der Blocker geloest ist, bewegt der Manager (oder der Tech) ihn zurueck auf in_progress.

Decline - eine Zuweisung ablehnen

Wird einem Tech ein Task gepusht, den er nicht erledigen kann (ausserhalb Schicht, ausserhalb Zone), tippt er Decline und waehlt einen Grund. Das Decline schreibt in task_assignments.declined_at und der Task kehrt fuer Reassignment in die Spalte Created zurueck. Der Ops Manager sieht den Decline-Grund in der Side-Drawer-Historie.

Resolve und das Verify-Gate

Ein Tipp auf Resolve mit angehaengtem "after"-Foto bewegt den Task auf resolved. Beachten Sie, dass der Tech Verify nicht selbst antippen kann - das ist ops_manager und lead_tech vorbehalten, damit Junioren ihre eigene Arbeit nicht abzeichnen.

Das Fahrzeug bleibt auf maintenance, bis verifiziert. Das ist Absicht: Ein Tech, der einen Task schnell schliesst, den er nicht wirklich beendet hat, sollte das Fahrzeug nicht zurueck in den Betrieb bringen koennen.

Offline Queue

Aussendienst-Techs arbeiten oft in Kellern, Parkhaeusern und mexikanischen Kuestenstaedten mit luckigem Empfang. Der Tasks-Tab ist so gebaut, dass er darin weiterarbeitet.

  • Reads - die letzte Task-Liste wird in AsyncStorage gecached; ein Tipp auf eine Zeile funktioniert offline mit dem Cache-Detail
  • Writes - Accept, Start, Resolve, Foto-Upload und Notizen werden lokal in die Queue gestellt und ueber /api/operator/tasks/sync abgespielt, sobald die App wieder online ist
  • Conflicts - Server gewinnt bei Status (wenn der Manager den Task geschlossen hat, waehrend der Tech offline war), Client gewinnt bei Fotos und Notizen (damit der Beweis des Tech nicht verloren geht)

Das Sync-Replay ist idempotent und begrenzt - jeder Queue-Eintrag wird bis zu 5 Mal wiederholt, bevor ein Fehler an den Nutzer durchgereicht wird.

Push Notifications

Drei Notification-Typen landen auf dem Smartphone eines Tech:

TriggerChannel
Task an mich zugewiesenExpo Push
Nearby unclaimed Task > 10 Min altExpo Push
SLA-Verstoss auf meinem TaskExpo Push + E-Mail

Notifications respektieren die Ruhezeiten des Geraets und die Notification-Praeferenzen des Tech unter Settings -> Notifications.

Trainieren Sie Ihre Junior-Techs auf Block

Der haeufigste Fehler von Junior-Techs ist, einen Task zu resolven, "um ihn von der Liste zu bekommen", obwohl sie ihn nicht wirklich abschliessen konnten. Trainieren Sie das Team, frueh auf Block zu tippen. Ein blockierter Task mit klarem Grund ist viel bessere Datenlage als ein falsch resolvter.