# Panduan Penggunaan RuangJadwal

Panduan resmi untuk Tim Kurikulum dan Admin Kurikulum

Tanggal penyusunan: 10 Juli 2026  
Aplikasi: RuangJadwal, aplikasi web native untuk penjadwalan pembelajaran berbasis kendala eksplisit  
Lingkup: pendaftaran sekolah, aktivasi akun, pengisian data, impor Dapodik, pengelolaan master akademik, pembuatan draf jadwal, ekspor, backup, restore, dan troubleshooting operasional

---

## 1. Ringkasan Eksekutif

RuangJadwal membantu Tim Kurikulum menyusun draf jadwal pembelajaran dengan cara yang dapat diaudit. Aplikasi memisahkan data sumber Dapodik, master akademik yang dikelola sekolah, aturan ketersediaan, kebutuhan pembelajaran, versi jadwal, proses penyusunan jadwal, serta hasil validasi. Pemisahan ini penting agar setiap perubahan dapat ditelusuri dan agar draf jadwal tidak dianggap layak sebelum melewati pemeriksaan kendala keras.

Alur kerja utama adalah sebagai berikut.

1. Sekolah mendaftar melalui halaman depan dan memilih kategori berlangganan.
2. Pengajuan sekolah diverifikasi dan diaktifkan melalui alur aktivasi layanan.
3. Admin Kurikulum masuk ke aplikasi dan melengkapi profil, akun tim, logo sekolah, serta kategori bila diperlukan.
4. Tim Kurikulum mengimpor lima file Dapodik atau mengisi master akademik secara manual melalui template XLSX.
5. Tim Kurikulum memeriksa Guru, Mata Pelajaran, Hari dan Slot JP, Kelas dan Ruang, serta Beban Mengajar.
6. Tim Kurikulum membuka Studio Jadwal, membaca prapemeriksaan, dan menyelesaikan seluruh penghambat.
7. Tim Kurikulum membuat draf jadwal otomatis, menelaah hasil, melakukan revisi manual bila perlu, lalu mengirim draf ke tahap peninjauan.
8. Tim Kurikulum mengekspor jadwal dalam format XLSX, DOCX, Markdown, JPG, atau mencetak/PDF melalui peramban.
9. Admin Kurikulum melakukan backup berkala dan menggunakan restore hanya dari file yang valid.

Status `Layak` atau `feasible` berarti seluruh kendala keras yang dimodelkan aplikasi telah terpenuhi menurut validator independen. Status tersebut bukan klaim bahwa jadwal sudah optimal secara pedagogis atau sudah sah diterbitkan tanpa verifikasi kebijakan sekolah dan persetujuan manusia yang berwenang.

## 2. Prinsip Operasional

### 2.1 Sumber Data

RuangJadwal dapat memakai dua sumber data.

| Sumber | Penggunaan | Catatan |
|---|---|---|
| Dapodik | Mengisi GTK Guru, mata pelajaran, ruang, rombongan belajar, guru pengampu, dan kebutuhan pembelajaran awal. | Hanya file dengan nama yang dikenali diproses. Semua file diperlakukan sebagai data tidak tepercaya sampai lolos validasi server. |
| Input manual atau XLSX | Melengkapi, memperbaiki, atau membangun data tanpa snapshot Dapodik. | Gunakan template terbaru dari aplikasi agar kolom, referensi, dan validasi sesuai schema aktif. |

### 2.2 Urutan Data yang Disarankan

Gunakan urutan berikut agar kesalahan dapat ditemukan sedini mungkin.

1. Akun dan Sekolah.
2. Impor Dapodik, bila tersedia.
3. Guru dan Ketersediaan Mengajar.
4. Mata Pelajaran, Mata Pelajaran per Tingkat, dan Guru Pengampu.
5. Hari dan Slot JP.
6. Kelas dan Ruang.
7. Beban Mengajar.
8. Studio Jadwal.
9. Ekspor, backup, dan arsip.

### 2.3 Kendala Keras dan Kendala Lunak

Kendala keras menentukan apakah jadwal sah secara sistem. Contohnya adalah guru tidak boleh mengajar dua kelas pada slot yang sama, kelas tidak boleh memiliki dua pelajaran pada slot yang sama, ruang tidak boleh dipakai ganda, dan total JP setiap kebutuhan pembelajaran harus terpenuhi.

Kendala lunak menentukan kualitas jadwal. Contohnya adalah pengurangan jam kosong guru, pemerataan beban, preferensi slot pagi, atau pengurangan perpindahan ruang. Jadwal boleh dianggap layak bila kendala keras bernilai nol, tetapi kualitasnya tetap perlu ditinjau.

### 2.4 Batasan yang Harus Diketahui

Aplikasi tidak mengarang kalender daerah, KSP/KOSP, SK pembagian tugas, kapasitas sarana khusus, kelompok siswa lintas rombel, atau aturan lokal yang tidak dimasukkan ke data. Jika aturan tersebut penting, Tim Kurikulum wajib memasukkannya sebagai data atau memperlakukannya sebagai catatan verifikasi manual sebelum jadwal digunakan.

Semua waktu menggunakan format 24 jam `HH:mm`, misalnya `07:30` dan `13:30`. Format AM/PM ditolak oleh validasi server.

### 2.5 Kontrol Umum Aplikasi

RuangJadwal memakai pola kontrol yang sama pada hampir semua halaman internal.

| Kontrol | Fungsi | Cara Pakai yang Disarankan |
|---|---|---|
| Tombol **Panduan** | Membuka bantuan kontekstual sesuai halaman, tab, filter tabel, atau tampilan Studio Jadwal yang sedang aktif. | Gunakan saat ragu urutan kerja, arti data, pemeriksaan sebelum lanjut, atau langkah perbaikan. Pintasan `?` membuka panduan, dan `Esc` menutupnya. |
| Tombol **Segarkan** | Memuat ulang data halaman aktif. | Gunakan setelah impor, restore, perubahan besar, atau ketika beberapa anggota tim bekerja bersamaan. Pintasan `R` juga tersedia ketika fokus tidak berada di input. |
| Tombol menu sidebar | Menampilkan atau menyembunyikan sidebar. | Gunakan tombol menu atau pintasan `Alt+B`. Pada layar kecil, tekan `Esc` untuk menutup sidebar. |
| Tab | Berpindah antar kelompok data pada halaman yang sama. | Gunakan tombol tab; pada keyboard, panah kiri/kanan memindahkan fokus antar tab. |
| Toast dan alert | Menampilkan hasil simpan, kesalahan validasi, atau status proses. | Jangan lanjut ke langkah berikutnya sebelum pesan berhasil atau kesalahan dipahami. |
| Dialog konfirmasi | Mengamankan tindakan berisiko seperti hapus, bulk delete, atau restore. | Baca judul, rincian, dan frasa konfirmasi sebelum menyetujui. |

Jika halaman menampilkan pesan galat, perubahan yang gagal tidak boleh dianggap tersimpan. Perbaiki input, simpan ulang, lalu tekan **Segarkan** untuk memastikan tampilan sudah sesuai data server.

### 2.6 Pola Tabel Pengelolaan Data

Tabel master seperti Guru, Mata Pelajaran, Kelas, Ruang, Beban Mengajar, dan Aturan Ketersediaan memiliki kontrol pencarian, filter, sorting, jumlah baris, pagination, serta aksi baris.

| Elemen | Makna |
|---|---|
| Pencarian | Mencari kode, nama, atau atribut penting lain. |
| Status | Menampilkan semua data, data aktif, atau data nonaktif. |
| Sumber | Membedakan data dari Dapodik dan input manual. |
| Filter khusus | Menyaring kondisi tertentu, misalnya kapasitas kosong, JP positif, pernah dijadwalkan, atau assignment spesifik tingkat. |
| Sorting | Mengurutkan kolom yang memiliki ikon panah. |
| Baris per halaman | Memilih 10, 25, 50, atau 100 baris. |
| Aksi edit | Mengubah data dengan optimistic locking. Jika data sudah berubah di sesi lain, simpan dapat ditolak agar tidak menimpa perubahan terbaru. |
| Aksi nonaktif | Mengeluarkan data dari pilihan aktif tanpa menghapus histori. |
| Aksi hapus | Menghapus data yang boleh dihapus atau menandai data berhistori sebagai terhapus sesuai aturan server. |

