- Add AIReportSystem.js for detailed AI response capture and report generation - Add AIReportInterface.js UI component for report access and export - Integrate AI reporting into LLMValidator and SmartPreviewOrchestrator - Add missing modules to Application.js configuration (unifiedDRS, smartPreviewOrchestrator) - Create missing content/chapters/sbs.json for book metadata - Enhance Application.js with debug logging for module loading - Add multi-format export capabilities (text, HTML, JSON) - Implement automatic learning insights extraction from AI feedback - Add session management and performance tracking for AI reports 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
19 KiB
19 KiB
Smart Preview System - Technical Specifications
🎯 System Overview
Smart Preview is an intelligent course preparation system that provides systematic content review with LLM-powered validation. Students can preview and validate their understanding of entire chapter content through adaptive exercises with prerequisite-based progression.
🏗️ Dynamic Modular Architecture
Orchestrator + Semi-Independent Modules
Core Philosophy: Dynamic class system with an orchestrator that pilots semi-independent exercise modules. Each module can be loaded, unloaded, and controlled dynamically.
SmartPreviewOrchestrator.js - Main Controller
- Extends Module base class
- Manages dynamic loading/unloading of exercise modules
- Handles exercise sequencing and variation patterns
- Coordinates shared services (LLM, Prerequisites)
- Tracks overall progress and session state
Semi-Independent Exercise Modules
- VocabularyModule.js - Vocabulary exercises (groups of 5)
- VocabExamModule.js - AI-verified comprehensive vocabulary exam system
- PhraseModule.js - Individual phrase comprehension
- TextModule.js - Sentence-by-sentence text processing
- AudioModule.js - Audio comprehension exercises
- ImageModule.js - Image description exercises
- GrammarModule.js - Grammar construction and validation
Shared Service Modules
- LLMValidator.js - LLM integration for all exercise types
- PrerequisiteEngine.js - Dependency tracking and content filtering
- ContextMemory.js - Progressive context building across exercises
Module Interface Standard
// All exercise modules must implement this interface
class ExerciseModuleInterface {
// Check if module can run with current prerequisites
canRun(prerequisites, chapterContent): boolean;
// Present exercise UI and content
present(container, exerciseData): Promise<void>;
// Validate user input with LLM
validate(userInput, context): Promise<ValidationResult>;
// Get current progress data
getProgress(): ProgressData;
// Clean up and prepare for unloading
cleanup(): void;
}
Dynamic Loading System
// Orchestrator can dynamically control modules
orchestrator.loadModule('vocabulary');
orchestrator.switchTo('phrase', prerequisites);
orchestrator.unloadModule('text');
orchestrator.getAvailableModules(currentPrerequisites);
// Module lifecycle management
module.canRun(prereqs) → module.present() → module.validate() → module.cleanup()
Module Dependencies
// Orchestrator dependencies
dependencies: ['eventBus', 'contentLoader']
// Each exercise module receives shared services via injection
constructor(orchestrator, llmValidator, prerequisiteEngine, contextMemory)
📋 Functional Requirements
1. Systematic Review by Content Type
Vocabulary Review (Groups of 5)
- Display 5 vocabulary words with translations
- Test recognition/translation with LLM validation
- Must achieve mastery (80%+) before next group
- Track learned vocabulary for prerequisite system
Vocabulary Exam System (AI-Verified Comprehensive Assessment)
- Batch Testing Approach: Present 15-20 vocabulary questions in sequence, collect all answers, then send complete batch to AI for evaluation
- Multiple Question Types:
- Translation (L1→L2 and L2→L1)
- Definition matching and explanation
- Context usage (fill-in-the-blank with sentences)
- Synonym/antonym identification
- Audio recognition (if audio available)
- AI-Powered Batch Evaluation:
- Single API call evaluates entire batch for efficiency
- Cross-question consistency checking within batch
- Semantic understanding over exact word matching
- Context-aware validation for multiple correct answers
- Partial credit for near-correct responses
- Intelligent feedback for incorrect answers
- Batch Processing Benefits:
- Reduced API costs and latency
- Consistent evaluation across question set
- Better pattern recognition for student strengths/weaknesses
- Adaptive Difficulty: Next batch adapts based on previous batch performance
- Mastery Certification: Must achieve 85%+ overall score to pass
- Spaced Repetition Integration: Failed words automatically added to review queue
- Progress Analytics: Detailed breakdown by word, question type, and difficulty level
Phrase Comprehension (Individual)
- Present single phrases for translation/comprehension
- LLM evaluation for semantic accuracy (not exact matching)
- Context-aware validation considering multiple correct answers
Text Processing (Sentence by Sentence)
- Break texts into individual sentences
- Progressive context building (sentence 1 → sentence 1+2 → sentence 1+2+3)
- Each sentence validated with accumulated context
- Prerequisites: only texts containing learned vocabulary words
Audio Comprehension
- Play audio segments with transcription for LLM reference
- User provides comprehension in their own words
- LLM evaluates understanding against transcription
Image Description
- Present images for description exercises
- LLM evaluates vocabulary usage and accuracy of description
- No exact matching required - intelligent semantic evaluation
Grammar Exercises
- Present grammar-focused exercises (sentence construction, tense usage, etc.)
- LLM evaluates grammar correctness and natural language flow
- Context-aware grammar validation considering multiple correct structures
- Track grammar concept mastery (present tense, articles, sentence structure, etc.)
2. Prerequisite Dependency System
Smart Filtering
// Only chapter vocabulary words are prerequisites
chapterVocab = ['shirt', 'coat', 'blue', 'work', 'wear'];
// Basic words assumed known
assumedKnown = ['the', 'is', 'a', 'to', 'in', 'on', 'at', ...];
// Dependency extraction
function getPrerequisites(content, chapterVocabulary) {
const words = extractWords(content);
return words.filter(word =>
chapterVocabulary.includes(word) ||
chapterVocabulary.includes(getBaseForm(word))
);
}
Progressive Unlocking
- Vocabulary groups unlock based on completion of previous groups
- Phrases unlock when ALL required chapter words are learned
- Text sentences unlock progressively with vocabulary mastery
- Real-time content availability updates
3. Exercise Variation Engine
Dynamic Pattern Generation
const exercisePattern = [
'vocabulary-5', // First 5 vocab words
'single-phrase', // Available phrase with learned words
'vocabulary-5', // Next 5 vocab words
'text-sentence-1', // First sentence of available text
'vocabulary-5', // Continue vocabulary
'vocab-exam-checkpoint', // Comprehensive exam after 15-20 learned words
'text-sentence-2-ctx', // Second sentence with context from first
'image-description', // Image exercise
'audio-comprehension', // Audio exercise
'vocab-exam-final', // Final comprehensive exam at chapter end
// Pattern continues...
];
// Vocabulary Exam Trigger Logic
const examTriggers = {
checkpoint: {
condition: 'wordsLearned >= 15 && wordsLearned % 15 === 0',
examType: 'checkpoint',
wordsToTest: 'last15Learned',
passingScore: 80
},
final: {
condition: 'chapterComplete',
examType: 'comprehensive',
wordsToTest: 'allChapterWords',
passingScore: 85
},
remedial: {
condition: 'examFailed',
examType: 'focused',
wordsToTest: 'failedWords',
passingScore: 75
}
};
Context Memory System
- Store user responses for progressive exercises
- Build context for text comprehension exercises
- Pass accumulated context to LLM for evaluation
- Reset context appropriately between different texts/topics
4. LLM Integration
Evaluation Prompts
// Translation Validation
const translationPrompt = `
Evaluate this language learning translation:
- Original (English): "${originalText}"
- Student translation (Chinese/French): "${userAnswer}"
- Context: ${exerciseType} exercise
- Previous context: ${contextHistory}
Evaluate if the translation captures the essential meaning, even if not word-for-word exact.
Return JSON: {
score: 0-100,
correct: boolean,
feedback: "constructive feedback in user's language",
keyPoints: ["important vocabulary/grammar noted"]
}
`;
// Vocabulary Exam Batch Validation
const vocabExamBatchPrompt = `
Evaluate this vocabulary exam batch (15-20 questions):
- Language level: ${languageLevel}
- Total questions in batch: ${batchSize}
Questions and responses:
${questionsArray.map((q, i) => `
${i+1}. Question type: ${q.type} | Target word: "${q.targetWord}"
Expected: "${q.expectedAnswer}"
Student answer: "${q.userAnswer}"
Context: "${q.contextSentence || 'N/A'}"
`).join('')}
For different question types:
- Translation: Accept semantic equivalents, consider cultural variations
- Definition: Accept paraphrasing that captures core meaning
- Context usage: Evaluate grammatical correctness and semantic appropriateness
- Synonyms: Accept close semantic relationships, not just exact synonyms
Evaluate ALL questions in the batch and look for consistency patterns.
Return JSON: {
batchScore: 0-100,
totalCorrect: number,
totalPartialCredit: number,
overallFeedback: "general performance summary",
questions: [
{
questionId: number,
score: 0-100,
correct: boolean,
partialCredit: boolean,
feedback: "specific feedback for this question",
correctAlternatives: ["alternative answers if applicable"],
learningTip: "helpful tip for this word/concept"
}
// ... for each question in batch
],
strengthAreas: ["areas where student performed well"],
weaknessAreas: ["areas needing improvement"],
recommendedActions: ["specific next steps for improvement"]
}
`;
// Audio Comprehension Validation
const audioPrompt = `
Evaluate audio comprehension:
- Audio transcription: "${transcription}"
- Student comprehension: "${userAnswer}"
- Language level: beginner/intermediate
Did the student understand the main meaning? Accept paraphrasing and different expressions.
Return JSON: {score: 0-100, correct: boolean, feedback: "..."}
`;
// Image Description Validation
const imagePrompt = `
Evaluate image description:
- Student description: "${userAnswer}"
- Target vocabulary from chapter: ${chapterVocab}
- Exercise type: free description
Evaluate vocabulary usage, accuracy of description, and language naturalness.
Return JSON: {score: 0-100, correct: boolean, feedback: "...", vocabularyUsed: []}
`;
// Grammar Exercise Validation
const grammarPrompt = `
Evaluate grammar usage:
- Exercise type: ${grammarType} (sentence construction, tense usage, etc.)
- Student response: "${userAnswer}"
- Target grammar concepts: ${grammarConcepts}
- Language level: ${languageLevel}
Evaluate grammatical correctness, naturalness, and appropriate usage of target concepts.
Accept multiple correct variations but identify errors clearly.
Return JSON: {
score: 0-100,
correct: boolean,
feedback: "constructive grammar feedback",
grammarErrors: ["specific errors identified"],
grammarStrengths: ["correct usage noted"],
suggestion: "alternative correct formulation if needed"
}
`;
API Configuration
- Support multiple LLM providers (OpenAI, Claude, local Ollama)
- Fallback mechanisms for API failures
- Rate limiting and error handling
- Configurable temperature and model parameters
5. Progress Tracking
Mastery Validation
- Individual word mastery tracking (attempts, success rate, last reviewed)
- Phrase/sentence comprehension scores
- Grammar concept mastery tracking (tenses, sentence structure, etc.)
- Vocabulary Exam Performance:
- Checkpoint exam scores (every 15 words)
- Comprehensive exam certification status
- Question-type specific performance (translation, definition, context, etc.)
- Remedial exam tracking for failed words
- Overall chapter progress percentage
- Difficulty adaptation based on performance
Visual Progress Indicators
- Progress bar showing overall completion
- Section-based progress (vocabulary: 45/60, phrases: 8/12, texts: 2/5, grammar: 6/8)
- Mastery indicators (✅ learned, 🟡 reviewing, ❌ needs work)
- Grammar concept tracking (present tense: ✅, articles: 🟡, word order: ❌)
- Time estimates for completion
🎮 User Experience Flow
Session Start
- Load chapter content and analyze prerequisites
- Display progress overview and available exercises
- Present first available exercise based on mastery state
Exercise Flow
- Present Content - Show vocabulary/phrase/text/image/audio/grammar exercise
- User Interaction - Input translation/description/comprehension/grammar construction
- LLM Validation - Intelligent evaluation with feedback (including grammar analysis)
- Progress Update - Update mastery tracking (vocabulary, grammar concepts, etc.)
- Next Exercise - Dynamic selection based on progress and variation pattern
Adaptive Progression
- If user struggles (< 60% score): additional practice exercises
- If user excels (> 90% score): accelerated progression
- Smart retry system for failed exercises
- Prerequisite re-evaluation after each mastery update
Session End
- Progress summary with achievements
- Recommendations for next session
- Mastery gaps identified for focused review
🔧 Technical Implementation
Dynamic Modular File Structure
src/games/smart-preview/
├── SmartPreviewOrchestrator.js # Main orchestrator module
├── exercise-modules/ # Semi-independent exercise modules
│ ├── VocabularyModule.js # Vocabulary exercises (groups of 5)
│ ├── VocabExamModule.js # AI-verified batch vocabulary exams
│ ├── PhraseModule.js # Individual phrase comprehension
│ ├── TextModule.js # Sentence-by-sentence processing
│ ├── AudioModule.js # Audio comprehension
│ ├── ImageModule.js # Image description
│ └── GrammarModule.js # Grammar construction
├── services/ # Shared service modules
│ ├── LLMValidator.js # LLM integration for all modules
│ ├── PrerequisiteEngine.js # Dependency tracking
│ └── ContextMemory.js # Progressive context building
├── interfaces/
│ └── ExerciseModuleInterface.js # Standard interface for all modules
└── templates/
├── orchestrator.html # Main UI template
└── modules/ # Module-specific templates
├── vocabulary.html
├── vocab-exam.html # Batch exam interface
├── phrase.html
├── text.html
├── audio.html
├── image.html
└── grammar.html
Dynamic Module Data Flow
1. Orchestrator Initialization
└── Load shared services (LLM, Prerequisites, Context)
└── Analyze chapter content and prerequisites
└── Determine available exercise modules
2. Module Loading & Sequencing
└── orchestrator.getAvailableModules(prerequisites)
└── orchestrator.loadModule(selectedType)
└── module.canRun(prerequisites) → boolean
3. Exercise Execution
└── module.present(container, exerciseData)
└── user interaction & input capture
└── module.validate(userInput, context) → ValidationResult
4. Dynamic Adaptation
└── Update mastery tracking
└── prerequisiteEngine.reevaluate(newMastery)
└── orchestrator.selectNextModule(progress, variation)
└── module.cleanup() → orchestrator.unloadModule()
5. Module Lifecycle
canRun() → present() → validate() → cleanup() → unload/switch
Integration Points
With Existing System
- Extends Module base class architecture
- Uses EventBus for communication
- Integrates with existing content loading system
- Compatible with current routing system
Content Requirements
- Chapter vocabulary lists with base forms
- Phrase/sentence collections with difficulty indicators
- Audio files with transcriptions
- Images with contextual information
- Text passages segmented by sentences
Performance Considerations
- Lazy loading of exercises and content
- LLM request caching for repeated validations
- Efficient prerequisite checking algorithms
- Minimal DOM manipulation for smooth UX
🚀 Dynamic Implementation Strategy
MVP Phase 1: Orchestrator + Vocabulary Module (Week 1)
1. SmartPreviewOrchestrator.js - Core controller
└── Module loading/unloading system
└── Basic exercise sequencing
└── Progress tracking foundation
2. VocabularyModule.js - First exercise module
└── Groups of 5 vocabulary system
└── Basic LLM mock validation
└── Standard interface implementation
3. Services Foundation
└── LLMValidator.js (mock responses initially)
└── PrerequisiteEngine.js (chapter vocab filtering)
└── ExerciseModuleInterface.js (standard contract)
Phase 2: Add Core Modules (Week 2)
4. PhraseModule.js - Individual phrase comprehension
5. TextModule.js - Sentence-by-sentence processing
6. Basic ContextMemory.js - Progressive context building
7. Real LLM integration (replace mocks)
Phase 3: Complete Module Set (Week 3)
8. AudioModule.js - Audio comprehension
9. ImageModule.js - Image description
10. GrammarModule.js - Grammar construction
11. Advanced prerequisite logic
12. Exercise variation patterns
Phase 4: Intelligence & Polish (Week 4)
13. Adaptive difficulty system
14. Advanced context memory
15. Performance optimization
16. Error handling and fallbacks
17. UI/UX refinements
Development Approach
- Modular Testing: Each module independently testable
- Progressive Enhancement: Add modules incrementally
- Interface-Driven: All modules follow standard contract
- Service Injection: Shared services injected into modules
- Dynamic Loading: Modules loaded only when needed
📊 Success Metrics
Learning Effectiveness
- User completion rates per session
- Average time to vocabulary mastery
- Retention rates in follow-up sessions
- User satisfaction scores
Technical Performance
- LLM response times (< 2 seconds)
- Exercise loading times (< 500ms)
- System uptime and error rates
- Content coverage completeness
Adaptive Accuracy
- Prerequisite system accuracy (avoiding impossible exercises)
- LLM validation consistency with human evaluation
- Progression appropriateness for user level