Class_generator/docs/interfaces.md
StillHammer 325b97060c Add LEDU Chinese course content and documentation
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>
2025-10-15 07:25:53 +08:00

315 lines
8.9 KiB
Markdown

# Interface System (C++ Style)
## 🎯 Philosophy
Like C++ header files (.h), we enforce **strict interfaces** that MUST be implemented. Any missing method = **RED SCREEN ERROR** at startup.
## 📦 Interface Hierarchy
```
StrictInterface (base)
├── ProgressItemInterface # For progress tracking items
│ ├── VocabularyDiscoveryItem
│ ├── VocabularyMasteryItem
│ └── Content Items (Phrase, Dialog, Text, Audio, Image, Grammar)
├── ProgressSystemInterface # For progress systems
│ ├── ProgressTracker
│ └── PrerequisiteEngine
└── DRSExerciseInterface # For exercise modules
├── VocabularyModule
├── TextAnalysisModule
├── GrammarAnalysisModule
├── TranslationModule
└── OpenResponseModule
```
## 🔥 1. StrictInterface (Base)
**Location**: `src/DRS/interfaces/StrictInterface.js`
**Purpose**: Ultra-strict base class with visual error enforcement.
**Features**:
- Validates implementation at construction
- Full-screen red error overlay if method missing
- Sound alert in dev mode
- Screen shake animation
- Impossible to ignore
**Error Display**:
```
┌─────────────────────────────────────────────┐
│ │
│ 🔥 FATAL ERROR 🔥 │
│ │
│ Implementation Missing │
│ │
│ Class: VocabularyModule │
│ Missing Method: validate() │
│ │
│ ❌ MUST implement all interface methods │
│ │
│ [ DISMISS (Fix Required!) ] │
│ │
└─────────────────────────────────────────────┘
```
## 📋 2. ProgressItemInterface
**Location**: `src/DRS/interfaces/ProgressItemInterface.js`
**Purpose**: Contract for all progress tracking items.
### Required Methods (4)
```javascript
validate() // Validate item data
serialize() // Convert to JSON
getWeight() // Return item weight for progress calculation
canComplete(state) // Check prerequisites
```
### Implementations
| Class | Weight | Prerequisites |
|-------|--------|---------------|
| VocabularyDiscoveryItem | 1 | None |
| VocabularyMasteryItem | 1 | Discovered |
| PhraseItem | 6 | Vocabulary mastered |
| DialogItem | 12 | Vocabulary mastered |
| TextItem | 15 | Vocabulary mastered |
| AudioItem | 12 | Vocabulary mastered |
| ImageItem | 6 | Vocabulary discovered |
| GrammarItem | 6 | Vocabulary discovered |
### Example Implementation
```javascript
import ProgressItemInterface from '../interfaces/ProgressItemInterface.js';
class MyItem extends ProgressItemInterface {
constructor(id, metadata) {
super('my-item', id, metadata);
}
// ⚠️ REQUIRED
validate() {
if (!this.metadata.requiredField) {
throw new Error('Missing requiredField');
}
return true;
}
// ⚠️ REQUIRED
serialize() {
return {
...this._getBaseSerialization(),
customData: this.metadata.custom
};
}
// ⚠️ REQUIRED
getWeight() {
return ProgressItemInterface.WEIGHTS['my-item'] || 5;
}
// ⚠️ REQUIRED
canComplete(userProgress) {
// Check prerequisites
return true;
}
}
```
## 🔧 3. ProgressSystemInterface
**Location**: `src/DRS/interfaces/ProgressSystemInterface.js`
**Purpose**: Contract for all progress management systems.
### Required Methods (17)
**Vocabulary Tracking:**
- `markWordDiscovered(word, metadata)`
- `markWordMastered(word, metadata)`
- `isWordDiscovered(word)`
- `isWordMastered(word)`
**Content Tracking:**
- `markPhraseCompleted(id, metadata)`
- `markDialogCompleted(id, metadata)`
- `markTextCompleted(id, metadata)`
- `markAudioCompleted(id, metadata)`
- `markImageCompleted(id, metadata)`
- `markGrammarCompleted(id, metadata)`
**Prerequisites:**
- `canComplete(itemType, itemId, context)`
**Progress:**
- `getProgress(chapterId)`
**Persistence:**
- `saveProgress(bookId, chapterId)`
- `loadProgress(bookId, chapterId)`
**Utility:**
- `reset(bookId, chapterId)`
### Implementations
- **ProgressTracker** - Weight-based progress with items
- **PrerequisiteEngine** - Prerequisite checking and mastery tracking
## 🎮 4. DRSExerciseInterface
**Location**: `src/DRS/interfaces/DRSExerciseInterface.js`
**Purpose**: Contract for all DRS exercise modules.
### Required Methods (10)
**Lifecycle:**
- `init(config, content)` - Initialize exercise
- `render(container)` - Render UI
- `destroy()` - Clean up
**Exercise Logic:**
- `validate(userAnswer)` - Validate answer
- Returns: `{ isCorrect, score, feedback, explanation }`
- `getResults()` - Get results
- Returns: `{ score, attempts, timeSpent, completed, details }`
- `handleUserInput(event, data)` - Handle user input
**Progress Tracking:**
- `markCompleted(results)` - Mark as completed
- `getProgress()` - Get progress
- Returns: `{ percentage, currentStep, totalSteps, itemsCompleted, itemsTotal }`
**Metadata:**
- `getExerciseType()` - Return exercise type string
- `getExerciseConfig()` - Return config object
- Returns: `{ type, difficulty, estimatedTime, prerequisites, metadata }`
### Implementations
- **VocabularyModule** - Flashcard spaced repetition
- **TextAnalysisModule** - AI-powered text comprehension
- **GrammarAnalysisModule** - AI grammar correction
- **TranslationModule** - AI translation validation
- **OpenResponseModule** - Free-form AI evaluation
## ✅ 5. ImplementationValidator
**Location**: `src/DRS/services/ImplementationValidator.js`
**Purpose**: Validate ALL implementations at application startup.
### Validation Phases
```javascript
🔍 VALIDATING DRS IMPLEMENTATIONS...
📦 PART 1: Validating Progress Items...
VocabularyDiscoveryItem - OK
VocabularyMasteryItem - OK
PhraseItem - OK
DialogItem - OK
TextItem - OK
AudioItem - OK
ImageItem - OK
GrammarItem - OK
🔧 PART 2: Validating Progress Systems...
ProgressTracker - OK
PrerequisiteEngine - OK
🎮 PART 3: Validating DRS Exercise Modules...
VocabularyModule - OK
TextAnalysisModule - OK
GrammarAnalysisModule - OK
TranslationModule - OK
OpenResponseModule - OK
ALL DRS IMPLEMENTATIONS VALID
```
### Integration with Application.js
```javascript
// At startup (lines 55-62)
console.log('🔍 Validating progress item implementations...');
const { default: ImplementationValidator } = await import('./DRS/services/ImplementationValidator.js');
const isValid = await ImplementationValidator.validateAll();
if (!isValid) {
throw new Error('❌ Implementation validation failed - check console for details');
}
```
## 🚨 Enforcement Rules
### NON-NEGOTIABLE
1.**Missing method** → RED SCREEN ERROR → App refuses to start
2.**Wrong signature** → Runtime error on call
3.**Wrong return format** → Runtime error on usage
4.**All methods implemented** → App starts normally
### Validation Happens
- ✅ At application startup (before any UI renders)
- ✅ On module registration
- ✅ At interface instantiation
## ✨ Benefits
1. 🛡️ **Impossible to forget implementation** - Visual error forces fix
2. 📋 **Self-documenting** - Interface defines exact contract
3. 🔒 **Type safety** - Like TypeScript but enforced at runtime
4. 🧪 **Testable** - Can mock interfaces for unit tests
5. 🔄 **Maintainable** - Adding new method updates all implementations
## 📋 Interface Compliance Checklist
Before creating a new implementation:
- [ ] Identified correct interface to extend
- [ ] Implemented ALL required methods
- [ ] Correct method signatures
- [ ] Correct return formats
- [ ] Validation logic in place
- [ ] Added to ImplementationValidator
- [ ] Tested with validation at startup
- [ ] Documentation updated
## 🔍 Testing Your Implementation
```javascript
// Manual test in console
const validator = await import('./DRS/services/ImplementationValidator.js');
const result = await validator.default.validateAll();
console.log(result); // true if valid, throws error otherwise
```
## 🚧 Adding New Interface Methods
When adding a new method to an interface:
1. Update the interface class
2. Update ALL implementations
3. Update ImplementationValidator
4. Update this documentation
5. Test with validation
6. Commit changes
**Result**: All implementations will show RED SCREEN ERROR until updated.
## 📖 Further Reading
- `docs/creating-new-module.md` - How to create new modules
- `docs/progress-system.md` - Progress tracking details
- `README.md` - Project overview