Add comprehensive Chinese reading course (乐读) with 4 chapters of vocabulary, texts, and exercises. Include architecture documentation for module development and progress tracking system. Content: - LEDU book metadata with 12 chapter outline - Chapter 1: Food culture (民以食为天) - 45+ vocabulary, etiquette - Chapter 2: Shopping (货比三家) - comparative shopping vocabulary - Chapter 3: Sports & fitness (生命在于运动) - exercise habits - Chapter 4: Additional vocabulary and grammar Documentation: - Architecture principles and patterns - Module creation guide (Game, DRS, Progress) - Interface system (C++ style contracts) - Progress tracking and prerequisites Game Enhancements: - MarioEducational helper classes (Physics, Renderer, Sound, Enemies) - VocabularyModule TTS improvements - Updated CLAUDE.md with project status 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7.2 KiB
Progress System
🎯 Core Philosophy
FUNDAMENTAL RULE: Every piece of content is a trackable progress item with strict validation and type safety.
🏗️ Pedagogical Flow
1. DISCOVERY → 2. MASTERY → 3. APPLICATION
(passive) (active) (context)
Flow Rules (NON-NEGOTIABLE)
- ❌ NO Flashcards on undiscovered words - Must discover first
- ❌ NO Text exercises on unmastered vocabulary - Must master first
- ✅ Always check prerequisites before ANY exercise
- ✅ Form vocabulary lists on-the-fly from next exercise content
📦 Progress Item Types & Weights
| Type | Weight | Prerequisites |
|---|---|---|
| vocabulary-discovery | 1 | None |
| vocabulary-mastery | 1 | Must be discovered |
| phrase | 6 | Vocabulary mastered |
| dialog | 12 | Vocabulary mastered |
| text | 15 | Vocabulary mastered |
| audio | 12 | Vocabulary mastered |
| image | 6 | Vocabulary discovered |
| grammar | 6 | Vocabulary discovered |
Total for 1 vocabulary word = 2 points (1 discovery + 1 mastery)
📈 Progress Calculation
Chapter Analysis
When loading a chapter:
- Scans ALL content (vocabulary, phrases, dialogs, texts, etc.)
- Creates progress items for each piece
- Calculates total weight (sum of all item weights)
- Stores item registry for tracking
Example Chapter:
- 171 vocabulary words → 342 points (171×2: discovery + mastery)
- 75 phrases → 450 points (75×6)
- 6 dialogs → 72 points (6×12)
- 3 lessons → 45 points (3×15)
- TOTAL: 909 points
Progress Formula
percentage = (completedWeight / totalWeight) × 100
// Example:
// - Discovered 50 words = 50 points
// - Mastered 20 words = 20 points
// - Completed 3 phrases = 18 points (3×6)
// - Completed 1 dialog = 12 points
// Total completed = 100 points
// Progress = (100 / 909) × 100 = 11%
Breakdown Display
{
percentage: 11,
completedWeight: 100,
totalWeight: 909,
breakdown: {
'vocabulary-discovery': { count: 50, weight: 50 },
'vocabulary-mastery': { count: 20, weight: 20 },
'phrase': { count: 3, weight: 18 },
'dialog': { count: 1, weight: 12 }
}
}
🎯 Smart Vocabulary Prerequisites
OLD Approach (Wrong)
Force all 171 words upfront based on arbitrary percentages.
NEW Approach (Correct)
Analyze next content → extract words → check user status → force only needed words.
Example Flow
// Next exercise: Dialog "Academic Conference"
// Words in dialog: methodology, hypothesis, analysis, paradigm, framework
// User status check:
// - methodology: never seen → Discovery needed
// - hypothesis: discovered, not mastered → Mastery needed
// - analysis: mastered → Skip
// - paradigm: never seen → Discovery needed
// - framework: discovered, not mastered → Mastery needed
// Smart system creates:
// 1. Discovery module: [methodology, paradigm] (2 words)
// 2. Mastery module: [hypothesis, framework] (2 words)
// 3. Then allow dialog exercise
Benefits
- Targeted Learning - Only learn words actually needed
- Context-Driven - Vocabulary tied to real content usage
- Efficient Progress - No time wasted on irrelevant words
- Better Retention - Words learned in context of upcoming usage
- Smart Adaptation - UI accurately reflects what's happening
🔧 Key Components
1. ProgressItemInterface
Abstract base with strict validation for all progress items.
Location: src/DRS/interfaces/ProgressItemInterface.js
Methods:
validate()- Validate item dataserialize()- Convert to JSONgetWeight()- Return item weightcanComplete(state)- Check prerequisites
2. ProgressTracker
Manages state, marks completion, saves progress.
Location: src/DRS/services/ProgressTracker.js
Key Methods:
markWordDiscovered(word, metadata)markWordMastered(word, metadata)markContentCompleted(type, id, metadata)getProgress(chapterId)saveProgress(bookId, chapterId)loadProgress(bookId, chapterId)
3. PrerequisiteEngine
Checks prerequisites and enforces pedagogical flow.
Location: src/DRS/services/PrerequisiteEngine.js
Key Methods:
canComplete(itemType, itemId, context)getUnmetPrerequisites(itemType, itemId)enforcePrerequisites(exerciseConfig)
4. ContentDependencyAnalyzer
Analyzes content and extracts vocabulary dependencies.
Location: src/DRS/services/ContentDependencyAnalyzer.js
Key Methods:
analyzeContentDependencies(nextContent, vocabularyModule)extractWordsFromContent(content)findMissingWords(wordsInContent, vocabularyWords)
📊 UI Integration
Progress Display
Chapter Progress: 11% (100/909 points)
✅ Vocabulary Discovery: 50/171 words (50pts)
✅ Vocabulary Mastery: 20/171 words (20pts)
✅ Phrases: 3/75 (18pts)
✅ Dialogs: 1/6 (12pts)
⬜ Texts: 0/3 (0/45pts)
Smart Guide Updates
🔍 Analyzing next exercise: Dialog "Academic Conference"
📚 4 words needed (2 discovery, 2 mastery)
🎯 Starting Vocabulary Discovery for: methodology, paradigm
✅ Validation Checklist
Before ANY exercise can run:
- Prerequisites analyzed for next specific content
- Missing words identified
- Discovery forced for never-seen words
- Mastery forced for seen-but-not-mastered words
- Progress item created with correct weight
- Completion properly tracked and saved
- Total progress recalculated
If ANY step fails → Clear error message, app stops gracefully
🚨 Error Prevention
Compile-Time (Startup)
- Interface validation via ImplementationValidator
- Method implementation checks
- Weight configuration validation
Runtime
- Prerequisite enforcement before exercises
- State consistency checks
- Progress calculation validation
Visual Feedback
- Red screen for missing implementations
- Clear prerequisite errors
- Progress breakdown always visible
🔍 Debug Commands
// Get current progress
window.app.getCore().progressTracker.getProgress('chapter-1')
// Check if word discovered
window.app.getCore().progressTracker.isWordDiscovered('methodology')
// Check if word mastered
window.app.getCore().progressTracker.isWordMastered('hypothesis')
// Check prerequisites
window.app.getCore().prerequisiteEngine.canComplete('dialog', 'dialog-3')
// Get unmet prerequisites
window.app.getCore().prerequisiteEngine.getUnmetPrerequisites('text', 'lesson-1')
📋 Adding New Progress Item Types
- Create new class extending
ProgressItemInterface - Implement all 4 required methods
- Add weight to
WEIGHTSconstant - Add to
ImplementationValidator - Update
ProgressTrackertracking methods - Update UI components
- Test with validation
🧪 Testing Progress System
// Test progress calculation
const tracker = window.app.getCore().progressTracker;
// Mark some progress
await tracker.markWordDiscovered('test', {});
await tracker.markWordMastered('test', {});
// Check progress
const progress = tracker.getProgress('chapter-1');
console.log(progress);
// Should show updated percentage and breakdown
📖 Further Reading
docs/interfaces.md- Interface system detailsdocs/creating-new-module.md- Module creation guideREADME.md- Project overview