DOKUMENTASI ALUR SISTEM UJIAN ONLINE LSP PROMIGAS
Dokumen ini menjelaskan alur kerja (system workflow), arsitektur data, mekanisme keamanan (anti-cheating), serta panduan operasional aplikasi Sistem Ujian Online Lembaga Sertifikasi Profesi (LSP) PROMIGAS.
1. GAMBARAN UMUM & PRINSIP DESAIN#
Aplikasi Ujian Online LSP PROMIGAS dirancang khusus untuk pelaksanaan uji kompetensi teori pilihan ganda berbasis komputer (Computer Based Test - CBT) bagi para asesi di sektor industri minyak dan gas bumi.
Karakteristik Utama Sistem:#
- Dua Hak Akses Terisolasi: Administrator (pengelola & pengawas ujian) dan Asesi (peserta ujian).
- Penetapan Ujian Otomatis (Zero-Choice Exam): Asesi tidak memilih ujian sendiri. Ujian ditetapkan secara otomatis berdasarkan Skema Sertifikasi yang didaftarkan oleh admin.
- Server-Authoritative: Seluruh perhitungan waktu (countdown timer), pengacakan soal, perekaman jawaban, evaluasi skor, dan batas toleransi pelanggaran dikendalikan 100% oleh server (zona waktu WIB / Asia/Jakarta).
- Proteksi Pengawasan Ketat: Dilengkapi deteksi perpindahan tab, kehilangan fokus jendela, deteksi multi-perangkat (session takeover), dan pemblokiran fungsi inspeksi peramban.
2. ARSITEKTUR ENTITAS & RELASI DATA#
erDiagram
SKEMA ||--o| EXAM : "memiliki 1 konfigurasi"
SKEMA ||--o{ ASESI : "diikuti oleh banyak"
EXAM ||--o{ QUESTION : "memiliki bank soal"
EXAM ||--o{ EXAM_ATTEMPT : "mencatat pengerjaan"
USER ||--o| ASESI : "kredensial login asesi"
ASESI ||--o{ EXAM_ATTEMPT : "melakukan percobaan ujian"
EXAM_ATTEMPT ||--o{ ANSWER : "menyimpan pilihan jawaban"
EXAM_ATTEMPT ||--o{ VIOLATION_LOG : "merekam insiden kecurangan"
Penjelasan Relasi:#
- Skema Sertifikasi (
skemas): Mewadahi standar kompetensi (contoh: Operator K3 Industri Migas). Setiap skema memiliki maksimal 1 konfigurasi ujian aktif. - Ujian (
exams): Mengatur parameter teknis (durasi menit, passing score, kuota soal, acak soal, toleransi pelanggaran, status jadwal mulai/selesai, dan tanggal rilis pengumuman). - Soal (
questions): Butir pertanyaan pilihan ganda (A, B, C, D) beserta kunci jawaban yang tersimpan privat di server. - Asesi (
asesis): Data peserta yang terdaftar pada skema tertentu dengan akun login berupa Nomor Asesi dan PIN 6-digit. - Sesi Pengerjaan (
exam_attempts): Rekaman transaksi saat asesi memulai ujian. Menyimpan daftar urutan ID soal yang didapat (question_ids), batas waktu kedaluwarsa (expires_at), skor akhir, dan status kelulusan. - Jawaban (
answers): Pilihan opsi asesi per nomor soal beserta cap waktu penyimpanan (timestamp). - Log Pelanggaran (
violation_logs): Catatan insiden perilaku mencurigakan yang dilaporkan peramban klien selama ujian berlangsung.
3. ALUR PENGGUNA: ADMINISTRATOR#
flowchart TD
A[Admin Login] --> B[Dashboard Monitoring & Statistik]
B --> C[Manajemen Skema Sertifikasi]
B --> D[Manajemen Ujian & Bank Soal]
B --> E[Manajemen Data Asesi & PIN]
B --> F[Live Monitoring Ujian Berlangsung]
B --> G[Rekapitulasi Hasil & Lembar Verifikasi]
B --> H[Log Aktivitas Pelanggaran]
D --> D1[Buat Ujian & Atur Jadwal WIB]
D --> D2[Input Soal / Impor CSV]
E --> E1[Input Asesi / Impor CSV]
E --> E2[Distribusi Nomor Asesi & PIN]
E --> E3[Reset PIN / Reset Sesi Ujian]
F --> F1[Pantau Sisa Waktu & Pelanggaran Real-time]
F --> F2[Aksi Hentikan Paksa / Force Terminate]
G --> G1[Buka/Tutup Publikasi Nilai ke Asesi]
G --> G2[Ekspor Hasil Ujian ke CSV]
G --> G3[Cetak Berita Acara / Lembar Hasil Ujian]
Langkah Operasional Admin:#
- Login Admin: Masuk melalui
/admin/loginmenggunakan Email dan Password. - Konfigurasi Skema: Membuat skema sertifikasi LSP (nama dan kode skema).
- Pengaturan Ujian:
- Menghubungkan ujian dengan skema terkait.
- Menentukan tanggal dan jam pelaksanaan (WIB), durasi pengerjaan, nilai ambang kelulusan (passing score), kuota jumlah soal, dan toleransi pelanggaran maksimal.
- Pengelolaan Bank Soal:
- Menginput soal secara manual atau menggunakan fitur Impor CSV.
- Template CSV telah disediakan sistem dengan kolom:
pertanyaan, pilihan_a, pilihan_b, pilihan_c, pilihan_d, jawaban.
- Pendaftaran Asesi:
- Mendaftarkan peserta secara manual atau melalui Impor CSV.
- Jika kolom PIN dikosongkan pada file CSV, sistem secara otomatis men-generate PIN unik 6-digit.
- Admin dapat mencetak atau mereset PIN asesi jika lupa.
- Live Monitoring Ujian:
- Memantau peserta yang sedang online (heartbeat aktif dalam 45 detik terakhir).
- Melihat sisa waktu pengerjaan dan jumlah pelanggaran yang dilakukan setiap peserta.
- Berhak melakukan tindakan Hentikan Ujian secara manual dengan menyertakan alasan.
- Pengelolaan Hasil & Kelulusan:
- Memeriksa lembar verifikasi detail (pilihan asesi vs kunci jawaban).
- Mengatur fitur Publikasi Hasil: Hasil ujian dapat disembunyikan sampai waktu pengumuman resmi ditentukan panitia.
- Mengunduh rekap hasil dalam format spreadsheet CSV atau mencetak berkas laporan resmi.
4. ALUR PENGGUNA: ASESI (PESERTA UJIAN)#
flowchart TD
A[Buka Halaman Login] --> B[Input Nomor Asesi & PIN 6 Digit]
B --> C{Autentikasi Berhasil?}
C -- Tidak --> B
C -- Ya --> D[Halaman Utama Asesi / Beranda]
D --> E[Cek Status Ujian Skema Terdaftar]
E -->|Belum Mulai / Terjadwal| F[Halaman Instruksi & Pakta Integritas]
F -->|Centang Setuju & Klik Mulai| G[Ruang Ujian Online / CBT Lockdown]
G --> H[Pengerjaan Soal Pilihan Ganda]
H -->|Auto-save jawaban per butir| H
H -->|Deteksi Pelanggaran Browser| I{Mencapai Batas Pelanggaran?}
I -- Ya --> J[Ujian Dihentikan Otomatis / Terminated]
I -- Tidak --> H
H -->|Waktu Habis / Klik Kirim Ujian| K[Sesi Selesai / Auto-Grading Server]
K --> L[Halaman Selesai Ujian]
L --> M{Hasil Dipublikasikan Admin?}
M -- Belum --> N[Pesan: Menunggu Jadwal Pengumuman Resmi]
M -- Sudah --> O[Tampilan Skor, Kelulusan & Cetak Hasil]
Tahapan Pengerjaan Ujian oleh Asesi:#
- Autentikasi Mandiri:
- Asesi mengakses
/logindan memasukkan Nomor Asesi serta PIN. - Tidak memerlukan pendaftaran akun baru secara mandiri.
- Asesi mengakses
- Beranda Ujian:
- Asesi langsung melihat ringkasan skema sertifikasi yang diikutinya, durasi ujian, dan jadwal pelaksanaan.
- Instruksi & Pakta Integritas:
- Sebelum lembar soal terbuka, asesi wajib membaca tata tertib ujian dan mencentang persetujuan kepatuhan anti-kecurangan.
- Mengerjakan Ujian:
- Layar otomatis meminta mode layar penuh (fullscreen).
- Terdapat navigasi panel nomor soal di sebelah kanan dengan indikator status: nomor yang sudah dijawab (hijau) dan belum dijawab (abu-abu).
- Setiap pilihan jawaban langsung disimpan secara instan (auto-save) ke server melalui panggilan latar belakang (background AJAX).
- Penyelesaian Ujian:
- Kirim Manual: Asesi menekan tombol Kirim Jawaban dan mengonfirmasi pengumpulan.
- Kirim Otomatis (Timeout): Bila waktu habis, sistem otomatis menutup sesi dan mengumpulkan jawaban terakhir.
- Penghentian Otomatis (Diskualifikasi): Bila pelanggaran melampaui batas maksimal, ujian langsung dihentikan oleh sistem.
- Melihat Pengumuman Hasil:
- Jika admin belum membuka status pengumuman, halaman hasil menampilkan status bahwa jawaban sedang diverifikasi.
- Jika pengumuman telah dibuka, asesi dapat melihat skor nilai, keterangan kelulusan (LULUS / BELUM KOMPETEN), serta mencetak bukti evaluasi.
5. MEKANISME PENGAWASAN & ANTI-KECURANGAN (ANTI-CHEATING)#
Untuk menjamin kredibilitas sertifikasi LSP, sistem dilengkapi pengawasan berlapis:
| Jenis Insiden | Cara Kerja Deteksi | Tindakan Sistem |
|---|---|---|
| Perpindahan Tab / Jendela | Event visibilitychange & window.blur saat asesi membuka tab baru atau aplikasi desktop lain. |
Muncul peringatan popup modal di layar, mencatat log kejadian, dan menambah hitungan pelanggaran. |
| Deduplikasi Kejadian | Mencegah 1 aksi fisik memicu 2 log ganda (toleransi 3 detik). | Log kejadian kedua ditandai sebagai info lanjutan tanpa menambah angka pelanggaran secara berulang. |
| Layar Keluar dari Fullscreen | Event fullscreenchange saat tombol Esc atau F11 ditekan. |
Memaksa asesi kembali ke layar penuh agar lembar soal dapat dibaca kembali. |
| Pencegahan Salin & Klik Kanan | Pemblokiran event contextmenu, copy, cut, paste, dan selectstart. |
Mencegah pencarian teks pertanyaan ke mesin pencari atau forum diskusi. |
| Pemblokiran Shortcut / DevTools | Mendeteksi tombol pintas F12, Ctrl+Shift+I, Ctrl+Shift+J, Ctrl+U, Ctrl+P, dan Alt+Tab. |
Aksi dinetralkan (preventDefault) dan dicatat ke audit log. |
| Proteksi Satu Perangkat (Session Takeover) | Penukaran token sesi rahasia (session_token) pada browser asesi. |
Jika akun dibuka di laptop/browser lain, sesi lama seketika terkunci (HTTP 423) dan admin menerima notifikasi pengambilalihan sesi. |
| Diskualifikasi Otomatis | Parameter max_violations dan auto_terminate pada konfigurasi ujian. |
Sesi langsung ditutup paksa dengan status dihentikan begitu pelanggaran terakumulasi mencapai batas. |
6. SISTEM PENILAIAN, TIMER SERVER & PENGUMUMAN HASIL#
1. Timer Berorientasi Server (Server-Authoritative)#
- Waktu pengerjaan tidak dihitung berdasarkan jam lokal di laptop asesi.
- Saat ujian dimulai, server menyimpan
expires_at = now() + durasi. - Setiap kali asesi mengirim jawaban atau heartbeat, server menghitung sisa waktu nyata: $$\text{Sisa Detik} = \max(0, \text{expires_at} - \text{now()})$$
- Terdapat toleransi latensi jaringan (grace period) sebesar 10 detik untuk memfasilitasi pengiriman jawaban terakhir saat detik-detik akhir.
- Perintah terjadwal Laravel (
exams:finalize-expired) berjalan setiap menit untuk otomatis memfinalisasi sesi peserta yang terputus atau menutup peramban tanpa mengklik submit.
2. Evaluasi Skor Otomatis (Auto-Grading)#
- Skor dihitung secara otomatis saat ujian diserahkan: $$\text{Nilai Akhir} = \text{round}\left(\frac{\text{Jumlah Jawaban Benar}}{\text{Total Soal}} \times 100, 2\right)$$
- Status Kelulusan: $$\text{Kelulusan} = \begin{cases} \text{LULUS (KOMPETEN)}, & \text{jika } \text{Nilai Akhir} \ge \text{Passing Score} \ \text{BELUM KOMPETEN}, & \text{jika } \text{Nilai Akhir} < \text{Passing Score} \end{cases}$$
3. Gerbang Pengumuman Hasil (Result Release Gating)#
- Nilai dan kunci jawaban bersifat rahasia dan tidak disematkan ke kode HTML ruang ujian.
- Nilai asesi hanya dapat dilihat oleh peserta jika memenuhi dua syarat:
- Parameter
result_visibletelah diaktifkan oleh Admin. - Waktu
result_release_attelah tercapai (atau diset langsung tampil).
- Parameter
7. INTEGRITAS DATA & PROTEKSI BACKEND#
Backend telah diaudit dan diperkuat dengan standar keamanan berikut:
- Pencegahan Kondisi Lomba (Race Condition Defense):
- Seluruh mutasi sesi pada
ExamAttemptServicemenggunakan transaksi database dengan penguncian baris baris data (lockForUpdate()). - Jawaban tidak akan pernah bisa disisipkan atau diubah jika status ujian sudah beralih ke
selesaiataudihentikan.
- Seluruh mutasi sesi pada
- Proteksi Integritas Relasional Database:
- Soal tidak dapat dihapus jika ujian sudah memiliki riwayat pengerjaan asesi.
- Skema tidak dapat dihapus jika masih menaungi ujian aktif.
- Skema peserta tidak dapat diubah oleh admin ketika ujian peserta sedang berlangsung.
- Akun peserta tidak dapat dihapus selama ujiannya berstatus
sedang_mengerjakan.
- Isolasi Respons API JSON:
- Semua rute
/ujian/api/*dikonfigurasi pada exception handler sistem agar selalu merespons format JSON murni, mencegah galat parsing JavaScript jika terjadi kegagalan validasi atau sesi kedaluwarsa.
- Semua rute
- Pembatasan Frekuensi Permintaan (Rate Limiting):
- Rate limit login: Maksimal 5 percobaan per menit per kombinasi identitas + IP address.
- Rate limit API ujian: Maksimal 180 permintaan per menit per peserta aktif untuk menjamin kelancaran autosave tanpa risiko DDoS.
8. KREDENSIAL DEFAULT & FORMAT DATA UJI COBA#
1. Konfigurasi Database (MySQL / phpMyAdmin Laragon)#
- Koneksi: MySQL (
127.0.0.1:3306) - Nama Database:
ujian-promigas - Username:
root - Password: (kosong)
- Charset / Collation:
utf8mb4/utf8mb4_unicode_ci
2. Akun Administrator#
- URL Login Admin:
/admin/login - Email:
admin@promigas.id - Password:
admin123
2. Daftar Skema Sertifikasi Resmi (Database Seeder)#
- K3-OP: Skema Sertifikasi Okupasi Operator K3 Industri Migas
- K3-PW: Skema Sertifikasi Okupasi Pengawas K3 Industri Migas
- SCM-PLAN: Skema Sertifikasi Klaster Perencanaan Pengadaan Barang & Jasa Rantai Suplai Migas
- SCM-EXEC: Skema Sertifikasi Klaster Pelaksanaan Pengadaan Barang & Jasa Rantai Suplai Migas
- SCM-ASSET: Skema Sertifikasi Klaster Pengelolaan Aset Rantai Suplai Migas
3. Akun Asesi (Peserta Uji Coba)#
Seluruh asesi berikut menggunakan PIN default: 123456 melalui URL /login:
| Nomor Asesi | Nama Lengkap Peserta | Skema Sertifikasi |
|---|---|---|
AS-001 |
Cut Fanni Ayutaya | Operator K3 Industri Migas |
AS-002 |
Elita Dewiastanti | Operator K3 Industri Migas |
AS-003 |
Adrian Wisnu Hercahyo | Pengawas K3 Industri Migas |
AS-004 |
Ayuning Pramesthi Pintoarsi | Pengawas K3 Industri Migas |
AS-005 |
Irwanda Andrajaya | Perencanaan Pengadaan Barang & Jasa |
AS-006 |
Windy Agnestien | Perencanaan Pengadaan Barang & Jasa |
AS-007 |
Deasy Natalia Asriningtyas | Pelaksanaan Pengadaan Barang & Jasa |
AS-008 |
Rezi Ramadhani Soemarsono | Pelaksanaan Pengadaan Barang & Jasa |
AS-009 |
Khairunnisa | Pengelolaan Aset Rantai Suplai Migas |
AS-010 |
Ni Kadek Karmayanti | Pengelolaan Aset Rantai Suplai Migas |
Dokumentasi ini disusun sebagai acuan teknis, pengembangan lanjutan, serta panduan operasional pengawas ujian LSP PROMIGAS.