Lewati ke isi

Domain: CBT (Computer-Based Testing)

SSOT untuk modul ujian online Scola — bank soal, ujian, proctor, grading, analytics. Dokumen aktif: folder ini + cbt-exam-workspace-enrollment-plan.md.

Last verified: 2026-06-11

Implementation plan (workspace & enrollment): exam-workspace-guide.md (publik) · plan teknis lengkap di repo docs/implementation/ (internal)

Related recon: - FE-BE CBT Question, Exam, and Bank Soal Sync Recon - 2026-05-27 - CBT Best-Practice Gap Analysis & Implementation Plan - 2026-05-27


1. Visi & Best Practice

1.1 Standar Acuan

Standar Relevansi
ANBK (Asesmen Nasional Berbasis Komputer) Referensi UX & flow ujian online nasional
Permendikbud No. 21/2022 Standar penilaian: formatif & sumatif
CBT best practices (ETS, College Board) Item banking, security, proctoring
UNBK/AKM patterns Flow yang familiar bagi siswa Indonesia

1.2 Kondisi Ideal

Bank Soal: - Soal dikelompokkan per mata pelajaran dan topik - Tipe soal: Pilihan Ganda, Benar/Salah, Essay, Isian Singkat - Metadata per soal: tingkat kesulitan, taksonomi Bloom, topic tags - Import/export soal (Excel, QTI format) - Version control soal (revisi tanpa kehilangan data lama)

Manajemen Ujian: - Buat ujian dari question set (pilih soal dari bank) - Randomisasi soal dan opsi jawaban per siswa - Konfigurasi: durasi, waktu mulai/selesai, passing grade - Peserta dari batch/rombel atau manual selection - Multi-context: learning (assessment internal), independent (tryout), admission (tes masuk)

Test Runner (Pengerjaan Siswa): - Full-screen mode, browser lockdown intent - Timer countdown visible - Auto-save jawaban berkala - Flag/bookmark soal untuk review - Navigasi antar soal (next/prev/jump) - Submit otomatis saat waktu habis

Integritas & Proctoring: - Tab/focus detection (flagging jika siswa pindah tab) - Activity logging per siswa - Proctor dashboard: real-time monitoring semua peserta - Extend time, reset, force submit per siswa - Integrity report per ujian

Grading & Reporting: - Auto-grading untuk soal objektif (PG, B/S, Isian) - Manual grading untuk essay - Analytics: distribusi nilai, item analysis, daya pembeda soal - Export hasil ke Excel - Integrasi nilai ke gradebook akademik (academic.grade)


2. Arsitektur & Data Model

2.1 Backend Module: scola_cbt

EPIC-based development, semua EPIC ✅ complete:

EPIC Scope Models
EP0 Setup, Policy, Roles cbt.config, security groups
EP1 Question Bank cbt.question, cbt.question.option
EP2 Question Set cbt.question.set, cbt.question.set.line
EP3 Exam Management cbt.exam, cbt.exam.participant
EP4 Test Runner cbt.attempt, cbt.answer
EP5 Integrity & Flagging cbt.integrity.event
EP6 Proctor Console proctor API endpoints
EP7 Scoring & Grading auto-grade + manual grade
EP8 Results & Reports analytics, export
EP9 Academic Integration bridge to academic.grade

2.2 Product Contexts

Context Purpose Participants Score Target
learning Assessment internal sekolah Enrolled students academic.grade + op.exam.attendees
independent Tryout, olympiad Manual participant records Results report only
admission Tes masuk SPMB Admission candidates Admission scoring

2.3 Frontend Structure

src/views/
├── ExamManagement/
│   ├── Faculty/
│   │   ├── QuestionBank/
│   │   │   ├── CBTQuestionList.vue       # Question set list
│   │   │   ├── CBTQuestionSetDetail.vue   # Question set + items
│   │   │   └── CBTQuestionForm.vue        # Create/edit question
│   │   ├── Exam/
│   │   │   ├── CBTExamList.vue            # Exam list (create ringkas)
│   │   │   ├── CBTExamDetail.vue          # Kelola Ujian — tabs: Ringkasan, Pengaturan, Peserta, Penilaian
│   │   │   ├── GradingWorkspace.vue       # Manual essay grading
│   │   │   ├── CBTExamAnalytics.vue       # Score distribution
│   │   │   ├── CBTItemAnalysis.vue        # Item difficulty analysis
│   │   │   └── CBTIntegrityReport.vue     # Integrity flags
│   │   ├── Proctor/
│   │   │   └── ProctorDashboard.vue       # Real-time monitoring
│   │   └── ExamResultsReport.vue          # Results overview
│   └── Student/
│       └── CBTRunner.vue                  # Full-screen exam experience
├── StudentViews/CBT/
│   └── CBTExamList.vue                    # Student exam list
└── AdminViews/CBT/
    ├── CBTSettings.vue                    # Global CBT config
    └── CBTAuditLog.vue                    # Audit trail

src/components/CBT/
├── CBTExamEnrollmentPanel.vue             # Multi-rombel enroll, import, bulk peserta
├── CBTExamPublishChecklist.vue            # Checklist siap publish
└── CBTExamAdmissionSyncPanel.vue        # Hint sync SPMB (admission)

2.4 Role Contract

Role Must see Must do Must not do
admin CBT settings, audit log Configure global policy Grade or proctor (unless granted)
teacher / cbt_exam_creator Question bank, exam setup, grading, results Author questions, create exams, grade Access unrelated exams
cbt_proctor Proctor dashboard Monitor, extend time, reset, force submit Edit questions or publish grades
principal Results and analytics Monitor results Manage setup, grading
student Exam list, runner Take exams, view results Access admin features

