-- =====================================================================
-- SIMAP - Data awal (seed)
-- Jalankan setelah 01_schema.sql
-- =====================================================================
-- Nama basis data ditentukan saat pemanggilan, bukan dipaksa di sini,
-- agar sekolah bebas memakai nama lain:
--   mysql -u root -p nama_basis_data < 02_seed.sql

-- ---------------------------------------------------------------- ROLE
INSERT INTO roles (id, kode, nama, level, keterangan) VALUES
(1,'SUPERADMIN','Super Admin',1,'Akses penuh sistem'),
(2,'KEPALA_SEKOLAH','Kepala Sekolah',2,'Monitoring, approval, laporan'),
(3,'GURU','Guru',4,'Mengajar, adm guru, nilai'),
(4,'WALI_KELAS','Wali Kelas',3,'Guru + kelola rapor kelasnya'),
(5,'TU','Tata Usaha',3,'Administrasi, keuangan, surat, inventaris'),
(6,'PUSTAKAWAN','Pustakawan',4,'Kelola perpustakaan & literasi'),
(7,'SISWA','Siswa',7,'E-learning, ujian, game, perpus digital'),
(8,'ORTU','Orang Tua',7,'Monitoring anak via aplikasi mobile'),
(9,'OPERATOR','Operator Dapodik',3,'Sinkronisasi data & e-rapor');

-- --------------------------------------------------------- PERMISSIONS
INSERT INTO permissions (kode, modul, nama) VALUES
('master.siswa.view','master','Lihat data siswa'),
('master.siswa.manage','master','Kelola data siswa'),
('master.guru.manage','master','Kelola data guru'),
('master.kelas.manage','master','Kelola kelas & rombel'),
('master.mapel.manage','master','Kelola mata pelajaran'),
('master.jadwal.manage','master','Mengatur jadwal pelajaran'),
('absensi.view','absensi','Lihat absensi'),
('absensi.input','absensi','Input/koreksi absensi'),
('absensi.device','absensi','Kelola mesin RFID'),
('absensi.rekap','absensi','Rekap & ekspor absensi'),
('admguru.own','admguru','Kelola administrasi sendiri'),
('admguru.approve','admguru','Setujui perangkat ajar'),
('admguru.all','admguru','Lihat semua administrasi guru'),
('elearning.manage','elearning','Kelola materi & tugas'),
('elearning.learn','elearning','Ikut pembelajaran'),
('ujian.manage','ujian','Kelola ujian & bank soal'),
('ujian.ikut','ujian','Mengerjakan ujian'),
('game.manage','game','Kelola game edukasi'),
('game.main','game','Memainkan game'),
('perpus.manage','perpus','Kelola koleksi & sirkulasi'),
('perpus.pinjam','perpus','Meminjam buku'),
('literasi.input','literasi','Isi jurnal literasi'),
('literasi.verifikasi','literasi','Verifikasi jurnal literasi'),
('tu.surat','tu','Kelola persuratan'),
('tu.inventaris','tu','Kelola inventaris'),
('tu.keuangan','tu','Kelola tagihan & pembayaran'),
('nilai.input','nilai','Input nilai'),
('rapor.kelola','rapor','Kelola e-rapor'),
('rapor.cetak','rapor','Cetak/unduh rapor'),
('rapor.lihat','rapor','Lihat rapor anak/sendiri'),
('dapodik.sync','dapodik','Sinkronisasi Dapodik/EMIS'),
('ai.gunakan','ai','Menggunakan asisten AI'),
('laporan.sekolah','laporan','Dashboard & laporan sekolah'),
('setting.manage','setting','Pengaturan sistem');

-- Superadmin: semua permission
INSERT INTO role_permission (role_id, permission_id) SELECT 1, id FROM permissions;
-- Kepala sekolah
-- Kepala sekolah ikut mengajar dan meninjau seluruh perangkat ajar, jadi perlu
-- 'admguru.own' (menyusun miliknya) di samping 'admguru.all' (melihat milik guru lain).
INSERT INTO role_permission (role_id, permission_id) SELECT 2, id FROM permissions
  WHERE kode IN ('master.siswa.view','master.siswa.manage','master.guru.manage','master.kelas.manage',
  'master.mapel.manage','master.jadwal.manage','absensi.view','absensi.input','absensi.rekap',
  'admguru.own','admguru.approve','admguru.all','elearning.manage','ujian.manage','game.manage',
  'nilai.input','rapor.kelola','rapor.cetak','dapodik.sync','laporan.sekolah','ai.gunakan',
  'literasi.verifikasi','perpus.manage','tu.surat');
