- facade storage: csv_backend + postgres_backend, dipilih via STORAGE_BACKEND - token disimpan sebagai HMAC-SHA256 digest (TOKEN_PEPPER), tanpa plaintext - schema alembic 0001: users, access_tokens, lessons, student_progress - importer CSV idempotent + dry-run + sparse model (not_started tanpa row) - lesson registry: sync dari home.md (lesson hilang di-deactivate, bukan dihapus) - routes progress/auth: report & reset via DB, validasi via token hash - elemes.sh: dbupgrade/dbstatus/dbimport/synclessons/dbverify/dbbackup/dbrestore/dbexport - podman-compose: service postgres (PG18), tokens_siswa.csv mount :ro - frontend: api client + progress page; tests kontrak dual-backend + isolasi DB - load-test: skenario database (locustfile_db.py) - docs: 01-11 termasuk 11-database-migration.md (arsitektur & operasional) |
||
|---|---|---|
| .. | ||
| storage | ||
| tests | ||
| __init__.py | ||
| csv_importer.py | ||
| database.py | ||
| lesson_registry.py | ||
| lesson_service.py | ||
| models.py | ||
| repositories.py | ||
| token_hashing.py | ||
| token_service.py | ||