Mode Tryout
Kombinasi scoring_mode, selection_mode, dan normalization_mode, kapan dipakai, dan trade-off-nya.
Mode Tryout
Sebuah Tryout punya tiga sumbu konfigurasi independen. Mereka menentukan bagaimana soal dipilih, bagaimana skor dihitung, dan bagaimana normalisasi dilakukan. Kombinasi ketiganya membentuk "profil" tryout — dari yang paling konservatif (mirip Excel klien) sampai yang paling modern (CAT penuh).
Tiga Sumbu Konfigurasi
flowchart TD
T["Tryout"]
T --> S["scoring_mode: bagaimana skor dihitung"]
T --> E["selection_mode: bagaimana soal dipilih"]
T --> N["normalization_mode: bagaimana skor ternormalisasi"]
S --> S1["ctt - Classical Test Theory"]
S --> S2["irt - Item Response Theory"]
S --> S3["hybrid - keduanya paralel"]
E --> E1["fixed - urut slot"]
E --> E2["adaptive - CAT berbasis theta"]
E --> E3["hybrid - transisi fixed ke adaptive"]
N --> N1["static - rataan & sb manual"]
N --> N2["dynamic - real-time dari TryoutStats"]
N --> N3["hybrid - auto-switch berbasis sample"]
Tiga sumbu ini disimpan sebagai kolom di tabel tryouts (lihat backend/app/models/tryout.py).
1. scoring_mode — Algoritma Skor
Menentukan rumus yang dipakai untuk menghitung skor akhir siswa.
Detail rumus: lihat Variabel & Rumus.
2. selection_mode — Strategi Pemilihan Soal
Menentukan soal mana yang muncul berikutnya untuk siswa.
Penting: Bahkan mode fixed tetap pilih soal per-request
"Fixed" di sini merujuk ke urutan slot yang konsisten (1, 2, 3, ...), bukan pre-render semua soal di awal sesi. Bahkan di mode fixed, app tetap menentukan per-request soal mana yang akan ditampilkan karena:
- App perlu pilih varian level (Sedang/Mudah/Sulit) untuk personalisasi — siswa A mungkin dapat varian Mudah di slot 5, siswa B dapat varian Sedang di slot yang sama.
- Varian bisa berupa soal AI-generated (
generated_by = 'ai') yang dibuat on-demand. - Hindari reuse: jika user sudah pernah menjawab
(slot, level)tertentu, app pilih varian lain.
Karena itu, alur integrasi Sejoli Tryout selalu memakai 1 AJAX call per soal (Pola B) — baik untuk mode fixed, adaptive, maupun hybrid. Lihat Integrasi → Sejoli Tryout dan Gap Analysis.
Detail algoritma pemilihan: lihat Modul → CAT Selection dan Alur CAT.
3. normalization_mode — Cara Hitung NN
Menentukan darimana Rataan dan SB (untuk rumus NN) berasal.
Detail: lihat Modul → Normalization dan Alur Dynamic Normalization.
Kombinasi Umum
Tiga sumbu di atas bisa dikombinasikan bebas (3 × 3 × 3 = 27 kombinasi). Praktiknya, hanya beberapa kombinasi yang masuk akal:
Decision Tree: Pilih Mode
flowchart TD
A["Mulai konfigurasi tryout"] --> B{"Jumlah peserta terprediksi?"}
B -->|"Di bawah 100"| C["ctt + fixed + static"]
B -->|"Minimal 100"| D{"Sudah punya data kalibrasi IRT?"}
D -->|"Belum"| E["ctt + fixed + dynamic"]
D -->|"Ya, minimal min_calibration_sample per soal"| F{"Ingin transisi mulus?"}
F -->|"Ya"| G["hybrid + hybrid + hybrid"]
F -->|"Langsung CAT penuh"| H["irt + adaptive + dynamic"]
C --> Z["Mode konservatif, kompatibel Excel"]
E --> Z2["Mode menengah, distribusi aktual"]
G --> Z3["Mode hybrid, perbandingan skor"]
H --> Z4["Mode modern, presisi tinggi"]
Field Konfigurasi Terkait
Selain tiga sumbu utama, beberapa field di tryouts memengaruhi perilaku mode:
Lihat juga daftar lengkap di Variabel & Rumus.
Migrasi Antar-Mode
Salah satu prinsip desain: mode bisa diubah kapan saja tanpa downtime.
sequenceDiagram
autonumber
participant Admin
participant API
participant DB
Admin->>API: PUT /tryout/id/normalization
Note over Admin,API: body: { normalization_mode: dynamic }
API->>DB: UPDATE tryouts SET normalization_mode=dynamic
API-->>Admin: 200 OK
Note over API: Sesi berikutnya otomatis pakai mode baru
Note over API: Sesi yang sedang berjalan tidak terpengaruh
Aturan penting:
- Sesi yang sedang berjalan tidak terpengaruh perubahan mode (snapshot saat mulai).
- Sesi yang dimulai setelah perubahan akan pakai mode baru.
- Skor yang sudah tersimpan tidak dihitung ulang otomatis — butuh trigger manual kalau perlu recompute.
Trade-off Tiap Mode
scoring_mode
selection_mode
normalization_mode
Default Aman
Untuk tryout baru tanpa konteks, pakai default ini:
Naikkan secara bertahap setelah data kalibrasi terkumpul. Lihat Roadmap untuk timeline migrasi yang disarankan.
Bacaan Lanjutan
- Variabel & Rumus — definisi p, Bobot, NM, NN, theta, b, SE
- Alur & Algoritma — diagram alur tiap mode
- Modul → CAT Selection — detail algoritma pemilihan adaptif
- Modul → Normalization — detail statistik inkremental
- Operasional → Konfigurasi — env vars terkait
Last updated Jul 25, 2026