Domain: LMS (Learning Management System)¶
SSOT untuk modul e-Learning Scola — course, materi, tugas, gradebook, diskusi.
Last verified: 2026-03-25
1. Visi & Best Practice¶
1.1 Standar Acuan¶
| Standar | Relevansi |
|---|---|
| Kurikulum Merdeka — Pembelajaran Berdiferensiasi | LMS harus mendukung variasi materi per kelompok |
| Permendikbud No. 16/2022 (Standar Proses) | Perencanaan, pelaksanaan, dan penilaian pembelajaran |
| SCORM / xAPI | Standar interoperabilitas e-learning content |
| Google Classroom / Moodle patterns | UX patterns yang familiar bagi guru Indonesia |
1.2 Kondisi Ideal¶
Course Management:
- Course = abstraksi dari batch + subject (kelas + mapel)
- Guru melihat daftar "course" yang dia ajar, bukan session mentah
- Siswa melihat course yang dia ikuti berdasarkan enrollment rombel
- Course memiliki syllabus (template mingguan/topik) yang reusable
Materi Pembelajaran: - Upload file (PDF, PPT, video, gambar) dengan quota management - Organisasi per minggu/topik sesuai syllabus - Publish/unpublish control per materi - Bulk publish untuk efisiensi guru
Tugas & Penilaian: - Pembuatan tugas dengan deadline, instruksi, rubrik - Tipe tugas: file upload, teks, link - Student submission dengan late submission policy - Grading: manual + rubric-based - Grade components: PH, PTS, PAS (sesuai Kurikulum Merdeka) - Gradebook view per course (semua siswa × semua komponen)
Fitur Tambahan: - Diskusi per course (threaded discussions) - Achievement/gamification (badges, leaderboard) - Enrollment management (manual + auto from batch) - Course analytics (completion rate, engagement) - Advisor view untuk wali kelas
2. Arsitektur & Data Model¶
2.1 Key Insight¶
LMS di Scola bukan standalone backend module — melainkan:
- Frontend: Set of Vue views + services yang meng-orchestrate data OpenEduCat
- Backend: scola_lms module (NEW) untuk grade, syllabus, discussions + extensions ke op.assignment, op.subject
2.2 Data Model Mapping¶
| LMS Concept | Backend Model | Notes |
|---|---|---|
| Course (Class) | Virtual (derived) | Combination of op.batch + op.subject dari op.session |
| Session | op.session |
Scheduled class meeting |
| Syllabus | lms.syllabus |
Template topics/weeks, reusable |
| Teaching Module (Modul Ajar) | scola.modul.ajar |
Perangkat ajar Kurikulum Merdeka per mapel/tingkat/term |
| ATP | scola.alur.tp |
Alur Tujuan Pembelajaran yang dirujuk Modul Ajar |
| Material | ir.attachment |
Linked to session (res_model='op.session') |
| Assignment | op.assignment |
Extended with grade_component_type (PH/PTS/PAS) |
| Submission | op.assignment.sub.line |
Student submission line |
| Discussion | lms.discussion |
Threaded, linked to batch + subject |
| Discussion Post | lms.discussion.post |
Individual posts in thread |
| Grade | academic.grade |
Final computed grades |
2.3 Frontend Structure¶
src/views/LearningManagement/
├── Admin/
│ ├── LMSSettings.vue # Global LMS configuration
│ ├── LMSStorageQuota.vue # Storage quota management
│ └── LMSAuditLog.vue # Audit trail
├── Faculty/
│ ├── CourseList.vue # Teacher's courses
│ ├── CourseDetail.vue # Course content management
│ ├── TeachingModuleDetail.vue # Detail modul ajar per kelas
│ ├── Gradebook.vue # Grades overview
│ ├── EnrollmentQueue.vue # Enrollment management
│ ├── CourseAnalytics.vue # Course engagement analytics
│ ├── AdvisorClassOverview.vue # Wali kelas overview
│ ├── BulkContentPublish.vue # Bulk publish materials
│ ├── CourseLeaderboard.vue # Gamification
│ └── RubricManager.vue # Rubric templates
└── Student/
├── CourseList.vue # Student's enrolled courses
├── CourseDetail.vue # View materials, submit assignments
├── EnrollmentList.vue # Enrollment status
├── Achievements.vue # Badges, points
└── CourseLeaderboard.vue # Leaderboard view
2.4 Services Layer¶
| Service | Function |
|---|---|
src/services/lms/course.service.js |
Course abstraction — groups sessions by batch+subject |
src/services/lms/settings.service.js |
LMS config via canonical /api/lms/settings |
src/services/lms/teachingModule.service.js |
Modul Ajar per course space + detail page |
2.5 API Endpoints¶
| Endpoint | Method | Deskripsi |
|---|---|---|
/api/lms/courses |
GET | List course space untuk user saat ini |
/api/lms/courses/:id |
GET | Metadata course space + enrollment state |
/api/lms/courses/:id/items |
GET/POST | Materi, assignment, CBT item per course |
/api/lms/courses/:id/teaching-modules |
GET | Daftar modul ajar per course space |
/api/lms/teaching-modules/:id |
GET | Detail modul ajar dengan konteks course |
/api/lms/settings |
GET/PATCH | Pengaturan LMS admin |
/api/lms/enrollments |
GET | Enrollment management |
/api/lms/enrollments/:id |
PATCH | Approval/reject/withdraw enrollment |
/api/lms/course-templates |
GET/POST | Syllabus / template kursus |
/api/lms/discussions/* |
GET/POST/PATCH | Threaded discussions + moderation |
3. Fitur & Status Implementasi¶
| Fitur | Status | Catatan |
|---|---|---|
| Course list (faculty) | ✅ Done | Groups sessions by batch+subject |
| Course list (student) | ✅ Done | Based on enrollment |
| Course detail + materials | ✅ Done | Tab-based: materials, assignments, discussions, attendance |
| Teaching modules (Modul Ajar) | ✅ Done | Faculty course detail + dedicated detail page |
| Material upload + manage | ✅ Done | With quota checking |
| Publish/unpublish materials | ✅ Done | |
| Bulk content publish | ✅ Done | BulkContentPublish.vue |
| Assignment creation (teacher) | ✅ Done | With deadline, instructions |
| Student submission | ✅ Done | File upload, text |
| Assignment grading | ✅ Done | Manual + grade components |
| Gradebook view | ✅ Done | All students × all components |
| Syllabus template | ✅ Done | Reusable per course |
| Discussions (threaded) | ✅ Done | lms.discussion + lms.discussion.post |
| LMS Settings (admin) | ✅ Done | Feature toggles, policies |
| LMS Settings canonical API | ✅ Done | Frontend no longer writes ir.config_parameter directly |
| Storage quota management | ✅ Done | Per-school quota |
| Enrollment queue | ✅ Done | Manual enrollment management |
| Course analytics | ✅ Done | Completion, engagement |
| Advisor class overview | ✅ Done | Wali kelas view |
| Achievements / gamification | ✅ Done | Badges, leaderboard |
| Rubric manager | ✅ Done | Template rubrics |
| Audit log | ✅ Done | LMS actions tracking |
| Notifications publish/deadline/overdue/grade | ✅ Done | Portal notification + cron reminder sudah tersedia di backend |
| Late submission policy | ✅ Done | Window enforcement + automatic late penalty at grading |
| Offline access / PWA | ❌ Gap | No offline content caching |
| SCORM/xAPI content | ❌ Gap | Not supported |
| Video streaming | ❌ Gap | Only file upload, no streaming |
4. Gap Analysis & Backlog¶
P1 — Important Gaps¶
Core LMS blocker tidak tersisa pada implementasi saat ini. Gap yang masih ada bersifat roadmap enhancement, bukan blocker operasional harian.
P2 — Nice to Have¶
| Gap | Dampak | Solusi |
|---|---|---|
| SCORM/xAPI content support | Tidak bisa import content dari platform lain | Add SCORM player integration |
| Video streaming (bukan download) | File video besar, download lambat | Integrate with streaming service |
| Offline PWA support | Daerah internet terbatas | Implement service worker caching |
| AI-assisted grading | Beban koreksi guru tinggi | AI grading for essay-type submissions |
5. File References¶
Frontend¶
src/router/teacherRoutes.js— Faculty LMS routes (line ~420-498)src/router/studentRoutes.js— Student LMS routes (line ~197-254)src/views/LearningManagement/— All LMS viewssrc/services/lms/— LMS service layer
Backend¶
scola_lms/— LMS module (grades, syllabus, discussions)scola_core/— Base models extended for LMS
7. Panduan Konfigurasi Implementor¶
8. Panduan End User¶
| Role | Panduan |
|---|---|
| Guru | teacher.md |
| Siswa | student.md |
| Orang tua | parent.md |