Skip to content

Instantly share code, notes, and snippets.

@ifindev
Last active March 9, 2026 23:05
Show Gist options
  • Select an option

  • Save ifindev/92fa7ee760b2926d439000979aee4284 to your computer and use it in GitHub Desktop.

Select an option

Save ifindev/92fa7ee760b2926d439000979aee4284 to your computer and use it in GitHub Desktop.
PRD Aplikasi Manajemen Lapangan Futsal

Product Requirement Document

Sistem Manajemen Lapangan Futsal (FutsalKu)

Versi: 1.0 — Draft

Tanggal: 9 Maret 2026

Status: In Review


1. Product Overview

1.1 Deskripsi Produk

FutsalKu adalah platform berbasis web untuk manajemen operasional lapangan futsal. Platform ini menghubungkan dua sisi: customer yang ingin memesan lapangan, dan admin (pengelola lapangan) yang ingin mengelola jadwal, booking, dan keuangan — semuanya dalam satu sistem terpusat.

Di sisi customer, FutsalKu menggantikan proses booking manual via telepon atau WhatsApp. Customer bisa melihat ketersediaan lapangan secara real-time, memesan, dan membayar secara online kapan saja.

Di sisi admin, FutsalKu menggantikan pencatatan manual dan spreadsheet. Admin mendapat visibilitas penuh atas jadwal lapangan, riwayat booking, dan performa keuangan melalui satu dashboard.

1.2 Masalah yang Dipecahkan

Sisi Masalah Dampak
Customer Booking hanya bisa via telepon/WA di jam kerja Customer tidak bisa pesan kapanpun mereka mau
Customer Tidak ada konfirmasi instan Customer tidak yakin apakah lapangan benar-benar terpesan
Customer Tidak ada riwayat booking Customer sulit melacak booking lama atau bukti pembayaran
Admin Pencatatan booking manual Rawan double booking dan jadwal bentrok
Admin Tidak ada laporan keuangan terstruktur Admin tidak tahu pendapatan harian, utilisasi lapangan, atau tren bisnis
Admin Proses refund tidak terstandar Sengketa pembatalan sulit diselesaikan tanpa kebijakan yang jelas

1.3 Batasan Produk (Fase 1)

Untuk menjaga fokus, fitur-fitur berikut tidak termasuk dalam fase pertama:

  • Aplikasi native Android dan iOS
  • Fitur turnamen atau kompetisi
  • Program loyalty / reward points untuk customer
  • Booking recurring otomatis (misal: setiap Senin jam 7 malam)
  • Marketplace sewa perlengkapan olahraga

2. User Roles & Permissions

Sistem memiliki tiga role yang beroperasi di dua level berbeda:

Role Level Deskripsi Singkat
Customer Publik Pengguna yang mencari dan memesan lapangan futsal
Admin Venue Pengelola/pemilik lapangan. Akses penuh ke manajemen venue mereka
Super Admin Platform Tim internal FutsalKu. Mengelola konfigurasi global dan semua admin

2.1 Customer

Customer adalah pengguna akhir yang menggunakan platform untuk menemukan dan memesan lapangan.

Bisa melakukan:

  • Melihat daftar venue dan lapangan tanpa perlu login
  • Mendaftar akun dan login
  • Melakukan booking dan pembayaran online
  • Melihat riwayat booking sendiri
  • Membatalkan booking sesuai kebijakan yang berlaku
  • Menerima notifikasi booking, pembayaran, dan refund
  • Memberikan ulasan setelah sesi selesai

Tidak bisa melakukan:

  • Melihat booking orang lain
  • Mengakses panel admin
  • Mengubah jadwal atau harga lapangan

2.2 Admin (Pengelola Venue)

Admin adalah pemilik atau pengelola usaha lapangan futsal. Mereka adalah pengguna utama sisi manajemen platform.

Bisa melakukan:

  • Mengelola data venue: informasi, foto, jam operasional, fasilitas
  • Menambah dan mengatur lapangan (field) beserta harganya
  • Melihat seluruh jadwal dan booking di venue mereka melalui kalender visual
  • Membuat booking manual (untuk pelanggan walk-in atau telepon)
  • Membatalkan booking dan memproses refund
  • Mengatur penutupan lapangan pada tanggal tertentu
  • Mengakses dashboard keuangan dan laporan utilisasi
  • Mengatur kebijakan pembatalan yang berlaku di venue mereka

