Pickup Request Workflow
Overview
Section titled “Overview”Pickup request adalah inti operasional Waqfuel — proses permintaan, pengambilan, dan pencatatan minyak jelantah (UCO) dari keluarga. Setiap request melewati serangkaian status yang terdefinisi.
State Machine
Section titled “State Machine”Status Penjelasan
Section titled “Status Penjelasan”| Status | Aktor | Deskripsi |
|---|---|---|
draft | Volunteer | Request baru dibuat, bisa diedit/hapus |
submitted | Volunteer | Disubmit untuk review admin |
approved | Admin | Disetujui, menunggu collector ambil |
rejected | Admin | Ditolak (alasan dicatat) |
picked_up | Collector | UCO sudah diambil dari keluarga |
verified | Admin | Jumlah liter diverifikasi |
completed | Admin | Selesai, data masuk ke impact tracking |
cancelled | Any | Dibatalkan |
API Endpoints
Section titled “API Endpoints”POST /pickup-requests → buat draft baruGET /pickup-requests → list (filtered by role)GET /pickup-requests/:id → detailPATCH /pickup-requests/:id → edit draftDELETE /pickup-requests/:id → hapus draftPATCH /pickup-requests/:id/full → full edit (admin)POST /pickup-requests/:id/submit → draft → submittedPOST /pickup-requests/:id/approve → submitted → approvedPOST /pickup-requests/:id/reject → submitted → rejectedPOST /pickup-requests/:id/reopen → rejected → submittedPOST /pickup-requests/:id/mark-picked-up → approved → picked_upPOST /pickup-requests/:id/verify → picked_up → verifiedPOST /pickup-requests/:id/complete → verified → completedPOST /pickup-requests/:id/cancel → any → cancelledAlur Operasional Lapangan
Section titled “Alur Operasional Lapangan”- Volunteer mengunjungi keluarga, catat estimasi liter UCO tersedia
- Volunteer buat pickup request (draft) → submit ke admin
- Admin review dan approve (atau reject dengan alasan)
- Admin assign collector untuk pickup
- Collector datang ke lokasi keluarga, ambil UCO
- Collector mark sebagai
picked_updengan bukti foto - Admin verifikasi jumlah liter aktual
- Admin complete — data otomatis masuk ke:
- Collection record (liter + timestamp)
- Impact tracking (CO2, air, dll via impact factors)
- Family statistics
Data yang Dicatat
Section titled “Data yang Dicatat”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