Lewati ke isi

Domain: CBT (Computer-Based Testing)

SSOT untuk modul ujian online Scola — bank soal, ujian, proctor, grading, analytics. Dokumen ini menggantikan semua CBT doc sebelumnya (lihat CBT_CONTRACT.md legacy).

Last verified: 2026-03-25

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
│   │   │   ├── CBTExamDetail.vue          # Exam config + participants
│   │   │   ├── 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

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>/attendees, /attendees/add POST Participant management
/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
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
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

5. File References

Frontend

  • src/router/teacherRoutes.js — CBT routes (line ~266-340)
  • src/router/studentRoutes.js — Student CBT routes (line ~101-109, ~224-229)
  • 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 (Superseded by this file)

  • docs/CBT_CONTRACT.md — Previous SSOT (now archived)
  • scola_cbt/docs/EPIC_*.md — EPIC development history

7. Panduan Konfigurasi Implementor

configuration-guides/cbt.md


8. Panduan End User

Role Panduan
Guru teacher.md
Siswa student.md
Quick Start buat-ujian-cbt.md, kerjakan-ujian-cbt.md