Label `DAPODIK` berarti data berasal dari sinkronisasi Dapodik. Label `MANUAL` berarti data dibuat atau diperbarui melalui aplikasi/template. Jangan menghapus data Dapodik hanya karena perlu koreksi kecil; lebih aman menonaktifkan atau mengoreksi field operasional yang memang disediakan aplikasi.

### 2.7 Template XLSX Master Akademik

Selain impor Dapodik JSON, beberapa halaman menyediakan **Template XLSX** dan **Impor XLSX** untuk pengisian massal. Gunakan template terbaru dari tombol halaman terkait karena struktur sheet mengikuti schema aktif.

| Halaman | Template | Isi Utama |
|---|---|---|
| Guru dan Beban Mengajar | GTK Guru dan Beban Mengajar | Guru, beban dasar, dan kebutuhan pembelajaran. |
| Mata Pelajaran | Mata Pelajaran dan Mata Pelajaran per Tingkat | Katalog mapel, varian tingkat, kurikulum, status, dan JP. |
| Hari dan Slot JP | Hari dan Slot Jam Pelajaran | Hari aktif, urutan hari, slot JP, jam mulai, jam selesai, dan jenis slot. |
| Kelas dan Ruang | Kelas dan Ruang | Rombongan belajar, tingkat, kurikulum, ruang utama, jenis ruang, dan kapasitas. |

Aturan impor XLSX:

1. Unggah satu file `.xlsx`.
2. Ukuran file maksimal 8 MB.
3. Jangan mengganti nama sheet, header, atau tipe data utama pada template.
4. Import bersifat atomik; jika satu baris gagal, seluruh file ditolak.
5. Setelah berhasil, buka Ringkasan dan Studio Jadwal untuk melihat dampak pada preflight.

### 2.8 Nonaktif, Hapus, dan Data Berhistori

RuangJadwal membedakan data aktif, nonaktif, dan data berhistori yang ditandai terhapus. Perbedaan ini penting karena jadwal lama, audit, dan hasil ekspor dapat masih merujuk data tersebut.

1. Gunakan **Nonaktifkan** bila data tidak dipakai lagi tetapi masih perlu disimpan.
2. Gunakan **Hapus** hanya bila aplikasi mengizinkan dan Anda memahami dampaknya.
3. Gunakan **Hapus semua** pada Mata Pelajaran per Tingkat, Guru Pengampu, atau Beban Mengajar hanya setelah membuat backup.
4. Data yang pernah dipakai jadwal dapat diarsipkan atau ditandai terhapus, bukan selalu dihapus fisik.
5. Perubahan kalender, beban, assignment, atau ketersediaan dapat membuat versi jadwal lama menjadi `stale`.

### 2.9 Pratinjau Risiko Saat Mengubah Data

Pada data yang memengaruhi feasibility, terutama **Aturan Ketersediaan** dan **Beban Mengajar**, aplikasi dapat menampilkan pratinjau risiko. Panel ini membantu melihat apakah perubahan akan menyempitkan ruang kandidat jadwal.

Gunakan pratinjau risiko sebagai berikut:

1. Baca skor dan level risiko.
2. Perhatikan akar masalah, misalnya guru terlalu tertutup, beban terlalu padat, atau hari tertentu tidak memiliki cukup kandidat.
3. Ikuti saran hari/jam yang lebih aman bila tersedia.
4. Jangan menyimpan aturan `deny` yang menutup semua kandidat guru.
5. Setelah perubahan disimpan, buka **Studio Jadwal** dan tekan **Segarkan status**.

## 3. Peran Pengguna

| Peran | Kewenangan Utama | Batasan |
|---|---|---|
| Admin Kurikulum | Mengelola data operasional sekolah sendiri, akun tim, logo sekolah, impor, backup, restore, master akademik, jadwal, dan pengajuan perubahan kategori. | Tidak dapat mengaktivasi sekolah lain, mengelola katalog layanan global, atau mengubah kategori secara langsung bila sistem memerlukan peninjauan. |
| Tim Kurikulum | Membantu mengelola data akademik, melakukan pemeriksaan, ekspor, dan pekerjaan operasional sesuai akses yang diberikan. | Kewenangan dapat dibatasi oleh Admin Kurikulum dan kebijakan sekolah. |

## 4. Pendaftaran Sekolah Baru

### 4.1 Membuka Formulir Pendaftaran

1. Buka halaman depan RuangJadwal.
2. Pilih bagian pendaftaran sekolah baru.
3. Pastikan kategori berlangganan tersedia. Jika tidak ada kategori aktif, pendaftaran belum dapat dikirim dan sekolah harus menghubungi pengelola.

### 4.2 Mengisi Profil Sekolah

Isi data berikut dengan cermat.

| Field | Keterangan | Validasi Umum |
|---|---|---|
| Nama sekolah | Nama resmi satuan pendidikan. | Wajib diisi. |
| NPSN | Nomor Pokok Sekolah Nasional. | Boleh kosong, tetapi bila diisi harus mengikuti pola yang valid. |
| Alamat | Alamat operasional sekolah. | Disarankan diisi untuk identitas dokumen. |
| Kontak | Nomor telepon, email, atau kontak administrasi. | Disarankan diisi agar verifikasi mudah. |

### 4.3 Memilih Kategori Berlangganan

Pilih kategori yang sesuai. Kategori dapat berupa gratis, paket berdasarkan kuota generate, bulanan, tahunan, lifetime, atau custom sesuai katalog layanan yang tersedia pada halaman pendaftaran. Pilihan kategori akan dicatat bersama pengajuan sekolah dan dapat diajukan perubahannya setelah sekolah aktif.

### 4.4 Membuat Admin Kurikulum Pertama

Isi nama admin, nama pengguna, email, kata sandi, dan konfirmasi kata sandi. Kata sandi minimal 10 karakter. Sekolah dan akun admin awal tetap nonaktif sampai pengajuan pendaftaran diaktifkan.

### 4.5 Setelah Pengajuan Dikirim

Sistem menampilkan pemberitahuan bahwa pendaftaran diterima dan menunggu aktivasi. Jika login ditolak dengan pesan aktivasi, itu berarti akun sudah tercatat tetapi sekolah belum aktif.

## 5. Status Aktivasi Sekolah

Setelah pendaftaran dikirim, Admin Kurikulum dan Tim Kurikulum belum perlu mengisi data internal aplikasi sampai sekolah aktif. Gunakan bagian ini untuk memahami status pendaftaran dari sisi sekolah.

1. Simpan nama pengguna dan kata sandi Admin Kurikulum pertama dengan aman.
2. Pantau pemberitahuan pada halaman masuk.
3. Jika login ditolak dengan pesan aktivasi, berarti akun sudah tercatat tetapi sekolah belum aktif.
4. Gunakan kanal dukungan resmi bila sekolah membutuhkan konfirmasi status aktivasi.

Setelah aktivasi selesai, Admin Kurikulum pertama dapat masuk menggunakan nama pengguna dan kata sandi yang dibuat saat pendaftaran.

## 6. Masuk ke Aplikasi

1. Buka halaman depan.
2. Pilih **Masuk**.
3. Masukkan nama pengguna dan kata sandi.
4. Tekan tombol masuk.

Jika sesi sudah aktif, aplikasi menampilkan ruang kerja internal. Jika sesi berakhir ketika API dipanggil, aplikasi akan memuat ulang agar pengguna masuk kembali.

## 7. Ringkasan

Halaman **Ringkasan** adalah pusat kendali awal. Gunakan halaman ini untuk memahami kesiapan data sebelum membuat jadwal.

### 7.1 Indikator Utama

