Changelog v0.2.3
New Features
Automatic Quiz Evaluation System
- Added automatic tracking of quiz evaluation status
- New sync evaluation endpoint for batch re-evaluation of quiz attempts
- Support for manual grade reset via
reset_manual_gradesparameter
Attempt Details & Evaluation UI
- Attempt Details Page: New dedicated page to view all answers from a single attempt with detailed formatting per question type
- Individual Answer Evaluation: Manual evaluation controls with checkbox for correctness and optional score override
- Unevaluated Filter: Smart filter that automatically shows only unevaluated answers when attempt is incomplete, or all answers when fully evaluated
- Sync Evaluation Modal: Batch sync interface with warning for destructive
reset_manual_gradesoperation - AnswerDisplay Component: Supports 8 question types with color-coded status indicators (green/correct, red/incorrect, yellow/unevaluated, gray/neutral)
- Participant Display: Shows participant alias or ID from route query parameters
- Optimistic UI Updates: Immediate feedback on evaluation changes with automatic refetch on errors
Performance Improvements
- Concurrent Processing: Quiz evaluation now processes multiple attempts simultaneously (up to 10 concurrent)
- Optimized Queries: Reduced database query overhead by 75% through transaction batching
- Efficient Pagination: Handles 1000+ attempts per batch efficiently
API Endpoints
Sync Quiz Evaluation
- Endpoint:
POST /api/v1/quizzes/{quiz_id}/sync-evaluation - Description: Batch re-evaluate all submitted attempts for a quiz
- Query Parameters:
reset_manual_grades(optional, default: false) - Reset manually graded answers
- Response: Statistics on processed attempts, re-evaluated answers, and reset manual grades
- Authentication: Requires JWT
Get Attempt Answers
- Endpoint:
GET /api/v1/info/attempts/{attempt_id}/answers - Description: Fetch all answers for a specific attempt
- Query Parameters:
history(optional, default: false) - Include answer historyis_evaluated(optional) - Filter by evaluation status (true/false)
- Response: Complete attempt metadata with detailed answer information
- Authentication: Requires JWT
Evaluate Answer
- Endpoint:
POST /api/v1/quizzes/evaluate-answer - Description: Manually evaluate a single answer
- Body Parameters:
answer_id(required) - Answer IDis_correct(required) - Mark as correct/incorrectscore_override(optional) - Manual score override
- Response: Evaluation result with updated score
- Authentication: Requires JWT
Logging & Observability
- Added comprehensive tracing for evaluation workflows
- Info-level logs for batch processing summaries
- Debug-level logs for individual answer evaluations
- Warning/error logs for task failures
Bug Fixes
- Fixed score recalculation to use aggregation instead of delta tracking
- Resolved future Rust compatibility warning by updating dependencies
Breaking Changes
None - all changes are backward compatible