Skip to main content

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_grades parameter

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_grades operation
  • 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 history
    • is_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 ID
    • is_correct (required) - Mark as correct/incorrect
    • score_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