| Indikator | Makna |
|---|---|
| Guru layak dijadwalkan | Jumlah GTK yang dianggap Guru dan aktif untuk penjadwalan. |
| Kelas layak dijadwalkan | Jumlah rombongan belajar yang ditandai sebagai kelas yang dapat dijadwalkan. |
| Beban mingguan | Total JP dari kebutuhan pembelajaran aktif. |
| Kapasitas kalender | Jumlah slot pembelajaran aktif pada hari aktif. |
| Kesiapan penjadwalan | Daftar penghambat dan peringatan dari preflight. |
| Cuplikan Dapodik | Status snapshot Dapodik terakhir dan pemanfaatannya. |
| Aktivitas penyusunan jadwal | Riwayat proses generate terbaru dan statusnya. |

### 7.2 Tindakan yang Disarankan

Jika ada penghambat, jangan langsung membuka generator. Ikuti pesan tindakan pada panel kesiapan, perbaiki data terkait, lalu tekan **Segarkan**. Bila penghambat sudah nol, buka **Studio Jadwal** untuk membuat draf.

## 8. Akun dan Sekolah

Menu **Akun dan Sekolah** berisi pengaturan akses, profil sekolah, kategori berlangganan, logo sekolah, backup, dan restore sesuai peran pengguna.

### 8.1 Tab Akses

Pada tab ini, pengguna dapat melihat sesi aktif, identitas sekolah aktif, daftar akun Tim Kurikulum, dan panel backup/restore.

#### Mengelola Akun Tim Kurikulum

1. Buka **Akun dan Sekolah**.
2. Pada panel **Akun tim kurikulum**, isi nama pengguna, nama tampil, email, peran, status aktif, dan kata sandi bila membuat akun baru.
3. Pilih peran `Admin Kurikulum` atau `Tim Kurikulum`.
4. Simpan akun.

Ketika mengubah akun lama, kata sandi boleh dikosongkan bila tidak ingin menggantinya.

#### Mengatur Logo Sekolah

Admin Kurikulum, atau anggota Tim Kurikulum yang diberi akses, dapat mengunggah logo sekolah. Logo dipakai pada kop cetak, dokumen resmi, dan ekspor. Gunakan PNG atau JPG dengan ukuran maksimal 2 MB.

### 8.2 Tab Kategori Berlangganan

Tab ini digunakan untuk melihat kategori berlangganan sekolah dan mengajukan perubahan kategori bila fitur tersebut tersedia. Admin Kurikulum dan Tim Kurikulum tidak mengelola katalog layanan global.

Elemen kategori meliputi kode, nama, ringkasan, tipe, harga, mata uang, kuota generate jadwal, daftar fitur, visibilitas publik, rekomendasi, dan status aktif.

Aturan penting bagi sekolah:

1. Hanya kategori aktif dan publik yang muncul pada pendaftaran.
2. Kategori rekomendasi ditampilkan sebagai pilihan yang disarankan bila tersedia.
3. Paket gratis atau paket jumlah generate memiliki kuota generate.
4. Pengajuan perubahan kategori dicatat dan diputuskan secara transaksional.
5. Perubahan kategori tidak mengubah data jadwal, master akademik, atau hasil ekspor yang sudah dibuat.

#### Mengajukan Perubahan Kategori

Admin Kurikulum dapat mengajukan perubahan kategori dari tab **Berlangganan**.

1. Buka **Akun dan Sekolah**.
2. Pilih tab **Berlangganan**.
3. Periksa kategori aktif sekolah pada bagian atas.
4. Pilih kategori tujuan.
5. Tulis alasan perubahan secara jelas, misalnya kebutuhan generate tambahan, masa penggunaan, atau dukungan operasional.
6. Tekan **Kirim pengajuan**.

Selama ada pengajuan berstatus menunggu, pengajuan baru dinonaktifkan. Admin Kurikulum dapat membatalkan pengajuan yang masih menunggu. Anggota Tim Kurikulum dapat melihat status dan histori, tetapi tidak mengirim pengajuan perubahan kategori.

### 8.3 Backup dan Restore Operasional

Tombol pada bagian atas halaman menyediakan:

| Tombol | Fungsi |
|---|---|
| Cadangkan XLSX | Mengunduh backup operasional sekolah. Backup tidak menampilkan kata sandi. |
| Template Restore | Mengunduh template restore yang sesuai schema aktif. |
| Restore XLSX | Mengunggah file backup atau template yang telah diisi. |

Restore bersifat atomik. Jika satu baris gagal validasi, seluruh perubahan restore dibatalkan. Gunakan file backup terbaru dan jangan mengedit struktur sheet di luar ketentuan.

Restore memproses sekolah, akun, kelas, ruang, mata pelajaran, guru, guru pengampu, beban mengajar, hari, slot JP, ketersediaan guru, versi jadwal, dan entri jadwal sesuai hak akses. Jadwal hasil restore disimpan sebagai draf tervalidasi. Kata sandi lama tidak pernah ditampilkan kembali; akun baru pada file restore wajib memiliki kata sandi awal.

## 9. Impor Dapodik

Menu **Impor Dapodik** memproses snapshot Dapodik ke master akademik.

### 9.1 File yang Wajib Disiapkan

Unggah tepat lima file berikut.

| Nama File | Isi Umum |
|---|---|
| `dapodik_GTK.json` | Pendidik dan tenaga kependidikan. |
| `dapodik_Sekolah.json` | Identitas sekolah pada snapshot. |
| `dapodik_pesertaDidik.json` | Peserta didik dan anggota rombel. |
| `dapodik_prasarana.json` | Ruang, bangunan, tanah, dan prasarana. |
| `dapodik_rombel.json` | Rombongan belajar dan pembelajaran. |

Nama file harus tepat. Aplikasi menolak file duplikat, file tidak dikenali, file terlalu besar, dan JSON yang tidak sesuai envelope Dapodik.

### 9.2 Proses Impor

1. Buka **Impor Dapodik**.
2. Seret lima file ke area unggah atau tekan **Pilih berkas**.
3. Pastikan semua file bertanda siap.
4. Tekan **Validasi dan impor paket**.
5. Tunggu hingga server selesai memvalidasi, menyimpan snapshot, dan menyinkronkan master.

Impor dilakukan dalam satu transaksi. Bila gagal, data parsial tidak dipakai.

### 9.3 Sinkronisasi Snapshot Terakhir

Jika snapshot sudah ada, tombol **Sinkronkan cuplikan ini** menjalankan ulang proses sinkronisasi master dari import run terakhir yang berstatus `complete`. Gunakan ini setelah memastikan snapshot pemilik sekolah benar.

Sebelum sync-dapodik berjalan, aplikasi menampilkan peringatan akibat sinkronisasi dan meminta operator mengetik pernyataan persetujuan. Sinkronisasi dapat memperbarui guru, mata pelajaran, ruang, kelas, penugasan, aturan JP per tingkat, dan kebutuhan pembelajaran dari cuplikan Dapodik terakhir. Setelah sinkronisasi, jalankan kembali ringkasan kesiapan atau preflight sebelum membuat draf jadwal baru.

Halaman ini juga menampilkan **Riwayat sinkronisasi Dapodik**. Riwayat berisi waktu tindakan, jenis tindakan, cuplikan yang dipakai, dan ringkasan hasil agar operator dapat menelusuri kapan master akademik terakhir disinkronkan. Pembersihan dampak sinkronisasi wajib dimulai dari baris/tanggal riwayat sinkronisasi yang dipilih.

Pilih **Tinjau** pada salah satu riwayat sinkronisasi untuk melihat preview data yang masih terikat ke tanggal sinkronisasi tersebut. Tombol **Hapus dampak sinkronisasi terpilih** hanya membersihkan data aplikasi yang berasal dari riwayat itu, seperti versi jadwal berbasis Dapodik, kebutuhan pembelajaran, guru pengampu, aturan per tingkat, dan master akademik bersumber Dapodik. Cuplikan mentah `dapodik_*` dan audit tetap disimpan. Jika data manual masih bergantung pada master Dapodik target, pembersihan diblokir sampai dependensi tersebut diputus atau dipindahkan.

### 9.4 Hasil Sinkronisasi

Sinkronisasi menghasilkan atau memperbarui:

