# Penyesuaian data siswa dan kelas

## Yang dikerjakan

Cadangan produksi disesuaikan dengan daftar siswa terbaru sekolah:

| | Jumlah |
|---|---|
| Tetap di kelasnya | 24 |
| Pindah kelas | 546 |
| Dicocokkan lewat kemiripan nama | 87 |
| Meragukan, dianggap siswa baru | 45 |
| Siswa baru ditambahkan | 180 |
| Ada di sistem tetapi tidak di daftar | 364 |

Kelas berubah dari 23 rombel lama (7A–7F, 8A–8K, 9A–9F) menjadi 20 rombel
sesuai daftar terbaru (7A–7E, 8A–8E, 9A–9J).

## Yang tidak disentuh sama sekali

| | Sebelum | Sesudah |
|---|---|---|
| Kartu RFID | 581 | **581** |
| Absensi tercatat | 360 | **360** |
| Akun wali murid | 730 | **730** |
| Data orang tua | 742 | **742** |

Kartu yatim — kartu yang pemiliknya hilang — **nol**. Seluruh kartu masih
menempel pada siswanya, karena kartu terhubung ke siswa, bukan ke kelas.

## Siswa yang tidak ada di daftar terbaru

364 orang. Datanya **tetap tersimpan lengkap**: kartu, absensi, tagihan, dan
akun walinya utuh. Yang dinonaktifkan hanya penempatan kelasnya, supaya satu
rombel tidak berisi tujuh puluh orang karena siswa lama dan baru bercampur.

Mereka menjadi siswa tanpa kelas, bukan siswa yang terhapus, dan dapat
dikembalikan kapan saja dari menu Data Induk.

Sebagian di antaranya sudah punya kartu RFID. Bila ternyata orang yang sama
dengan siswa baru — hanya berbeda ejaan nama — kartunya menempel pada catatan
lama sementara sistem membuatkan catatan baru tanpa kartu. Daftar
**MERAGUKAN** pada keluaran skrip memuat 45 nama yang paling mungkin seperti
itu; periksa daftar tersebut dan gabungkan manual bila perlu.

## Pencocokan nama

Tiga tahap, dari yang paling pasti:

1. **Nama sama persis** setelah gelar dan tanda baca dibuang
2. **Kemiripan di atas 90 persen**, dan harus jauh lebih mirip daripada
   kandidat berikutnya — memindahkan siswa yang salah ke kelas lain lebih
   merepotkan daripada membiarkannya dilaporkan
3. **Kemiripan 82–90 persen** dilaporkan sebagai meragukan, tidak dipakai

## Menjalankan ulang

```bash
# lihat dulu apa yang akan terjadi, tanpa mengubah apa pun
php web/cli/sinkron-kelas.php database/impor/siswa-terbaru.csv

# terapkan
php web/cli/sinkron-kelas.php database/impor/siswa-terbaru.csv --terapkan

# terapkan sekaligus bersihkan kelas dari siswa di luar daftar
php web/cli/sinkron-kelas.php database/impor/siswa-terbaru.csv --terapkan --keluarkan
```

Tanpa `--terapkan` skrip hanya melaporkan. Itu disengaja: memindahkan ratusan
siswa antar kelas sulit dibatalkan, jadi hasilnya layak dibaca lebih dulu.

## Delapan siswa tanpa jenis kelamin

Berkas terbaru tidak memuat L/P untuk delapan nama. Mereka tetap dibuat
dengan nilai sementara `L` dan namanya dicetak di layar — menolak membuatnya
sama sekali justru membuat anak itu hilang dari sistem, yang lebih buruk
daripada satu kolom yang perlu dibetulkan operator.