-- Guru
INSERT INTO role_permission (role_id, permission_id) SELECT 3, id FROM permissions
  WHERE kode IN ('master.siswa.view','absensi.view','absensi.input','admguru.own','elearning.manage',
  'ujian.manage','game.manage','nilai.input','literasi.verifikasi','ai.gunakan');
-- Wali kelas = guru + rapor
INSERT INTO role_permission (role_id, permission_id) SELECT 4, id FROM permissions
  WHERE kode IN ('master.siswa.view','absensi.view','absensi.input','absensi.rekap','admguru.own',
  'elearning.manage','ujian.manage','game.manage','nilai.input','rapor.kelola','rapor.cetak',
  'literasi.verifikasi','ai.gunakan');
-- TU
INSERT INTO role_permission (role_id, permission_id) SELECT 5, id FROM permissions
  WHERE kode IN ('master.siswa.view','master.siswa.manage','master.guru.manage','master.kelas.manage',
  'master.jadwal.manage','absensi.view','absensi.rekap','absensi.device','tu.surat','tu.inventaris',
  'tu.keuangan','rapor.cetak');
-- Pustakawan
INSERT INTO role_permission (role_id, permission_id) SELECT 6, id FROM permissions
  WHERE kode IN ('perpus.manage','perpus.pinjam','literasi.verifikasi','master.siswa.view');
-- Siswa
INSERT INTO role_permission (role_id, permission_id) SELECT 7, id FROM permissions
  WHERE kode IN ('elearning.learn','ujian.ikut','game.main','perpus.pinjam','literasi.input','rapor.lihat');
-- Ortu
INSERT INTO role_permission (role_id, permission_id) SELECT 8, id FROM permissions
  WHERE kode IN ('absensi.view','rapor.lihat');
-- Operator
INSERT INTO role_permission (role_id, permission_id) SELECT 9, id FROM permissions
  WHERE kode IN ('master.siswa.manage','master.guru.manage','master.kelas.manage','master.jadwal.manage',
  'dapodik.sync','rapor.cetak');

-- ------------------------------------------------------------- SEKOLAH
INSERT INTO sekolah (id, npsn, nama, jenjang, naungan, kurikulum_aktif, status_sekolah,
  alamat, kecamatan, kabupaten, provinsi, telepon, email, kepala_sekolah, radius_absen)
VALUES (1,'20200001','SD Islam Al Barokah','SD','KEMENDIKDASMEN','MERDEKA','SWASTA',
  'Jl. Raya Cileungsi No. 1','Cileungsi','Bogor','Jawa Barat','021-8230000',
  'admin@simap.sch.id','Ahmad Fauzi, S.Pd.',150);

INSERT INTO tahun_ajaran (id, kode, semester, tanggal_mulai, tanggal_selesai, is_aktif) VALUES
(1,'2026/2027','1','2026-07-13','2026-12-19',1),
(2,'2026/2027','2','2027-01-05','2027-06-20',0);

-- ------------------------------------------------------ JAM PELAJARAN
INSERT INTO jam_pelajaran (jam_ke, mulai, selesai, is_istirahat, keterangan) VALUES
(0,'07:00:00','07:15:00',0,'Pembiasaan / Doa'),
(1,'07:15:00','07:50:00',0,NULL),(2,'07:50:00','08:25:00',0,NULL),
(3,'08:25:00','09:00:00',0,NULL),(4,'09:00:00','09:35:00',0,NULL),
(5,'09:35:00','09:55:00',1,'Istirahat 1'),
(6,'09:55:00','10:30:00',0,NULL),(7,'10:30:00','11:05:00',0,NULL),
(8,'11:05:00','11:40:00',0,NULL),
(9,'11:40:00','12:20:00',1,'Istirahat 2 & Salat Duhur'),
(10,'12:20:00','12:55:00',0,NULL),(11,'12:55:00','13:30:00',0,NULL);