Tidak bisa melakukan:

  • Mengakses data venue atau booking admin lain
  • Mengubah konfigurasi platform secara global
  • Mengubah besaran biaya admin platform

2.3 Super Admin

Super Admin adalah tim internal FutsalKu yang mengelola platform secara keseluruhan. Tidak ikut campur dalam operasional harian setiap venue.

Bisa melakukan:

  • Melihat daftar semua venue dan admin yang terdaftar
  • Mengaktifkan atau menonaktifkan akun admin
  • Mengatur besaran biaya admin (platform fee) secara global
  • Melihat statistik platform secara keseluruhan
  • Mengakses konfigurasi global sistem

Tidak bisa / tidak perlu melakukan:

  • Mengakses detail operasional internal masing-masing venue (booking, keuangan, pelanggan)

3. Customer — Fitur & Alur

3.1 Autentikasi

Registrasi

Customer mendaftar dengan mengisi nama lengkap, email, nomor telepon, dan password. Setelah submit, sistem mengirim OTP via SMS ke nomor telepon yang didaftarkan. OTP berlaku 5 menit; jika tidak diterima, customer bisa request ulang setelah 60 detik.

Akun baru aktif begitu OTP berhasil diverifikasi. Jika email atau nomor telepon sudah terdaftar sebelumnya, sistem menampilkan pesan error yang meminta customer untuk login atau mereset password.

Login & Keamanan

Customer bisa login menggunakan email atau nomor telepon, dikombinasikan dengan password. Tersedia opsi “Remember Me” yang menjaga sesi tetap aktif selama 30 hari.

Jika lupa password, customer bisa request link reset via email. Link tersebut berlaku selama 1 jam. Setelah password berhasil diganti, semua sesi aktif lain secara otomatis di-logout.

Setelah 5 kali percobaan login yang gagal berturut-turut, akun dikunci sementara selama 15 menit untuk mencegah brute force.

Profil Akun

Customer bisa mengedit nama, email, nomor telepon, dan foto profil. Perubahan pada email atau nomor telepon memerlukan verifikasi OTP ke kontak baru — untuk memastikan kontak baru tersebut memang milik customer yang bersangkutan.


3.2 Menemukan Lapangan

Homepage

Halaman utama menyambut customer dengan search bar yang memungkinkan pencarian berdasarkan lokasi, tanggal, dan rentang waktu. Di bawahnya ditampilkan daftar venue dan lapangan yang populer atau direkomendasikan, dalam format card yang menampilkan foto utama, nama, lokasi, harga mulai dari, dan rating.

Customer tidak perlu login untuk melihat halaman ini dan menelusuri daftar lapangan.

Pencarian & Filter

Setelah melakukan pencarian, customer mendapat daftar hasil yang hanya menampilkan lapangan yang tersedia pada tanggal dan waktu yang dipilih. Lapangan yang sudah terisi otomatis tidak muncul.

Customer bisa mempersempit hasil dengan filter tambahan:

  • Jenis lapangan: indoor atau outdoor
  • Jenis permukaan: vinyl, parquet, rumput sintetis, beton
  • Rentang harga per jam
  • Fasilitas yang tersedia: parkir, toilet, kantin, mushola, WiFi, ruang ganti
  • Rating minimum

Hasil bisa diurutkan berdasarkan relevansi, harga termurah, atau rating tertinggi.

Halaman Detail Venue

Halaman ini menampilkan semua informasi yang customer butuhkan sebelum memutuskan untuk booking:

  • Galeri foto venue
  • Deskripsi, alamat lengkap, nomor telepon, email
  • Jam operasional per hari
  • Daftar fasilitas yang tersedia
  • Peta lokasi
  • Daftar lapangan yang ada di venue ini, masing-masing dengan foto, spesifikasi, dan harga
  • Ulasan dan rating dari customer sebelumnya

Halaman Detail Lapangan & Pilih Jadwal