1. Guru eligible.
2. Mata pelajaran.
3. Mata pelajaran per tingkat.
4. Ruang.
5. Kelas eligible.
6. Guru pengampu.
7. Beban mengajar.
8. Audit sinkronisasi.

Hanya GTK berstatus Guru dan rombel jenis Kelas yang dipakai untuk penjadwalan aktif. Data lain tetap dipertahankan sebagai lineage, tetapi tidak dijadwalkan kecuali model sekolah kelak mendukungnya.

### 9.5 Kapan Memakai Impor Ulang, Sinkronisasi, atau Template Manual

Gunakan pilihan berikut agar data tidak tercampur.

| Kondisi | Tindakan |
|---|---|
| Sekolah memiliki paket Dapodik baru lengkap | Lakukan impor ulang lima file JSON. |
| Snapshot terakhir sudah benar tetapi master perlu dibentuk ulang | Tekan **Sinkronkan cuplikan ini**. |
| Koreksi hanya pada data operasional sekolah | Gunakan form aplikasi atau template XLSX master akademik. |
| Data tidak berasal dari Dapodik | Isi manual melalui form atau template XLSX. |
| Ada perubahan besar sebelum generate | Buat backup, impor/sinkronkan, lalu baca Ringkasan dan Studio Jadwal. |

Jangan menggabungkan file Dapodik lama dan baru dalam satu paket. Semua lima file harus berasal dari snapshot yang sama agar relasi guru, rombel, ruang, dan pembelajaran tetap konsisten.

## 10. Guru dan Ketersediaan Mengajar

Menu **Guru** memiliki dua tab: **GTK dan beban** serta **Aturan ketersediaan**.

### 10.1 Tab GTK dan Beban

Tabel menampilkan guru aktif, kode guru, tanggal pengangkatan, minimum JP per minggu, status, sumber data, pencarian, filter, sorting, dan pagination.

Field penting:

| Field | Fungsi |
|---|---|
| Kode guru | Identitas guru di aplikasi. Untuk guru dari Dapodik, kode mengikuti pola senioritas. |
| Nama | Nama guru. |
| Pengangkatan | Tanggal pengangkatan yang membantu pengurutan. |
| Min/minggu | Minimum JP mingguan yang diharapkan. |
| Maks. JP harian | Batas beban mengajar per hari. |
| Maks. JP mingguan | Batas maksimum mingguan bila diatur. |
| Tersedia default | Menentukan apakah guru tersedia secara bawaan sebelum aturan rinci diterapkan. |
| Status | Aktif atau nonaktif. |

### 10.2 Aturan Ketersediaan

Aturan ketersediaan mendefinisikan kapan guru boleh atau tidak boleh mengajar.

| Cakupan | Makna |
|---|---|
| Semua hari dan jam | Berlaku untuk seluruh horizon. |
| Sepanjang hari tertentu | Berlaku pada satu hari. |
| Jam tertentu di semua hari | Berlaku pada rentang jam yang sama pada semua hari. |
| Jam tertentu pada hari tertentu | Berlaku pada rentang jam di satu hari. |

Efek aturan adalah **Izinkan mengajar** atau **Tolak / tidak bisa mengajar**. Aturan yang lebih spesifik memiliki prioritas lebih tinggi. Jika tingkat spesifik sama, keputusan `deny` mengalahkan `allow`. Keputusan per-slot eksplisit memiliki prioritas tertinggi.

### 10.3 Risiko Umum

Kesalahan paling sering terjadi ketika guru diberi default tidak tersedia tetapi belum memiliki aturan `allow`, atau ketika terlalu banyak aturan `deny` membuat domain kandidat kosong. Jika Studio menampilkan penghambat ketersediaan, buka tab ini dan perbaiki aturan guru yang terdampak.

### 10.4 Praktik Aman Mengatur Ketersediaan

Gunakan pola berikut agar availability mudah dipahami.

1. Jika sebagian besar guru tersedia, biarkan **Tersedia default** aktif lalu tambahkan aturan `deny` untuk waktu yang tidak bisa mengajar.
2. Jika guru hanya dapat mengajar pada hari tertentu, matikan **Tersedia default** lalu tambahkan aturan `allow` pada hari atau jam yang diizinkan.
3. Hindari aturan `deny all` kecuali guru memang tidak akan dijadwalkan.
4. Setelah menambah aturan, baca pratinjau risiko dan saran hari/jam yang lebih aman.
5. Pastikan minimum JP guru masih realistis terhadap jendela waktu yang tersisa.

### 10.5 Pengisian Massal Guru

Untuk memperbarui banyak guru, gunakan **Template XLSX** pada halaman Guru. Template yang sama juga dapat memuat beban mengajar. Setelah impor berhasil, periksa:

1. jumlah guru baru dan guru diperbarui;
2. guru yang nonaktif;
3. minimum dan maksimum JP;
4. status tersedia default;
5. dampak perubahan pada preflight Studio Jadwal.

## 11. Mata Pelajaran

Menu **Mata pelajaran** memiliki tiga tab: **Mata pelajaran**, **Mata pelajaran per tingkat**, dan **Guru pengampu**.

### 11.1 Katalog Mata Pelajaran

Katalog mata pelajaran menyimpan kode, nama, kategori, warna, ukuran blok bawaan, dan maksimum JP berturut-turut. Katalog bersifat global dalam sekolah. Aturan per tingkat tidak dicampur di sini.

### 11.2 Mata Pelajaran per Tingkat

Tab ini menentukan status kurikulum dan JP mingguan untuk kombinasi mata pelajaran, tingkat, kurikulum, dan status.

Contoh:

| Mata Pelajaran | Tingkat | Kurikulum | Status | JP |
|---|---|---|---|---:|
| Matematika | X | Kurikulum Merdeka | Wajib | 4 |
| Matematika | XI | Kurikulum Merdeka | Wajib | 5 |

Satu mata pelajaran dapat memiliki aturan berbeda pada tingkat yang berbeda. Gunakan tombol **Tambah** untuk membuka perencana varian dan menambahkan beberapa kombinasi secara atomik.

### 11.3 Guru Pengampu

Guru pengampu menghubungkan guru dengan mata pelajaran serta cakupan tingkat dan kurikulum. Cakupan kosong berarti berlaku untuk semua tingkat atau kurikulum. Assignment dari Dapodik biasanya spesifik tingkat agar eligibility tidak terlalu luas.

Field penting:

| Field | Fungsi |
|---|---|
| Guru | Guru yang mengampu. |
| Tanda | Penanda A-Z untuk membedakan pengampu. |
| Mata pelajaran | Mapel yang diajar. |
| Tingkat pengampu | Kosong untuk semua tingkat atau isi tingkat tertentu. |
| Kurikulum pengampu | Kosong untuk semua kurikulum atau isi kurikulum tertentu. |
| Prioritas | Nilai 1-10 untuk preferensi assignment. |
| Batas JP | Batas maksimum JP assignment bila diperlukan. |

### 11.4 Pemeriksaan Kelengkapan Mata Pelajaran

Sebelum membuat beban mengajar, pastikan tiga lapis data sudah saling cocok.

1. Katalog mata pelajaran sudah memiliki kode dan nama yang benar.
2. Mata pelajaran per tingkat sudah memiliki tingkat, kurikulum, status, JP mingguan, ukuran blok, dan batas berturut-turut.
3. Guru pengampu sudah menghubungkan guru dengan mata pelajaran serta cakupan tingkat/kurikulum yang sesuai.

Jika tombol tambah beban tidak menampilkan guru atau kelas yang diharapkan, masalah biasanya berada pada Guru Pengampu atau Mata Pelajaran per Tingkat. Gunakan filter **Spesifik tingkat**, **Semua tingkat**, **Pernah dijadwalkan**, dan **Belum pernah dijadwalkan** untuk menemukan data yang perlu diperbaiki.

### 11.5 Hapus Massal yang Tersedia