-- -------------------------------------------------- MAPEL KURIKULUM SD
-- Kemendikdasmen (Kurikulum Merdeka / Kurikulum Nasional)
INSERT INTO mapel (kode,nama,nama_singkat,kelompok,naungan,urutan_rapor,tingkat_min,tingkat_max,jam_per_minggu,warna,ikon) VALUES
('PAI','Pendidikan Agama Islam dan Budi Pekerti','PAI','AGAMA','KEMENDIKDASMEN',1,1,6,4,'#1F7A5A','mosque'),
('PP','Pendidikan Pancasila','P.Pancasila','UMUM','KEMENDIKDASMEN',2,1,6,4,'#C0392B','flag'),
('BIN','Bahasa Indonesia','B. Indonesia','UMUM','KEMENDIKDASMEN',3,1,6,6,'#E67E22','book-open'),
('MTK','Matematika','Matematika','UMUM','KEMENDIKDASMEN',4,1,6,5,'#2B4570','calculator'),
('IPAS','Ilmu Pengetahuan Alam dan Sosial','IPAS','UMUM','KEMENDIKDASMEN',5,3,6,5,'#16A085','globe'),
('PJOK','Pendidikan Jasmani, Olahraga, dan Kesehatan','PJOK','UMUM','SEMUA',6,1,6,3,'#8E44AD','activity'),
('SBDP','Seni Budaya dan Prakarya','Seni Budaya','UMUM','SEMUA',7,1,6,3,'#D35400','palette'),
('BING','Bahasa Inggris','B. Inggris','MULOK','SEMUA',8,1,6,2,'#2980B9','languages'),
('BSUN','Bahasa Sunda','B. Sunda','MULOK','SEMUA',9,1,6,2,'#7F8C8D','mountain'),
('BTQ','Baca Tulis Al-Quran','BTQ','MULOK','SEMUA',10,1,6,2,'#1F4A3C','book'),
-- Kemenag (Madrasah Ibtidaiyah)
('QH','Al-Qur''an Hadis','Quran Hadis','AGAMA','KEMENAG',1,1,6,2,'#1F7A5A','book'),
('AA','Akidah Akhlak','Akidah Akhlak','AGAMA','KEMENAG',2,1,6,2,'#27AE60','heart'),
('FIK','Fikih','Fikih','AGAMA','KEMENAG',3,1,6,2,'#16A085','scale'),
('SKI','Sejarah Kebudayaan Islam','SKI','AGAMA','KEMENAG',4,3,6,2,'#B7791F','landmark'),
('BAR','Bahasa Arab','B. Arab','AGAMA','KEMENAG',5,1,6,2,'#8E6C3B','languages');

-- ------------------------------- 8 DIMENSI PROFIL LULUSAN (Permendikdasmen 10/2025)
INSERT INTO dimensi_lulusan (kerangka,kode,nama,deskripsi,warna,ikon,urutan) VALUES
('PROFIL_LULUSAN','PL1','Keimanan dan Ketakwaan kepada Tuhan YME','Keyakinan yang teguh serta pengamalan nilai spiritual dan akhlak mulia dalam keseharian.','#1F7A5A','sparkles',1),
('PROFIL_LULUSAN','PL2','Kewargaan','Cinta tanah air, taat norma, dan bertanggung jawab pada lingkungan serta masyarakat.','#C0392B','flag',2),
('PROFIL_LULUSAN','PL3','Penalaran Kritis','Berpikir logis, analitis, dan reflektif dalam menilai informasi dan memecahkan masalah.','#2B4570','brain',3),
('PROFIL_LULUSAN','PL4','Kreativitas','Menghasilkan gagasan orisinal dan solusi baru yang bermanfaat.','#D35400','lightbulb',4),
('PROFIL_LULUSAN','PL5','Kolaborasi','Bekerja sama, beradaptasi, dan bersinergi dalam kelompok.','#E67E22','users',5),
('PROFIL_LULUSAN','PL6','Kemandirian','Bertanggung jawab atas proses belajar sendiri dan berinisiatif.','#8E44AD','compass',6),
('PROFIL_LULUSAN','PL7','Kesehatan','Menjaga keseimbangan kesehatan fisik dan mental.','#16A085','heart-pulse',7),
('PROFIL_LULUSAN','PL8','Komunikasi','Menyampaikan gagasan dan berinteraksi secara efektif dan santun.','#2980B9','message-circle',8);

