# Epik & Roadmap — LMS MBG

## Overview
Roadmap 2 bulan memanfaatkan codebase eksisting untuk mempercepat. Tiap epik memiliki outcome terukur, keterkaitan komponen, dan acceptance criteria.

## Epik A — Course & Learning Management
- Rujukan: `docs/Epic 2 — Course & Learning Management.md` (eksisting).
- Komponen/halaman terkait:
  - `src/app/course/page.tsx`, `src/app/course/[id]/page.tsx`
  - `src/components/course/ModuleTabs.tsx`, `ModuleNavigation.tsx`
  - `src/app/assignments/page.tsx`, `src/app/schedule/page.tsx`
- Outcome: katalog kursus, detail kursus, modul/lesson viewer, progres, jadwal & penugasan.
- Acceptance:
  - Learner dapat mendaftar, membuka lesson, progres bertambah sesuai aktivitas.
  - Admin melihat ringkasan kursus & progres kelas.

### Stories (Backend Draft — Non-Implementasi)
> Catatan: semua story ini untuk dokumentasi & kontrak API; eksekusi backend ditunda hingga gate terpenuhi.

### Story 1.1: Course Catalog Read API
- Tujuan: endpoint read-only untuk daftar kursus (paging, filter dasar).
- Gate: kontrak API disetujui, data privacy OK, tidak ada coding.

### Story 1.2: Course Detail Read API
- Tujuan: endpoint read-only untuk detail kursus + modul/lessons.
- Gate: kontrak API disetujui, relasi data diverifikasi.

### Story 1.3: Module Progress Update API
- Tujuan: endpoint untuk mencatat progres belajar (id user, modul, progress delta).
- Gate: definisi skema progres & idempotency disetujui.

### Story 1.4: Assignment Submission Persist
- Tujuan: draft kontrak penyimpanan submission tugas (metadata, payload).
- Gate: checklist keamanan & audit trail disetujui.

## Epik B — Assessment & Sertifikasi
- Komponen/halaman terkait:
  - `src/app/features/interactive-quiz-demo/page.tsx`
  - `src/app/exam-session/[sessionId]/page.tsx`, `src/app/exam-session/summary/[sessionId]/page.tsx`
  - `src/app/exams/page.tsx`, `src/app/admin/exams/page.tsx`
  - `src/components/admin/CertificatePDF.tsx`, `src/app/admin/certificates/[id]/page.tsx`
- Outcome: kuis interaktif, sesi ujian, ringkasan hasil, sertifikat PDF & kirim ulang email.
- Acceptance:
  - Kuis berjalan, skoring muncul, ujian terjadwal & ringkasan tersedia.
  - Sertifikat dihasilkan, dapat diunduh, dan email “kirim ulang” berfungsi.

### Stories (Backend Draft — Non-Implementasi)
> Catatan: dokumentasi & kontrak, tidak ada coding hingga gate.

### Story 2.1: Exam Session Create API
- Tujuan: kontrak pembuatan sesi ujian (user, examId, startTime).
- Gate: model sesi ujian, validasi & lifecycle disetujui.

### Story 2.2: Exam Scoring API
- Tujuan: kontrak endpoint penilaian jawaban (batch/stream, skor per soal).
- Gate: aturan penilaian, integritas data & audit disetujui.

### Story 2.3: Exam Summary Read API
- Tujuan: kontrak endpoint ringkasan hasil (skor total, waktu, per-soal).
- Gate: format ringkasan & akses kontrol disetujui.

### Story 2.4: Certificate Resend Email Stub
- Tujuan: kontrak request untuk kirim ulang email sertifikat (non-implementasi, queue stub).
- Gate: template email, throttling, dan logging disetujui.

## Epik C — Reward & Payroll Integration (Phase-1)
- Komponen/halaman terkait:
  - `src/features/payroll-reward-system/RewardDashboard.tsx`
  - `src/features/payroll-reward-system/PayrollManagement.tsx`
  - `src/features/payroll-reward-system/types.ts`, `services/`, `repositories/`
- Outcome: tampilan jam belajar & pengakuan sederhana (non-transaksional), feature-flagged.
- Acceptance:
  - Reward dashboard menampilkan jam belajar dari progres belajar.
  - Tidak ada perubahan ke sistem payroll produksi saat ini.

## Epik D — Analytics & Laporan
- Komponen/halaman terkait:
  - `src/app/admin/analytics/page.tsx`, `src/app/admin/analytics/[studentId]/page.tsx`
  - `src/app/export/page.tsx` (jika ada) atau util ekspor sederhana.
- Outcome: ringkasan performa, detail peserta, eksport CSV/Excel.
- Acceptance:
  - Admin melihat metrik dasar (penyelesaian, skor rata-rata, waktu belajar).
  - Dapat mengunduh laporan untuk manajemen.

## Epik E — Desktop UX & Accessibility
- Komponen terkait: seluruh halaman learner & komponen utama.
- Outcome: learner flow berjalan nyaman dan efisien di perangkat desktop.
- Acceptance:
  - Navigasi, teks, tombol, tabel terbaca & dapat dioperasikan dengan keyboard.
  - Waktu muat desktop p95 < 2 detik.

## Epik F — AI Assistant (Phase-1)
- Komponen/halaman terkait:
  - `src/app/ai-assistant/page.tsx`
- Outcome: tanya jawab konten pelatihan dapur (non-kritis), sebagai pendamping belajar.
- Acceptance:
  - Learner dapat bertanya hal umum terkait materi dan mendapat jawaban yang relevan.

## Epik G — Jadwal & Penugasan
- Komponen/halaman terkait:
  - `src/app/schedule/page.tsx`, `src/app/assignments/page.tsx`
- Outcome: penjadwalan kelas/ujian & penugasan tugas modul.
- Acceptance:
  - Jadwal terlihat bagi learner; admin/trainer dapat mengatur slot dan penugasan.

## Ketergantungan & Urutan
- A mendasari B (assessment butuh course & progres).
- B mendasari sertifikasi & input ke D (analytics) dan C (reward). 
- E berjalan paralel sebagai polishing, fokus di sprint 4.
- F berjalan opsional, flagged, mengikuti ketersediaan konten.