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 viewssrc/views/AdminViews/CBT/— CBT admin settingssrc/components/CBT/QuestionAssetsPreview.vue— Shared renderer for media-rich questions
Backend¶
scola_cbt/— Full CBT modulescola_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¶
8. Panduan End User¶
| Role | Panduan |
|---|---|
| Guru | teacher.md |
| Siswa | student.md |
| Quick Start | buat-ujian-cbt.md, kerjakan-ujian-cbt.md |