# Task Breakdown: 03 - Master Akademi (Kelas & Mapel)

**Referensi Dokumen:** FR-03.3, FR-03.4
**Tujuan:** Manajemen dasar elemen akademik yang nantinya akan digunakan di referensi jadwal dan pemetaan pengampu mata pelajaran.

## 1. Controllers

-   [x] Buat `ClassroomController` (`super_admin`):
    -   CRUD manajemen `CLASSROOMS`.
    -   Isian yang ditangani mencakup: tingkat, jurusan/nama kelas, dan alokasi wali kelas (`teacher_id`).
-   [x] Buat `SubjectController` (`super_admin`):
    -   CRUD manajemen `SUBJECTS`.
    -   Nama mata pelajaran, kode mapel (opsional jika dibutuhkan).

## 2. Models & Relationships

-   [x] Di model `Classroom`:
    -   Relasi `students()` (HasMany ke `Student`)
    -   Relasi `homeroomTeacher()` (BelongsTo ke `Teacher`).
-   [x] Di model `Subject`:
    -   Relasi ke `Schedules` dll.

## 3. Form Requests

-   [x] `StoreClassroomRequest` & `UpdateClassroomRequest`.
    -   Validasi bahwa Wali Kelas (`teacher_id`) wajib unik per masing-masing tingkat kelas yang masih aktif (Satu guru tidak disarankan menjadi wali kelas ganda aktif, namun dapat divalidasi sesuai SOP sekolah).
-   [x] `StoreSubjectRequest` & `UpdateSubjectRequest`.

## 4. Acceptance Criteria

-   [x] `super_admin` dapat melihat, mengedit dan menonaktifkan (`is_active = false`) Kelas dan Mapel di dashboard yang disediakan.
-   [x] Kelas yang dinonaktifkan tidak akan muncul pada _dropdown_ pembentukan Jadwal atau Modul Presensi.