Setelah customer memilih sebuah lapangan, mereka masuk ke halaman pilih jadwal. Di sini tersedia kalender untuk memilih tanggal, dan setelah tanggal dipilih, muncul time grid yang menampilkan ketersediaan slot per jam.

Setiap slot memiliki tampilan visual yang berbeda:

  • Tersedia — bisa dipilih
  • Terisi — sudah ada booking, tidak bisa dipilih
  • Tidak tersedia — di luar jam operasional atau ditutup admin

Customer bisa memilih beberapa slot berurutan untuk memesan lebih dari 1 jam. Saat slot dipilih, sistem langsung menghitung dan menampilkan rincian harga:

Harga per jam  × Durasi  =  Subtotal
Rp 80.000       × 2 jam      Rp 160.000

Biaya admin                  Rp 5.000
                             ─────────
Total                        Rp 165.000

Ketersediaan slot diperbarui secara real-time — jika ada orang lain yang sedang memesan slot yang sama, status slot berubah tanpa perlu customer me-refresh halaman.


3.3 Booking & Pembayaran

Alur Booking

Ketika customer menekan tombol “Booking Sekarang”, sistem mengecek apakah mereka sudah login. Jika belum, customer diarahkan ke halaman login dan setelah berhasil login, secara otomatis kembali ke halaman yang sama.

Setelah login, customer masuk ke halaman konfirmasi yang menampilkan ringkasan lengkap: detail lapangan, tanggal dan waktu, durasi, dan rincian harga. Terdapat juga kolom opsional untuk menambahkan catatan ke admin (misalnya: “mohon siapkan bola” atau “kami datang 5 menit lebih awal”), maksimal 200 karakter.

Setelah customer menekan “Konfirmasi & Lanjut Bayar”, slot langsung dikunci sementara selama 10 menit. Selama periode ini, slot tersebut tidak bisa dipesan oleh orang lain. Jika pembayaran tidak diselesaikan dalam 10 menit, kunci dilepas dan booking otomatis dibatalkan — slot tersedia kembali untuk siapapun.

Pembayaran

Customer bisa membayar melalui berbagai metode:

  • Virtual Account: BCA, Mandiri, BNI, BRI
  • E-Wallet: GoPay, OVO, DANA, ShopeePay
  • QRIS
  • Kartu Kredit/Debit: Visa, Mastercard

Layar pembayaran menampilkan instruksi yang jelas sesuai metode yang dipilih, beserta countdown timer 10 menit yang berjalan. Konfirmasi pembayaran diproses secara otomatis — customer tidak perlu upload bukti transfer manual.

Jika pembayaran berhasil: Status booking berubah menjadi confirmed, notifikasi dikirim via push notification dan email, dan customer diarahkan ke halaman sukses.

Jika pembayaran gagal atau timer habis: Booking dibatalkan, tidak ada dana yang terpotong, dan customer bisa memulai proses booking ulang dari awal.

Konfirmasi Booking

Setiap booking yang berhasil mendapat booking code unik dengan format BK + tanggal + nomor urut (contoh: BK2026030900042). Halaman sukses menampilkan booking code ini beserta QR code yang bisa digunakan sebagai bukti saat tiba di lapangan.

Email konfirmasi dikirim berisi detail lengkap booking, booking code, QR code, dan informasi lokasi venue. Customer juga menerima SMS konfirmasi singkat.


3.4 Riwayat & Manajemen Booking

Halaman “Booking Saya”

Semua booking customer — baik yang aktif maupun yang sudah selesai — tersimpan dan bisa dilihat di halaman ini. Customer bisa memfilter berdasarkan status (menunggu pembayaran, terkonfirmasi, selesai, dibatalkan) dan periode waktu.

Setiap item menampilkan booking code, nama lapangan, tanggal dan waktu, status, dan total bayar. Klik untuk melihat detail lengkap.

Pembatalan oleh Customer

Customer bisa membatalkan booking selama statusnya masih confirmed dan waktu bermain belum berlalu. Sebelum konfirmasi pembatalan, sistem menampilkan kebijakan refund yang berlaku dan estimasi jumlah dana yang akan dikembalikan.

Kebijakan refund default (bisa berbeda per venue sesuai pengaturan admin):

Waktu Pembatalan Refund
Lebih dari 24 jam sebelum waktu main 100%
12 – 24 jam sebelum waktu main 50%
Kurang dari 12 jam sebelum waktu main 0%

