← Kembali ke Dokumentasi Utama
APP 3

Test Online

Portal Computer Based Test (CBT) untuk pelamar Pendamping Desa

📋 Deskripsi & Fungsi

Portal Computer Based Test (CBT) untuk pelamar Pendamping Desa. Pelamar yang lolos seleksi administratif menerima undangan test (dibuat dari manajemen_test_pd), login di aplikasi ini, mengerjakan soal pilihan ganda (multiple choice), esai, serta mengunggah foto/jawaban esai. Nilai tiap sesi disimpan ke database bersama sehingga pengaturan passing score & publikasi hasil dilakukan oleh aplikasi manajemen_test_pd.

Fitur Utama

  • Registrasi/login pelamar (users; password di-hash bcrypt, token JWT).
  • Daftar & pengerjaan test per jadwal/undangan.
  • Soal pilihan ganda (answer_options) dan soal esai.
  • Perhitungan skor otomatis untuk soal pilihan ganda.
  • Upload jawaban esai / foto identitas (multer + penyimpanan lokal).
  • Pengambilan foto via webcam saat mengerjakan test (jalur verifikasi).
  • Penjadwalan otomatis (opsional, node-cron).

Teknologi

Backend: Node.js + Express, pg, jsonwebtoken, bcryptjs, multer, node-cron, cors, dotenv.

Frontend: React, react-router-dom, axios, Vite, Tailwind CSS.

Lint: oxlint (npm run lint).

Bulk Operations (Skala ±600rb Peserta)

Save JawabanPOST /save-answers — multi-row INSERT ... ON CONFLICT dalam 1 transaksi (bukan per-soal)
SubmitBulk UPDATE scoring via unnest() — 1 query untuk semua soal PG, bukan loop per baris
Auto-submitSama dengan submit — bulk scoring untuk sesi kadaluarsa
FrontendJawaban dikumpulkan di buffer, flush tiap 5 dtk + visibilitychange + sebelum submit
PoolPG_POOL_MAX configurable (default 20)

🛣 Route API

Prefix: /api

EndpointFungsi
/api/authRegistrasi & login pelamar (JWT).
/api/registrationsManajemen pendaftaran sesi/re-registrasi test.
/api/sessionsSesi test: mulai, resume, save-answer (single), save-answers (bulk), submit (bulk scoring), skor.
/api/testsData test / jadwal yang tersedia bagi user.
/api/questionsDaftar soal sesuai test.
/api/uploadUnggah berkas (esai / foto).
/api/penilaiHitung/publikasi nilai (dioperasikan panitia).
/api/webcamCapture foto webcam saat test.

🗄 Tabel Database

TabelFungsi
usersAkun pelamar (email, password hash, nama, dll).
testsMaster test (judul, durasi, jumlah soal).
questionsSoal (tipe pilihan ganda / esai, opsi jawaban di child).
answer_optionsOpsi jawaban tiap soal pilihan ganda.
test_sessionsSesi pengerjaan per user/test (status, total_score, finished_at).
user_answersJawaban user per soal.
essay_scoresNilai jawaban esai (diisi/penilaian panitia).

🚀 Cara Menjalankan

# Backend (:5000)
cd test_online/backend && npm install && node src/server.js

# Frontend (:5173)
cd test_online/frontend && npm install && npm run dev

# Build produksi
npm run build && npm run preview

👤 Akun Test

EmailPasswordKeterangan
siti.amelia@test.comPelamar123Pelamar contoh
User pelamar lain didaftarkan lewat pendaftaran_pd / registrations.

🔗 Catatan Integrasi