-- ---------------------- PANCA CINTA - Kurikulum Berbasis Cinta (KMA 1503/2025)
INSERT INTO dimensi_lulusan (kerangka,kode,nama,deskripsi,warna,ikon,urutan) VALUES
('PANCA_CINTA','KBC1','Cinta Allah dan Rasul-Nya','Sumber cinta: mengenal, mencintai, dan meneladani Allah serta Rasulullah SAW.','#1F7A5A','moon-star',1),
('PANCA_CINTA','KBC2','Cinta Ilmu','Semangat mencari, mengamalkan, dan memuliakan ilmu sepanjang hayat.','#B7791F','book-open',2),
('PANCA_CINTA','KBC3','Cinta Lingkungan','Memelihara alam sebagai amanah, hemat sumber daya, dan peduli kebersihan.','#27AE60','leaf',3),
('PANCA_CINTA','KBC4','Cinta Diri dan Sesama Manusia','Akhlak pada diri sendiri, empati, toleransi, dan kasih sayang pada sesama.','#E67E22','hand-heart',4),
('PANCA_CINTA','KBC5','Cinta Tanah Air','Bangga dan berkontribusi bagi bangsa, menjaga persatuan dalam keberagaman.','#C0392B','flag',5);

-- ------------------------------------------------------------- BADGE
INSERT INTO badge (kode,nama,deskripsi,warna,kriteria,poin_bonus) VALUES
('KUTU_BUKU','Kutu Buku','Menyelesaikan 10 buku dalam satu semester','#B7791F','{"sumber":"LITERASI","min":10}',100),
('RAJIN_HADIR','Selalu Hadir','Hadir penuh selama 1 bulan tanpa alpa','#1F7A5A','{"sumber":"ABSENSI","min":20}',50),
('JUARA_KUIS','Jagoan Kuis','Nilai 100 pada 5 ujian berbeda','#2B4570','{"sumber":"UJIAN","min":5}',75),
('PENJELAJAH','Penjelajah Materi','Menuntaskan 25 materi pembelajaran','#E67E22','{"sumber":"MATERI","min":25}',60),
('SANG_JUARA','Sang Juara Game','Meraih 3 bintang di 10 level game','#8E44AD','{"sumber":"GAME","min":10}',80),
('TEPAT_WAKTU','Tepat Waktu','Mengumpulkan 15 tugas sebelum deadline','#16A085','{"sumber":"TUGAS","min":15}',50);

-- ------------------------------------------------------ TEMPLATE AI
INSERT INTO ai_template (kode,nama,modul,deskripsi,system_prompt,user_prompt,model,max_tokens,temperature,output_format) VALUES
('MODUL_AJAR','Generate Modul Ajar','admguru','Membuat modul ajar lengkap sesuai kurikulum aktif',
'Anda adalah guru ahli jenjang Sekolah Dasar di Indonesia yang menguasai {{kurikulum}} dan pendekatan Pembelajaran Mendalam (deep learning). Tulis perangkat ajar yang praktis, membumi, dan siap pakai oleh guru kelas. Bahasa Indonesia yang jelas dan ramah anak. Jangan gunakan istilah asing tanpa penjelasan.',
'Buatkan MODUL AJAR untuk:\nMata pelajaran: {{mapel}}\nKelas/Fase: {{tingkat}} (Fase {{fase}})\nSemester: {{semester}}\nTopik: {{judul}}\nAlokasi: {{alokasi}}\nDimensi yang disasar: {{dimensi}}\n\nKeluarkan JSON dengan kunci: tujuan_pembelajaran, pemahaman_bermakna, pertanyaan_pemantik, model_pembelajaran, metode, sarana_prasarana, kegiatan_pendahuluan, kegiatan_inti, kegiatan_penutup, asesmen_diagnostik, asesmen_formatif, asesmen_sumatif, rubrik_penilaian, pengayaan, remedial, refleksi_guru, refleksi_siswa, lampiran_lkpd, glosarium, daftar_pustaka. Nilai berupa string HTML sederhana (gunakan <p>, <ul>, <li>, <b>). Balas JSON saja tanpa pengantar dan tanpa pagar kode.',
'claude-sonnet-4-6',8000,0.7,'JSON'),

('PROTA','Generate Program Tahunan','admguru','Menyusun prota per mapel per tingkat',
'Anda perancang kurikulum SD yang menguasai struktur {{kurikulum}} dan alokasi minggu efektif di Indonesia.',
'Susun PROGRAM TAHUNAN untuk mapel {{mapel}} kelas {{tingkat}} (Fase {{fase}}), total {{total_jp}} JP setahun. Bagi ke Semester 1 dan 2. Balas JSON array: [{"semester":"1","lingkup_materi":"...","uraian":"...","alokasi_jp":8}]. JSON saja.',
'claude-sonnet-4-6',6000,0.6,'JSON'),

