Lewati ke isi

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 views
  • src/services/lms/ — LMS service layer

Backend

  • scola_lms/ — LMS module (grades, syllabus, discussions)
  • scola_core/ — Base models extended for LMS

7. Panduan Konfigurasi Implementor

configuration-guides/lms.md


8. Panduan End User

Role Panduan
Guru teacher.md
Siswa student.md
Orang tua parent.md