# Cara Testing Manual SIPORA (Fase 1)

Catatan ini untuk dipakai kapan pun Anda siap coba aplikasi langsung di browser.

## 1. Nyalakan environment

MySQL berjalan sebagai proses biasa (bukan Windows Service), jadi harus dinyalakan manual setiap habis restart PC:

```
D:\sipora\tools\dev-mysql-start.bat
```

Biarkan jendela itu tetap terbuka (atau jalankan dari terminal terpisah). Kalau Anda sudah sempat memasang MySQL sebagai Windows Service (perintah admin yang pernah saya berikan), langkah ini tidak perlu — cek dulu dengan `Get-Service MySQLSipora` di PowerShell.

Lalu jalankan server PHP dari folder project:

```
cd D:\sipora
php -S localhost:8000 -t public
```

Buka `http://localhost:8000` di browser.

## 2. Akun untuk login

Ada akun Super Admin dari testing sebelumnya (tersimpan di database lokal, bukan di git):

- **Username:** `superadmin`
- **Password:** `TestAdmin123`
- URL login staf: `http://localhost:8000/login`

Kalau akun ini sudah tidak ada / mau buat baru:

```
cd D:\sipora
php tools\create-admin.php --username=NAMA --email=EMAIL --password=PASSWORDMINIMAL10KARAKTER
```

Login siswa terpisah, di `http://localhost:8000/siswa/login` (butuh kode sekolah + token — dibuat lewat alur di bawah).

## 3. Alur yang paling penting untuk dicoba

Urutan ini mengikuti alur nyata sebuah sekolah baru:

1. Login sebagai Super Admin → **Sekolah** → buat sekolah baru (kode unik, mis. `SMP01`).
2. Dari daftar sekolah → **Tambah Admin** → buat akun Admin Sekolah. Karena `APP_DEBUG=true` di `.env`, tautan aktivasi password langsung ditampilkan di layar (di produksi ini akan dikirim, bukan ditampilkan).
3. Buka tautan aktivasi itu → set password → login sebagai Admin Sekolah.
4. Sebagai Super Admin lagi: buka sekolah tsb → **Periode** → buat periode (tandai sebagai default).
5. Sebagai Super Admin: buka sekolah tsb → **Kuota** → tetapkan batas kuota untuk periode itu.
6. Sebagai Admin Sekolah: **Kelas** → buat minimal satu kelas.
7. Sebagai Admin Sekolah: **Guru BK** → buat satu akun Guru BK (sama seperti Admin Sekolah, ada tautan aktivasi mode-dev).
8. Sebagai Admin Sekolah: **Siswa** → tambah siswa manual, ATAU **Impor Siswa** → unggah CSV (kolom: `nis,nisn,nama,kelas,kode_guru_bk`).
9. Sebagai Admin Sekolah: **Token Siswa** → klik "Tampilkan" untuk lihat token siswa yang baru dibuat.
10. Buka tab/browser baru → `http://localhost:8000/siswa/login` → masukkan kode sekolah + token → harus berhasil masuk (halaman masih placeholder "belum ada instrumen", karena instrumen baru dibangun di Fase 2).

## 4. Yang perlu diperhatikan saat mencoba (bukan bug kalau muncul, ini memang disengaja)

- Password/token baru **hanya ditampilkan sekali** di layar (mode dev) — kalau reload halaman, hilang. Itu memang tujuannya (tidak disimpan plaintext).
- Admin Sekolah **tidak bisa** menghapus siswa yang sudah pernah mengerjakan instrumen (belum relevan di Fase 1 karena instrumen belum ada, jadi semua siswa masih bisa dihapus).
- Kalau kuota habis, sistem menolak menambah siswa baru dengan pesan jelas — coba set kuota kecil (misal 2) lalu tambah siswa ketiga untuk lihat pesannya.
- Coba buka halaman Admin Sekolah A sambil login sebagai Admin Sekolah B (ganti URL manual) — harus selalu ditolak (403/404), tidak pernah menampilkan data sekolah lain.

## 5. Halaman untuk cek sebagai Super Admin

- `/superadmin/schools` — daftar & kelola sekolah
- `/superadmin/audit` — log audit lintas sekolah, bisa difilter
- `/superadmin/health` — status kesehatan sistem (database, storage, migrasi)

## 6. Kalau ada yang terasa aneh/error

Screenshot atau salin pesan errornya (kalau `APP_DEBUG=true` pesan cukup jelas; kalau muncul "Kode referensi: xxxxx" itu request ID — bisa dicari di `storage/logs/YYYY-MM-DD.log`). Kirim ke saya, saya cek dari log dan kode.

---

*Dibuat otomatis setelah checkpoint Fase 1 (tag `v0.1-fase1`), 2026-09-04.*