('ATP','Generate ATP','admguru','Alur Tujuan Pembelajaran dari CP',
'Anda perancang ATP untuk SD yang menurunkan Capaian Pembelajaran menjadi Tujuan Pembelajaran yang terukur dan berurutan.',
'Dari Capaian Pembelajaran berikut:\n{{cp}}\n\nSusun ATP mapel {{mapel}} kelas {{tingkat}} Fase {{fase}} semester {{semester}}. Balas JSON array: [{"urutan":1,"tujuan":"...","materi_pokok":"...","kata_kunci":"...","alokasi_jp":4,"asesmen":"...","glosarium":"..."}]. JSON saja.',
'claude-sonnet-4-6',6000,0.6,'JSON'),

('BANK_SOAL','Generate Bank Soal','ujian','Membuat butir soal sesuai TP dan level kognitif',
'Anda penulis soal SD berpengalaman. Soal harus sesuai usia anak SD, kalimat pendek, konteks keseharian Indonesia, dan bebas jebakan yang tidak perlu. Pengecoh harus masuk akal.',
'Buat {{jumlah}} soal {{tipe}} untuk mapel {{mapel}} kelas {{tingkat}}, topik: {{topik}}. Sebaran level kognitif: {{level}}. Balas JSON array: [{"tipe":"PG","level_kognitif":"C2","tingkat_kesulitan":"SEDANG","pertanyaan":"...","opsi":[{"key":"A","teks":"..."},{"key":"B","teks":"..."},{"key":"C","teks":"..."},{"key":"D","teks":"..."}],"kunci":"B","pembahasan":"..."}]. JSON saja.',
'claude-sonnet-4-6',8000,0.8,'JSON'),

('DESKRIPSI_RAPOR','Deskripsi Capaian Rapor','rapor','Kalimat deskripsi capaian per mapel untuk rapor',
'Anda wali kelas SD yang menulis deskripsi rapor. Gaya kalimat: positif, spesifik, 2-3 kalimat, menyebut kompetensi yang menonjol lebih dulu lalu yang perlu ditingkatkan. Hindari kata "kurang" atau "gagal"; gunakan "perlu bimbingan dalam...". Sebut nama panggilan siswa.',
'Siswa: {{nama}} ({{panggilan}}), kelas {{kelas}}, mapel {{mapel}}. Nilai akhir {{nilai}}. TP dengan capaian tertinggi: {{tp_tinggi}}. TP yang masih perlu bimbingan: {{tp_rendah}}. Tulis deskripsi rapor. Balas teks saja tanpa pengantar.',
'claude-sonnet-4-6',600,0.7,'TEKS'),

('CATATAN_WALI','Catatan Wali Kelas','rapor','Catatan holistik untuk rapor',
'Anda wali kelas SD yang mengenal siswanya. Tulis catatan 3-4 kalimat yang hangat, jujur, dan memberi arah perbaikan konkret untuk orang tua.',
'Data siswa {{nama}} kelas {{kelas}}: rata-rata nilai {{rata}}, kehadiran hadir {{hadir}} sakit {{sakit}} izin {{izin}} alpa {{alpa}} hari. Capaian dimensi: {{dimensi}}. Catatan perilaku: {{perilaku}}. Ekstrakurikuler: {{ekskul}}. Tulis catatan wali kelas. Teks saja.',
'claude-sonnet-4-6',700,0.7,'TEKS'),

('GAME_LEVEL','Generate Level Game','game','Membuat isi level game edukasi',
'Anda perancang game edukasi anak SD. Konten harus singkat, menyenangkan, dan tepat secara akademik.',
'Buat data level untuk game bertipe {{tipe_game}} mapel {{mapel}} kelas {{tingkat}} topik {{topik}}, jumlah butir {{jumlah}}. Balas JSON sesuai tipe: KUIS_CEPAT -> [{"tanya":"...","opsi":["..."],"kunci":0}]; MENJODOHKAN -> [{"kiri":"...","kanan":"..."}]; SUSUN_KATA -> [{"kata":"...","petunjuk":"..."}]; TEBAK_GAMBAR -> [{"petunjuk":"...","jawaban":"..."}]; HITUNG_CEPAT -> [{"soal":"7 x 8","jawaban":56}]. JSON saja.',
'claude-sonnet-4-6',4000,0.9,'JSON'),