Pada **Mata Pelajaran per Tingkat** dan **Guru Pengampu**, tombol **Hapus semua** tersedia untuk merapikan data. Data yang belum pernah dipakai jadwal dapat dihapus permanen, sedangkan data berhistori akan dipertahankan dengan status terhapus. Buat backup lebih dahulu dan jalankan preflight setelahnya.

## 12. Hari dan Slot JP

Menu **Hari dan Slot JP** menentukan horizon waktu jadwal.

### 12.1 Hari Aktif

Setiap hari memiliki kode, nama, urutan, dan status aktif. Urutan menentukan tampilan dan pemrosesan. Hari nonaktif tidak dipakai oleh solver.

### 12.2 Slot JP

Setiap slot memiliki:

| Field | Fungsi |
|---|---|
| Hari | Hari pemilik slot. |
| Posisi JP | Urutan slot dalam hari. |
| Label | Nama slot, misalnya JP 1 atau Istirahat. |
| Mulai | Jam mulai format `HH:mm`. |
| Selesai | Jam selesai format `HH:mm`. |
| Jenis | `Pembelajaran`, `Istirahat`, atau `Kegiatan tetap`. |
| Status | Aktif atau nonaktif. |

Hanya slot berjenis **Pembelajaran** yang dipakai untuk menempatkan sesi belajar. Slot **Istirahat** dan **Kegiatan tetap** tampil di grid tetapi bukan slot solver.

### 12.3 Praktik yang Disarankan

1. Pastikan setiap hari memiliki slot pembelajaran yang benar.
2. Jangan memakai slot istirahat sebagai pembelajaran untuk menambah kapasitas semu.
3. Bila kalender berubah, jalankan ulang preflight karena versi jadwal lama dapat menjadi stale.
4. Gunakan template XLSX hari dan slot untuk pengisian massal.

### 12.4 Default Slot dan Penghapusan Kalender

Saat menambah slot baru, aplikasi membantu mengisi posisi berikutnya. Jika hari belum memiliki slot, posisi default adalah `1`. Jika hari sudah memiliki slot, posisi default mengikuti urutan berikutnya dan jam mulai default memakai jam selesai slot terakhir. Nilai tersebut tetap harus diperiksa sebelum disimpan.

Tindakan penghapusan kalender:

1. **Hapus slot** menghapus satu slot dari kalender aktif bila diizinkan.
2. **Hapus semua slot hari ini** membersihkan slot pada satu hari.
3. **Hapus semua hari** membersihkan hari aktif beserta slot terkait.

Jika slot sudah memiliki histori jadwal, server dapat mengarsipkan referensi agar versi lama tetap dapat dibaca. Setelah perubahan kalender, jangan memakai draf lama sebelum validasi versi menunjukkan nol penghambat.

## 13. Kelas dan Ruang

Menu **Kelas dan Ruang** memiliki tab **Kelas** dan **Ruang**.

### 13.1 Kelas

Field kelas meliputi kode, nama, tingkat, kurikulum, jumlah siswa, ruang utama, kelayakan penjadwalan, dan status. Hanya kelas yang ditandai **Dapat dijadwalkan** dan aktif yang dipakai oleh solver.

### 13.2 Ruang

Field ruang meliputi kode, nama, jenis ruang, kapasitas, dan status. Kapasitas ruang dipakai oleh validator jika tersedia. Bila kapasitas kosong, aplikasi dapat memberi peringatan karena HC13 belum terbukti penuh.

### 13.3 Risiko Umum

1. Kelas belum memiliki tingkat atau kurikulum yang cocok dengan mata pelajaran per tingkat.
2. Ruang utama belum diisi sehingga beban mengajar tidak otomatis memperoleh ruang.
3. Kapasitas ruang kosong pada seluruh demand, sehingga validasi kapasitas belum lengkap.

### 13.4 Praktik Akurat untuk Kelas dan Ruang

Gunakan pedoman berikut.

1. Isi tingkat kelas dengan kode yang sama seperti pada Mata Pelajaran per Tingkat.
2. Isi kurikulum kelas bila sekolah membedakan kurikulum antar rombel.
3. Aktifkan **Dapat dijadwalkan** hanya untuk kelas yang benar-benar masuk jadwal pelajaran.
4. Isi ruang utama agar beban mengajar dapat mewarisi ruang default.
5. Isi kapasitas ruang jika kapasitas kelas menjadi kendala sekolah.
6. Gunakan filter **Kelas yang layak dijadwalkan** dan **Rombongan belajar nonkelas** untuk memisahkan kelas reguler dari data referensi.

## 14. Beban Mengajar

Menu **Beban Mengajar** menyatakan kebutuhan pembelajaran yang harus ditempatkan ke jadwal.

### 14.1 Field Utama

| Field | Fungsi |
|---|---|
| Kelas | Kelas tujuan. |
| Mata pelajaran | Mata pelajaran yang dijadwalkan. |
| Guru | Guru pengampu. |
| Ruang | Ruang default, bila ada. |
| JP mingguan | Total JP per minggu. |
| Ukuran blok | Durasi default sesi. |
| Maks. total JP / hari | Batas JP mata pelajaran tersebut pada kelas tersebut per hari. |
| Status | Aktif atau nonaktif. |

### 14.2 Perencana Beban Mengajar

Tombol **Tambah** membuka perencana beban. Alurnya:

1. Pilih guru yang sudah memiliki penugasan aktif.
2. Pilih mata pelajaran yang diampu guru.
3. Pilih kelas yang cocok dengan tingkat dan kurikulum assignment.
4. Pilih varian mata pelajaran per tingkat bila tersedia lebih dari satu.
5. Isi batas maksimum JP per hari bila diperlukan.
6. Simpan semua kebutuhan.

Sistem menolak duplikasi kelas-mata pelajaran dalam satu kelompok, guru tanpa assignment aktif, dan kelas yang belum memiliki varian mata pelajaran per tingkat.

### 14.3 Pola JP Mingguan

RuangJadwal memakai pola sesi berikut pada model penjadwalan.

| JP Mingguan | Pola Sesi |
|---:|---|
| 1 | Satu sesi 1 JP |
| 2 | Satu sesi 2 JP |
| 3 | Satu sesi 3 JP |
| 4 | Dua sesi 2+2 pada dua hari berbeda |
| 5 | Dua sesi 3+2 atau 2+3 pada dua hari berbeda |

Istirahat tidak dianggap memutus pertemuan pedagogis. Tampilan dapat menyisipkan label istirahat, tetapi solver tetap membaca rangkaian berdasarkan slot pembelajaran.

### 14.4 Pratinjau Risiko Beban Mengajar

Saat menambah atau mengubah beban mengajar, aplikasi dapat menghitung risiko terhadap feasibility. Baca panel tersebut sebelum menyimpan, terutama bila:

1. JP mingguan besar;
2. guru memiliki availability sempit;
3. kelas sudah memakai hampir semua slot;
4. mata pelajaran wajib dipisah menjadi beberapa sesi;
5. ruang khusus atau ruang utama terbatas.

Jika risiko tinggi, perbaiki input sebelum generate: perluas availability guru, periksa guru pengampu alternatif, tambah kapasitas slot bila kebijakan memungkinkan, atau kurangi batas harian yang terlalu ketat.

### 14.5 Hapus Massal Beban Mengajar

Tombol **Hapus semua** pada Beban Mengajar menghapus beban yang belum pernah dijadwalkan dan menandai beban berhistori sebagai terhapus. Gunakan hanya ketika hendak membangun ulang demand dari Dapodik atau template. Urutan aman:

1. Cadangkan XLSX.
2. Hapus semua beban bila memang diperlukan.
3. Impor atau buat ulang beban.
4. Periksa total JP pada Ringkasan.
5. Jalankan preflight di Studio Jadwal.

## 15. Pemeriksaan Sebelum Generate

Sebelum membuat jadwal, pastikan:

1. Minimal ada satu hari aktif.
2. Slot pembelajaran aktif tersedia.
3. Guru eligible aktif tersedia.
4. Kelas eligible aktif tersedia.
5. Mata pelajaran per tingkat sudah cocok dengan kelas.
6. Guru pengampu sudah cocok dengan mata pelajaran, tingkat, dan kurikulum.
7. Beban mengajar aktif memiliki JP positif.
8. Total JP kelas tidak melebihi kapasitas slot pembelajaran.
9. Ketersediaan guru tidak menutup seluruh kandidat.
10. Ruang khusus dan kapasitas ruang telah diisi bila menjadi kebijakan sekolah.

