Skenario per Modul
UI — Antrian Job Mekanik (mobile-friendly)
bengkelpintar.app/mekanik/queue
Antrian Saya
Parts Request
Riwayat Job
Antrian Job — Rudi Hartono
3 job aktif
WO-2026-0142 — Toyota Avanza B 1234 ABC
Bay 2 — Aktif
CustomerBpk. Andi
ServiceGanti Oli + Servis Ringan
KomplainMesin agak kasar
Estimasi45 menit
▶ Mulai Pengerjaan
📦 Request Parts
WO-2026-0145 — Honda Brio
Antri
Tune up + ganti busi. Estimasi 60 menit.
Sequence — Mulai → Request Parts → Selesai
sequenceDiagram participant M as Mekanik (Rudi) participant APP as App participant DB as DB participant WS as WebSocket participant G as Gudang participant K as Kepala Mekanik M->>APP: Login pagi → buka /mekanik/queue APP->>DB: SELECT WorkOrder WHERE assignedTo=Rudi AND status IN (antrian,pengerjaan) DB-->>APP: 3 WO APP-->>M: Tampilkan antrian M->>APP: Tap "Mulai Pengerjaan" WO-0142 APP->>DB: UPDATE WorkOrder status=pengerjaan, startedAt=now APP->>WS: publish wo:job_started → branch:1 WS-->>K: Notifikasi job mulai M->>APP: Request parts (Oli 4L + Filter Oli) APP->>DB: INSERT PartsRequest status=pending APP->>WS: publish parts:requested → role:gudang:1 WS-->>G: Notifikasi minta parts G->>APP: Approve & siapkan parts APP->>DB: UPDATE PartsRequest status=approved, BranchStock -= qty APP->>WS: publish parts:approved → user:Rudi WS-->>M: Notifikasi parts siap M->>APP: Mark "Selesai pengerjaan" APP->>DB: UPDATE WorkOrder status=quality_check, finishedAt=now APP->>WS: publish wo:job_done → role:karu:1 WS-->>K: Notifikasi siap QC
Langkah Detail

1. Login & Antrian

  • Mekanik login pakai PIN/biometric di tablet bay
  • Default landing: /mekanik/queue
  • Antrian sort by priority (booking > walk-in)
  • Real-time update via WebSocket — booking baru otomatis muncul

2. Mulai Pengerjaan

  • Tombol "Mulai" → POST /api/workorders/:id/jobs/start
  • Backend: status WO ke pengerjaan, set startedAt
  • Bay otomatis di-mark occupied + WS event bay:occupied
  • Karu (kepala mekanik) dapet notif lewat WebSocket

3. Request Parts

  • Tap "Request Parts" → form pilih item dari katalog branch
  • POST /api/parts-requests → status pending
  • WS event ke role gudang cabang itu — gudang siap-siap
  • Auto-approve kalau nominal < threshold (default Rp 500rb)

4. Selesai → QC

  • Mark "Selesai" → status WO ke quality_check
  • Karu cek hasil. Kalau lolos → status selesai
  • Kalau ada masalah → status balik ke pengerjaan + catat rework (kena KPI)
  • Jika lolos QC → kasir terima notif untuk close payment
Tabel & Event yang Tersentuh

Tabel: WorkOrder, WorkOrderItem, MechanicAssignment, PartsRequest, BranchStock, Bay

WS Events: wo:job_started, parts:requested, parts:approved, wo:job_done, bay:occupied, bay:free

Audit log: setiap perubahan status WO + parts request