Lewati ke isi

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

  1. Buat ujian hanya di /faculty/cbt/examsbukan tab Ulangan assignments.
  2. Alur create: form ringkas → redirect tab Pengaturan (jadwal, durasi, KKM) → tab Peserta.
  3. Peserta wajib terdaftar sebagai scola.cbt.participant:
  4. Siswa internal: Daftarkan dari rombel (multi-rombel) di tab Peserta, import NIS/NISN, atau tambah manual.
  5. Peserta eksternal: import / tambah dengan Participant Code → runner via /cbt/public.
  6. Nilai final = report hasil ujian + export; bukan kolom rapor.
  7. Proctor/grader harus ditugaskan di detail ujian (cbt_proctor_user_ids, cbt_grader_user_ids) — guru generic tidak otomatis punya akses.
  8. 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-003005, SM-CBT-007, SM-CBT-008 (Playwright).


3. Best Practice — Admission (SPMB)

3.1 Prinsip operasional

  1. Hanya role SPMB (admissions.cbt_*) yang membuat/mengelola CBT context admission — guru kelas tidak boleh.
  2. Participant admission read-only di detail CBT — sumber kebenaran = jadwal seleksi SPMB.
  3. Alur wajib: Buat CBT admission → tautkan ke Jadwal SeleksiSync Peserta → pendaftar tes → Sync Nilai (atau andalkan auto-sync on submit) → Ranking.
  4. Nilai masuk ranking SPMB, bukan rapor sekolah.
  5. 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.attemptscola.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/cbtbelum 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.pycan_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

Dokumen Isi
cbt-eraport-uat-end-to-end.md Learning → gradebook → e-Rapor
cbt-manual-uat.md Test case detail CBT-IND / CBT-SPMB
cbt-qa-runbook-2026-05-28.md QC gate & diagnosa
fe-be-question-exam-sync-recon-2026-05-27.md §5.5–5.10 kontrak FE/BE
cbt-exam-workspace-enrollment-plan.md Plan workspace & enrollment Phase 1–3
buat-ujian-cbt.md Quick start guru

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