Flowcharts untuk Business Flow, User Flow, dan System Flow
Alur bisnis end-to-end dari niat customer reservasi sampai eksekusi di hari-H. Cancel oleh customer di-handle manual via WA sebagai risiko bisnis (out of MVP).
flowchart TD
Start([Customer niat reservasi]) --> Visit[Buka website bar]
Visit --> Fill[Isi form: orang, tanggal, jam, kontak]
Fill --> Valid{Valid?}
Valid -->|Tidak| Fill
Valid -->|Ya| Pending[Booking dibuat
status PENDING
booking number digenerate]
Pending --> NotifCust[Customer terima
WA + Email:
menunggu konfirmasi]
Pending --> NotifAdmin[Admin terima email
+ browser notif jika online]
NotifAdmin --> Review{Admin review}
Review -->|Approve| Conf[Status CONFIRMED]
Review -->|Reject| Rej[Status REJECTED]
Conf --> SendConf[WA + Email: dikonfirmasi]
Rej --> SendRej[WA + Email: maaf ditolak]
SendConf --> Wait[Tunggu service date]
Wait --> Day{Hari-H: customer datang?}
Day -->|Ya| Arr[Admin mark ARRIVED]
Day -->|Tidak| NS[Admin mark NO_SHOW]
AdminCancel[Admin cancel
booking yang sudah confirmed] -.-> Cncl[Status CANCELLED]
Cncl --> SendCncl[WA + Email: dibatalkan]
CustCancel[Customer mau cancel/reschedule] -.->|WA manual
biz ops handle| AdminCancel
Arr --> End([Selesai])
NS --> End
SendRej --> End
SendCncl --> End
classDef pending fill:#3a2f10,stroke:#ffb454,color:#ffb454
classDef confirmed fill:#0f3a1a,stroke:#52d178,color:#9af0b0
classDef rejected fill:#3a1010,stroke:#e85757,color:#f5a0a0
classDef cancelled fill:#2a2a2a,stroke:#8b91a3,color:#c4c8d4
classDef oos fill:#1a1f3a,stroke:#5d7bd9,color:#a3b3e8
class Pending pending
class Conf,Arr confirmed
class Rej,NS rejected
class Cncl cancelled
class CustCancel,AdminCancel oos
kuning pending • hijau confirmed/arrived • merah rejected/no-show • abu cancelled • biru handled manual (out of MVP)
Journey end-user yang mau reservasi — dari entry point (link Instagram, QR code, atau URL langsung) sampai datang ke bar. Wizard 4 langkah dengan validasi di setiap step. Cancel tidak self-service di MVP; diarahkan WA admin manual.
flowchart TD Open([Customer buka link booking]) --> Step1[Pilih jumlah tamu] Step1 --> Step2[Pilih tanggal service
hanya tanggal valid
cutoff 1 jam sebelum buka] Step2 --> CheckDate{Tanggal valid?} CheckDate -->|Tidak| ErrDate[Error tanggal lewat
atau bar tutup] ErrDate --> Step2 CheckDate -->|Ya| Step3[Pilih jam
dalam operating hours] Step3 --> Step4[Isi nama nomor HP dan email] Step4 --> CheckForm{Format valid?} CheckForm -->|Tidak| ErrForm[Error format kontak] ErrForm --> Step4 CheckForm -->|Ya| Review[Review dan submit] Review --> Submit{Submit OK?} Submit -->|Gagal| Retry[Banner coba lagi] Retry --> Review Submit -->|Sukses| Confirm[Halaman konfirmasi
booking number diberikan] Confirm --> NotifWA[Terima notifikasi WA
menunggu konfirmasi] Confirm --> NotifEmail[Terima notifikasi email
menunggu konfirmasi] NotifWA --> WaitAdmin{Update dari admin} NotifEmail --> WaitAdmin WaitAdmin -->|Approved| MsgOK[WA dan Email dikonfirmasi] WaitAdmin -->|Rejected| MsgNo[WA dan Email maaf ditolak] WaitAdmin -->|Cancelled| MsgCancel[WA dan Email dibatalkan] MsgOK --> Visit[Hari H datang ke bar
sebut booking number] Visit --> Verified[Admin verifikasi
mark ARRIVED] Verified --> Selesai([Selesai]) MsgNo --> Selesai MsgCancel --> Selesai CancelReq[Customer ingin cancel atau reschedule] -.->|Hubungi via WA
handled manual oleh ops| WaitAdmin classDef step fill:#14171f,stroke:#5d7bd9,color:#a3b3e8 classDef error fill:#3a1010,stroke:#e85757,color:#f5a0a0 classDef success fill:#0f3a1a,stroke:#52d178,color:#9af0b0 classDef oos fill:#1a1f3a,stroke:#5d7bd9,color:#a3b3e8 class Step1,Step2,Step3,Step4,Review,Confirm,NotifWA,NotifEmail,Visit step class ErrDate,ErrForm,Retry,MsgNo error class MsgOK,Verified success class CancelReq oos
biru step normal • merah validation/error state • hijau happy-path completion • biru putus handled manual oleh ops
Journey operator/owner bar di dashboard. Center of gravity adalah pending queue yang harus di-approve manual. Pre-shift admin atur operating hours; saat shift admin mantau queue + mark arrived/no-show.
flowchart TD
Akses([Admin buka dashboard]) --> Cek{Sudah login?}
Cek -->|Tidak| Login[Halaman login]
Login --> ViaGoogle[Masuk via Google]
Login --> ViaEmail[Masuk via email password]
ViaGoogle --> Authz{Role admin atau owner?}
ViaEmail --> Authz
Authz -->|Tidak| Forbid[Forbidden bukan admin]
Authz -->|Ya| Home[Dashboard utama
banner jumlah pending]
Cek -->|Ya| Home
Home --> Nav{Pilih navigasi}
Nav -->|Lihat Bookings| Bookings[Halaman bookings]
Nav -->|Atur Operating Hours| Setting[Halaman setting jam buka]
Nav -->|Keluar| Keluar[Logout]
Bookings --> Mode{Pilih tampilan}
Mode -->|List| ListView[Tampilan list
filter status dan tanggal
search nama HP email]
Mode -->|Calendar| CalView[Tampilan kalender per hari]
ListView --> Klik[Klik booking]
CalView --> Klik
Klik --> Detail[Drawer detail booking]
Detail --> Aksi{Pilih aksi}
Aksi -->|Approve| Conf[Status menjadi CONFIRMED]
Aksi -->|Reject| Rej[Status menjadi REJECTED]
Aksi -->|Cancel| Cncl[Status menjadi CANCELLED]
Aksi -->|Mark Arrived| Arrived[Status menjadi ARRIVED]
Aksi -->|Mark No Show| Noshow[Status menjadi NO SHOW]
Conf --> SendNotif[Trigger WA dan Email ke customer]
Rej --> SendNotif
Cncl --> SendNotif
Arrived --> AuditOnly[Audit log saja]
Noshow --> AuditOnly
SendNotif --> Kembali[Kembali ke list atau kalender]
AuditOnly --> Kembali
ListView --> Bulk[Bulk action
checkbox plus aksi massal]
Bulk --> BulkConf[Modal konfirmasi]
BulkConf --> Conf
ListView --> Export[Export Excel
filter aktif diterapkan]
Setting --> PilihHari[Pilih hari Senin sampai Minggu]
PilihHari --> SetJam[Set jam buka dan tutup
support lewat tengah malam]
SetJam --> Tutup[Toggle tutup hari ini]
Tutup --> Save[Simpan dan affect customer picker]
Keluar --> Akses
classDef step fill:#14171f,stroke:#ffb454,color:#ffb454
classDef error fill:#3a1010,stroke:#e85757,color:#f5a0a0
classDef confirm fill:#0f3a1a,stroke:#52d178,color:#9af0b0
classDef reject fill:#3a1010,stroke:#e85757,color:#f5a0a0
classDef cancel fill:#2a2a2a,stroke:#8b91a3,color:#c4c8d4
class Login,ViaGoogle,ViaEmail,Home,Bookings,ListView,CalView,Detail,Setting,PilihHari,SetJam,Tutup,Save,Export,Bulk step
class Forbid error
class Conf,Arrived confirm
class Rej,Noshow reject
class Cncl cancel
kuning navigasi/aksi normal • hijau happy-path (confirmed/arrived) • merah rejected/no-show • abu cancelled
Alur sistem dari sisi pekerjaan backend — apa saja yang sistem lakukan di balik layar untuk 1 booking. Tahapan ber-warna kuning adalah titik kompleksitas yang butuh engineering effort; itulah yang dibayar di RAB.
flowchart TD Mulai([Customer buka halaman booking]) --> LoadConfig[Load konfigurasi operating hours] LoadConfig --> FilterDate[Filter tanggal valid
cek cutoff dan lewat tengah malam] FilterDate --> ShowCal[Tampilkan kalender dan slot] ShowCal --> Submit[Customer isi form dan submit] Submit --> Validate[Validasi server side
format HP email duplikasi] Validate --> ValidOK{Data valid?} ValidOK -->|Tidak| ReturnErr[Kembalikan error inline] ReturnErr --> Submit ValidOK -->|Ya| GenNum[Generate booking number unik] GenNum --> SaveDB[Simpan booking ke database
plus audit log siapa kapan] SaveDB --> EnqueueA[Masukkan job ke antrian notifikasi
supaya response tetap cepat] EnqueueA --> ShowConfirm[Tampilkan halaman konfirmasi
dalam hitungan detik] EnqueueA -.->|async| Worker[Worker proses antrian] Worker --> SendWA[Kirim WhatsApp ke customer] Worker --> SendEmail[Kirim Email ke customer] Worker --> NotifAdmin[Kirim Email ke admin
plus trigger browser notif] SendWA --> LogStatus[Catat status pengiriman
retry otomatis kalau gagal] SendEmail --> LogStatus NotifAdmin --> LogStatus LogStatus --> Pending[Booking masuk antrian PENDING] Pending --> AuthAdmin[Admin login
verifikasi identitas dan role] AuthAdmin --> ReviewAdmin[Admin buka detail booking] ReviewAdmin --> Decision{Keputusan admin} Decision -->|Approve| UpdateA[Update status CONFIRMED
plus audit log] Decision -->|Reject| UpdateB[Update status REJECTED
plus audit log] Decision -->|Cancel kemudian| UpdateC[Update status CANCELLED
plus audit log] UpdateA --> EnqueueB[Antrian notifikasi hasil keputusan
kirim WA dan Email lagi] UpdateB --> EnqueueB UpdateC --> EnqueueB EnqueueB --> WaitDay[Sistem menunggu hari H] WaitDay --> Arrived{Customer datang?} Arrived -->|Ya| MarkArr[Admin verifikasi booking
mark ARRIVED plus audit] Arrived -->|Tidak| MarkNo[Admin mark NO SHOW plus audit] MarkArr --> Done([Booking selesai]) MarkNo --> Done classDef complex fill:#3a2f10,stroke:#ffb454,color:#ffb454,stroke-width:2px class FilterDate,Validate,SaveDB,EnqueueA,Worker,SendWA,LogStatus,AuthAdmin,EnqueueB complex
kuning = titik kompleksitas tinggi yang butuh engineering effort:
validasi business rule (cross-midnight, cut-off, duplikasi),
sistem antrian asinkron supaya UI tetap cepat,
integrasi pihak ketiga (WhatsApp Meta API),
mekanisme retry kalau gagal,
autentikasi dan role-based access,
audit trail compliance.
Semua ini transparan untuk customer tapi nyata sebagai pekerjaan backend.