← Driver App · Hub

Driver App — State Gallery

Owner design review aid — v1.2 · Android-first (360×800 / 412×915)

Review layer (non-canonical). Halaman ini menampilkan demonstration states dari 03_UX_UI/DRIVER_APP_STATES.md + UX_UI_SPEC.md (Driver Global States). Layar kanonik tidak berubah; semua state di bawah adalah bahan review transisi & pesan.
GLOBAL · Loading

Loading

Visible progress; no duplicate action.

Memuat daftar DO… menyinkronkan data terbaru
MasukTombol utama disabled — cegah aksi ganda.
Allowed actions: tunggu; tidak ada aksi ganda.
Spinner + skeletonPrimary action disabled
GLOBAL · Empty

Empty

Explain no DO/no data and refresh path.

📋
Belum ada Delivery Order
DO baru akan muncul di sini setelah ditugaskan oleh admin. Pastikan Anda sudah login dengan akun driver yang benar.
🔄 Muat Ulang
Allowed actions: refresh; hubungi admin.
DO: NOT_CACHEDRefresh path jelas
GLOBAL · Offline

Offline

Persistent but non-obstructive connectivity state; allowed offline actions remain usable.

📡 Mode Offline — pekerjaan tetap tersimpan di perangkat. Sinkronisasi otomatis saat sinyal kembali.

DO-2026-0847 · Aktif (lokal)

Checkpoint & bukti dapat dikerjakan offline. Perubahan dikirim ke server saat online.

📍 Lanjut ke CP3Lihat bukti tersimpan
Offline success ≠ server complete success — status akhir menunggu konfirmasi server.
Allowed actions: aksi operasional offline yang diizinkan tetap berjalan; tidak memblokir layar.
Banner persistenLocal-firstDO: LOCAL_CHANGES_PENDING
GLOBAL · Reconnecting / Syncing

Syncing (Reconnecting)

Show pending sync count/status.

Menyinkronkan 3 perubahan… (bukti CP2, status CP3, sampel tracking)
Progres menampilkan jumlah item yang menunggu; data lokal belum dihapus sebelum ACK server.
Allowed actions: tetap bekerja; aksi baru diantrikan.
DO: SYNCINGPending count = 3
GLOBAL · Sync Conflict

Sync Conflict

Stop ambiguous mutation; explain escalation/support state.

⚠ Konflik Sinkronisasi — checkpoint ini tidak dapat dikirim otomatis. Aksi dihentikan sementara untuk mencegah data ganda.

CP3 — Sampai Loading

Server mencatat checkpoint ini sudah tertutup oleh perangkat lain. Tim admin perlu meninjau sebelum Anda melanjutkan.

Hubungi AdminLihat detail konflik
Allowed actions: eskalasi ke support/admin; tidak ada mutasi ambigu.
DO: CONFLICTFail-safe stop
GLOBAL · Unauthorized

Unauthorized (Session Expired)

Stop protected operations; re-auth path; preserve safe local unsynced data.

🔒 Sesi berakhir — silakan masuk kembali untuk melanjutkan.

Data lokal Anda aman

2 bukti & 1 progres checkpoint tersimpan di perangkat dan akan dikirim setelah Anda login kembali.

Masuk Kembali
Allowed actions: re-autentikasi; data lokal tidak dihapus.
Permission: SESSION_REQUIREDSafe local data preserved
GLOBAL · Permission denied

Permission Denied (Location / Camera)

Explain required capability and minimum-scope recovery.

📍 Izin lokasi diperlukan untuk checkpoint — aktifkan izin "Saat digunakan" agar progres dapat divalidasi.
Buka PengaturanPelajari kenapa
📷 Izin kamera diperlukan untuk bukti wajib — tanpa kamera, checkpoint tidak dapat diselesaikan.
Izinkan Kamera
Pesan menjelaskan capability yang kurang + langkah pemulihan minimum; bukan pesan teknis.
Allowed actions: buka Settings; retry setelah izin aktif.
LOCATION_PERMISSION_REQUIREDCAMERA_UNAVAILABLELOCATION_LIMITED
GLOBAL · GPS off

GPS Off (Location Disabled)

Warning + Settings action; location-dependent progress blocked.

🛰️ GPS tidak aktif — progres yang membutuhkan lokasi diblokir sementara.

CP3 — Sampai Loading

Checkpoint ini memerlukan validasi lokasi. Aktifkan GPS untuk melanjutkan, atau gunakan mode darurat jika diizinkan.

Aktifkan GPSBantuan
Allowed actions: aktifkan lokasi; aksi non-lokasi tetap bisa (lihat bukti dsb.).
LOCATION_DISABLEDTracking: LOCATION_BLOCKED
GLOBAL · Location accuracy poor

Location Accuracy Poor

Distinct from outside geofence; retry location fix.

🎯 Akurasi lokasi rendah (±48m) — diperlukan akurasi ≤ 25m untuk validasi geofence. Coba pindah ke area terbuka lalu ulangi.
🔄 Perbaiki LokasiLihat detail
Berbeda dari "di luar geofence": ini masalah kualitas fix, bukan pelanggaran radius.
Allowed actions: retry location fix; menunggu fix lebih baik.
Geofence: ACCURACY_INSUFFICIENT
GLOBAL · Outside geofence