Jika Studio menampilkan `0 penghambat`, data telah melewati gerbang kendala keras yang dimodelkan. Jika masih ada peringatan, baca pesan dan tentukan apakah peringatan tersebut harus diselesaikan sebelum draf dipakai.

### 15.1 Cara Membaca Diagnosis Studio

Studio menampilkan beberapa panel diagnosis. Gunakan urutan baca berikut.

1. **Readiness banner**: menentukan apakah generator aktif atau terkunci.
2. **Sumber ketidaklayakan jadwal**: menunjukkan guru, kelas, hari, jam, atau demand yang menutup ruang kandidat.
3. **Peta risiko feasibility**: menunjukkan area paling padat walaupun belum menjadi blocker.
4. **Risiko ketersediaan guru**: menunjukkan guru yang availability-nya paling berisiko terhadap demand.
5. **Bukti availability**: muncul saat ada blocker dan membantu melihat jendela waktu yang tertutup.
6. **Kendala**: membuka ringkasan constraint aktif yang diperiksa aplikasi.

Prioritaskan blocker sebelum warning. Jika panel memberi tindakan seperti membuka Guru, Kelas, atau Beban Mengajar, lakukan perbaikan di halaman tersebut lalu kembali ke Studio dan tekan **Segarkan status**.

## 16. Studio Jadwal

Studio Jadwal adalah ruang untuk membuat, membaca, merevisi, dan mengekspor jadwal.

### 16.1 Komponen Utama

| Komponen | Fungsi |
|---|---|
| Metrik kebutuhan | Menampilkan JP, jumlah kebutuhan pembelajaran, dan jumlah sesi. |
| Metrik kalender | Menampilkan jumlah slot dan hari aktif. |
| Metrik sumber daya | Menampilkan jumlah guru dan kelas eligible. |
| Kesiapan | Menampilkan penghambat dan peringatan. |
| Versi jadwal | Daftar draf, peninjauan, terbit, atau arsip. |
| Proses terbaru | Riwayat generate beserta status, engine, seed, runtime, dan diagnosis. |
| Kisi jadwal | Tampilan jadwal per kelas, guru, mata pelajaran, atau ruang. |
| Validasi versi | Validasi fingerprint, keterisian slot, dan kendala keras versi aktif. |

### 16.2 Status Proses Generate

| Status | Arti | Tindakan |
|---|---|---|
| `validating` | Server sedang memeriksa input. | Tunggu. |
| `running` | Mesin penyusun jadwal sedang mencari draf. | Tunggu dan pantau progres. |
| `feasible` atau Layak | Draf lengkap ditemukan dan validator independen tidak menemukan penghambat. | Telaah kualitas dan kebijakan sekolah. |
| `infeasible` atau Tidak layak | Preflight atau solver membuktikan konflik pada kendala aktif. | Perbaiki data sesuai diagnosis. |
| `unknown` atau Belum pasti | Batas pencarian habis tanpa membuktikan tidak layak. | Tambah waktu bila aman, kurangi domain, atau perbaiki bottleneck. |
| `failed` atau Gagal | Terjadi kesalahan teknis atau post-validation membatalkan hasil. | Baca issue, simpan request ID bila tersedia, dan hubungi administrator. |

### 16.3 Membuat Draf Otomatis

1. Buka **Studio Jadwal**.
2. Pastikan tidak ada penghambat.
3. Tekan **Buat draf jadwal**.
4. Isi nama versi, tahun ajaran, semester, seed, waktu minimal solusi awal, dan waktu maksimal proses.
5. Tekan **Buat draf jadwal** pada dialog.
6. Pantau fase validasi input, penyusunan kandidat, pencarian solusi, pengoptimalan urutan, penyimpanan draf, dan validasi akhir.
7. Jika berhasil, pilih versi baru pada daftar versi dan telaah kisi jadwal.

Seed membuat proses lebih mudah direproduksi. Masukan yang sama dan seed yang sama seharusnya menghasilkan pencarian yang dapat diaudit.

#### Batas Waktu dan Progres Pencarian

Dialog generator membaca batas runtime server. Nilai **Waktu maksimal proses** tidak boleh melebihi batas tersebut. **Waktu minimal solusi awal** menentukan berapa lama mesin menunggu solusi pertama sebelum menghentikan proses dan menampilkan diagnosis tekanan.

Saat proses berjalan, Studio menampilkan fase:

1. validasi masukan;
2. penyusunan kandidat;
3. pencarian solusi;
4. pengoptimalan urutan;
5. penyimpanan draf;
6. post-validation.

Jangan memuat ulang halaman secara manual ketika proses sedang berjalan kecuali diperlukan. Studio menyegarkan status run aktif secara otomatis dan menampilkan proses terbaru beserta seed, runtime, jumlah JP, engine, dan diagnosis.

### 16.4 Membaca Kisi Jadwal

Tampilan yang tersedia:

| Tampilan | Kegunaan |
|---|---|
| Per kelas | Melihat semua kelas secara sejajar. Ini tampilan utama untuk distribusi jadwal kelas. |
| Per guru | Melihat beban dan potensi jam kosong guru. |
| Per mata pelajaran | Melihat penyebaran satu mata pelajaran atau seluruh mata pelajaran. |
| Per ruang | Melihat pemakaian ruang, termasuk sumber daya virtual `Tanpa ruang`. |

Gunakan filter **Sumber daya** untuk melihat semua entitas atau satu entitas tertentu.

Legenda grid:

| Tanda | Makna |
|---|---|
| Blok berwarna | Sesi pembelajaran. Warna mengikuti mata pelajaran. |
| Panah lanjutan | Slot lanjutan dari sesi multi-JP. |
| Istirahat | Slot jeda yang tampil di grid tetapi bukan kandidat solver. |
| Agenda sekolah | Slot kegiatan tetap yang tidak menerima sesi pembelajaran. |
| Slot kosong | Slot pembelajaran yang belum terisi atau dapat menjadi tujuan pindah pada draf. |
| Pola 4 JP/5 JP | Penanda bahwa mata pelajaran memiliki pola sesi mingguan terpisah. |

### 16.5 Revisi Manual

Pada versi `draft`, Tim Kurikulum dapat:

1. Mengklik sesi untuk membuka editor perpindahan.
2. Menyeret sesi ke slot kosong yang legal.
3. Menghapus sesi dari draf.
4. Menempatkan sesi sisa secara manual melalui **Tempatkan sesi**.

Semua revisi disimpan secara transaksional. Server menolak perubahan yang menyebabkan bentrok guru, bentrok kelas, bentrok ruang, pelanggaran availability, pelanggaran pola sesi, atau pelanggaran total JP.

#### Menempatkan Sesi Sisa

Tombol **Tempatkan sesi** aktif bila versi draf masih memiliki demand yang belum terpenuhi dan tidak ada blocker selain kekurangan JP. Dialog menampilkan:

1. kebutuhan pembelajaran yang belum terpenuhi;
2. JP yang sudah terjadwal dan sisa JP;
3. pola sesi wajib, misalnya `2+2` atau `3+2`;
4. hari dan slot tujuan yang masih selectable;
5. durasi sesi berikutnya.

Jangan mengubah durasi hanya untuk memaksa slot. Durasi harus mengikuti pola sesi yang ditampilkan. Jika penempatan ditolak, baca pesan validasi dan perbaiki penyebabnya, bukan mengulang pada slot yang sama.

### 16.6 Mengirim ke Peninjauan

Jika validasi versi memiliki nol penghambat, tekan **Kirim untuk peninjauan**. Versi berubah dari `draft` menjadi `review`. Versi non-draft tidak diedit langsung. Publikasi tetap memerlukan alur persetujuan manusia yang belum dibuka bebas oleh aplikasi.

### 16.7 Menghapus Draf Hasil Generate

