← Kembali ke Dokumentasi Utama
APP 4

Test Wawancara

Aplikasi khusus penguji wawancara — penguji-only

📋 Deskripsi & Fungsi

Aplikasi khusus penguji wawancara. Penguji login di sini untuk melihat jadwal yang ditugaskan dan mengisi penilaian wawancara multi-kriteria. Admin TIDAK bisa login di aplikasi ini (ditolak 403 "Khusus penguji"). Manajemen akun penguji (CRUD, is_active) dilakukan di aplikasi manajemen_test_pd.

Fitur Utama

  • Login PENGUJI-ONLY (penguji1@test.com / penguji2@test.com). Admin ditolak.
  • Dashboard ringkasan: jumlah jadwal terjadwal, selesai, dibatalkan.
  • Jadwal: daftar jadwal wawancara yang ditugaskan ke penguji (read-only, filter status). Tombol "Nilai" menuju halaman Penilaian.
  • Penilaian: penguji mengisi nilai 0–100 per kriteria + catatan; sistem hitung rata-rata otomatis. Hanya bisa menilai jadwal miliknya (ownership check: penguji_id === user.id).
  • Data wawancara bersama dengan manajemen_test_pd (DB sama, tabel sama).
Catatan: Admin wawancara (wawancara@test.com) telah digabung ke pd_admin di manajemen_test_pd. Kelola akun penguji (CRUD, is_active) dilakukan di Manajemen.

Teknologi

Backend: Node.js + Express, pg, jsonwebtoken, bcryptjs, cors, dotenv.

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

Lint: oxlint (npm run lint).

🔌 Port & Environment

BackendPORT 5004 (env saat ini)
Frontend5177, proxy /apihttp://localhost:5004
DatabasePostgreSQL "online_test"
.env wajib: DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME, JWT_SECRET, JWT_EXPIRES, PORT

🛣 Route API

Prefix: /api · Semua butuh Authorization: Bearer (role penguji)

EndpointFungsi
/api/authLogin (pd_interview_users role=penguji + is_active) & /me.
/api/interviewsList jadwal milik penguji (filter status), detail + ownership, kriteria penilaian, simpan penilaian (ownership guard).

🗄 Tabel Database

Sama dengan yang dipakai manajemen_test_pd

TabelFungsi
pd_interview_usersAkun penguji (role=penguji, is_active). Admin role ada di tabel sama tapi login ditolak di app ini.
pd_interview_criteriaKriteria penilaian (is_active, sort_order).
pd_interviewsJadwal wawancara (applicant, penguji, waktu, status, nilai_total, catatan_penguji).
pd_interview_scoresNilai per kriteria per wawancara.

🚀 Cara Menjalankan

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

# Frontend (:5177)
cd test_wawancara/frontend && npm install && npm run dev

# Build produksi
npm run build && npm run preview

👤 Akun Test

EmailPasswordRoleKeterangan
penguji1@test.comadmin123pengujiLogin di test_wawancara
penguji2@test.comadmin123pengujiLogin di test_wawancara
Admin wawancara (wawancara@test.com) ditolak — digabung ke pd_admin di manajemen_test_pd.

🔗 Catatan

  • Server tetap berjalan (5004/5177) sebagai app penguji aktif.
  • Semua perubahan skema di-enrich oleh migration bersama (migrations/migrate_setup.js di manajemen_test_pd).
  • Data wawancara bersama: perubahan di satu app langsung terbaca app lain (shared DB online_test).