Assessment
The Assessment module contains two separate modalities — teacher authoring and student submission — that share a common QuestionData model. Each modality implements the full trait stack (Reducer, Component, Modality) on its own struct.
Architecture
Section titled “Architecture”Unlike the other modalities, Assessment splits into two independent Modality implementations:
AssessmentSession(teacher) — authoring mode for creating assessments, configuring constraints, and assigning students. UsesQuestionPoolPositionfor question bank placement.StudentAssessment(student) — adaptive submission mode with an algorithm engine that selects questions based on demonstrated knowledge. UsesQuestionSequencePositionfor ordered question delivery.
Both compile QuestionData into AssessmentElement output, but through different paths and with different metadata.
Type Summaries
Section titled “Type Summaries”Teacher (AssessmentSession)
Section titled “Teacher (AssessmentSession)”| Associated Type | Concrete Type |
|---|---|
Synced | AssessmentSessionSynced |
Ephemeral | AssessmentSessionEphemeral |
Position | QuestionPoolPosition |
Component::Metadata | AssessmentSessionMetadata |
Component::Output | Vec<AssessmentElement> |
Snapshot | AssessmentSessionSnapshot |
Session type: Session<AssessmentSession, SessionIntent<AssessmentSessionIntent>>
Student (StudentAssessment)
Section titled “Student (StudentAssessment)”| Associated Type | Concrete Type |
|---|---|
Synced | StudentAssessmentSynced |
Ephemeral | StudentAssessmentEphemeral |
Position | QuestionSequencePosition |
Component::Metadata | StudentAssessmentMetadata |
Component::Output | Vec<AssessmentElement> |
Snapshot | StudentAssessmentSnapshot |
Session type: Session<StudentAssessment, SessionIntent<StudentAssessmentIntent>>
Shared Types
Section titled “Shared Types”QuestionData
Section titled “QuestionData”The core question model shared between teacher and student:
pub struct QuestionData { pub id: String, pub format: QuestionFormat, // MultiChoice or ShortAnswer pub content: String, // question text pub answers: Vec<String>, // answer options (MC) or accepted answers pub answer_format: AnswerFormatType, // Whole, Decimal, Fraction, Text, MathKeyboard, OpenEnded pub skill_indicator: Vec<(usize, f32)>, // sparse skill weights pub score_factor: f32, // weight for knowledge updates}QuestionFormat
Section titled “QuestionFormat”pub enum QuestionFormat { MultiChoice, ShortAnswer,}AnswerFormatType
Section titled “AnswerFormatType”pub enum AnswerFormatType { Whole, Decimal, Fraction, Text, MathKeyboard, OpenEnded,}Services
Section titled “Services”Both modalities define their own services type:
// Teacher uses default ModalityServicespub struct AssessmentSessionServices { pub agent: Arc<AgentService>,}
// Student includes the algorithm enginepub struct StudentAssessmentServices { pub agent: Arc<AgentService>, pub algorithm: AlgorithmEngine,}The student services include the AlgorithmEngine for adaptive question selection.
Related
Section titled “Related”- Teacher —
AssessmentSessionauthoring modality - Student —
StudentAssessmentsubmission modality - Algorithm — adaptive engine for question selection
- Components — question compilation and output types