4.7 KiB
4.7 KiB
SYSTEM CONTEXT - ROBOTKU V2
Dokumen ini berisi gambaran arsitektur sistem, skema basis data, dan aturan bisnis utama aplikasi Robotku V2.
1. Ringkasan Teknologi (Tech Stack)
- Framework Backend: Laravel 11 (PHP 8.2+)
- Database: MySQL / MariaDB
- Frontend / Templating: Laravel Blade, HTML5, Vanilla CSS, Bootstrap 4 / Stisla Admin Theme, jQuery, Selectric, List.js
- Media & File Handling: Intervention Image v3, Storage Public Disk, Laravel Excel (
Maatwebsite/Excel) - Authentication & Roles: Laravel Default Auth (
Users&GuruGuard / Role Admin vs Guru)
2. Arsitektur Modul & Hak Akses
Aplikasi Robotku V2 terbagi menjadi 3 modul utama:
-
Modul Admin (
/admin):- Pengelolaan Master Data: Programs, Sekolah, Ruangan, Guru, Peserta/Siswa, Sesi.
- Pengelolaan Kelas: Tambah/edit/hapus kelas, floating jadwal ekstrakurikuler vs reguler, penetapan koordinator & ruangan.
- Pengelolaan Logbook Kelas: Monitoring seluruh catatan logbook, foto kegiatan, pengajar pendamping, dan export/import Excel.
- Monitoring Ketersediaan Mengajar Guru: Melihat dan mengubah jadwal ketersediaan guru per hari & per sesi.
-
Modul Guru (
/guru):- Dashboard Guru: Daftar kelas aktif yang diampu.
- Detail Kelas & Siswa: Informasi anggota kelas & riwayat logbook.
- Pengisian Logbook: Form pengisian kegiatan, foto kegiatan, materi, kendala & solusi dengan aturan deadline harian (maksimal jam 19:00 WIB pada hari yang sama).
- Pengaturan Ketersediaan Mengajar: Mengisi slot ketersediaan mengajar berdasarkan Master Sesi dengan bantuan shortcut "Centang Semua".
-
Modul Guest / Orang Tua (
/angket/{kode_kelas}):- Formulir evaluasi/angket publik untuk orang tua siswa berdasarkan
kode_kelas.
- Formulir evaluasi/angket publik untuk orang tua siswa berdasarkan
3. Skema Database & Relasi Utamanya
A. Master Data Core
programs(id,nama_program,level_number,created_at,updated_at)sekolah(id,nama_sekolah,is_active, ...)ruangan(id,nama_ruangan,lokasi_tipe,sekolah_id,status, ...)sesi(id,nama_sesi,jam,created_at,updated_at)- Contoh data:
Sesi 1(08:00-10:00),Sesi 2(10:00-12:00), dst.
- Contoh data:
B. User & Guru
users(id,name,email,role,password, ...)guru(id,user_id,nama,no_hp,status,level_maksimal, ...)ketersediaan_mengajars(id,guru_id,hari_id,sesi_id,status, ...)
C. Kelas & Detail Siswa
kelas(id,kode_kelas,nama_kelas,jenis_kelas,program_id,guru_id,harga_kelas,status,semester,tahun_ajaran,kategori_kelas,frekuensi_per_minggu,is_ekstrakurikuler,sekolah_id,hari_fix,sesi_fix,ruangan_fix_id,keterangan, ...)- Catatan Schema: Kolom
cabangdantotal_pertemuan_programtelah dihapus. Fieldjenis_kelaskini digunakan untuk menyimpan Total Pertemuan (12 Sesi/24 Sesi).
- Catatan Schema: Kolom
pesertas(id,nama_anak,nama_orangtua,no_hp_orangtua,foto, ...)detail_kelas(id,kelas_id,peserta_id,status_siswa,harga_kelas,catatan, ...)- Relasi
Pesertas()(belongsTo(Pesertas::class, 'peserta_id')). Filtered menggunakanhas('Pesertas')untuk mencegah error null dereference.
- Relasi
D. Logbook Kelas
logbook(id,kelas_id,sesi_id,pertemuan,kode_kelas,tanggal,start,end,materi,kegiatan_minggu_ini,perkembangan_siswa,kendala_dan_solusi,kebutuhan_minggu_depan,hal_baik,catatan,status,jenis_libur,jenis_libur_lainnya, ...)- Relasi
Sesi()(belongsTo(Sesi::class, 'sesi_id')).
- Relasi
foto_logbook(id,logbook_id,foto,keterangan, ...)pengajar_logbook(id,logbook_id,guru_id, ...)
4. Aturan Bisnis Utama (Business Rules)
- Total Pertemuan Kelas:
- Pilihan Total Pertemuan dibatasi hanya 12 Sesi dan 24 Sesi.
- Fleksibilitas Logbook & Auto-Fill Sesi:
- Setiap catatan logbook terhubung ke Master
Sesi(sesi_id). - Memilih Sesi pada modal Logbook secara otomatis mengisikan jam
startdanend. - Logbook lama yang dibuat sebelum fitur
sesi_iddi-mapping otomatis berdasarkan kesesuaian jamstart&end.
- Setiap catatan logbook terhubung ke Master
- Deadline Pengisian Logbook Guru:
- Pengisian/pengubahan logbook oleh Guru dibatasi hingga pukul 19:00 WIB pada hari H kegiatan. Logbook tanggal lampau dikunci untuk mengedit.
- Ketersediaan Mengajar Guru:
- Menggunakan tabel matriks Hari (Senin–Sabtu) dan Master Sesi. Dilengkapi opsi master "Centang Semua".
- Null-Safety Guarding:
- Penanganan relasi
detail_kelaskepesertasdiproteksi secara ketat agar jika terdapat data yatim (deleted/orphaned relation), sistem tidak mengalami crash (error 500).
- Penanganan relasi