Domain: Akademik
SSOT untuk modul akademik Scola — kurikulum, jadwal, penilaian, rapor, kenaikan kelas.
Last verified: 2026-04-01
1. Visi & Best Practice
1.1 Regulasi Acuan
| Regulasi |
Relevansi |
| Kurikulum Merdeka (Kemendikbud 2022) |
Struktur kurikulum, capaian pembelajaran (CP), P5 |
| Permendikbud No. 21/2022 |
Standar penilaian: formatif & sumatif |
| Permendikbudristek No. 262/M/2022 |
Perubahan PAUD-Dikdasmen, fleksibilitas kurikulum |
| Standar Nasional Pendidikan (SNP) |
8 standar, khususnya standar isi & standar penilaian |
| Panduan Rapor Projek P5 |
Profil Pelajar Pancasila — penilaian deskriptif |
1.2 Kondisi Ideal (Best Practice SIM Sekolah)
Master Data Akademik:
- Tahun ajaran → semester (term) → kelas/rombel → mata pelajaran
- Setiap rombel memiliki wali kelas, kuota siswa, dan jadwal terdefinisi
- Mata pelajaran mengacu pada struktur kurikulum nasional + muatan lokal
- Teaching assignment: satu guru bisa mengajar banyak mapel/rombel
Jadwal Pelajaran:
- Definisi jam pelajaran (lesson hours) fleksibel per jenjang
- Jadwal mingguan otomatis generate dari teaching assignment
- Conflict detection: guru, ruang, dan rombel tidak bentrok
- Kalender akademik terintegrasi (libur, ujian, kegiatan sekolah)
Penilaian & Rapor:
- Komponen penilaian sesuai Kurikulum Merdeka: PH (Penilaian Harian), PTS (Penilaian Tengah Semester), PAS (Penilaian Akhir Semester)
- Bobot komponen configurable per sekolah
- KKM/KKTP (Kriteria Ketuntasan Tujuan Pembelajaran) per mapel
- Rapor format Kurikulum Merdeka: deskripsi capaian, bukan hanya angka
- Rapor P5: deskriptif per dimensi Profil Pelajar Pancasila
- Cetak rapor PDF sesuai template Kemendikbud
- Workflow: Guru input → Wali Kelas verifikasi → Wakasek Kurikulum approve → Kepala Sekolah tanda tangan
Kenaikan Kelas:
- Kriteria kenaikan configurable (kehadiran minimal, ketuntasan mapel, dll.)
- Workflow approval: Wali Kelas → Wakasek Kurikulum → Kepala Sekolah
- Siswa tidak naik kelas → mekanisme remedial / mengulang
- Audit trail keputusan kenaikan
2. Arsitektur & Data Model
2.1 Backend Models (Odoo)
| Model |
Module |
Deskripsi |
op.academic.year |
openeducat_core |
Tahun ajaran |
op.academic.term |
openeducat_core |
Semester/term |
op.course |
openeducat_core |
Kelas (misal: Kelas 7 SMP) |
op.batch |
openeducat_core |
Rombel (misal: 7A) |
op.subject |
openeducat_core |
Mata pelajaran |
op.session |
openeducat_timetable |
Session/jadwal per pertemuan |
op.assignment |
openeducat_assignment |
Tugas |
scola.lesson.hour |
scola_lesson_hours |
Definisi jam pelajaran |
academic.grade |
scola_lms |
Nilai/grade |
lms.syllabus |
scola_lms |
Silabus/template kurikulum |
scola.report.card |
scola_report_card |
Rapor siswa |
2.2 Frontend Structure
src/views/
├── AdminViews/AcademicConfig/ # Admin: tahun ajaran, mapel, rombel, session
│ ├── AcademicYear/
│ ├── Course/
│ ├── Mapel/
│ ├── RombonganBelajar/
│ ├── Session/
│ └── PengaturanAkademik/
├── ScheduleManagement/ # Jadwal per role
│ ├── Faculty/Schedule.vue
│ └── Student/Schedule.vue
├── AssignmentManagement/ # Tugas
│ ├── Faculty/
│ └── Student/
├── ReportCardManagement/ # Rapor
│ ├── Admin/
│ ├── Faculty/
│ ├── Student/
│ ├── Parent/
│ └── VicePrincipal/
├── AdminViews/Promotion/ # Kenaikan kelas
├── AdminViews/LearningOutcome/ # Capaian Pembelajaran
└── AdminViews/P5/ # Projek P5
2.3 API Endpoints
Kontrak aktif per 2026-03-26
- Master data akademik dan workflow promosi masih dominan memakai Odoo JSON-RPC (/web/dataset/call_kw) via model action.
- Endpoint canonical HTTP yang aktif dan dipakai lintas role:
- /api/teaching-assignments
- /api/timetable/sessions/generate
- /api/timetable/sessions/auto-generate
- /api/v1/academic/promotion/policy-dashboard
- /api/v1/report-card/*
- Timezone operasional sekarang bersumber dari setting admin sekolah (res.company.school_timezone) dan ikut dibawa di payload auth (tz, school_timezone, company_timezone, user_timezone).
- SSOT ini mengikuti pendekatan function-first: FE/BE harus match pada kontrak aktif sekarang; canonicalization lanjutan hanya dikerjakan bila ada risiko fungsional atau maintenance yang nyata.
| Endpoint |
Method |
Deskripsi |
/web/dataset/call_kw |
POST |
CRUD master data akademik, session, dan workflow promosi |
/api/teaching-assignments |
GET/POST/PUT/DELETE |
Teaching assignment |
/api/timetable/sessions/generate |
POST |
Bulk generate jadwal manual |
/api/timetable/sessions/auto-generate |
POST |
Auto-generate jadwal dari teaching assignment |
/api/v1/academic/promotion/policy-dashboard |
POST |
Dashboard kebijakan kenaikan kelas |
/api/v1/report-card/* |
GET/POST |
Rapor management |
3. Fitur & Status Implementasi
3.1 Master Data Akademik
| Fitur |
Status |
Catatan |
| CRUD Tahun Ajaran |
✅ Done |
|
| CRUD Semester/Term |
✅ Done |
|
| CRUD Kelas (Course) |
✅ Done |
|
| CRUD Rombel (Batch) |
✅ Done |
Termasuk assign wali kelas |
| CRUD Mata Pelajaran |
✅ Done |
|
| Pembagian Siswa ke Rombel |
✅ Done |
StudentClassAssignment |
| Pengaturan Jam Pelajaran |
✅ Done |
scola_lesson_hours |
3.2 Jadwal Pelajaran
| Fitur |
Status |
Catatan |
| Input jadwal manual (Admin) |
✅ Done |
Session-based |
| View jadwal (Guru) |
✅ Done |
|
| View jadwal (Siswa) |
✅ Done |
|
| View jadwal (Ortu) |
✅ Done |
Via parent portal |
| Conflict detection |
✅ Done |
Batch, faculty, classroom constraint + cross-validate |
| Auto-generate dari teaching assignment |
✅ Done |
Greedy algorithm: baca teaching assignment → distribusi ke slot JP × hari, respek constraint guru/rombel |
| Kalender akademik terintegrasi |
✅ Done |
Holiday auto-skip in session generation |
| Konsistensi timestamp sesi FE↔BE |
✅ Done |
List/edit/filter/helper sesi harian memakai timezone sekolah global lalu dikonversi eksplisit ke UTC backend agar tanggal tidak drift di UI |
3.3 Penilaian & Rapor
| Fitur |
Status |
Catatan |
| Input nilai guru (PH/PTS/PAS) |
✅ Done |
TeacherReportLineList, edit nilai dibatasi draft-only dan akses line-level diverifikasi di backend |
| Gradebook guru |
✅ Done |
LMS Gradebook |
| Wali Kelas verifikasi rapor |
✅ Done |
HomeroomReportList |
| Wakasek quality gate |
✅ Done |
CurriculumQualityGate |
| Rapor format Kurikulum Merdeka |
✅ Done |
Deskripsi mapel + section P5 tampil di detail rapor |
| Rapor P5 |
✅ Done |
Assessment P5 terhubung ke detail rapor dan PDF |
| Cetak PDF rapor |
✅ Done |
PDF parent rapor sudah mencakup header sekolah, mapel, dan P5 |
| Capaian Pembelajaran (CP) |
✅ Done |
LearningOutcome module |
| KKM/KKTP configurable |
✅ Done |
Per-mapel via scola.subject.kktp + curriculum default |
| Default tahun ajaran aktif lintas role |
✅ Done |
Admin/guru/wali kelas memakai tanggal “hari ini” berdasarkan timezone sekolah, bukan timezone device/browser |
3.5 TP & ATP (Kurikulum Merdeka)
| Fitur |
Status |
Catatan |
| CRUD Tujuan Pembelajaran (TP) |
✅ Done |
scola.tujuan.pembelajaran — per mapel, per fase |
| CRUD Alur Tujuan Pembelajaran (ATP) |
✅ Done |
scola.alur.tp — urutan TP per semester + workflow draft→confirmed→approved |
| ATP Line (susunan TP per minggu) |
✅ Done |
scola.atp.line — minggu, JP, jenis asesmen |
| FE Admin view TP/ATP |
✅ Done |
/tp-atp — tab TP + tab ATP, filter fase, CRUD modal |
3.6 Modul Ajar
| Fitur |
Status |
Catatan |
| CRUD Modul Ajar |
✅ Done |
scola.modul.ajar — tujuan, langkah kegiatan, asesmen, lampiran |
| Workflow publish/archive |
✅ Done |
draft → published → archived |
| FE Admin view Modul Ajar |
✅ Done |
/modul-ajar — card grid, filter status, CRUD modal |
| Link ke ATP & TP |
✅ Done |
atp_id + tp_ids many2many |
3.7 Dapodik Export
| Fitur |
Status |
Catatan |
| Export CSV data akademik |
✅ Done |
/api/v1/academic/export/dapodik — NISN, mapel, guru, JP, semester |
3.4 Kenaikan Kelas
| Fitur |
Status |
Catatan |
| Kenaikan kelas workflow |
✅ Done |
Homeroom → Wakasek → Kepsek |
| Kriteria configurable |
✅ Done |
Backend policy contract + dashboard + FE sync |
| Kebijakan promosi dashboard |
✅ Done |
PromotionPolicyDashboard |
| Audit trail |
✅ Done |
promotionWorkflow.service + auditService + observability akademik |
| Detail evidence promosi |
✅ Done |
FE detail sekarang mengambil id dan relation id lengkap agar workflow/evidence/policy context sinkron dengan backend |
4. Gap Analysis & Backlog
P0 — Critical Gaps
| Gap |
Dampak |
Solusi |
| ~~Auto-generate jadwal dari teaching assignment~~ |
~~Sekolah besar butuh ini, manual terlalu lama~~ |
auto_generate_from_assignments() + API + FE AutoGenerateModal |
| ~~Template rapor Kurikulum Merdeka 100% compliance~~ |
~~Rapor wajib sesuai format Kemendikbud~~ |
Detail rapor + PDF + P5 section sudah terkunci |
P1 — Important Gaps
| Gap |
Dampak |
Solusi |
| ~~KKM/KKTP configurable per mata pelajaran~~ |
~~Setiap mapel bisa punya KKM berbeda~~ |
scola.subject.kktp model + auto-remedial flag |
| ~~Jadwal conflict detection advanced~~ |
~~Guru bisa double-booked~~ |
_find_conflicts() + cross-validate in scola_timetable |
| ~~Kalender akademik terintegrasi dengan jadwal~~ |
~~Events/libur tidak otomatis block jadwal~~ |
_get_holiday_dates() + auto-skip in generate_sessions() |
| ~~Rapor P5 lengkap dengan deskripsi per dimensi~~ |
~~Wajib untuk Kurikulum Merdeka~~ |
Detail rapor + PDF memakai assessment P5 semester aktif |
P2 — Nice to Have
| Gap |
Dampak |
Solusi |
| ~~TP & ATP (Tujuan & Alur Tujuan Pembelajaran)~~ |
~~Dokumentasi kurikulum lengkap~~ |
scola.tujuan.pembelajaran + scola.alur.tp + FE /tp-atp |
| ~~Modul Ajar digital~~ |
~~Upload & distribusi modul ajar~~ |
scola.modul.ajar + FE /modul-ajar |
| ~~Dapodik sync otomatis~~ |
~~Mengurangi input ganda~~ |
CSV export /api/v1/academic/export/dapodik + FE button |
5. File References
Frontend
src/router/adminRoutes.js — Admin academic routes
src/router/teacherRoutes.js — Teacher routes (jadwal, tugas, rapor)
src/router/studentRoutes.js — Student routes (jadwal, tugas, rapor)
src/views/AdminViews/AcademicConfig/ — Academic configuration views
src/views/AdminViews/AcademicConfig/Session/AutoGenerateModal.vue — Auto-generate jadwal
src/views/AdminViews/AcademicConfig/TpAtp/TpAtpList.vue — TP & ATP management
src/views/AdminViews/AcademicConfig/ModulAjar/ModulAjarList.vue — Modul Ajar management
src/views/ReportCardManagement/ — Report card views per role
src/views/AdminViews/Promotion/ — Student promotion
src/services/admin/academics/tpAtp.service.js — TP/ATP service
src/services/admin/academics/modulAjar.service.js — Modul Ajar service
Backend
scola_core/ — Base academic models
scola_lesson_hours/ — Lesson hour definitions
scola_timetable/ — Timetable extensions + auto-generate algorithm
scola_lms/models/lms_tp_atp.py — TP, ATP, ATP Line models
scola_lms/models/lms_modul_ajar.py — Modul Ajar model
scola_lms/ — Grades, syllabus
scola_report_card/ — Report card generation
7. Panduan Konfigurasi Implementor
configuration-guides/academic.md
8. Panduan End User