# Catatan Keputusan

Status: **Dikonfirmasi** berarti dinyatakan pengguna; **Asumsi** berarti dasar sementara; **Terbuka** membutuhkan keputusan pemilik kampus.

| ID | Status | Keputusan / pertanyaan | Tindak lanjut |
|---|---|---|---|
| D-01 | Dikonfirmasi | Laravel 13, PHP 8.3, MySQL | Verifikasi dukungan aktual saat implementasi/deploy |
| D-02 | Dikonfirmasi | Blade + Livewire + Alpine.js + Tailwind | Kunci versi kompatibel di lockfile |
| D-03 | Dikonfirmasi | Laragon lokal, `http://siakad.test` | Konfigurasikan virtual host ke `public` |
| D-04 | Dikonfirmasi | Shared hosting/cPanel awal, SSH dan cron tersedia | Verifikasi batas paket/provider |
| D-05 | Dikonfirmasi | Target kurang dari 1.000 mahasiswa | Uji beban laporan dan ekspor |
| D-06 | Dikonfirmasi | Zona waktu `Asia/Makassar`, bahasa Indonesia (`id`) dengan wilayah `id_ID`, mata uang IDR | Atur dan uji format/waktu melalui konfigurasi global |
| D-07 | Dikonfirmasi | Tahun akademik dan semester configurable | Simpan sebagai data, hindari hardcode |
| D-08 | Dikonfirmasi | Satu institusi per instalasi; produk dirancang universal agar dapat dikonfigurasi dan dipakai kampus lain | Tidak membuat multi-tenancy dalam satu instalasi; validasi konfigurasi lintas kampus |
| D-09 | Terbuka | Aturan SKS, prasyarat, nilai, IPK, presensi | Sahkan oleh akademik |
| D-10 | Terbuka | Aturan tagihan, pembayaran, rekonsiliasi | Sahkan oleh keuangan |
| D-11 | Terbuka | Provider hosting, batas resource, domain produksi | Uji deployment staging |
| D-12 | Terbuka | Versi Feeder kampus, metode, field, autentikasi, bridge | Verifikasi dokumentasi resmi terkini dan lingkungan kampus; jangan mengarang schema |
| D-13 | Terbuka | Retensi, privasi, RPO/RTO dan backup | Sahkan pemilik data dan operasi |
| D-14 | Asumsi | Monolit modular untuk skala awal | Tinjau jika kebutuhan/kapasitas berubah |
| D-15 | Dikonfirmasi | Satu kampus menjadi pemilik data pada setiap instalasi | Pastikan branding, struktur, kode, kebijakan, dan kalender dapat dikonfigurasi tanpa fork khusus |
| D-16 | Dikonfirmasi | UI ringan bergaya SaaS; tema, warna, font, ukuran font, layout, komponen, dan pagination dikelola global | Spesifikasikan token dan komponen sebelum implementasi; hindari kode styling duplikat |
| D-17 | Dikonfirmasi | Hindari blur/backdrop blur dan efek berat; scrollbar menggunakan gaya kustom | Tetap jaga aksesibilitas dan fallback; uji kelancaran scroll |
| D-18 | Dikonfirmasi | Rilis awal menggunakan tema terang saja; token global disiapkan untuk tema gelap di masa depan | Gunakan token warna semantik, jangan hardcode warna di komponen |
| D-19 | Dikonfirmasi | Warna utama biru | Pilih nuansa dan palet pendamping dalam token global |
| D-20 | Dikonfirmasi | Font Plus Jakarta Sans | Muat terpusat, sediakan fallback sistem, dan utamakan asset lokal |
| D-21 | Dikonfirmasi | Penggunaan utama desktop dengan padding/margin minimal | Gunakan skala spacing global yang ringkas namun terbaca; sesuaikan responsif untuk mobile |
| D-22 | Dikonfirmasi | Sidebar memiliki mode lebar (ikon + label) dan ikon saja, dengan tombol trigger | Perilaku mobile dan persistensi pilihan ditetapkan saat implementasi desain |
| D-23 | Dikonfirmasi | Dashboard awal bersifat umum; kesesuaian data SIAKAD–Neo Feeder untuk impor/ekspor adalah prioritas utama | Dashboard menyaring isi berdasarkan izin; tetapkan arah/sumber kebenaran per entitas sebelum integrasi |
| D-24 | Sebagian dikonfirmasi | Kampus menggunakan Neo Feeder aplikasi 3.1.0 dan database 3.55; dokumentasi publik dipakai untuk memulai uji sandbox | Versi tetap dicatat; uji sandbox boleh dimulai dari dokumentasi publik, lalu validasi respons kampus sebelum operasi tulis/live |
| D-25 | Diimplementasikan sebagai fondasi | ID domain lokal terpisah dari ID Feeder; registry mapping dan tabel batch/item tersedia, tanpa skema payload eksternal | Verifikasi relasi dan aturan koreksi setelah kontrak API kampus diperoleh |
| D-26 | Referensi awal dari koleksi Postman pengguna, belum disahkan | Koleksi 244 request; struktur menunjukkan 17 label request tidak sama dengan `act`, sebagian URL contoh localhost:3003, dan tidak ada versi kontrak | Cocokkan operasi, request/response, dan versi terhadap dokumen Feeder kampus; jangan jadikan payload koleksi sebagai kontrak produksi |
| D-27 | Dikonfirmasi | Hanya mahasiswa berstatus aktif yang dapat diajukan ke yudisium | Kampus tetap memeriksa syarat akademik/administrasi secara manual; aplikasi belum mengotomatisasi eligibility selain status aktif |
| D-28 | Terbuka, kini dapat dikonfigurasi | Batas SKS per semester, penghitungan ulang mata kuliah, dan presisi IPK | Nilai awal tetap kosong; admin kampus mengisi setelah aturan disahkan |
| D-29 | Diimplementasikan bertahap | Operator PDDikti dapat mencatat mapping; uji autentikasi sandbox `GetToken` dan checklist pratinjau baca berkelompok tersedia; hasil tampil sebagai tabel dan tidak disimpan | Uji baca di sandbox dan sahkan mapping; operasi tulis/live tetap memerlukan review operator dan transport aman |
| D-30 | Dikonfirmasi | Otorisasi akses portal mahasiswa dan dosen: akun dengan izin portal (termasuk super-admin) wajib memiliki tautan profil sivitas aktif (`student_id` / `lecturer_id`); ketiadaan profil mengembalikan HTTP 403 Forbidden yang konsisten dengan pesan jelas, bukan 404 Not Found | Mencegah kebingungan administrator saat melihat tautan portal di sidebar navigasi |
| D-31 | Dikonfirmasi | Sinkronisasi aset frontend: lingkungan build Laragon menggunakan Node 18.x sedangkan bundler modern membutuhkan Node 20.12+; pembaruan `global.css` dan `app.js` disinkronkan langsung ke file build terdistribusi `public/build/assets/` | Memastikan `http://siakad.test` langsung merefleksikan perubahan visual tanpa merusak konfigurasi paket |
| D-32 | Dikonfirmasi | Tata letak global bar pencarian & form: tinggi input dan tombol dikunci identik 42px (2.625rem), `.table-search` pada desktop menggunakan baris tunggal horizontal tanpa bungkus (`flex-wrap: nowrap`), input meregang penuh ke tombol Cari di sisi kanan; spanduk periode mendorong tombol ke ujung kanan; zero inline style di Blade | Mencegah tombol Cari jatuh ke bawah kolom input dan menjaga kerapian tata letak di seluruh modul |
| D-33 | Dikonfirmasi | Perbaikan posisi modal dialog: `.ui-modal` menggunakan `position: fixed; inset: 0; margin: auto !important; height: fit-content; max-height: min(90dvh, 52rem);` dengan `backdrop-filter: blur(2px)` | Mencegah CSS reset Tailwind v4 menimpa `margin: auto` yang menyebabkan modal melayang di sudut kiri atas layar |
| D-34 | Dikonfirmasi | Pipa Integrasi Neo Feeder Push & Auto-Mapping: `NeoFeederAutoMapper` mencocokkan kode resmi entitas master (Prodi, Semester, MK, Dosen, Mahasiswa) tanpa input manual satu per satu; `NeoFeederPushExporter` mengekspor Kelas Kuliah (`InsertKelasKuliah`), Peserta Kelas (`InsertPesertaKelasKuliah`), dan Nilai Akhir (`UpdateNilaiPerkuliahanKelas`) dengan pencatatan batch & audit log | Memungkinkan pengiriman data operasional SIAKAD ke Neo Feeder kampus secara terstruktur dan aman |

Tambahkan tanggal, pemilik keputusan, opsi yang dipertimbangkan, dan alasan ketika status berubah. Rujukan: [visi](01-visi-ruang-lingkup.md), [arsitektur](03-arsitektur.md), [Feeder](09-neo-feeder.md).