Setelah customer mengkonfirmasi pembatalan, status booking berubah menjadi cancelled dan proses refund dimulai secara otomatis sesuai kebijakan. Customer menerima notifikasi konfirmasi pembatalan beserta estimasi waktu pengembalian dana (1–3 hari kerja). Status refund bisa dipantau langsung dari halaman detail booking.

Ulasan & Rating

Setelah sesi bermain selesai (status booking berubah menjadi completed), customer menerima notifikasi yang mengundang mereka untuk memberikan ulasan. Form ulasan terdiri dari rating bintang 1–5 dan komentar teks opsional (maks 500 karakter).

Setiap booking hanya bisa memberikan satu ulasan. Ulasan masih bisa diedit dalam 24 jam setelah dikirim. Ulasan yang sudah dikirim tampil di halaman detail lapangan untuk membantu calon customer lain.


3.5 Notifikasi

Customer menerima notifikasi melalui tiga saluran: in-app (bell icon di navbar), email, dan SMS. Customer bisa mengatur preferensi notifikasi mana yang ingin diaktifkan melalui pengaturan akun.

Jenis notifikasi yang dikirim:

Jenis In-App Email SMS
Booking terkonfirmasi
Pembayaran berhasil
Pembayaran gagal
Reminder H-1 sebelum main
Reminder 1 jam sebelum main
Konfirmasi pembatalan
Update status refund

4. Admin — Fitur & Alur

4.1 Login & Keamanan

Admin login menggunakan email dan password. Berbeda dengan customer, admin wajib mengaktifkan Two-Factor Authentication (2FA) — bisa melalui aplikasi authenticator (Google Authenticator, Authy) atau SMS.

Setelah 3 kali percobaan login yang gagal, akun admin dikunci dan hanya bisa di-unlock oleh Super Admin. Setiap aktivitas login admin dicatat: siapa, kapan, dari perangkat mana, dan dari IP apa.

Semua aksi yang dilakukan admin di dalam sistem tercatat dalam audit log yang tidak bisa dihapus — siapa yang melakukan, apa yang diubah, dan kapan.


4.2 Dashboard Utama

Dashboard adalah halaman pertama yang dilihat admin setelah login. Tujuannya: memberikan gambaran lengkap kondisi operasional dan keuangan venue dalam satu pandangan.

Summary Cards (Real-Time)

Bagian atas dashboard menampilkan kartu-kartu metrik yang diperbarui secara real-time:

  • Pendapatan Hari Ini — total revenue dari booking confirmed hari ini, dengan perbandingan persentase vs hari sebelumnya
  • Booking Hari Ini — jumlah booking confirmed untuk hari ini
  • Pending Pembayaran — jumlah booking yang masih menunggu pembayaran dari customer
  • Utilisasi Hari Ini — persentase slot waktu yang sudah terisi dibanding total slot tersedia hari ini
  • Refund Pending — jumlah refund yang menunggu tindak lanjut admin

Grafik & Visualisasi

  • Grafik Pendapatan — bisa di-toggle antara tampilan harian, mingguan, atau bulanan
  • Grafik Jumlah Booking — jumlah booking per hari dalam bulan berjalan
  • Utilisasi per Lapangan — perbandingan tingkat kepadatan antar lapangan
  • Peak Hours — heatmap yang menunjukkan jam-jam dan hari-hari paling ramai dalam seminggu
  • Distribusi Metode Pembayaran — perbandingan metode yang paling sering digunakan customer

Tabel Operasional

  • Booking Terbaru — 10 booking terakhir yang masuk, diperbarui real-time
  • Jadwal Hari Ini — daftar sesi yang akan berlangsung dalam beberapa jam ke depan
  • Refund yang Menunggu — daftar refund yang perlu segera ditindaklanjuti

Semua data di dashboard bisa difilter berdasarkan rentang tanggal dan per lapangan tertentu.


4.3 Manajemen Venue

Informasi Venue