('RINGKASAN_HARIAN','Ringkasan Harian untuk Ortu','ortu','Narasi singkat aktivitas anak hari ini',
'Anda asisten sekolah yang menulis laporan harian untuk orang tua murid SD. Gaya: hangat, ringkas, maksimal 3 kalimat, tanpa jargon pendidikan.',
'Data hari ini untuk {{panggilan}} kelas {{kelas}}: absen {{status_absen}} (masuk {{jam_masuk}}), materi selesai {{materi}}, tugas dikumpulkan {{tugas_selesai}}, tugas belum {{tugas_pending}}, literasi {{menit_literasi}} menit, poin {{poin}}. Catatan guru: {{catatan}}. Tulis ringkasan untuk orang tua. Teks saja.',
'claude-sonnet-4-6',400,0.7,'TEKS'),

('KOREKSI_URAIAN','Koreksi Soal Uraian','ujian','Menilai jawaban uraian siswa dengan rubrik',
'Anda korektor jawaban uraian siswa SD. Nilai berdasarkan rubrik, adil, dan beri umpan balik yang membangun dalam 1-2 kalimat.',
'Soal: {{soal}}\nKunci/rubrik: {{kunci}}\nSkor maksimal: {{skor_maks}}\nJawaban siswa: {{jawaban}}\nBalas JSON: {"skor":angka,"benar":true/false,"catatan":"..."}. JSON saja.',
'claude-sonnet-4-6',500,0.3,'JSON'),

('SURAT_TU','Draft Surat Sekolah','tu','Menyusun draft surat resmi sekolah',
'Anda staf tata usaha sekolah yang menulis surat resmi berbahasa Indonesia sesuai kaidah persuratan dinas.',
'Buat draft surat jenis {{jenis}} dari {{sekolah}} kepada {{tujuan}} perihal {{perihal}}. Poin isi: {{poin}}. Keluarkan HTML badan surat saja (tanpa kop dan tanda tangan).',
'claude-sonnet-4-6',2000,0.5,'HTML');

-- ------------------------------------------------------- KATEGORI BUKU
INSERT INTO buku_kategori (kode_ddc,nama,warna,ikon) VALUES
('000','Karya Umum & Ensiklopedia','#7F8C8D','library'),
('100','Filsafat & Psikologi','#8E44AD','brain'),
('200','Agama','#1F7A5A','moon-star'),
('300','Ilmu Sosial','#C0392B','users'),
('400','Bahasa','#2980B9','languages'),
('500','Sains & Matematika','#16A085','flask'),
('600','Teknologi & Kesehatan','#D35400','cpu'),
('700','Kesenian & Olahraga','#E67E22','palette'),
('800','Sastra & Cerita Anak','#B7791F','book-heart'),
('900','Sejarah & Geografi','#2B4570','globe'),
('BTX','Buku Teks Pelajaran','#1F4A3C','book-open');

-- ------------------------------------------------------ JENIS TAGIHAN
INSERT INTO jenis_tagihan (kode,nama,periode,nominal_default) VALUES
('SPP','SPP Bulanan','BULANAN',150000),
('DPP','Uang Pangkal / Daftar Ulang','TAHUNAN',1500000),
('SERAGAM','Seragam & Atribut','SEKALI',650000),
('KEGIATAN','Iuran Kegiatan Semester','SEMESTER',250000),
('BUKU','Buku & LKS','SEMESTER',300000);

-- ------------------------------------------------------ GAME BAWAAN
INSERT INTO game (kode,nama,tipe,mapel_id,tingkat_min,tingkat_max,deskripsi,instruksi,warna,konfigurasi,poin_maks) VALUES
('CEPAT_HITUNG','Adu Cepat Hitung','HITUNG_CEPAT',(SELECT id FROM mapel WHERE kode='MTK'),1,6,'Selesaikan operasi hitung sebanyak mungkin sebelum waktu habis.','Ketik jawaban lalu tekan Enter. Jawaban benar menambah waktu 2 detik.','#2B4570','{"durasi":90,"nyawa":3,"bonus_detik":2}',100),
('SUSUN_KATA','Susun Kata Ajaib','SUSUN_KATA',(SELECT id FROM mapel WHERE kode='BIN'),1,6,'Susun huruf acak menjadi kata yang benar.','Seret huruf ke kotak jawaban. Gunakan petunjuk bila kesulitan.','#E67E22','{"durasi":120,"petunjuk_maks":3}',100),
('JODOH_KATA','Pasangkan Aku','MENJODOHKAN',NULL,1,6,'Pasangkan istilah dengan artinya.','Tarik garis dari kiri ke kanan.','#16A085','{"durasi":150}',100),
('TEBAK_GAMBAR','Tebak Gambarnya','TEBAK_GAMBAR',(SELECT id FROM mapel WHERE kode='IPAS'),3,6,'Tebak nama benda, hewan, atau tempat dari gambar.','Ketik jawaban pada kolom yang tersedia.','#27AE60','{"durasi":120,"petunjuk_maks":2}',100),
('KUIS_KILAT','Kuis Kilat','KUIS_CEPAT',NULL,1,6,'Jawab pertanyaan pilihan ganda secepat mungkin.','Pilih jawaban sebelum bar waktu habis.','#8E44AD','{"detik_per_soal":15}',100),
('MEMORI_HIJAIYAH','Memori Hijaiyah','MEMORI',(SELECT id FROM mapel WHERE kode='BTQ'),1,3,'Cocokkan kartu huruf hijaiyah dengan bunyinya.','Buka dua kartu. Jika cocok, kartu tetap terbuka.','#1F4A3C','{"pasangan":8,"durasi":180}',100);

