# Sanggraloka One — Checklist UAT Owner

Versi 1.0 · 9 Juli 2026 · Format komentar: sebut nomor butir (mis. "3.2 salah: …").
URL: http://localhost:8123 · Akun uji: `qc.gm` `qc.hr_admin` `qc.supervisor`
`qc.employee` `qc.sales_manager` `qc.sales` `qc.ewm` `qc.design` `qc.fc`
(password semua: `password`).

Tanda: [ ] belum · [x] lolos · [!] ada masalah (tulis komentar).

## 1. Login, Shell & Tema (login: qc.gm)
- [ ] 1.1 Buka http://localhost:8123 → halaman login berjudul "Sanggraloka One", brand hijau.
- [ ] 1.2 Login `qc.gm`/`password` → masuk Dashboard tanpa error.
- [ ] 1.3 Sidebar kiri: grup menu Bersama / SDM / Sales & Marketing / Maintenance; item aktif ber-gradien; ikon alam/luxury.
- [ ] 1.4 Topbar: search, lonceng (badge angka), avatar inisial benar (bukan "[").
- [ ] 1.5 Dashboard: kartu KPI ringkas 3 modul (task open, cuti menunggu, penawaran merah, WO) terisi angka.
- [ ] 1.6 Profil Saya → ganti tema **Sawah Senja** → seluruh aplikasi berubah hangat; ganti **Hutan Malam** → gelap, teks terbaca; kembalikan ke **Rimba Terang**.
- [ ] 1.7 Profil Saya: kartu kompetensi/jobdesk/kontrak/slip tampil (kontrak tidak lagi "belum tersedia").

## 2. Papan Task Terpadu & Kalender (qc.gm)
- [ ] 2.1 Menu Task → papan status: kolom Menunggu/On Progress/Done; kartu ber-badge FIX/CREW/SELL; overdue merah.
- [ ] 2.2 Toggle **Kanban Workflow** → pilih template "procurement" → kolom = Diminta→Di-PO→Indent→Barang Datang→Diserahkan→Done; ada kartu contoh.
- [ ] 2.3 Klik kartu task → detail: stepper journey, riwayat tahapan, tombol "Majukan Tahap"; majukan satu tahap → kartu pindah kolom + log bertambah.
- [ ] 2.4 Di detail task: baris "Indikator KPI" tampil (kaitan KPI otomatis); assignee bisa diklik.
- [ ] 2.5 Kalender Tim → grid bulan LURUS (7 kolom rapi), hari ini ber-ring, weekend beda tint, chip berwarna sumber, legend tampil; klik chip WO → halaman WO.
- [ ] 2.6 Kalender Saya → shift/cuti/task tampil; klik item → halaman terkait.

## 3. Modul FIX — Maintenance (qc.gm)
- [ ] 3.1 Work Order (list): kolom No. WO / Lokasi / Aset / Teknisi SEMUA bisa diklik.
- [ ] 3.2 Klik header kolom Lokasi → sort naik/turun benar; kolom lain juga.
- [ ] 3.3 Tombol **Export Excel** → file .xlsx terunduh & terbuka benar (kolom sesuai, semua baris).
- [ ] 3.4 Filter Lokasi = **autocomplete** (ketik "kamar" → muncul pilihan; pilih → list terfilter).
- [ ] 3.5 Detail WO: lokasi/aset/teknisi link; panel biaya; foto.
- [ ] 3.6 Menu Lokasi ada; list: kolom OO tampil; kamar RM-0803/0805 ter-highlight merah + badge OO.
- [ ] 3.7 Detail lokasi OO: banner "⛔ OUT OF ORDER sejak … — alasan (oleh …)"; daftar aset & WO di lokasi itu (semua link).
- [ ] 3.8 Di detail lokasi normal: form "Tandai OO/OOS" (alasan wajib) → set → banner muncul; "Kembalikan Beroperasi" → hilang.
- [ ] 3.9 Rekap Harian (briefing): tile "Lokasi OO" merah; daftar WO ber-link.
- [ ] 3.10 Aset: list sortable+export; detail aset: riwayat WO, dokumen, kesehatan; klik lokasi/vendor.
- [ ] 3.11 Halaman **part** baru: klik nama part dari WO waiting_parts / parts → detail stok + pemakaian per WO.
- [ ] 3.12 Halaman **vendor** baru: dari kontrak/daftar vendor → detail kontrak + WO vendor + rating.

