# Task Breakdown: 11 - Kehadiran Sesi Mengajar Guru

**Referensi Dokumen:** FR-11, Tech Spec 2.2
**Tujuan:** Pintu antarmuka khusus Guru bagi tindakan deklaratif log memulai sesi pembelajaran ("Mulai Sesi Mengajar") yang tercatat mandiri, lepas dari mekanisme presensi harian Kiosk Scanner.

## 1. Controller & Validasi
- [ ] Buat `TeachingAttendanceController` di ruang `teacher` (prefix url guru).
  - Method `start($schedule_id)` (Tombol "Mulai Sesi Mengajar").
  - Method `end($schedule_id)` (Tombol "Selesai Mengajar").

## 2. Syarat Kondisional ("Mulai")
- [ ] Validasi keamanan sebelum membiarkan `start()` mengeksekusi rekaman:
  - Cek apakah entitas model Jadwal yang dilampirkan betul merupakan jadwal resmi dia secara permanen, ATAU
  - Cek apakah ia direkomendasikan *dibypass* karena sedang menjadi *guru pengganti* (`SUBSTITUTE_TEACHERS`) untuk jadwal guru aslinya di hari itu.
  - Cek validitas *Hari Aktural di Server* harus sinkron (Minggu/Senin/Selasa) sesuai settingan kolom Hari dalam string *schedule*.
  - Cek tidak sedang hari libur.
  - Set statusnya merekam `starting_time` serta flag ke label "teaching".
  
## 3. Syarat Kondisional ("Selesai")
- [ ] Validasi keamanan `end()`:
  - Hanya dapat diakhiri bila row `teaching` rekaman pada start *sudah lahir* terlebih dahulu.
  - Hanya *record owner* (guru yang merekam start) yang berhak mengakhiri. Menyimpan rekaman waktu rampungnya sesi.

## 4. Acceptance Criteria
- [ ] Jika seseorang bukan pengajar sah di jam itu, URL endpoin `start` harus memberikan pesan perlawanan error Unauthorized / *Bad Condition*.
- [ ] Rekaman Start menginisialisasi perizinan terbukanya panel pencatatan presensi siswa di Tugas selanjutnya.
