UAT Manual: CBT Independent & Admission — Penilaian End-to-End
Versi: 1.1
Tanggal: 2026-06-11
Status: Siap UAT (diselaraskan workspace enrollment Phase 3)
Environment referensi: https://dev.gcgscola.id · Odoo scoladev (:8074)
Dokumen ini melengkapi cbt-eraport-uat-end-to-end.md (khusus learning → e-Rapor). Fokus di sini: Independent (try out, olimpiade, tes mandiri) dan Admission (SPMB / penerimaan siswa baru), termasuk penilaian akhir tanpa integrasi gradebook/e-Rapor.
Matriks role lengkap: cbt-manual-uat.md §4 dan §8–9.
1. Ringkasan Integrasi per Context
| Context |
Tujuan bisnis |
Target nilai akhir |
e-Rapor / gradebook? |
Entry peserta |
| learning |
Ulangan kelas |
academic.grade → rapor |
✅ Ya |
Rombel → attendee otomatis |
| independent |
Try out, lomba, simulasi |
Report CBT + export; opsional tampil ke siswa (cbt_show_result) |
❌ Tidak (by design) |
Tab Peserta: enroll multi-rombel, import, bulk / external public |
| admission |
Seleksi SPMB |
scola.admission.test.slot.score → ranking SPMB |
❌ Tidak |
Jadwal seleksi → sync participant |
Verdict integrasi (2026-06-13): Independent dan Admission sudah terintegrasi penuh untuk alur CBT internal (authoring → runner → grading → laporan/export) dan terisolasi dengan benar dari e-Rapor. Yang belum ada: E2E otomatis penuh untuk SPMB sync nilai + ranking (masih manual UAT).
flowchart LR
subgraph IND[Independent]
I1[Author /faculty/cbt/exams create ringkas] --> I2[Tab Pengaturan + Peserta enroll]
I2 --> I3[Runner siswa / public]
I3 --> I4[Grading + Report]
I4 --> I5[Export XLSX]
end
subgraph ADM[Admission SPMB]
A1[Admin /admin/spmb/cbt] --> A2[Jadwal + Sync peserta]
A2 --> A3[Pendaftar /spmb/cbt]
A3 --> A4[Auto sync slot on submit]
A4 --> A5[Sync nilai jadwal + Ranking]
end
subgraph OUT[Out of scope]
ER[e-Rapor / Gradebook]
end
I4 -.->|tidak| ER
A5 -.->|tidak| ER
2. Best Practice — Independent (Try Out / Lomba)
2.1 Prinsip operasional
- Buat ujian hanya di
/faculty/cbt/exams — bukan tab Ulangan assignments.
- Alur create: form ringkas → redirect tab Pengaturan (jadwal, durasi, KKM) → tab Peserta.
- Peserta wajib terdaftar sebagai
scola.cbt.participant:
- Siswa internal: Daftarkan dari rombel (multi-rombel) di tab Peserta, import NIS/NISN, atau tambah manual.
- Peserta eksternal: import / tambah dengan Participant Code → runner via
/cbt/public.
- Nilai final = report hasil ujian + export; bukan kolom rapor.
- Proctor/grader harus ditugaskan di detail ujian (
cbt_proctor_user_ids, cbt_grader_user_ids) — guru generic tidak otomatis punya akses.
cbt_show_result: aktifkan di tab Pengaturan jika siswa internal boleh melihat skor di /student/cbt setelah submit.
2.2 Alur role (Independent)
| Fase |
Role |
Route / API |
Output |
| Authoring |
Guru author |
/faculty/cbt/exams → Buat (ringkas) → context Independent |
op.exam draft |
| Pengaturan |
Guru author |
/faculty/cbt/exams/:id/settings |
Jadwal, durasi, KKM, opsi CBT |
| Enroll |
Guru author |
Tab Peserta → multi-rombel / import / manual |
participant_count > 0 |
| Publish |
Guru author |
Tab Ringkasan → transisi draft → schedule → held |
Siswa/public bisa start |
| Proctor (opsional) |
Proctor assigned |
/faculty/cbt/proctor |
Extend / force submit |
| Peserta internal |
Siswa |
/student/cbt → token → runner |
Attempt submitted/graded |
| Peserta external |
Public |
/cbt/public → participant code |
Attempt submitted/graded |
| Grading essay |
Grader assigned |
/faculty/cbt/exams/:id/grading/:attemptId |
Attempt graded |
| Laporan |
Author / admin |
Report hasil, Analytics, Export XLSX |
Pipeline: gradebook = not_applicable |
| Negative |
Guru mapel |
Publish ke Gradebook |
Ditolak / tombol tidak ada |
2.3 Checklist UAT Independent
| ID |
Langkah |
Hasil diharapkan |
P0 |
| IND-UAT-01 |
Buat independent (form ringkas) + tab Pengaturan (jadwal aktif) |
Exam badge Independent; redirect /settings |
✅ |
| IND-UAT-02 |
Tab Peserta → enroll multi-rombel atau import/tambah manual |
Siswa target ada di tabel peserta |
✅ |
| IND-UAT-03 |
Publish held; siswa lihat di /student/cbt |
Schedule berisi exam_id |
✅ |
| IND-UAT-04 |
Siswa submit runner (token CBT) |
Attempt graded/submitted |
✅ |
| IND-UAT-05 |
Peserta external via /cbt/public |
Runner public + submit |
✅ |
| IND-UAT-06 |
Grader finalize essay (jika ada) |
Total skor konsisten di report |
✅ |
| IND-UAT-07 |
Buka Report Hasil → pipeline |
Gradebook/e-Rapor status not_applicable + alasan jelas |
✅ |
| IND-UAT-08 |
Export rekap XLSX |
File terunduh, skor sesuai |
P1 |
| IND-UAT-09 |
Aktifkan cbt_show_result; siswa refresh schedule |
Kolom nilai/status terisi |
P1 |
| IND-UAT-10 |
Coba Publish Gradebook |
Gagal dengan pesan learning-only |
✅ |
Regresi otomatis: SM-CBT-003–005, SM-CBT-007, SM-CBT-008 (Playwright).
3. Best Practice — Admission (SPMB)
3.1 Prinsip operasional
- Hanya role SPMB (
admissions.cbt_*) yang membuat/mengelola CBT context admission — guru kelas tidak boleh.
- Participant admission read-only di detail CBT — sumber kebenaran = jadwal seleksi SPMB.
- Alur wajib: Buat CBT admission → tautkan ke Jadwal Seleksi → Sync Peserta → pendaftar tes → Sync Nilai (atau andalkan auto-sync on submit) → Ranking.
- Nilai masuk ranking SPMB, bukan rapor sekolah.
- Pendaftar mengerjakan via
/spmb/cbt atau kartu tes di /spmb/admission/:id/tests — auth portal SPMB, bukan siswa learning.
3.2 Alur role (Admission)
| Fase |
Role |
Route |
Output |
| Authoring |
Admin / admin staff SPMB |
/admin/spmb/cbt/exams |
CBT context admission (forced) |
| Delegasi |
Admin SPMB |
Detail → author/proctor/grader |
Scoped access |
| Mapping jadwal |
Panitia |
/admin/spmb/test → tab CBT Admission |
cbt_exam_id terisi |
| Sync peserta |
Panitia |
Sync Peserta CBT |
cbt_participant identity admission per slot |
| Tes |
Pendaftar |
/spmb/cbt/runner/:exam_id |
Attempt submitted/graded |
| Auto-sync |
Backend |
action_submit → _sync_to_admission_slot() |
slot.score terisi realtime |
| Sync batch |
Panitia |
Sync Hasil CBT / Sync Semua |
Idempotent; summary synced/missing |
| Grading essay |
Grader SPMB |
/admin/spmb/cbt/exams/:id/grading/:attemptId |
Attempt graded |
| Ranking |
Panitia |
Modul ranking SPMB |
Skor tes dipakai seleksi |
| Negative |
Guru kelas |
Route SPMB CBT |
403 / menu tidak tampil |
3.3 Mekanisme sync nilai (dua jalur)
| Jalur |
Kapan |
Model |
| Auto |
Saat pendaftar submit attempt |
scola.cbt.attempt → scola.admission.test.slot (_sync_to_admission_slot) |
| Manual |
Panitia klik Sync Hasil di jadwal |
_sync_cbt_results_core() — re-pull attempt terakhir submitted/graded |
Best practice QA: Setelah submit pendaftar, cek slot score langsung (auto). Jalankan Sync Hasil sekali lagi untuk verifikasi idempotent (tidak double-count di ranking).
3.4 Checklist UAT Admission
| ID |
Langkah |
Hasil diharapkan |
P0 |
| ADM-UAT-01 |
Buat CBT admission + question set |
Context admission; guru generic ditolak |
✅ |
| ADM-UAT-02 |
Tautkan ke jadwal seleksi + Sync Peserta |
Participant count = jumlah slot |
✅ |
| ADM-UAT-03 |
Login pendaftar → Mulai CBT |
Runner SPMB tanpa token publik |
✅ |
| ADM-UAT-04 |
Submit tes |
Attempt graded/submitted |
✅ |
| ADM-UAT-05 |
Cek slot jadwal |
score terisi (auto-sync) |
✅ |
| ADM-UAT-06 |
Sync Hasil CBT manual |
Summary synced; re-run idempotent |
✅ |
| ADM-UAT-07 |
Grader essay + finalize |
Skor final masuk slot setelah sync |
✅ |
| ADM-UAT-08 |
Ranking / detail pendaftar |
Skor tes konsisten dengan CBT report |
✅ |
| ADM-UAT-09 |
Proctor assigned → force submit |
Audit + slot score terupdate |
P1 |
| ADM-UAT-10 |
Pendaftar B akses runner pendaftar A |
Ditolak (scope admission) |
✅ |
| ADM-UAT-11 |
Publish Gradebook dari report CBT |
Not applicable / ditolak |
✅ |
Regresi otomatis: spmb_smoke.spec.ts, spmb_uat_all_roles.spec.ts (navigasi /spmb/cbt — belum full grading+sync). Gap E2E: ADM-UAT-05–08 masih manual wajib.
4. Matriks Role × Capability (Penilaian)
| Role |
Independent |
Admission |
Learning (referensi) |
Guru author (academics.cbt_exams.manage) |
✅ Create, report, grading |
❌ |
✅ via assignments |
| Guru generic |
❌ Proctor/grade tanpa assignment |
❌ |
✅ ujian kelas sendiri |
| Proctor assigned |
✅ /faculty/cbt/proctor |
✅ /admin/spmb/cbt/proctor |
✅ |
| Grader assigned |
✅ grading route faculty |
✅ grading route SPMB |
✅ |
| Siswa internal |
✅ runner + schedule |
❌ |
✅ |
| Peserta external |
✅ /cbt/public |
❌ |
❌ |
| Pendaftar SPMB |
❌ |
✅ /spmb/cbt |
❌ |
| Admin SPMB |
❌ create independent |
✅ full CBT admission |
❌ |
| Wali/Kepsek/e-Rapor |
❌ tidak terlibat |
❌ tidak terlibat |
✅ publish rapor |
5. Pipeline Penilaian (UI Report)
Di Report Hasil Ujian (ExamResultsReport.vue), pipeline menampilkan:
| Stage |
Independent |
Admission |
Learning |
| Grading |
complete / pending_manual |
sama |
sama |
| Gradebook |
not_applicable |
not_applicable |
ready / published |
| e-Rapor |
not_applicable |
not_applicable |
synced / waiting |
Pesan FE: "Publish gradebook hanya tersedia untuk ujian learning yang sudah dipetakan ke komponen nilai."
Backend: _build_exam_pipeline_status() di report.py — can_publish = exam_context == 'learning' and grade_component_type.
6. Gap & Backlog Peningkatan
| Gap |
Severity |
Status |
Rekomendasi |
| E2E SPMB: create admission CBT → sync → submit → sync nilai → assert slot score |
Medium |
Terbuka |
Playwright + seed jadwal SPMB |
| E2E independent: enroll-batches multi-rombel post-create |
Low |
✅ SM-CBT-008 |
Covered |
| E2E independent: proctor force submit + export XLSX |
Low |
Terbuka |
Extend cbt_runner_flow.spec.ts |
E2E negative: guru generic akses /admin/spmb/cbt |
Low |
Partial (spmb_uat_all_roles) |
Assert 403 eksplisit |
| Dokumen UAT linear independent/admission |
— |
✅ Dokumen ini |
— |
| Ranking SPMB UI setelah sync |
— |
Manual UAT |
ADM-UAT-08 |
7. Sign-Off P0
Independent IND-UAT-01–07, 10 dan Admission ADM-UAT-01–08, 10–11 harus PASS sebelum go-live fitur try out/SPMB CBT.
| Field |
Nilai |
| Environment |
|
| Tester |
|
| exam_id independent |
|
| exam_id admission |
|
| schedule_id SPMB |
|
| Verdict |
PASS / FAIL |
8. Referensi
9. Riwayat
| Tanggal |
Versi |
Perubahan |
| 2026-06-13 |
1.0 |
Dokumen awal — independent & admission penilaian, best practice, gap E2E |
| 2026-06-11 |
1.1 |
Alur independent diselaraskan create ringkas + tab Pengaturan/Peserta; SM-CBT-008 |