Outside Geofence

Show blocked checkpoint + distance/location context + retry; no self-override.

📍 Di luar geofence — jarak 320m dari titik "Gudang PT Maju Jaya". Checkpoint diblokir.

Yang bisa dilakukan

· Dekati lokasi lalu coba lagi (± 150m radius)
· Minta petunjuk arah ke titik checkpoint
· Hubungi supervisor untuk override (oleh supervisor, dengan alasan tercatat)

🔄 Coba LagiHubungi Supervisor
Tidak ada tombol override mandiri untuk driver — override hanya oleh supervisor dengan jejak audit.
Allowed actions: retry; request override (supervisor); support.
Geofence: OUTSIDEOVERRIDE_PENDINGOVERRIDDEN
GLOBAL · Camera failure

Camera Failure

Retry/open settings; do not accept missing mandatory photo.

📵
Kamera tidak dapat dibuka
Bukti "Foto Surat Jalan" bersifat wajib. Anda tetap berada di layar ini sampai foto diambil.
Coba LagiBuka Pengaturan
Allowed actions: retry; open settings. Bukti wajib tidak bisa dilewati.
Evidence: REQUIRED_NOT_CAPTURED
GLOBAL · Upload error

Evidence Pending Upload / Upload Error

Captured locally; retry automatically/manual where safe; do not force recapture if bytes are valid.

⏳ 2 bukti menunggu upload — akan dicoba otomatis saat koneksi stabil.

Foto Muatan — gagal upload (percobaan 2/5)

File asli tetap tersimpan di perangkat (checksum valid). Tidak perlu memotret ulang.

Coba Kirim Sekarang
❌ Upload final gagal permanen pada 1 bukti — hubungi admin dengan kode bukti EV-3f92.
Retryable vs terminal failure dibedakan jelas; terminal butuh eskalasi, bukan recapture.
Allowed actions: retry manual; eskalasi bila terminal.
PENDING_UPLOADUPLOADINGRETRYABLE_FAILURETERMINAL_FAILUREACKNOWLEDGED
GLOBAL · Checkpoint locked

Checkpoint Locked

Show prerequisite checkpoint/rule.

○ CP4 — Proses Loading Terkunci

Prasyarat: CP3 "Sampai Loading" harus selesai dan tervalidasi server terlebih dahulu.

→ Selesaikan CP3 untuk membuka checkpoint ini

Allowed actions: kembali ke CP3; lihat checklist prasyarat.
Checkpoint: locked
GLOBAL · Operationally finished / Completion pending

Operationally Finished → Completion Pending

CP7 local work done, but not yet server complete. Only after authoritative server confirmation is it "Complete".

✅ Pekerjaan lapangan selesai — semua 7 checkpoint terekam (lokal).
Menunggu validasi server… (reconcile uang jalan + verifikasi bukti)

Status

Checkpoint lokal7 / 7 ✓
Bukti tersinkron12 / 14
Konfirmasi serverMenunggu…
Belum "Selesai" — hanya server yang boleh menetapkan status complete.
Allowed actions: lihat ringkasan; tunggu; jangan ulangi pekerjaan.
OPERATIONALLY_FINISHEDCOMPLETION_PENDING
GLOBAL · Complete

Complete

Only after authoritative server confirmation.

✅ DO-2026-0847 Selesai — dikonfirmasi server.
Waktu selesai6 Sep 2026, 17:02
Bukti terverifikasi14 foto
Reconcile uang jalan✓ Selesai
Allowed actions: lihat ringkasan (read-only); riwayat.
COMPLETE
GLOBAL · Unknown/pending

Unknown / Pending

Do not guess final state; allow refresh/reconciliation.

❓ Status terakhir belum pasti — data terakhir diterima 14:58. Server belum mengonfirmasi hasil akhir.
🔄 Segarkan StatusLihat riwayat percobaan
UI tidak menebak sukses/gagal; menampilkan ketidakpastian secara jujur + jalur rekonsiliasi.
Allowed actions: refresh; reconciliation.
Status: UNKNOWNFail-honest
GLOBAL · Accessibility

Accessibility

Do not encode status by color alone; screen-reader labels; text scaling without hiding primary action; usable in field conditions.

✓ Benar: ✓ TERKIRIM ⏳ MENUNGGU ⚠ GAGAL
Ikon + teks + warna — status tidak bergantung pada warna saja.
✗ Hindari: dua titik hijau/merah tanpa label — tidak terbaca tanpa persepsi warna.

Screen reader

Tombol kameraaria-label="Ambil foto bukti"
Status GPSrole="status" “GPS aktif, akurasi 8 meter”

Kondisi lapangan

Target sentuh besar (padding ≥ 12px), kontras tinggi untuk paparan matahari, dapat dioperasikan satu tangan / sarung tangan.

📍 Lanjut ke CP3 (target besar)
Termasuk: text scaling (kontrol utama tetap terlihat), kontras, target sentuh, label Bahasa Indonesia.
Non-color statusaria/role labelsField conditions