elemes/routes
a2nr c911908316 feat(progress): sinkronisasi evaluasi & recompute progress saat publish
- Publish konten langsung menyinkronkan lesson registry dan merekomputasi
  composite/state siswa bila jenis evaluasi (latihan/kuis) berubah, tanpa
  menunggu restart server.
- TTL cache (`LESSON_LIST_CACHE_TTL`, default 30 detik) untuk daftar lesson
  agar worker gunicorn lain ikut segar tanpa invalidasi lintas proses.
- Endpoint POST /content/sync-registry (teacher-only) + tombol Sinkronisasi di
  /teacher/progress untuk menangkap perubahan konten di luar webapp.
- Notifikasi editor saat progress siswa dihitung ulang pasca-publish.
- `recompute_lesson_progress()`: skor historis tetap disimpan; state legacy
  completed/scored tidak disentuh.
- Test unit (TTL cache + signature evaluasi) dan integrasi (publish recompute,
  sync registry, endpoint auth) + dokumentasi.

Tanpa perubahan schema DB.
2026-10-27 00:50:02 +07:00
..
__init__.py
…
auth.py perf: fix race conditions with file locking and optimize backend latency 2026-05-05 22:57:19 +07:00
compile.py feat(compiler-worker): sesi interaktif PTY untuk playground — Python input() dan C scanf() tanpa EOFError 2026-08-02 14:14:45 +00:00
content_editor.py feat(progress): sinkronisasi evaluasi & recompute progress saat publish 2026-10-27 00:50:02 +07:00
docs.py feat: unified lesson progress — composite score & /api/lesson-progress 2026-08-29 00:22:10 +07:00
help.py feat(help): add interactive student tutorial with video and integrated help page 2026-04-20 13:43:45 +07:00
lesson_progress.py feat(quiz): taksonomi key quiz per jenis + MCQ berbobot (partial credit) 2026-10-25 20:16:56 +07:00
lessons.py feat(assets): optimasi serving gambar (WebP on-the-fly + cache disk) 2026-10-25 19:19:07 +07:00
progress.py feat(quiz): taksonomi key quiz per jenis + MCQ berbobot (partial credit) 2026-10-25 20:16:56 +07:00
student_management.py feat(progress): composite scoring, roundtrip CSV grammar, and report export 2026-08-30 04:12:23 +07:00