Spesifikasi Sistem Standar BNSP & LSP PROMIGAS Estimasi Baca: ~11 Menit

Alur Kerja & Spesifikasi Teknis Sistem

Dokumentasi komprehensif alur kerja sistem, arsitektur basis data relasional, mekanisme zero-choice exam, dan kepatuhan standar keamanan CBT.

Ringkasan Poin Penting Panduan:

1 Dua hak akses terisolasi (Admin vs Asesi)
2 Prinsip penetapan ujian otomatis (Zero-Choice Exam)
3 Perhitungan timer, scoring, dan validasi 100% server-authoritative (WIB)
4 Arsitektur data relasi skema, ujian, bank soal, asesi, attempt, dan log pelanggaran
5 Mekanisme proteksi browser lockdown dan session takeover prevention

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:#

  1. Skema Sertifikasi (skemas): Mewadahi standar kompetensi (contoh: Operator K3 Industri Migas). Setiap skema memiliki maksimal 1 konfigurasi ujian aktif.
  2. Ujian (exams): Mengatur parameter teknis (durasi menit, passing score, kuota soal, acak soal, toleransi pelanggaran, status jadwal mulai/selesai, dan tanggal rilis pengumuman).
  3. Soal (questions): Butir pertanyaan pilihan ganda (A, B, C, D) beserta kunci jawaban yang tersimpan privat di server.
  4. Asesi (asesis): Data peserta yang terdaftar pada skema tertentu dengan akun login berupa Nomor Asesi dan PIN 6-digit.
  5. 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.
  6. Jawaban (answers): Pilihan opsi asesi per nomor soal beserta cap waktu penyimpanan (timestamp).
  7. 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:#

  1. Login Admin: Masuk melalui /admin/login menggunakan Email dan Password.
  2. Konfigurasi Skema: Membuat skema sertifikasi LSP (nama dan kode skema).
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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:#

  1. Autentikasi Mandiri:
    • Asesi mengakses /login dan memasukkan Nomor Asesi serta PIN.
    • Tidak memerlukan pendaftaran akun baru secara mandiri.
  2. Beranda Ujian:
    • Asesi langsung melihat ringkasan skema sertifikasi yang diikutinya, durasi ujian, dan jadwal pelaksanaan.
  3. Instruksi & Pakta Integritas:
    • Sebelum lembar soal terbuka, asesi wajib membaca tata tertib ujian dan mencentang persetujuan kepatuhan anti-kecurangan.
  4. 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).
  5. 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.
  6. 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:
    1. Parameter result_visible telah diaktifkan oleh Admin.
    2. Waktu result_release_at telah tercapai (atau diset langsung tampil).

7. INTEGRITAS DATA & PROTEKSI BACKEND#

Backend telah diaudit dan diperkuat dengan standar keamanan berikut:

  1. Pencegahan Kondisi Lomba (Race Condition Defense):
    • Seluruh mutasi sesi pada ExamAttemptService menggunakan transaksi database dengan penguncian baris baris data (lockForUpdate()).
    • Jawaban tidak akan pernah bisa disisipkan atau diubah jika status ujian sudah beralih ke selesai atau dihentikan.
  2. 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.
  3. 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.
  4. 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)#

  1. K3-OP: Skema Sertifikasi Okupasi Operator K3 Industri Migas
  2. K3-PW: Skema Sertifikasi Okupasi Pengawas K3 Industri Migas
  3. SCM-PLAN: Skema Sertifikasi Klaster Perencanaan Pengadaan Barang & Jasa Rantai Suplai Migas
  4. SCM-EXEC: Skema Sertifikasi Klaster Pelaksanaan Pengadaan Barang & Jasa Rantai Suplai Migas
  5. 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.

Dokumen resmi LSP PROMIGAS INDONESIA • Standar Pelaksanaan CBT BNSP