pdf-quiz-generator/backend/app
Daniel 5398342e3d Suspend pauses timer; hide timer-expired attempts from history
Suspend now pauses the timer instead of letting it run out:
- 'Suspend & Leave' sends suspended=true with time_left to backend
- On resume, backend re-anchors started_at to now with held time_left
- Closing tab without suspending continues to run the timer (unchanged)

Timer-expired auto-submits are marked with expired=1 and excluded from:
- Attempt history (GET /attempts/history)
- Dashboard stats (quiz count, total attempts, average score)
- Attempt list (GET /attempts)
- DDL: ALTER TABLE quiz_attempts ADD COLUMN expired INTEGER DEFAULT 0

Course-quiz decoupling is preserved — these changes only touch
non-course quizzes (Quiz.course_id IS NULL).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-19 19:27:46 +02:00
..
middleware Add comprehensive structured logging with Loki + Grafana 2026-04-11 02:53:54 +02:00
models Suspend pauses timer; hide timer-expired attempts from history 2026-04-19 19:27:46 +02:00
routers Suspend pauses timer; hide timer-expired attempts from history 2026-04-19 19:27:46 +02:00
schemas Decouple course quizzes, replace passlib, add security hardening 2026-04-06 21:31:05 +02:00
services fix: gateway-agnostic URL handling for TTS and embeddings, docs cleanup 2026-04-19 02:17:35 +02:00
tasks Add comprehensive structured logging with Loki + Grafana 2026-04-11 02:53:54 +02:00
utils Persist reminders_disabled in Postgres and harden reminder scheduler 2026-04-14 04:31:03 +02:00
__init__.py Initial commit: PDF Quiz Generator app 2026-03-30 20:04:53 +00:00
cli.py Fix CLI argument handling for all commands 2026-04-08 20:57:58 +02:00
config.py Add comprehensive structured logging with Loki + Grafana 2026-04-11 02:53:54 +02:00
database.py Tag filtering, multi-category, bug fixes, image validation, docs 2026-04-04 22:48:26 +02:00
logging_config.py Add comprehensive structured logging with Loki + Grafana 2026-04-11 02:53:54 +02:00
main.py Suspend pauses timer; hide timer-expired attempts from history 2026-04-19 19:27:46 +02:00