Paperclip CTO
|
cfa9ad6f53
|
feat(TRA-236,TRA-238): M2 course domain model and dwell-time tracking
TRA-236 — Course domain model:
- courses/models.py: Course → Module → Lesson → Page hierarchy with UUID
PKs, ordering fields, required_seconds navigation gate, version tracking,
and UniqueConstraint per (parent, order) pair
- courses/migrations/0001_initial.py: initial migration (applies cleanly on
a fresh DB)
- tests/test_course_domain.py: migration smoke, relation integrity, cascade
delete, ordering, and uniqueness-constraint tests
TRA-238 — Dwell-time tracking:
- tracking/models.py: Enrollment, PageProgress (can_advance property), and
DwellEvent models appended alongside existing AuditEvent
- tracking/services.py: record_dwell_event, compute_eligible_seconds (pure),
check_navigation_gate, _recompute_accumulated — reconnect merging within
RECONNECT_TOLERANCE_SECONDS and anti-idle cap at MAX_VALID_EVENT_SECONDS
- tracking/migrations/0001_initial.py: updated to include all four models
(AuditEvent, Enrollment, PageProgress, DwellEvent) with FK dependencies
on courses.Course and courses.Page
- tests/test_dwell_tracking.py: event replay, reconnect tolerance, anti-idle
cap, gate pass/block, and can_advance DB integration tests
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-05-07 09:11:23 +02:00 |
|
Paperclip CTO
|
8054c1e1e4
|
feat(TRA-233): Django M1 foundation scaffold
- Environment-split settings: base/local/test/prod with django-environ
- Postgres + Redis + Celery wiring (broker, beat, result backend)
- All 9 domain app stubs: accounts, courses, cms, tracking, quizzes,
training, certificates, reports, notifications
- api app: /healthz/ endpoint, custom DRF exception handler,
SecurityAuditMiddleware, permissions/throttle/upload-validation stubs
- DRF global baseline: JWT+session auth, closed-by-default permissions,
cursor/page pagination, drf-spectacular schema generation
- Dockerfile (multi-env build arg), docker-compose.yml (local),
docker-compose.test.yml (CI-friendly tmpfs Postgres)
- pytest.ini with smoke + settings marker definitions
- tests/test_smoke.py: startup, URL resolution, healthcheck shape
- tests/test_settings_matrix.py: per-profile security assertions
- .github/workflows/ci.yml: test, lint, schema CI jobs
- .env.example with all required vars documented
- .gitignore
Co-Authored-By: Paperclip <noreply@paperclip.ing>
|
2026-05-07 09:11:23 +02:00 |
|