# Dokumentasi: Rapor dengan Auto-Generate Deskripsi Capaian Kompetensi

## Overview
Sistem rapor telah dilengkapi dengan fitur auto-generate untuk:
1. **Deskripsi Capaian Kompetensi** - Generate otomatis berdasarkan mata pelajaran dan nilai
2. **Kokurikuler** - Generate otomatis jika tidak ada data dari database

## File yang Dibuat/Diubah

### 1. RaporHelper (`app/Helpers/RaporHelper.php`)
Helper class untuk generate deskripsi otomatis.

#### Fungsi Utama:

**`generateCapaianKompetensi($mataPelajaran, $nilai)`**
- Generate deskripsi capaian kompetensi berdasarkan mata pelajaran dan nilai
- Otomatis menentukan predikat (A/B/C/D) berdasarkan nilai
- Template deskripsi disesuaikan dengan kategori mata pelajaran

**Kategori Mata Pelajaran yang Didukung:**
- Pendidikan Agama dan Budi Pekerti
- Pendidikan Pancasila
- Bahasa Indonesia
- Pendidikan Jasmani, Olahraga dan Kesehatan (PJOK)
- Sejarah
- Seni dan Budaya
- Matematika
- Bahasa Inggris
- Informatika
- Projek (IPAS)
- Mata Pelajaran Kejuruan (default untuk mapel lainnya)

**Predikat Nilai:**
- A: Nilai >= 90
- B: Nilai >= 80
- C: Nilai >= 70
- D: Nilai < 70

**Contoh Deskripsi untuk Matematika:**
- **Predikat A (90-100)**: "Sangat baik dalam penalaran logis dan pemecahan masalah matematika, mampu menerapkan konsep matematika dalam berbagai situasi."
- **Predikat B (80-89)**: "Baik dalam memahami konsep matematika dan mampu menyelesaikan soal dengan tepat."
- **Predikat C (70-79)**: "Cukup memahami konsep matematika, perlu meningkatkan kemampuan pemecahan masalah."
- **Predikat D (<70)**: "Perlu bimbingan lebih dalam memahami konsep dan penerapan matematika."

**`generateKokurikulerOtomatis()`**
- Generate deskripsi kokurikuler default jika tidak ada data dari database
- Menghasilkan 3 kegiatan kokurikuler standar:
  1. Projek Penguatan Profil Pelajar Pancasila
  2. Literasi dan Numerasi
  3. Projek Kolaborasi Kelas

### 2. Rapor Print View (`resources/views/simaju/rapor/print.blade.php`)
View template rapor telah diupdate untuk menggunakan RaporHelper.

#### Perubahan:
```php
// Import RaporHelper di awal file
@php
    use App\Helpers\RaporHelper;
@endphp

// Untuk Capaian Kompetensi
{{ $nilai['capaian_kompetensi'] ?? RaporHelper::generateCapaianKompetensi($nilai['mata_pelajaran'], $nilai['nilai_akhir']) }}

// Untuk Kokurikuler
@if(isset($kokurikulers) && $kokurikulers->count() > 0)
    // Tampilkan dari database
@else
    @php
        $kokurikulerOtomatis = RaporHelper::generateKokurikulerOtomatis();
    @endphp
    // Tampilkan kokurikuler otomatis
@endif
```

## Format Rapor

### Layout Sesuai Screenshot:
1. **Title**: "LAPORAN HASIL BELAJAR (RAPOR)"
2. **Identitas Siswa** (2 Kolom)
3. **Tabel Nilai** dengan section:
   - Mata Pelajaran Umum
   - Mata Pelajaran Kejuruan
   - Mata Pelajaran Pilihan
   - Muatan Lokal
   - Nilai Rata-Rata
4. **Kokurikuler** (box dengan header)
5. **Ekstrakurikuler** (tabel)
6. **Ketidakhadiran** (kiri) & **Catatan Wali Kelas** (kanan)
7. **Tanggapan Orangtua/Wali Murid**
8. **Tanda Tangan** (Orang Tua, Kepala Sekolah, Wali Kelas)

## Cara Kerja

### Auto-Generate Capaian Kompetensi:
1. Sistem akan cek apakah ada `capaian_kompetensi` di data nilai
2. Jika ada, akan menggunakan yang dari database
3. Jika tidak ada, akan otomatis generate menggunakan `RaporHelper::generateCapaianKompetensi()`
4. Deskripsi disesuaikan dengan:
   - Kategori mata pelajaran
   - Nilai yang diperoleh siswa

### Auto-Generate Kokurikuler:
1. Sistem akan cek apakah ada data kokurikuler dari database
2. Jika ada, akan menampilkan data dari database
3. Jika tidak ada, akan otomatis generate 3 kegiatan kokurikuler standar

## Keuntungan

✅ **Otomatis**: Tidak perlu input manual untuk setiap deskripsi capaian kompetensi
✅ **Konsisten**: Deskripsi seragam berdasarkan kategori mata pelajaran dan nilai
✅ **Fleksibel**: Masih bisa di-override dengan input manual dari database
✅ **Sesuai Standar**: Deskripsi mengikuti format Kurikulum Merdeka
✅ **Hemat Waktu**: Mempercepat proses pembuatan rapor

## Kustomisasi

### Menambah/Mengubah Kategori Mata Pelajaran:
Edit file `app/Helpers/RaporHelper.php` pada array `$templates` di method `generateCapaianKompetensi()`.

### Mengubah Range Predikat:
Edit method `getNilaiPredikat()` di `app/Helpers/RaporHelper.php`.

### Mengubah Kokurikuler Default:
Edit method `generateKokurikulerOtomatis()` di `app/Helpers/RaporHelper.php`.

## Testing

Untuk menguji fitur ini:
1. Buat rapor untuk siswa
2. Pastikan ada nilai untuk berbagai mata pelajaran
3. Cetak rapor
4. Periksa kolom "Capaian Kompetensi" - seharusnya otomatis terisi
5. Periksa section "Kokurikuler" - seharusnya menampilkan 3 kegiatan default jika tidak ada data

## Catatan

- RaporHelper otomatis ter-autoload karena menggunakan namespace `App\Helpers`
- Tidak perlu register manual di service provider
- Class bersifat static, sehingga bisa langsung dipanggil tanpa instantiate
- Deskripsi yang di-generate bersifat umum, bisa di-customize melalui input manual di database

## Update Future

Fitur yang bisa ditambahkan:
- [ ] Sistem template deskripsi yang bisa diatur dari admin panel
- [ ] Variasi deskripsi untuk setiap predikat
- [ ] Integrasi dengan AI untuk generate deskripsi yang lebih personal
- [ ] Export/import template deskripsi
- [ ] Multi-bahasa untuk deskripsi