## 4. Modul CREW — SDM (qc.hr_admin)
- [ ] 4.1 Karyawan (list): sortable semua kolom (termasuk Posisi), export, filter posisi autocomplete; nama → halaman karyawan.
- [ ] 4.2 Detail karyawan 360°: identitas + 6 section (absensi 30 hari, cuti, kompetensi→link, KPI, teguran, task→link).
- [ ] 4.3 Absensi: rekap terisi (dummy 2 minggu HK); sanggah tampil.
- [ ] 4.4 Cuti: 3 status contoh (approved/pending/sakit); approval jalan.
- [ ] 4.5 Roster: grid minggu; nama karyawan link.
- [ ] 4.6 Jobdesk: list posisi berversi; acknowledge.
- [ ] 4.7 Kompetensi: matrix; klik kompetensi → halaman **kompetensi** baru (rubrik level + siapa pemegangnya + course terkait).
- [ ] 4.8 University: list course (fakultas link); buka course HK-L1-W01 → MATERI TAMPIL LANGSUNG (bukan path); course GEN-21 → artikel butterfly + flashcard flip.
- [ ] 4.9 **Kerjakan Test** → modal satu-soal-per-layar, progress bar, Tinjau Jawaban, kirim → ring skor + LULUS/BELUM; attempt tercatat; placement test di University jalan sama.
- [ ] 4.10 KPI: indikator per dept; baris source='task' menampilkan "Task: x/y tepat waktu".
- [ ] 4.11 Discipline/Rekrutmen/Onboarding/Engagement terisi & rapi; kandidat → halaman **kandidat** baru (funnel stepper + CV + hasil test).
- [ ] 4.12 Guest Cards: deck tamu hari ini (VIP, sapaan KR/FR); upload guest list jalan (opsional).
- [ ] 4.13 Payroll (zona merah): qc.hr_admin bisa buka; parameter tampil.

## 5. Modul SELL — S&M (qc.sales_manager)
- [ ] 5.1 Dashboard S&M: OTB/pickup/forecast terisi; top agent → link partner.
- [ ] 5.2 Mitra (list) → detail **Agent 360°**: kontak, kontrak (badge expired vs aktif), penawaran (link), booking (link), **Tamu dari agent ini**, **estimasi komisi**.
- [ ] 5.3 Kanban Penawaran: kolom lengkap; kartu merah umur >7 hari; pindah kartu wajib catatan; LOST wajib alasan; klik no. penawaran → halaman **penawaran** baru (journey + kronologi).
- [ ] 5.4 Booking: list + detail (produk & mitra link, deposit); kalender venue: chip booking link; bentrok slot ditolak (coba booking dobel di venue+jam sama).
- [ ] 5.5 Produk: 21 experiences, harga "Belum ditetapkan"; klik → halaman **produk** baru (booking history + revenue).
- [ ] 5.6 KOL: list; klik nama → halaman **KOL detail** (rate card, kunjungan + gerbang photo release, dokumen, hasil).
- [ ] 5.7 Upload report PMS + Review Queue + Marketing keyword: halaman rapi & berfungsi.
- [ ] 5.8 Studio AI: panel "belum dikonfigurasi" + form manual jalan (API key sengaja belum diisi).

## 6. Keamanan & Role (pindah-pindah akun)
- [ ] 6.1 `qc.employee`: menu jauh lebih sedikit; TIDAK ada Work Order/Payroll di menu; akses paksa URL work-orders.php → 403.
- [ ] 6.2 `qc.employee`: klik nama rekan di halaman yang boleh → **profil publik** (nama/jabatan/foto saja, TANPA NIK/rekening); akses paksa employee.php?id=orang-lain → 403.
- [ ] 6.3 `qc.employee`: nama aset di halaman yang dia lihat = teks polos (bukan link).
- [ ] 6.4 `qc.design`: bisa KOL & Produk & konten; nama mitra di dashboard = teks polos; partner.php/quotes.php → 403.
- [ ] 6.5 `qc.fc`: bisa baca partner/booking/penawaran + payroll (zona merah) — tapi tidak bisa kelola SDM.
- [ ] 6.6 `qc.supervisor`: approval & inspeksi timnya; tanpa payroll.
- [ ] 6.7 Autocomplete: ketik `' OR 1=1 --` di filter → hasil kosong biasa (tidak error/tidak bocor).
- [ ] 6.8 Export: hasil xlsx TIDAK memuat markup/link (teks polos).
- [ ] 6.9 Logout → halaman login; back button tidak membuka halaman dalam.

## 7. Umum
- [ ] 7.1 Tidak ada halaman menampilkan Warning/Fatal PHP.
- [ ] 7.2 Semua listing punya toolbar filter + kolom sortable + Export Excel.
- [ ] 7.3 Semua penyebutan object (yang Anda berwenang) bisa diklik.
- [ ] 7.4 Bahasa/label konsisten; status seragam Menunggu/On Progress/Done/Not Done/Cancel di task.