Admin mengelola informasi publik venue mereka yang akan terlihat oleh customer. Informasi yang bisa dikelola:

  • Nama dan deskripsi venue
  • Alamat lengkap (dengan peta picker untuk menentukan koordinat tepat)
  • Nomor telepon dan email venue
  • Foto-foto venue (maks 10 foto, maks 5MB per foto)
  • Daftar fasilitas yang tersedia (parkir, toilet, mushola, kantin, WiFi, ruang ganti, dll.)
  • Jam operasional per hari — termasuk kemampuan untuk menandai hari tertentu sebagai “tutup”

Status Venue

Admin bisa mengubah status venue secara keseluruhan:

Status Efek
Aktif Venue muncul di pencarian customer, booking baru bisa dibuat
Tidak Aktif Venue tidak muncul di pencarian, booking baru tidak bisa dibuat. Booking yang sudah confirmed tetap valid
Maintenance Sama dengan Tidak Aktif, tapi dengan label berbeda yang lebih informatif untuk customer

Sebelum status diubah ke non-aktif, sistem menampilkan dialog konfirmasi yang mengingatkan admin tentang dampaknya.


4.4 Manajemen Lapangan (Field)

Data Lapangan

Satu venue bisa memiliki beberapa lapangan. Untuk setiap lapangan, admin mengisi:

  • Nama lapangan (misal: Lapangan A, Lapangan VIP, Lapangan Indoor 1)
  • Jenis: indoor atau outdoor
  • Jenis permukaan: vinyl, parquet, rumput sintetis, atau beton
  • Kapasitas (jumlah pemain yang bisa bermain)
  • Deskripsi singkat
  • Foto lapangan (maks 5 foto)

Status Lapangan

Setiap lapangan memiliki statusnya sendiri, terpisah dari status venue:

Status Arti Bisa Dipesan?
Available Lapangan siap beroperasi Ya
Maintenance Sedang diperbaiki atau direnovasi Tidak
Closed Ditutup secara permanen atau jangka panjang Tidak

Manajemen Harga

Harga lapangan bisa diatur dengan tingkat fleksibilitas yang cukup untuk mencerminkan dinamika permintaan nyata:

Berdasarkan tipe hari:

  • Hari kerja (Senin–Jumat)
  • Akhir pekan (Sabtu–Minggu)
  • Hari libur nasional

Berdasarkan slot waktu:

  • Admin bisa mendefinisikan rentang jam dengan harga berbeda. Contoh: pagi (06.00–12.00), siang (12.00–18.00), malam (18.00–24.00) bisa memiliki harga yang berbeda.

Admin bisa melihat preview harga yang sudah diatur dalam bentuk tabel, untuk memastikan tidak ada rentang jam yang kosong atau overlap.

Penutupan Khusus (Special Closures)

Fitur ini digunakan untuk menutup lapangan atau seluruh venue pada tanggal-tanggal tertentu di luar jam operasional reguler — misalnya libur Lebaran, renovasi mendadak, atau acara privat.

Admin bisa menentukan:

  • Penutupan untuk seluruh venue atau hanya lapangan tertentu
  • Apakah penutupan berlaku hari penuh atau hanya rentang jam tertentu
  • Tanggal penutupan (bisa single date atau range tanggal)

Jika ada booking yang sudah confirmed dan terdampak oleh penutupan yang baru dibuat, sistem akan memperingatkan admin dan admin wajib memproses pembatalan beserta refund untuk booking-booking tersebut sebelum penutupan disimpan.


4.5 Manajemen Jadwal

Kalender Visual

Admin bisa melihat seluruh jadwal lapangan dalam format kalender visual. Tersedia tiga mode tampilan: harian, mingguan, dan bulanan.

Pada tampilan harian, setiap lapangan tampil sebagai kolom, dengan slot-slot waktu sebagai baris. Setiap booking tampil sebagai blok berwarna di atas kalender, dengan kode warna:

  • 🟩 Hijau — Booking confirmed
  • 🟡 Kuning — Pending pembayaran
  • 🔴 Merah — Dibatalkan
  • Abu-abu — Maintenance / tidak tersedia
  • Kosong — Slot tersedia

Admin bisa mengklik sebuah booking untuk melihat detailnya, atau mengklik slot kosong untuk langsung membuat booking manual.

Booking Manual

