penjadwalan-ga/PRD.md

4.2 KiB

PRODUCT REQUIREMENT DOCUMENT (PRD) - ROBOTKU V2

Dokumen ini berisi spesifikasi kebutuhan produk, fitur-fitur utama, serta riwayat perubahan pada sistem manajemen bimbingan belajar robotika Robotku V2.


1. Visi & Tujuan Produk

Robotku V2 bertujuan untuk menyediakan platform manajemen kelas, penjadwalan guru, serta dokumentasi kegiatan pembelajaran (logbook) yang terstruktur, efisien, dan ramah pengguna baik untuk pihak Administrasi (Admin) maupun Tenaga Pengajar (Guru).


2. Pengguna Sistem (User Personas)

  1. Administrator (Admin):

    • Mengelola master data (Program, Sekolah, Ruangan, Guru, Siswa, Sesi).
    • Membuka dan mengkonfigurasi kelas baru (Tipe Ekstrakurikuler / Reguler, Harga, Jadwal Fix/Floating).
    • Memantau kelengkapan logbook pembelajaran dan foto kegiatan dari guru.
    • Mengatur jadwal ketersediaan guru.
  2. Guru / Pengajar:

    • Mengisi logbook pembelajaran harian (Materi, Kegiatan, Perkembangan Siswa, Kendala/Solusi, dan Upload Foto).
    • Melihat daftar siswa pada kelas yang diampu.
    • Mengatur ketersediaan jam/sesi mengajar harian.
  3. Orang Tua / Wali Siswa:

    • Mengisi angket evaluasi pembelajaran secara online via link kode_kelas.

3. Kebutuhan Fungsional (Functional Requirements)

A. Fitur Manajemen Kelas & Penjadwalan

  • Master Sesi (sesi):
    • Menyediakan master data Sesi (Nama Sesi & Rentang Jam).
    • Terintegrasi dengan ketersediaan mengajar guru dan fitur logbook kelas.
  • Konfigurasi Kelas:
    • Pilihan Total Pertemuan: Dibatasi hanya 12 Sesi dan 24 Sesi.
    • Tipe Kelas: Reguler atau Ekstrakurikuler (terikat ke Sekolah & Ruangan tertentu).
    • Form layout yang simetris 3 kolom untuk memudahkan input data kelas.

B. Fitur Logbook Kelas

  • Pencatatan Logbook:
    • Setiap logbook mencatat Pertemuan, Tanggal, Sesi Pertemuan (sesi_id), Jam Start/End, Materi, Catatan Kegiatan, Perkembangan Siswa, Kendala & Solusi, Kebutuhan Minggu Depan, Hal Baik, serta Foto Kegiatan.
    • Fitur Tandai Libur (Libur Nasional, Ramadhan, atau Libur Lainnya).
    • Duplikasi Logbook untuk mempercepat pembuatan catatan logbook pertemuan berikutnya.
    • Export & Import Logbook via Excel.
  • Auto-Fill Sesi:
    • Memilih Sesi pada modal Logbook secara otomatis mengisi jam Start & End logbook.
  • Deadline Pengisian Guru:
    • Pengisian logbook oleh Guru dibatasi hingga pukul 19:00 WIB pada hari yang sama.

C. Fitur Ketersediaan Mengajar Guru

  • Pemetaan ketersediaan guru berdasarkan Hari dan Master Sesi.
  • Shortcut Centang Semua global untuk memilih seluruh slot sesi dengan satu klik.

D. Keamanan Data & Robustness

  • Null-Safety Guarding: Mencegah error crash 500 (Attempt to read property on null) ketika membaca data relasi pivot yang yatim/invalid.

4. Kebutuhan Non-Fungsional (Non-Functional Requirements)

  1. Kemudahan Penggunaan (Usability):
    • Interface modern dengan visual yang rapi, responsive, dan indikator status yang jelas.
  2. Kinerja & Responsivitas (Performance):
    • Pencarian cepat dan paginasi interaktif berbasis List.js / DataTables.
    • Kompresi foto otomatis (max 800px) menggunakan Intervention Image untuk efisiensi penyimpanan storage server.
  3. Keandalan (Reliability):
    • Proteksi transaksi database dengan perlakuan cascade foreign key yang aman.

5. Riwayat Perubahan Terbaru (Changelog Update v2.x)

  • Master Data Sesi: Penambahan tabel sesi (nama sesi dan jam) sebagai acuan tunggal untuk ketersediaan mengajar dan logbook.
  • Pembersihan Kolom cabang: Menghapus kolom cabang dari tabel kelas, form input, serta filter query controller.
  • Pembersihan Field total_pertemuan_program: Menghapus field total_pertemuan_program dan memperbarui label Jenis Kelas menjadi Total Pertemuan (12 Sesi / 24 Sesi).
  • Penataan Form Edit Kelas: Merapikan form edit kelas di detail kelas menjadi layout grid 3-kolom yang simetris dan sejajar.
  • Logbook Sesi (sesi_id): Menambahkan relasi sesi_id pada tabel logbook beserta auto-mapping logbook eksisting berdasarkan kecocokan jam.
  • Penanganan Null-Safety: Menambahkan filter has('Pesertas') dan guard Blade @if($item->Pesertas) untuk mencegah crash 500 saat relasi siswa tidak terhubung.