Versi hasil generate yang belum published dapat dihapus permanen melalui tombol **Hapus permanen**. Sistem meminta konfirmasi dan membersihkan entry, occupancy, serta issue secara atomik. Solver run dan audit proses tetap dipertahankan.

### 16.8 Versi Stale dan Editor Terkunci

Versi jadwal dapat menjadi `stale` jika data master berubah setelah generate. Contohnya perubahan slot, kelas, guru, availability, assignment, atau beban mengajar. Jika editor terkunci, jangan memaksa revisi dari grid. Baca panel **Validasi versi**, perbaiki data yang berubah, lalu buat draf baru atau gunakan versi yang masih konsisten.

## 17. Ekspor Jadwal

Pada kisi jadwal, tersedia tombol:

| Tombol | Hasil |
|---|---|
| XLSX | Workbook Excel lengkap, termasuk tampilan kelas, guru, ruang, mata pelajaran, audit assignment, dan direktori guru sesuai implementasi ekspor. |
| DOCX | Dokumen Word untuk tampilan aktif. |
| Markdown | File Markdown untuk tampilan aktif. |
| JPG | Gambar jadwal dari grid aktif. |
| Cetak/PDF | Membuka dialog cetak peramban; pilih simpan sebagai PDF bila diperlukan. |

Sebelum ekspor, pilih tampilan, sumber daya, ukuran kertas, dan orientasi. Untuk dokumen resmi, pastikan logo sekolah, nama sekolah, tahun ajaran, semester, dan status versi sudah benar.

### 17.1 Urutan Ekspor yang Disarankan

1. Pilih versi jadwal yang valid.
2. Pastikan validasi versi menunjukkan `0 penghambat`.
3. Pilih tampilan: per kelas, per guru, per mata pelajaran, atau per ruang.
4. Pilih sumber daya tertentu bila ingin ekspor yang lebih kecil.
5. Pilih ukuran kertas `A4`, `F4/Folio`, `Letter`, atau `A3`.
6. Pilih orientasi lanskap atau potret.
7. Jalankan ekspor sesuai kebutuhan.
8. Buka file hasil ekspor dan periksa kop, tahun ajaran, semester, kelas/guru/ruang, serta total JP sebelum dibagikan.

Untuk dokumen rapat kurikulum, gunakan XLSX sebagai arsip utama karena memuat banyak tampilan audit. Gunakan DOCX, JPG, atau PDF untuk distribusi yang lebih ringkas kepada pihak tertentu.

## 18. Backup dan Restore

### 18.1 Backup Berkala

Lakukan backup sebelum:

1. Impor besar.
2. Restore data.
3. Perubahan massal guru, kelas, slot, atau beban.
4. Generate jadwal penting.
5. Penghapusan data berhistori.

Unduh backup dari **Akun dan Sekolah** melalui tombol **Cadangkan XLSX**.

### 18.2 Restore

1. Unduh **Template Restore** atau gunakan file backup yang dihasilkan aplikasi.
2. Isi data sesuai struktur sheet.
3. Buka **Restore XLSX**.
4. Unggah satu file XLSX.
5. Tunggu validasi.
6. Jika berhasil, periksa kembali Ringkasan dan Studio Jadwal.

Restore tidak menampilkan kata sandi lama. Akun baru harus memiliki kata sandi awal pada file restore.

### 18.3 Batas Aman Restore

Jangan melakukan restore ketika pengguna lain sedang mengedit data yang sama. Koordinasikan waktu kerja, buat backup lebih dahulu, dan pastikan file restore berasal dari sumber tepercaya.

### 18.4 Setelah Restore Berhasil

Lakukan pemeriksaan berikut.

1. Buka **Ringkasan** dan pastikan jumlah guru, kelas, beban, hari, dan slot masuk akal.
2. Buka **Akun dan Sekolah** untuk memastikan akun aktif sesuai kebutuhan.
3. Buka **Studio Jadwal** dan baca preflight.
4. Jika jadwal ikut dipulihkan, pilih versinya dan baca **Validasi versi**.
5. Jika ada versi stale, buat draf baru sebelum mengekspor.
6. Simpan file restore dan hasil backup sebelum restore sebagai arsip audit sementara.

## 19. Troubleshooting

### 19.1 Pendaftaran Tidak Dapat Dikirim

Kemungkinan penyebab:

1. Tidak ada kategori berlangganan aktif dan publik.
2. NPSN, username, atau email sudah terdaftar.
3. Kata sandi dan konfirmasi tidak sama.
4. Koneksi database belum tersedia.

Tindakan:

1. Hubungi kanal dukungan resmi agar kategori pendaftaran diperiksa.
2. Gunakan username atau email lain.
3. Periksa ulang kata sandi.
4. Hubungi administrator bila pesan menunjukkan konfigurasi belum lengkap.

### 19.2 Login Ditolak

Kemungkinan penyebab:

1. Nama pengguna atau kata sandi salah.
2. Sekolah belum aktif.
3. Akun belum aktif.
4. Sekolah sudah dinonaktifkan.

Tindakan:

1. Periksa kredensial.
2. Hubungi Admin Kurikulum sekolah atau kanal dukungan resmi untuk memastikan status aktivasi.
3. Pastikan sekolah berstatus aktif.

### 19.3 Impor Dapodik Ditolak

Kemungkinan penyebab:

1. Jumlah file tidak tepat lima.
2. Nama file tidak sesuai.
3. File lebih dari 10 MB.
4. Total unggahan lebih dari 30 MB.
5. File bukan JSON valid.
6. Envelope JSON tidak sesuai kontrak Dapodik.

Tindakan:

1. Ekspor ulang file dari sumber Dapodik.
2. Jangan mengganti nama file.
3. Unggah lima file sekaligus.
4. Jika gagal berulang, simpan pesan error dan hubungi administrator.

### 19.4 Guru Tidak Muncul

Kemungkinan penyebab:

1. GTK bukan Guru menurut `jenis_ptk_id=92` atau label Guru.
2. Guru nonaktif.
3. Guru dihapus dari pengelolaan aktif.
4. Snapshot Dapodik belum disinkronkan.

Tindakan:

1. Periksa tab Guru.
2. Sinkronkan ulang Dapodik.
3. Aktifkan guru bila memang perlu dijadwalkan.

### 19.5 Kelas Tidak Muncul

Kemungkinan penyebab:

1. Rombel bukan jenis Kelas.
2. Kelas nonaktif.
3. Kelas tidak ditandai dapat dijadwalkan.
4. Data Dapodik belum lengkap.

Tindakan:

1. Periksa tab Kelas.
2. Pastikan **Dapat dijadwalkan** aktif.
3. Periksa tingkat dan kurikulum kelas.

### 19.6 Beban Mengajar Tidak Bisa Dibuat

Kemungkinan penyebab:

1. Guru belum memiliki assignment.
2. Mata pelajaran per tingkat belum dibuat.
3. Tingkat atau kurikulum assignment tidak cocok dengan kelas.
4. Beban duplikat untuk kelas dan mata pelajaran yang sama.

Tindakan:

1. Lengkapi Guru Pengampu.
2. Lengkapi Mata Pelajaran per Tingkat.
3. Gunakan perencana beban dan baca pesan validasi.

### 19.7 Generator Nonaktif

Generator dinonaktifkan jika preflight masih memiliki penghambat. Buka panel diagnosis di Studio Jadwal, ikuti tautan tindakan, perbaiki data, dan segarkan Studio.

### 19.8 Status Generate `unknown`

Status `unknown` berarti batas pencarian habis tanpa solusi lengkap dan tanpa bukti tidak layak. Tindakan yang dapat dilakukan:

1. Tambah batas waktu bila batas server memungkinkan.
2. Periksa guru dengan availability paling ketat.
3. Pastikan kelas tidak memakai 100 persen kapasitas tanpa slack bila kebijakan memungkinkan penambahan ruang waktu.
4. Kurangi batasan yang bersifat preferensi, bukan kendala keras, setelah disetujui pemilik kebijakan.
5. Periksa demand yang tersisa pada diagnosis.

