elemes/services
a2nr 79edcd1596 fix: sync lesson registry termasuk sub-bab (sub-home.md) agar kolom materi muncul di CSV guru
lesson_specs() hanya memindai home.md root sehingga lesson di
bab/<folder>/sub-home.md tidak pernah masuk tabel lessons. Akibatnya kolom
materi sub-bab hilang saat guru import/export siswa CSV.

- services/lesson_service.py: tambah find_all_sub_home_folders() (enumerate
  level-1 folder di CONTENT_DIR berisi sub-home.md)
- services/lesson_registry.py: lesson_specs() gabungkan union root + sub-bab,
  dedupe slug (root priority) — satu lesson entitas
- services/tests/test_lesson_registry.py: test unit + DB integration

Verifikasi: 3 passed, 2 skipped (unit); test_sync_includes_sub_bab_lessons
passed (DB); 58 passed total termasuk test_repositories + student_management
tanpa regresi.
2026-08-14 07:07:25 +07:00
..
storage feat(quiz): strict focus-loss anti-cheat + audit attempt 2026-08-11 20:55:39 +07:00
tests fix: sync lesson registry termasuk sub-bab (sub-home.md) agar kolom materi muncul di CSV guru 2026-08-14 07:07:25 +07:00
__init__.py refactor to make it better 2026-03-25 09:39:51 +07:00
database.py feat(teacher): manajemen akun guru canonical + first-run otomatis; cabut backend CSV (PG only) 2026-08-09 11:21:08 +07:00
lesson_registry.py fix: sync lesson registry termasuk sub-bab (sub-home.md) agar kolom materi muncul di CSV guru 2026-08-14 07:07:25 +07:00
lesson_service.py fix: sync lesson registry termasuk sub-bab (sub-home.md) agar kolom materi muncul di CSV guru 2026-08-14 07:07:25 +07:00
models.py feat(quiz): strict focus-loss anti-cheat + audit attempt 2026-08-11 20:55:39 +07:00
progress_status.py feat(student-management): kelola siswa round-trip CSV + bulk delete (PG) 2026-08-09 07:29:19 +07:00
repositories.py feat(quiz): strict focus-loss anti-cheat + audit attempt 2026-08-11 20:55:39 +07:00
student_roundtrip.py feat(student-management): kelola siswa round-trip CSV + bulk delete (PG) 2026-08-09 07:29:19 +07:00
teacher_bootstrap.py feat(teacher): manajemen akun guru canonical + first-run otomatis; cabut backend CSV (PG only) 2026-08-09 11:21:08 +07:00
token_hashing.py feat(storage): migrasi penyimpanan CSV ke PostgreSQL (SQLAlchemy + Alembic) 2026-08-08 04:57:08 +00:00
token_service.py feat(teacher): manajemen akun guru canonical + first-run otomatis; cabut backend CSV (PG only) 2026-08-09 11:21:08 +07:00