-- ------------------------------------------------------------ SETTING
INSERT INTO setting (skey,svalue,grup,tipe,label) VALUES
('app_nama','SIMAP','umum','text','Nama aplikasi'),
('app_tagline','Sistem Informasi Manajemen Pendidikan','umum','text','Tagline'),
('jam_masuk','07:00','absensi','text','Jam masuk sekolah'),
('batas_terlambat','07:15','absensi','text','Batas dianggap terlambat'),
('jam_pulang','12:55','absensi','text','Jam pulang'),
('toleransi_tap_menit','3','absensi','number','Jeda minimal antar tap kartu (menit)'),
('notif_wa_absen','1','notifikasi','bool','Kirim WA saat siswa masuk/tidak hadir'),
('notif_wa_jam','07:30','notifikasi','text','Jam kirim rekap ketidakhadiran'),
('wa_gateway_url','http://localhost:3005/send','notifikasi','text','Endpoint gateway WhatsApp (Baileys)'),
('wa_gateway_key','ubah-kunci-ini','notifikasi','text','API key gateway WhatsApp'),
('template_wa_hadir','Assalamualaikum Bpk/Ibu {ortu}. Ananda *{siswa}* ({kelas}) telah tiba di sekolah pukul {jam}. Terima kasih. - {sekolah}','notifikasi','text','Template WA kehadiran'),
('template_wa_alpa','Assalamualaikum Bpk/Ibu {ortu}. Hingga pukul {jam}, ananda *{siswa}* ({kelas}) belum tercatat hadir di sekolah. Mohon konfirmasinya. - {sekolah}','notifikasi','text','Template WA ketidakhadiran'),
('denda_perpus_per_hari','500','perpus','number','Denda keterlambatan per hari (Rp)'),
('maks_pinjam_siswa','2','perpus','number','Maksimal buku dipinjam siswa'),
('lama_pinjam_hari','7','perpus','number','Lama peminjaman (hari)'),
('kkm_default','70','nilai','number','KKM/KKTP default'),
('bobot_formatif','40','nilai','number','Bobot rata formatif (%)'),
('bobot_sumatif','30','nilai','number','Bobot rata sumatif lingkup (%)'),
('bobot_sts','15','nilai','number','Bobot STS (%)'),
('bobot_sas','15','nilai','number','Bobot SAS (%)'),
('ai_aktif','1','ai','bool','Aktifkan asisten AI'),
('ai_model','claude-sonnet-4-6','ai','text','Model default'),
('ai_kuota_guru','200','ai','number','Batas request AI per guru per bulan'),
('poin_materi','10','gamifikasi','number','Poin menuntaskan materi'),
('poin_literasi','20','gamifikasi','number','Poin jurnal literasi diverifikasi'),
('poin_hadir','5','gamifikasi','number','Poin hadir tepat waktu');

-- --------------------------------------------------------- DEMO USERS
-- Password semua akun demo: simap123
SET @pw := '$2y$10$AG0.fBfZaNYkGU01pXdCsuS7PB98FiTE79LsLb6uGRc2x78Gx95Re';