### 19.9 Versi Jadwal Stale

Versi menjadi stale jika master, kalender, demand, atau availability berubah setelah generate. Buat draf baru atau revisi dari baseline yang sesuai. Jangan memakai versi stale sebagai dasar publikasi.

### 19.10 Ekspor Bermasalah

Jika ekspor JPG gagal, grid mungkin terlalu besar untuk batas kanvas peramban. Coba pilih satu kelas, guru, mata pelajaran, atau ruang terlebih dahulu. Untuk PDF, gunakan tombol **Cetak/PDF** dan pilih ukuran kertas yang sesuai.

### 19.11 Restore Ditolak

Restore ditolak jika ada sheet hilang, header berubah, nilai referensi tidak cocok, ukuran file melebihi batas, atau baris tertentu melanggar validasi. Perbaiki file, gunakan template terbaru, dan unggah ulang. Tidak ada perubahan parsial ketika restore gagal.

### 19.12 Impor XLSX Master Ditolak

Kemungkinan penyebab:

1. File bukan `.xlsx`.
2. Ukuran file melebihi 8 MB.
3. Template berasal dari versi aplikasi lama.
4. Header atau nama sheet diubah.
5. Ada referensi yang tidak cocok, misalnya kode guru, kelas, mapel, tingkat, atau kurikulum.
6. Ada baris duplikat.

Tindakan:

1. Unduh template terbaru dari halaman yang sama.
2. Salin data lama ke template baru tanpa mengubah header.
3. Perbaiki baris yang disebut dalam pesan error.
4. Unggah ulang satu file.

### 19.13 Simpan Data Ditolak karena Konflik

Jika data ditolak setelah lama terbuka, kemungkinan baris sudah diubah oleh sesi lain. Tekan **Segarkan**, buka ulang data, lakukan perubahan kembali, lalu simpan. Ini mencegah perubahan anggota tim saling menimpa.

### 19.14 Revisi Manual Jadwal Ditolak

Kemungkinan penyebab:

1. Slot tujuan bukan slot pembelajaran aktif.
2. Guru, kelas, atau ruang sudah terpakai.
3. Availability guru menolak slot tersebut.
4. Durasi tidak sesuai pola sesi.
5. Versi bukan `draft` atau sudah stale.

Tindakan:

1. Baca pesan validasi.
2. Coba slot lain yang masih legal.
3. Perbaiki availability atau beban jika pesannya mengarah ke data master.
4. Jika versi stale, buat draf baru.

### 19.15 Pengajuan Kategori Tidak Bisa Dikirim

Kemungkinan penyebab:

1. Pengguna bukan Admin Kurikulum.
2. Masih ada pengajuan kategori yang menunggu.
3. Tidak ada kategori tujuan aktif selain kategori saat ini.
4. Alasan perubahan belum diisi.

Tindakan:

1. Periksa tab **Berlangganan**.
2. Batalkan pengajuan lama bila masih menunggu dan memang tidak diperlukan.
3. Tulis alasan operasional minimal sesuai validasi.
4. Hubungi kanal dukungan resmi bila pilihan kategori tidak tersedia.

## 20. Checklist Siap Generate

Gunakan checklist berikut sebelum menekan **Buat draf jadwal**.

- [ ] Sekolah aktif dan konteks sekolah benar.
- [ ] Lima file Dapodik sudah diimpor atau master manual sudah lengkap.
- [ ] Guru aktif hanya berisi guru yang benar-benar akan dijadwalkan.
- [ ] Minimum dan maksimum beban guru sudah diverifikasi.
- [ ] Aturan ketersediaan guru sudah sesuai kebijakan.
- [ ] Mata pelajaran per tingkat sudah lengkap.
- [ ] Guru pengampu sudah sesuai tingkat dan kurikulum.
- [ ] Hari aktif dan slot pembelajaran sudah final.
- [ ] Slot istirahat dan kegiatan tetap tidak dipakai sebagai slot pembelajaran.
- [ ] Kelas eligible sudah benar.
- [ ] Ruang utama dan kapasitas ruang sudah diisi bila diperlukan.
- [ ] Beban mengajar aktif memiliki JP positif.
- [ ] Tidak ada beban tanpa guru eligible.
- [ ] Tidak ada penghambat pada Studio Jadwal.
- [ ] Peringatan sudah dibaca dan diterima secara sadar.
- [ ] Template XLSX yang dipakai adalah template terbaru dari aplikasi.
- [ ] Perubahan massal sudah diikuti dengan **Segarkan** dan preflight ulang.

## 21. Checklist Setelah Generate

- [ ] Status proses adalah `feasible` atau Layak.
- [ ] Validasi versi memiliki `0 penghambat`.
- [ ] Total JP terjadwal sama dengan total JP wajib.
- [ ] Tampilan per kelas sudah diperiksa.
- [ ] Tampilan per guru sudah diperiksa.
- [ ] Tampilan per ruang sudah diperiksa bila ruang dipakai.
- [ ] Tampilan per mata pelajaran sudah diperiksa untuk mapel kritis.
- [ ] Jam kosong, beban harian, dan distribusi mapel sudah ditinjau.
- [ ] Revisi manual, jika ada, sudah divalidasi ulang.
- [ ] Versi yang akan dibagikan sudah masuk tahap peninjauan.
- [ ] File ekspor sudah diperiksa sebelum disebarkan.
- [ ] File XLSX utama disimpan sebagai arsip audit.
- [ ] Backup setelah jadwal final dibuat dan disimpan di lokasi terbatas.

## 22. Tata Kelola Data dan Privasi

1. Jangan membagikan file Dapodik, backup, atau restore melalui kanal yang tidak aman.
2. Simpan file backup pada lokasi terbatas dan beri penamaan yang jelas.
3. Hapus file lokal yang tidak diperlukan setelah restore atau audit selesai.
4. Jangan memasukkan kata sandi ke catatan kerja, tangkapan layar, atau dokumen panduan.
5. Gunakan akun terpisah untuk setiap anggota tim agar audit akses lebih jelas.
6. Jangan menghapus atau menonaktifkan data berhistori tanpa backup dan persetujuan sekolah.
7. Gunakan restore hanya pada waktu kerja yang disepakati agar tidak menimpa pekerjaan anggota tim lain.

## 23. Rujukan Teknis dan Kebijakan

Panduan ini disusun berdasarkan analisis kode, schema, service, migrasi, dan dokumentasi internal RuangJadwal, serta rujukan eksternal berikut.

| Rujukan | Relevansi |
|---|---|
| [Portal Dapodik Kemendikdasmen](https://dapo.kemendikdasmen.go.id/) | Konteks resmi Data Pokok Pendidikan. |
| [Unduhan Dapodik Kemendikdasmen](https://dapo.kemendikdasmen.go.id/unduhan) | Rujukan sumber aplikasi dan pembaruan Dapodik. |
| [OR-Tools CP-SAT Solver](https://developers.google.com/optimization/cp/cp_solver) | Rujukan status `OPTIMAL`, `FEASIBLE`, dan interpretasi solver berbasis constraint. |
| [Permendikdasmen No. 13 Tahun 2025 pada BPK](https://peraturan.bpk.go.id/Details/322506/permendikdasmen-no-13-tahun-2025) | Rujukan perubahan regulasi kurikulum yang harus diverifikasi terhadap kebijakan sekolah. |
| Dokumentasi internal `README.md`, `STUDIO_JADWAL_ANALYSIS.md`, dan `DAPODIK_PEMBELAJARAN.md` | Rujukan perilaku aktual aplikasi, validator, solver, dan sinkronisasi Dapodik. |

## 24. Penutup

RuangJadwal paling efektif digunakan ketika Tim Kurikulum memperlakukan data sebagai sumber keputusan yang harus lengkap, dapat ditelusuri, dan dapat diverifikasi. Jangan mengejar generate jadwal sebelum data dasar benar. Jadwal yang baik dimulai dari master akademik yang rapi, kalender yang realistis, ketersediaan guru yang jujur, dan pemeriksaan preflight yang dibaca dengan saksama.
