6.5 KiB
6.5 KiB
Flowchart - Fitur QR Scanner Verifikasi Tiket
Daftar Isi
1. Scan QR Code Tiket
Deskripsi
Flowchart untuk scan QR code tiket menggunakan kamera.
Flowchart
START
↓
{User sudah login?}
├─ NO → [Redirect ke halaman login] → END
└─ YES ↓
↓
{User adalah admin?}
├─ NO → [Error 403: Unauthorized] → END
└─ YES ↓
↓
[Admin mengakses halaman "Verifikasi Tiket"]
↓
[Tampilkan 2 metode verifikasi:]
- Scan QR Code (aktif)
- Input Manual
↓
[Initialize html5-qrcode library]
↓
[Request akses kamera]
↓
{Izin kamera diberikan?}
├─ NO → [Tampilkan error: "Tidak dapat mengakses kamera"]
│ ↓
│ [Sarankan gunakan Input Manual]
│ ↓
│ END
└─ YES ↓
↓
[Tampilkan preview kamera]
↓
[Tampilkan frame scanner dengan overlay]
↓
[Mulai scanning dengan fps: 10]
↓
[Loop: Deteksi QR code]
↓
┌─────────────────────────┐
│ [Scan frame kamera]
│ ↓
│ {QR code terdeteksi?}
│ ├─ NO → [Lanjut scan frame berikutnya]
│ │ ↓
│ │ [Ulangi loop]
│ │
│ └─ YES ↓
│ ↓
│ [Decode QR code]
│ ↓
│ [Ambil kode tiket dari QR]
│ ↓
│ [Stop scanner]
│ ↓
│ [Hide kamera]
│ ↓
│ [Tampilkan: "Memproses QR Code..."]
│ ↓
│ [Submit form dengan kode tiket]
│ ↓
│ [Lihat flowchart #3: Verifikasi Tiket]
└─────────────────────────┘
↓
END
2. Input Manual Kode Tiket
Deskripsi
Flowchart untuk input kode tiket secara manual tanpa scan QR.
Flowchart
START
↓
[Admin di halaman "Verifikasi Tiket"]
↓
[Admin klik metode "Input Manual"]
↓
[Stop scanner QR (jika aktif)]
↓
[Hide section QR scanner]
↓
[Tampilkan section input manual]
↓
[Tampilkan form input:]
- Input text untuk kode tiket
- Placeholder: "AT-XXXXX"
- Tombol "Cek Tiket"
↓
[Admin mengetik kode tiket]
↓
[Admin klik tombol "Cek Tiket"]
↓
<Validasi input>
↓
{Kode tiket terisi?}
├─ NO → [Error: "Kode tiket wajib diisi"]
│ ↓
│ [Focus ke input]
│ ↓
│ END
└─ YES ↓
↓
[Submit form dengan kode tiket]
↓
[Lihat flowchart #3: Verifikasi Tiket]
↓
END
3. Verifikasi Tiket
Deskripsi
Flowchart untuk memverifikasi kode tiket dan menampilkan hasilnya.
Flowchart
START
↓
[Terima kode tiket dari QR scan atau input manual]
↓
[Query database: cari ticket_order_items]
↓
[WHERE ticket_code = kode yang diinput]
↓
[Include relasi:]
- order.user
- ticket
↓
{Tiket ditemukan?}
├─ NO → [Tampilkan error: "Tiket tidak ditemukan"]
│ ↓
│ [Tampilkan tombol "Scan Lagi"]
│ ↓
│ END
└─ YES ↓
↓
[Ambil data tiket lengkap]
↓
[Cek status tiket]
↓
{Tiket sudah dipakai (is_used = true)?}
├─ YES → [Tampilkan card hasil dengan border merah]
│ ↓
│ [Tampilkan informasi:]
│ - Kode Tiket
│ - Nama Pemesan
│ - Jenis Tiket
│ - Tanggal Kunjungan
│ - Status: "Sudah Dipakai" (badge merah)
│ ↓
│ [Hide tombol "Tandai Sebagai Dipakai"]
│ ↓
│ [Tampilkan tombol "Scan Lagi"]
│ ↓
│ END
│
└─ NO (is_used = false) → [Tampilkan card hasil dengan border hijau]
↓
[Tampilkan informasi:]
- Kode Tiket
- Nama Pemesan
- Jenis Tiket
- Tanggal Kunjungan
- Status: "Valid" (badge hijau)
↓
[Tampilkan tombol "Tandai Sebagai Dipakai"]
↓
[Tampilkan tombol "Scan Lagi"]
↓
END
4. Tandai Tiket Sebagai Dipakai
Deskripsi
Flowchart untuk menandai tiket yang sudah digunakan.
Flowchart
START
↓
[Admin melihat hasil verifikasi tiket valid]
↓
[Admin klik tombol "Tandai Sebagai Dipakai"]
↓
[Submit form dengan:]
- ticket_code
- mark_used = 1
↓
[Query database: cari ticket_order_items]
↓
[WHERE ticket_code = kode tiket]
↓
{Tiket ditemukan?}
├─ NO → [Error: "Tiket tidak ditemukan"] → END
└─ YES ↓
↓
{Tiket sudah dipakai?}
├─ YES → [Error: "Tiket sudah ditandai dipakai sebelumnya"]
│ ↓
│ [Kembali ke halaman verifikasi]
│ ↓
│ END
└─ NO ↓
↓
[Update tabel ticket_order_items:]
- is_used = true
- used_at = waktu sekarang
↓
[Simpan perubahan ke database]
↓
[Tampilkan notifikasi sukses:]
"Tiket berhasil ditandai sebagai dipakai"
↓
[Refresh halaman verifikasi]
↓
[Tampilkan hasil dengan status "Sudah Dipakai"]
↓
[Hide tombol "Tandai Sebagai Dipakai"]
↓
[Tampilkan tombol "Scan Lagi"]
↓
END
Panduan Membuat di Draw.io
Simbol Flowchart
- Terminator (Oval) - START/END
- Process (Rectangle) - Proses/aksi
- Decision (Diamond) - Kondisi/percabangan
- Data (Parallelogram) - Input/Output
- Database (Cylinder) - Operasi database
- Manual Operation (Trapezoid) - Operasi manual admin
- Loop (Hexagon) - Perulangan
Warna yang Disarankan
- START/END: Hijau teal (#14B8A6)
- Process: Biru muda (#E3F2FD)
- Decision: Kuning (#FFF59D)
- Database Operation: Ungu muda (#E1BEE7)
- Camera/Scanner: Biru tua muda (#BBDEFB)
- Valid: Hijau muda (#C8E6C9)
- Used/Invalid: Merah muda (#FFCDD2)
- Loop: Oranye muda (#FFE0B2)
Tips
- Gunakan swimlane untuk memisahkan Admin, Camera, dan System
- Tandai proses scanning dengan warna khusus
- Gunakan loop symbol untuk proses scanning berulang
- Tambahkan notes untuk library yang digunakan (html5-qrcode)
Dibuat: 25 Februari 2026
Fitur: QR Scanner Verifikasi Tiket
Sistem: Banyu Biru Ticketing & Booking System