pdf-quiz-generator/docs/quiz-revamp/milestone-2-review.md
2026-09-07 04:22:03 +02:00

11 lines
No EOL
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Review
- **Correct — Finding 1 (P1): Resolved.** Failed initial progress/detail retrieval now shows **Retry resume**, not Start (`frontend/src/pages/QuizPage.jsx:647665,881`). Resume installs answers only after detail succeeds (`:591615`). Start rechecks progress before initializing an empty answer map; lookup/resume failures exit before that write (`:672714`). Autosave requires both attempt and mode (`:732746`), preventing premature saves during recovery. Redis failures return 503 rather than empty progress or false success (`backend/app/routers/attempts.py:283285,377379`). Failed suspension retains the player and answers instead of navigating (`frontend/src/pages/QuizPage.jsx:10001024`). Behavioral coverage verifies failed-detail recovery, failed lookup, reused attempts, and suspension retry (`frontend/src/pages/QuizPage.test.jsx:58106,120136`; `backend/tests/test_study_tools.py:99114`).
- **Correct — Finding 2 (P2): Resolved.** `allow_review` now accepts NULL (`backend/app/schemas/quiz.py:63`), matching the ORM and existing DDL. Course startup treats anything other than `1` as review-disabled (`frontend/src/pages/QuizPage.jsx:285`); backend mode selection remains fail-closed (`backend/app/routers/attempts.py:4951`). Review authorization is unchanged (`backend/app/utils/quiz_access.py:4751`). Tests cover NULL listing/detail serialization, exam-only course startup, hidden answers, and denied study override (`backend/tests/test_study_tools.py:8097`; `frontend/src/pages/QuizPage.test.jsx:108118`).
- **Correct — Finding 3 (P2): Resolved.** Importing `app.models` now registers `LabReference` (`backend/app/models/__init__.py:11`), so Alembics existing package import populates its target metadata (`backend/alembic/env.py:2427`). The fresh-process regression checks registration without router-import contamination (`backend/tests/test_study_tools_migration.py:1822`).
- **Blocker:** None identified in the three fixes or their directly affected paths.
- **Note:** Review was read-only. Test/build and PostgreSQL successes are parent-attested, not independently rerun. Existing tutor/private-image authorization issues remain a separate before-release task. This review makes no completion claim for later articles/cards/comments work.