Selain booking yang masuk dari customer, admin bisa membuat booking langsung dari sistem — untuk melayani customer yang datang langsung ke venue, memesan via telepon, atau dalam situasi khusus lainnya.

Proses booking manual:

  1. Pilih lapangan, tanggal, dan rentang waktu
  2. Cari customer berdasarkan nama, email, atau nomor telepon — jika sudah pernah booking sebelumnya, data langsung terisi otomatis. Jika belum, bisa input data baru.
  3. Tambahkan catatan internal jika diperlukan
  4. Tentukan metode pembayaran: digital (tetap melalui payment gateway), tunai, atau gratis (complimentary)

Booking manual yang dipilih sebagai “tunai” atau “complimentary” bisa langsung berstatus confirmed tanpa melalui proses payment gateway. Notifikasi konfirmasi tetap dikirim ke customer.


4.6 Manajemen Booking

Daftar Semua Booking

Admin memiliki akses ke seluruh riwayat booking di venue mereka dalam satu tabel. Tabel ini menampilkan: booking code, nama customer, lapangan yang dipesan, tanggal & waktu, total bayar, metode pembayaran, dan status saat ini.

Admin bisa:

  • Filter berdasarkan status, lapangan, tanggal, atau metode pembayaran
  • Cari berdasarkan booking code, nama, email, atau nomor telepon customer
  • Urutkan berdasarkan kolom manapun
  • Export ke format Excel atau CSV

Detail Booking

Halaman detail booking menampilkan informasi lengkap: data customer, detail lapangan dan waktu, rincian pembayaran (metode, kode transaksi dari payment gateway, waktu pembayaran), catatan dari customer, catatan internal admin, dan riwayat perubahan status booking.

Aksi yang tersedia tergantung pada status booking saat ini:

Status Booking Aksi yang Tersedia
Pending Payment Batalkan booking
Confirmed Batalkan booking + proses refund
Completed Lihat ulasan (jika ada)
Cancelled Lihat detail pembatalan dan refund

4.7 Pembatalan & Refund

Pembatalan oleh Admin

Admin bisa membatalkan booking yang berstatus confirmed. Sebelum konfirmasi, admin mengisi form pembatalan:

  • Alasan pembatalan — dropdown dengan pilihan umum (penutupan mendadak, masalah teknis lapangan, dll.) ditambah kolom teks bebas
  • Persentase refund — pilihan 100%, 50%, 0%, atau jumlah custom
  • Catatan untuk customer — pesan yang akan ikut terkirim dalam notifikasi pembatalan ke customer

Sistem menampilkan preview total jumlah yang akan di-refund sebelum admin menekan konfirmasi. Setelah dikonfirmasi:

  • Status booking berubah menjadi cancelled
  • Record refund dibuat di sistem
  • Notifikasi pembatalan beserta informasi refund dikirim ke customer

Untuk booking yang dibayar secara digital, proses refund ke payment gateway dilakukan secara otomatis. Untuk booking yang dibayar tunai atau yang memerlukan transfer manual, admin menandai refund sebagai “Refund Manual” dan mencatat nomor referensi transfer setelah selesai dilakukan.

Halaman Manajemen Refund

Terpisah dari daftar booking, admin memiliki halaman khusus untuk memantau status semua refund. Setiap refund memiliki status yang mengikuti alur:

Requested → Approved → Processing → Completed
                ↓
            Rejected

Admin bisa memfilter berdasarkan status, tanggal, atau lapangan. Setiap perubahan status refund secara otomatis mengirimkan notifikasi ke customer yang bersangkutan.

Refund yang masih berstatus Requested atau Processing juga muncul di widget “Refund Pending” di dashboard utama agar tidak terlewat.


4.8 Laporan

Laporan Keuangan

Laporan keuangan bisa diakses untuk periode harian, mingguan, bulanan, tahunan, atau rentang tanggal custom. Laporan menampilkan:

  • Gross Revenue — total pendapatan kotor sebelum biaya platform
  • Biaya Admin (Platform Fee) — potongan platform
  • Net Revenue — pendapatan bersih yang diterima venue
  • Total Refund — total dana yang dikembalikan ke customer
  • Jumlah Transaksi — breakdown antara berhasil, gagal, dan expired