2.5 API Endpoints

Endpoint Method Deskripsi
/api/scola_cbt/question_set/list, /get, /create, /update, /delete POST Question set management
/api/scola_cbt/question/list, /get, /create, /update, /delete, /import POST Question bank CRUD + import Excel/CSV
/api/scola_cbt/tag/list, /tag/create, /subject/list POST Metadata tagging & subject lookup
/api/scola_cbt/exams, /exams/create, /exams/<id>/update POST Exam CRUD
/api/scola_cbt/exams/<id>/participants/enroll-batches POST Enroll multi-rombel (independent)
/api/scola_cbt/exams/<id>/participants/bulk-state POST Bulk block/unblock peserta
/api/scola_cbt/exams/<id>/participants/bulk-remove POST Bulk hapus/nonaktifkan peserta
/api/scola_cbt/exams/<id>/participants/import POST Import massal internal (NIS/NISN) + external
/api/scola_cbt/lookup/batches POST Lookup rombel; purpose=enrollment exclude [CBT]*
/api/scola_cbt/lookup/students POST Lookup siswa; filter batch_id opsional
/api/scola_cbt/exams/<id>/attendees, /attendees/add POST Participant management (learning)
/api/scola_cbt/student/schedule POST Jadwal ujian siswa (context learning + independent)
/api/scola_cbt/runner/start, /state, /answer, /sync, /submit POST Start attempt, autosave, final submit
/api/scola_cbt/proctor/exam/<id>/status POST Real-time proctor monitoring
/api/scola_cbt/results/exam/<id>, /analytics/exam/<id> POST Results & analytics
/api/scola_cbt/export/exam/<id>/xlsx GET Export results (Excel)

Catatan kontrak: - Frontend canonical memakai namespace /api/scola_cbt/... - Duplicate legacy route tanpa prefix /api sudah dihapus dari controller CBT


3. Fitur & Status Implementasi

Fitur Status Catatan
Question Bank (PG, B/S, Essay, Isian) ✅ Done
Question Set management ✅ Done Simplified flow: Question Set → Exam
Exam creation + scheduling ✅ Done
Randomisasi soal & opsi ✅ Done
Student exam list (/student/cbt) ✅ Done Learning + independent (participant siswa internal)
Test Runner (full-screen) ✅ Done Timer, auto-save, flag, navigation
Auto-grading (objektif) ✅ Done
Manual grading (essay) ✅ Done GradingWorkspace
Proctor dashboard ✅ Done Real-time monitoring
Integrity flagging (tab switch) ✅ Done
Exam analytics ✅ Done Score distribution, item analysis
Export results (Excel) ✅ Done
Academic grade integration ✅ Done Bridge to academic.grade
CBT for SPMB (admission context) ✅ Done SPMBCBTRunner
CBT Settings (admin) ✅ Done
Audit log ✅ Done
Import soal dari Excel ✅ Done Import wizard + template .csv/.xlsx/.xls di Question Set detail
Independent enrollment workspace ✅ Done Multi-rombel post-create, import NIS/NISN, bulk block/remove, CSV template
Tab workspace Kelola Ujian ✅ Done Ringkasan, Pengaturan, Peserta, Penilaian + deep-link route
Soal dengan gambar/media ✅ Done Image/audio/video/document di authoring, runner, dan grading
Browser lockdown (SEB integration) ❌ Gap Hanya tab detection
Offline exam mode ❌ Gap Requires internet

4. Gap Analysis & Backlog

P1 — Important Gaps

Tidak ada gap P1 yang menghambat operasional CBT inti untuk sekolah.

P2 — Nice to Have

Gap Dampak Solusi
Safe Exam Browser (SEB) integration Integritas ujian lebih ketat Integrate SEB protocol
Offline exam mode Sekolah dengan internet tidak stabil Service worker + sync on reconnect
Persistensi bookmark/review ke server Review flag saat ini masih tersimpan per browser Sinkronkan flag review ke cbt.attempt/answer metadata
Question taxonomy lanjutan Soal sulit dianalisis tanpa Bloom/kompetensi Tambah metadata taksonomi dan mapping TP/ATP
Adaptive testing Soal menyesuaikan kemampuan siswa Complex — long-term R&D
Split CBTExamDetail.vue ke sub-komponen Maintainability file besar Backlog refactor (route tab sudah ada)

5. File References

Frontend

  • src/router/teacherRouteFragments/assessment.js — CBT routes + tab workspace
  • src/constants/cbtExamWorkspace.js — Tab valid untuk route detail
  • src/views/ExamManagement/ — All CBT views
  • src/views/AdminViews/CBT/ — CBT admin settings
  • src/components/CBT/QuestionAssetsPreview.vue — Shared renderer for media-rich questions

Backend

  • scola_cbt/ — Full CBT module
  • scola_cbt/docs/ — EPIC-based development docs (historical reference)

Legacy Docs (removed)

Kontrak dan manual lama (CBT_CONTRACT.md, MANUAL_STUDENT_FINANCE_CBT.md) sudah dihapus setelah konsolidasi ke dokumen aktif di atas.


7. Panduan Konfigurasi Implementor

configuration-guides/cbt.md


7. Panduan End User

Role Panduan
Guru teacher.md
Siswa student.md
Quick Start buat-ujian-cbt.md, kerjakan-ujian-cbt.md
Kelola Ujian exam-workspace-guide.md