BAB 21. USE CASE DESCRIPTION
Pendahuluan
Bab ini mendeskripsikan setiap use case utama secara rinci sehingga dapat langsung diterjemahkan menjadi endpoint API, service layer Laravel, dan flow UI Flutter.
UC-001 — Login Pengguna
| Atribut | Deskripsi |
|---|
| ID | UC-001 |
| Nama | Login Pengguna |
| Aktor | Siswa, Guru, Admin Sekolah, Super Admin |
| Tujuan | Mengautentikasi pengguna ke sistem |
| Trigger | Pengguna membuka aplikasi dan menekan tombol Login |
| Prasyarat | Akun sudah tersinkron dari Dapodik |
| Hasil | Session dan token autentikasi aktif |
Alur Utama
- Pengguna memasukkan username (NISN/NIP)
- Pengguna memasukkan password
- Sistem memvalidasi kredensial
- Sistem membuat access token (Laravel Sanctum)
- Sistem mengembalikan profil pengguna
- Pengguna masuk ke dashboard
Alur Alternatif
| Kondisi | Penanganan |
|---|
| Password salah | Tampilkan pesan error, kembali ke form |
| Akun tidak ditemukan | Tampilkan pesan "akun tidak terdaftar" |
| Akun dinonaktifkan | Tampilkan pesan "akun tidak aktif" |
| Token gagal dibuat | Log error, tampilkan pesan umum |
Post Condition
- Token Laravel Sanctum aktif dan tersimpan di Secure Storage
- Login history tercatat di database
- Device pengguna tercatat
UC-002 — Ganti Password Pertama
| Atribut | Deskripsi |
|---|
| ID | UC-002 |
| Aktor | Semua Pengguna |
| Tujuan | Mengganti password awal demi keamanan akun |
| Trigger | Login pertama berhasil |
| Prasyarat | Flag must_change_password = true |
Alur
- Sistem mendeteksi flag
must_change_password = true
- Sistem menampilkan form password baru
- Pengguna mengisi password baru
- Pengguna mengkonfirmasi password
- Sistem menyimpan hash password baru
- Sistem mengubah flag menjadi
false
Validasi
- Minimal 8 karakter
- Mengandung huruf dan angka
- Password dan konfirmasi harus sama persis
UC-003 — Membuat Request Bantuan
| Atribut | Deskripsi |
|---|
| ID | UC-003 |
| Aktor | Siswa |
| Tujuan | Membuat permintaan bantuan belajar |
Alur
- Siswa memilih mata pelajaran
- Memilih materi spesifik
- Menjelaskan masalah yang dihadapi
- Menentukan jumlah tutor yang dibutuhkan
- Menentukan lokasi pertemuan
- Menentukan waktu yang diinginkan
- Menentukan durasi diskusi
- Menekan tombol Kirim
Output
- Request tersimpan di database
- AI Matching Engine dijalankan secara otomatis
- Status request berubah menjadi
SEARCHING
UC-004 — AI Matching Tutor
| Atribut | Deskripsi |
|---|
| ID | UC-004 |
| Aktor | AI Matching Engine |
| Tujuan | Menentukan tutor terbaik secara otomatis |
Alur
- Mengambil data request yang masuk
- Mengambil seluruh kandidat tutor yang sesuai
- Menghitung skor kesesuaian multi-faktor
- Mengurutkan kandidat berdasarkan skor tertinggi
- Memilih tutor terbaik sebagai prioritas
- Mengirim push notification ke tutor terpilih
Faktor Skor AI
| Faktor | Bobot |
|---|
| Kesesuaian skill | Tinggi |
| Rating rata-rata | Tinggi |
| Riwayat keberhasilan | Sedang |
| Ketersediaan waktu | Tinggi |
| Jarak lokasi | Sedang |
| Beban sesi aktif | Tinggi |
Output
- Daftar tutor prioritas dengan matching score
- Notifikasi terkirim ke tutor terpilih
- Status request diperbarui
UC-005 — Booking Tutor
| Atribut | Deskripsi |
|---|
| ID | UC-005 |
| Aktor | Tutor (Siswa) |
| Tujuan | Menerima atau menolak permintaan bantuan |
Opsi Respon
| Opsi | Aksi Sistem |
|---|
| Accept | Booking aktif, chat room dibuat |
| Reject | AI mencari tutor alternatif |
| Reschedule | Siswa menerima penawaran jadwal baru |
Output
- Status booking diperbarui
- Chat room dibuat secara otomatis jika Accept
- Jadwal tersimpan di kalender
UC-006 — Check-In Pertemuan
| Atribut | Deskripsi |
|---|
| ID | UC-006 |
| Aktor | Seluruh Peserta |
| Tujuan | Memvalidasi kehadiran secara digital |
Validasi yang Dilakukan
- QR Code valid dan belum kadaluarsa
- GPS berada dalam radius ≤ 100 meter
- Waktu Check-In sesuai jadwal yang disepakati
Output
- Status sesi berubah menjadi
ON_GOING
- Timer durasi mulai dihitung
- Timestamp kehadiran tercatat
UC-007 — Check-Out Pertemuan
| Atribut | Deskripsi |
|---|
| ID | UC-007 |
| Aktor | Seluruh Peserta |
| Tujuan | Mengakhiri sesi belajar secara resmi |
Data yang Disimpan
| Data | Keterangan |
|---|
| Waktu selesai | Timestamp Check-Out |
| Total durasi | Selisih Check-In & Check-Out |
| Ringkasan | Catatan hasil diskusi |
| Foto dokumentasi | Upload foto opsional |
| Status penyelesaian | Solved / Partially Solved / Not Solved |
Output
- Sesi dinyatakan selesai
- Form rating dibuka untuk semua peserta
- XP dihitung dan siap dikreditkan
UC-008 — Memberi Rating
| Atribut | Deskripsi |
|---|
| ID | UC-008 |
| Aktor | Seluruh Peserta |
| Tujuan | Menilai kualitas tutor dan sesi |
| Field | Detail |
|---|
| Rating | Skala 1–5 bintang |
| Komentar | Teks opsional |
| Masalah terselesaikan? | Ya / Sebagian / Tidak |
Output
- Rating rata-rata tutor diperbarui
- Social Impact Score (SIS) diperbarui
- Leaderboard diperbarui harian