Skip to content

Pickup Request Workflow

Pickup request adalah inti operasional Waqfuel — proses permintaan, pengambilan, dan pencatatan minyak jelantah (UCO) dari keluarga. Setiap request melewati serangkaian status yang terdefinisi.

Volunteer buat request

submit

delete (draft only)

admin approve

admin reject

reopen

collector ambil

admin verifikasi

admin complete

cancel

cancel

draft

submitted

approved

rejected

picked_up

verified

completed

cancelled

StatusAktorDeskripsi
draftVolunteerRequest baru dibuat, bisa diedit/hapus
submittedVolunteerDisubmit untuk review admin
approvedAdminDisetujui, menunggu collector ambil
rejectedAdminDitolak (alasan dicatat)
picked_upCollectorUCO sudah diambil dari keluarga
verifiedAdminJumlah liter diverifikasi
completedAdminSelesai, data masuk ke impact tracking
cancelledAnyDibatalkan
POST /pickup-requests → buat draft baru
GET /pickup-requests → list (filtered by role)
GET /pickup-requests/:id → detail
PATCH /pickup-requests/:id → edit draft
DELETE /pickup-requests/:id → hapus draft
PATCH /pickup-requests/:id/full → full edit (admin)
POST /pickup-requests/:id/submit → draft → submitted
POST /pickup-requests/:id/approve → submitted → approved
POST /pickup-requests/:id/reject → submitted → rejected
POST /pickup-requests/:id/reopen → rejected → submitted
POST /pickup-requests/:id/mark-picked-up → approved → picked_up
POST /pickup-requests/:id/verify → picked_up → verified
POST /pickup-requests/:id/complete → verified → completed
POST /pickup-requests/:id/cancel → any → cancelled
  1. Volunteer mengunjungi keluarga, catat estimasi liter UCO tersedia
  2. Volunteer buat pickup request (draft) → submit ke admin
  3. Admin review dan approve (atau reject dengan alasan)
  4. Admin assign collector untuk pickup
  5. Collector datang ke lokasi keluarga, ambil UCO
  6. Collector mark sebagai picked_up dengan bukti foto
  7. Admin verifikasi jumlah liter aktual
  8. Admin complete — data otomatis masuk ke:
    • Collection record (liter + timestamp)
    • Impact tracking (CO2, air, dll via impact factors)
    • Family statistics
pickup_requests:
- id (UUID)
- family_id → keluarga mana
- volunteer_id → relawan yang request
- collector_id → collector yang ambil (assigned by admin)
- amount_liters → estimasi liter
- actual_liters → liter aktual (diisi saat verify)
- status → state machine status
- reject_reason → alasan reject (nullable)
- notes → catatan tambahan
- created_at, updated_at