UC-8 Student completes an assessment
| Primary actor | Student |
| Supporting actors | SHS Staff (reviews reflections, corrects a score) |
| Priority | Should |
| Satisfies | FR-E4, FR-E6, FR-B3 |
| Precondition | The student is enrolled; the week carrying the item is available or complete. |
| Trigger | The student opens a week's knowledge check. |
Main success scenario
- The student answers a multiple-choice item. The system scores it against the answer key, all or nothing, stores the response with
scored_by = auto, and returns the verdict with feedback drawn from the key. - The student writes a reflection. The system stores it with no score. No student-authored text reaches any model.
- Scores aggregate by learning-outcome tag for the learning-outcome report (UC-10); unscored reflections are excluded from that aggregate.
Extensions
- 1a. Answer is not one of the item's options. 400; nothing is stored.
- 1b. Second attempt. 409; one attempt per item.
- 1c. A locked week's items expose nothing.
- Staff review. Reflections appear in the builder's review panel with the rubric; staff mark them reviewed. An admin may correct an MCQ score by hand; the row then carries
scored_by = human.
Acceptance criteria (Gherkin)
| Feature file | Test module |
|---|---|
mcq_scoring.feature |
test_mcq_scoring_bdd.py |
no_student_text_to_a_model.feature |
test_no_student_text_to_a_model_bdd.py |
scoredby_contract.feature |
test_scoredby_contract_bdd.py |
reflection_review_rubric.feature and frontend/reflection_review_rubric.feature |
test_reflection_review_rubric_bdd.py |
review_panel_queue.feature and frontend/review_panel_queue.feature |
test_review_panel_queue_bdd.py |
Plain pytest: test_mcq_scoring.py, test_assessment_items.py, test_score_override.py, test_response_review.py, test_locked_week_assessments.py. Frontend: KnowledgeCheck.test.tsx, ReviewPanels.test.tsx.
Views
- Process: UC-8 MCQ auto-scoring and reflections
- Logical:
AssessmentItemandAssessmentResponsein the domain model
Code: backend/app/services/assessments.py, backend/app/routers/assessments.py, frontend/src/components/Passport/KnowledgeCheck.tsx, frontend/src/components/admin/ChallengeBuilder/ReviewPanels.tsx.