# Task Breakdown: 19 - Kenaikan Kelas (Mass Promotion)

**Referensi Dokumen:** FR-05, C-09, Tech Spec 4.4
**Tujuan:** Fitur eksklusif tahunan Admin pengampu. Sebuah siklus konklusif besar-besaran terhadap reinkarnasi angkatan siswa lama (`STUDENTS`) masuk ke bilik kelas relasi ajaran yang baru.

## 1. Tampilan Persiapan Data
- [ ] Buat `PromotionController`.
  - Cek kualifikasi dasar: Fitur ini otomatis dikunci ketat 403 Forbidden bila *Semester ke-2* Tahun Akademik di sistem ini *Masih Status Active*. (Hanya bisa disentuh jika sedang jeda semester / semester genap usai).
  - List Daftar Peserta: Tabel form panjang seluruh ras siswa aktif terikat Kelas / Tingkat saat ini. Sajikan pilihan aksi ke masing-masing baris: **[Naik/Tinggal/Lulus]**, serta dropdown seleksi mutasi "Mutasi Ke Kelas Apa?" untuk opsional pindah fisik kelas.

## 2. Aksi Database Irreversible - PromotionAction
- [ ] Form melakukan `POST` / `execute` pemrosesan parameter massal loop tersebut dengan service `PromotionAction`.
  - Harus ketat *Database Transaction*.
  - Bila *Naik*, rombak `STUDENTS.classroom_id` menjadi target id Kelas.
  - Bila *Lulus* / *Graduate*, perbarui soft record profil relasinya sekaligus ID `USERS` akun auth anak tersebut menjadi `is_active = false`. Pensiunkan mereka dari aktifitas operasional check-in.
  - Peringatkan `UI` menggunakan pop-up JS Modal dua layar konfirmasi merah bahwa *Tindakan Tidak Bisa Di-Undo*.

## 3. Acceptance Criteria
- [ ] Skrip Transaksional bekerja, meloloskan status ribuan siswa lintas tabel ganda yang berbeda dengan mulus. Gagal pada salah satu anak wajib `rollback` ke format masa depan kalender semula utuh.
- [ ] Riwayat catatan tabel di modul absensi sama sekali tidak tersentuh/terhapus, menjamin keamanan logistik pencatatan tahun lawas.