INSERT INTO guru (id,kode_guru,nuptk,nama,gelar_belakang,jenis_kelamin,no_hp,jenis_ptk,status_kepegawaian,rfid_uid) VALUES
(1,'G001','1234567890123456','Ahmad Fauzi','S.Pd.','L','081200000001','KEPALA_SEKOLAH','GTY','A1B2C301'),
(2,'G002','1234567890123457','Siti Nurhaliza','S.Pd.','P','081200000002','GURU_KELAS','GTY','A1B2C302'),
(3,'G003','1234567890123458','Budi Santoso','S.Pd.I.','L','081200000003','GURU_MAPEL','GTT','A1B2C303'),
(4,'G004',NULL,'Rina Marlina','A.Md.','P','081200000004','TU','GTT','A1B2C304'),
(5,'G005',NULL,'Dedi Kurniawan','S.IP.','L','081200000005','PUSTAKAWAN','GTT','A1B2C305');

INSERT INTO users (id,username,password,role_id,ref_type,ref_id,nama_tampil,no_hp) VALUES
(1,'admin',@pw,1,'NONE',NULL,'Administrator','081200000000'),
(2,'kepsek',@pw,2,'GURU',1,'Ahmad Fauzi, S.Pd.','081200000001'),
(3,'guru',@pw,4,'GURU',2,'Siti Nurhaliza, S.Pd.','081200000002'),
(4,'gurumapel',@pw,3,'GURU',3,'Budi Santoso, S.Pd.I.','081200000003'),
(5,'tu',@pw,5,'GURU',4,'Rina Marlina, A.Md.','081200000004'),
(6,'perpus',@pw,6,'GURU',5,'Dedi Kurniawan, S.IP.','081200000005');

INSERT INTO kelas (id,tahun_ajaran_id,tingkat,fase,rombel,nama,wali_kelas_id,ruang,kuota) VALUES
(1,1,1,'A','A','1A',2,'R101',28),(2,1,2,'A','A','2A',NULL,'R102',28),
(3,1,3,'B','A','3A',NULL,'R103',30),(4,1,4,'B','A','4A',2,'R104',30),
(5,1,5,'C','A','5A',NULL,'R105',30),(6,1,6,'C','A','6A',NULL,'R106',30);

INSERT INTO siswa (id,nisn,nis,nama,nama_panggilan,jenis_kelamin,tempat_lahir,tanggal_lahir,agama,alamat,rfid_uid) VALUES
(1,'0123456781','2601001','Muhammad Rafi Pratama','Rafi','L','Bogor','2016-03-11','Islam','Kp. Cileungsi RT 02/05','5A6B7C01'),
(2,'0123456782','2601002','Aisyah Putri Ramadhani','Aisyah','P','Bogor','2016-06-21','Islam','Perum Griya Asri Blok C','5A6B7C02'),
(3,'0123456783','2601003','Bagas Dwi Saputra','Bagas','L','Bekasi','2016-01-09','Islam','Jl. Mawar No. 12','5A6B7C03');

INSERT INTO kelas_siswa (kelas_id,siswa_id,no_absen) VALUES (4,1,1),(4,2,2),(4,3,3);

INSERT INTO ortu (id,nama,hubungan,pekerjaan,no_hp) VALUES
(1,'Hendra Pratama','AYAH','Wiraswasta','081311110001'),
(2,'Dewi Lestari','IBU','Ibu Rumah Tangga','081311110002'),
(3,'Slamet Ramadhani','AYAH','Karyawan Swasta','081311110003');

INSERT INTO siswa_ortu (siswa_id,ortu_id,is_utama) VALUES (1,1,1),(1,2,0),(2,3,1);

INSERT INTO users (username,password,role_id,ref_type,ref_id,nama_tampil,no_hp) VALUES
('rafi',@pw,7,'SISWA',1,'Muhammad Rafi Pratama','-'),
('aisyah',@pw,7,'SISWA',2,'Aisyah Putri Ramadhani','-'),
('081311110001',@pw,8,'ORTU',1,'Hendra Pratama','081311110001'),
('081311110003',@pw,8,'ORTU',3,'Slamet Ramadhani','081311110003');

INSERT INTO rfid_device (kode_device,nama,lokasi,api_key,mode) VALUES
('RFID-GERBANG-01','Mesin Gerbang Utama','Gerbang depan','dev-key-ganti-ini-1234567890','SISWA'),
('RFID-KANTOR-01','Mesin Ruang Guru','Ruang guru','dev-key-ganti-ini-0987654321','GURU');

INSERT INTO anggota_perpus (no_anggota,tipe,ref_id,tanggal_daftar,berlaku_sampai)
SELECT CONCAT('AP', LPAD(id,5,'0')), 'SISWA', id, CURDATE(), DATE_ADD(CURDATE(), INTERVAL 6 YEAR) FROM siswa;

