batch 1 update style & dahsboard for rec.nurinda.co.id
This commit is contained in:
1 parent
9107ffb158
commit
f39aa60384
18485 files changed
+843
-2881869
No files matched your search
@@ -0,0 +1,43 @@
|
||||
# Dashboard admin recruitment
|
||||
|
||||
Akses `/dashboard/login.php`. Dashboard memakai PHP + mysqli dan CSS responsif tanpa ketergantungan AdminLTE, CDN, Node, atau proses build. Tampilan terinspirasi dashboard modern; aplikasi ini tidak dimigrasikan ke framework Svelte.
|
||||
|
||||
## Instalasi
|
||||
|
||||
1. Siapkan database MySQL khusus recruitment, lalu impor ekspor tiga tabel `in_daper`, `in_soal`, dan `in_jawab` yang sudah tersedia. Impor hanya pada database baru/kosong; dump dapat berisi perintah DROP TABLE.
|
||||
2. Isi `includes/conn.php` sesuai database tersebut. Admin menggunakan file koneksi yang sama dengan peserta. Dashboard dan peserta selalu memakai file koneksi ini; environment `REC_DB_*` tidak digunakan.
|
||||
3. Dari terminal server, di folder root project, jalankan:
|
||||
|
||||
```sh
|
||||
php dashboard/tools/create-admin.php
|
||||
```
|
||||
|
||||
Isi nama, email, dan password admin (minimal 12 karakter). Password disembunyikan saat diketik dan disimpan sebagai hash. Perintah otomatis membuat tabel `rec_admin` menggunakan migrasi `dashboard/migrations/001_admin.sql`. Akun yang sudah ada tidak ditimpa. Tidak ada akun/password admin bawaan.
|
||||
4. Buka `/dashboard/login.php`, lalu masuk dengan akun yang baru dibuat.
|
||||
|
||||
Jika pengelola database hanya dapat membuat tabel melalui phpMyAdmin, jalankan migrasi `001_admin.sql` lebih dahulu, kemudian jalankan perintah CLI pembuat akun. PHP memerlukan ekstensi `mysqli`, dukungan mysqlnd (`get_result`), dan terminal interaktif untuk pembuatan akun. PHP minimum 7.3; pengujian dilakukan pada PHP 8.3/MySQL 8.0.
|
||||
|
||||
## Perilaku
|
||||
|
||||
- Daftar peserta: pencarian nama/email/posisi, filter seleksi, pagination 25 data, penambahan peserta, progres empat fase, dan tautan hasil.
|
||||
- Tahap seleksi mempertahankan kode lama: `0` calon kandidat, `1` tidak dilanjutkan, `2` tes offline/interview, `3` diterima, `99` demo/arsip. Status ini dipilih admin secara manual.
|
||||
- Hasil menampilkan seluruh jawaban dan kunci kategori 1–4. Admin menilai benar (`10`) atau salah (`0`). Seluruh jawaban kategori tersebut harus dinilai sebelum finalisasi. Nilai dapat dikoreksi dengan menyimpan ulang.
|
||||
- Finalisasi tersedia setelah peserta menyelesaikan empat fase (`level >= 4`). Data yang kehilangan referensi soal perlu diperbaiki sebelum finalisasi.
|
||||
- Kategori 5 (kepribadian): menampilkan pilihan L/R dan jawaban, tanpa skor atau interpretasi otomatis.
|
||||
- Ambang skor awal `300`, mengikuti halaman daftar lama. Halaman detail lama menggunakan `320`; sekarang seluruh halaman admin memakai satu nilai. Ubah environment `REC_PASS_SCORE` menjadi `320` jika itu kebijakan yang digunakan. Label lulus skor tidak otomatis mengubah keputusan seleksi.
|
||||
- Bank soal: pencarian, filter lima kategori, pagination, tambah, edit, duplikat, dan hapus. Soal yang sudah digunakan terkunci dari edit/hapus untuk menjaga hasil historis. Duplikasi membuat soal tambahan yang ikut pengacakan tes; ini bukan penggantian/penonaktifan soal lama.
|
||||
- Session admin terpisah dari peserta, kedaluwarsa setelah satu jam tanpa aktivitas. Form mutasi memakai token CSRF; query input memakai prepared statements dan keluaran di-escape.
|
||||
- Lima login gagal dalam satu sesi browser menyebabkan jeda lima menit. Untuk produksi, terapkan pembatasan percobaan login tambahan pada web server/reverse proxy.
|
||||
|
||||
## Penempatan server
|
||||
|
||||
Gunakan HTTPS. Jangan menyimpan dump SQL dalam document root produksi; `.gitignore` mengecualikan dump, dan `.htaccess` root memblokir akses HTTP ke SQL pada Apache/LiteSpeed yang mengizinkan override. Jika memakai Nginx, terapkan aturan penolakan untuk dump dan folder `dashboard/tools/` serta `dashboard/migrations/` pada konfigurasi server. PHP development server tidak memproses `.htaccess`; pakai hanya untuk pengujian lokal.
|
||||
|
||||
|
||||
## Validasi yang dilakukan
|
||||
|
||||
SQL diimpor ke database MySQL sementara lokal. Login/logout, pembatasan akses, penolakan CSRF, pencarian/filter, detail hasil, tambah peserta sintetis, tambah/edit soal, penguncian soal bersejarah, penolakan nilai tidak valid, finalisasi/koreksi nilai, serta pembaruan tahap diuji melalui HTTP. Seluruh file PHP melewati pemeriksaan sintaks. Tampilan diperiksa di browser pada ukuran desktop dan mobile. Pengujian tidak mengubah database produksi.
|
||||
|
||||
## Preview lokal yang sudah disiapkan
|
||||
|
||||
Jalankan `./dev/start-local.sh` dari root project. Dashboard berada di port 8086 dan phpMyAdmin di port 8087; detail, kredensial, backup, dan cara menghentikan layanan ada di [dev/README.md](../dev/README.md). Tabel admin baru menggunakan `email`, `nama_de`, `nama_be`, `idkar`, dan `password_hash` selain ID; script pembuat admin menerima identitas tersebut. Migrasi `002_admin_identity.sql` menangani tabel admin versi lama tanpa mengganti hash password.
|
||||
Reference in new issue
Block a user