Jika venue memiliki lebih dari satu lapangan, laporan bisa difilter per lapangan untuk melihat kontribusi masing-masing.

Laporan bisa di-export ke format Excel (.xlsx), CSV, atau PDF.

Laporan Utilisasi

Laporan utilisasi membantu admin memahami pola penggunaan lapangan mereka:

  • Persentase slot terisi vs kosong per periode
  • Peak hours — jam dan hari paling ramai
  • Peak days — hari dalam seminggu dengan utilisasi tertinggi
  • Perbandingan utilisasi antar lapangan

Informasi ini berguna untuk keputusan operasional seperti penyesuaian harga di jam tertentu, atau pertimbangan membuka lapangan tambahan.


4.9 Pengaturan Kebijakan Pembatalan

Admin bisa mengatur kebijakan refund yang berlaku di venue mereka. Kebijakan ini yang akan ditampilkan ke customer saat mereka melihat halaman detail lapangan dan saat proses pembatalan.

Admin menentukan:

  • Batas waktu untuk tiap kategori refund (dalam jam sebelum waktu main)
  • Persentase refund untuk tiap kategori

Contoh konfigurasi yang bisa diatur admin:

Waktu Pembatalan Persentase Refund
> 48 jam sebelum main 100%
24 – 48 jam sebelum main 75%
< 24 jam sebelum main 0%

Jika admin tidak mengubah pengaturan ini, sistem menggunakan kebijakan default platform yang ditetapkan oleh Super Admin.


5. Status Booking — Definisi Lengkap

Setiap booking melewati serangkaian status yang merepresentasikan posisinya dalam siklus hidup rental:

[Pending Payment] ──── (bayar berhasil) ──── [Confirmed]
        │                                          │
   (timeout/gagal)                       (waktu main selesai)
        │                                          │
   [Cancelled] ◄──── (dibatalkan) ───── [Completed]

Pending Payment Booking sudah dibuat dan slot sudah dikunci, tapi customer belum menyelesaikan pembayaran. Status ini berlaku maksimal 10 menit. Jika pembayaran tidak selesai dalam waktu tersebut, booking otomatis dibatalkan dan slot dilepas kembali.

Confirmed Pembayaran berhasil diverifikasi. Slot tersebut resmi milik customer. Notifikasi konfirmasi dikirim ke customer. Dari status ini, booking bisa dibatalkan (oleh customer atau admin) atau berlanjut hingga waktu bermain selesai.

Completed Waktu bermain telah berlalu dan tidak ada pembatalan. Status berubah otomatis oleh sistem. Customer akan mendapat undangan untuk memberikan ulasan.

Cancelled Booking dibatalkan, baik oleh customer maupun oleh admin. Jika ada refund, prosesnya berjalan terpisah di sistem refund.

Refunded Refund untuk booking yang dibatalkan telah selesai diproses dan dana sudah dikembalikan ke customer.


6. Kebijakan & Prinsip Penting

Slot Locking

Untuk mencegah double booking, ketika customer memulai proses checkout, slot yang dipilih langsung dikunci selama 10 menit. Slot yang sedang dikunci tidak bisa dipilih oleh customer lain. Jika pembayaran tidak selesai dalam 10 menit, kunci otomatis dilepas.

Data Tidak Pernah Hilang

Pembatalan booking tidak menghapus data booking dari sistem. Semua booking yang pernah ada — baik yang completed maupun yang cancelled — tetap tersimpan dan bisa dilihat oleh admin maupun customer di riwayat masing-masing. Ini penting untuk keperluan audit, sengketa, dan pelaporan keuangan.

Transparansi Kebijakan Refund

Kebijakan refund yang berlaku di sebuah venue selalu ditampilkan secara eksplisit di dua titik: di halaman detail lapangan (sebelum customer booking) dan di halaman konfirmasi pembatalan (saat customer ingin membatalkan). Customer tidak pernah mengalami kejutan refund.

Prinsip Audit Trail Admin

Semua aksi yang dilakukan admin — termasuk pembatalan booking, perubahan harga, penutupan lapangan, dan pemrosesan refund — tercatat secara permanen dalam audit log beserta identitas admin yang melakukan dan timestamp-nya. Log ini tidak bisa dihapus atau dimodifikasi.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment