Class_generator/Legacy/TODO.md
StillHammer 38920cc858 Complete architectural rewrite with ultra-modular system
Major Changes:
- Moved legacy system to Legacy/ folder for archival
- Built new modular architecture with strict separation of concerns
- Created core system: Module, EventBus, ModuleLoader, Router
- Added Application bootstrap with auto-start functionality
- Implemented development server with ES6 modules support
- Created comprehensive documentation and project context
- Converted SBS-7-8 content to JSON format
- Copied all legacy games and content to new structure

New Architecture Features:
- Sealed modules with WeakMap private data
- Strict dependency injection system
- Event-driven communication only
- Inviolable responsibility patterns
- Auto-initialization without commands
- Component-based UI foundation ready

Technical Stack:
- Vanilla JS/HTML/CSS only
- ES6 modules with proper imports/exports
- HTTP development server (no file:// protocol)
- Modular CSS with component scoping
- Comprehensive error handling and debugging

Ready for Phase 2: Converting legacy modules to new architecture

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-22 07:08:39 +08:00

192 lines
7.2 KiB
Markdown

# TODO List - Class Generator
## 🔥 EN COURS
### ✅ NOUVEAU : Système de Compatibilité Content-Game TERMINÉ
- [x] **Système complet de vérification de compatibilité implémenté**
- Analyse automatique des capacités du contenu
- Calculs de compatibilité spécifiques par jeu
- Interface visuelle avec badges et séparation des jeux
- Modal d'aide avec suggestions d'amélioration
- Documentation complète dans `COMPATIBILITY-SYSTEM.md`
### Problèmes Actuels
- [ ] **Corriger le chargement des modules JSON distants dans ContentScanner**
- Les fichiers JSON distants sont trouvés mais ne se chargent pas comme modules
- Problème avec JsonContentLoader et la transformation en modules
- Fichiers concernés : `english-class-demo.json`, `sbs-level-7-8-new.json`
### Système de listing dynamique
- [ ] **Implémenter un système de listing dynamique des fichiers DigitalOcean**
- Actuellement bloqué par permissions ListBucket (403 Forbidden)
- Les clés actuelles ne permettent que GetObject, pas ListBucket
- [ ] **Remplacer la liste hardcodée par une découverte automatique**
- Actuellement : liste fixe dans `tryCommonFiles()`
- Objectif : scanner dynamiquement tous les fichiers
- [ ] **Obtenir des clés avec permissions ListBucket pour le listing S3**
## 📋 À FAIRE - URGENT
### Core Navigation System
- [x] ~~Create index.html with 3-level navigation~~ ✅ FAIT
- [x] ~~Implement URL routing with params~~ ✅ FAIT (`?page=games&game=whack&content=sbs8`)
- [x] ~~Build game-selector.html with clickable cards~~ ✅ FAIT (intégré dans index.html)
- [x] ~~Build level-selector.html with dynamic content loading~~ ✅ FAIT
- [x] ~~Create game.html generic page with dynamic module loading~~ ✅ FAIT
### Game Modules
- [x] ~~Refactor existing whack-a-mole.js into proper module format~~ ✅ FAIT
- [x] ~~Refactor existing fill-the-blank.js into proper module format~~ ✅ FAIT
- [x] ~~Implement game loader system~~ ✅ FAIT (`js/core/game-loader.js`)
- [x] ~~Create base GameEngine class for inheritance~~ ✅ FAIT (pattern établi)
### Content System
- [x] ~~Convert sbs-level-8.js to new unified format~~ ✅ FAIT (sbs-level-7-8-new.json)
- [x] ~~Implement content loader system~~ ✅ FAIT (content-scanner.js, json-content-loader.js)
- [x] ~~Create content validation functions~~ ✅ FAIT
- [x] ~~Add error handling for missing content~~ ✅ FAIT
### Jeux Existants
- [x] ~~whack-a-mole.js~~ ✅ FAIT
- [x] ~~whack-a-mole-hard.js~~ ✅ FAIT
- [x] ~~memory-match.js~~ ✅ FAIT
- [x] ~~quiz-game.js~~ ✅ FAIT
- [x] ~~fill-the-blank.js~~ ✅ FAIT
- [x] ~~text-reader.js~~ ✅ FAIT
- [x] ~~adventure-reader.js~~ ✅ FAIT
## 📚 CONTENT EXPANSION
### Contenu DigitalOcean
- [ ] **Ajouter plus de fichiers JSON sur DigitalOcean**
- Actuellement : `english-class-demo.json`, `sbs-level-7-8-new.json`
- À ajouter : animals.json, colors.json, family.json, etc.
### Lesson Introduction Module
- [ ] Create lesson-intro.js for vocabulary presentation
- [ ] Add context presentation before games
- [ ] Implement guided repetition system
- [ ] Add audio playback for pronunciation
## 🔧 TECHNICAL IMPROVEMENTS
### Core System (DÉJÀ FAIT)
- [x] ~~navigation.js - handle URL routing and back buttons~~ ✅ FAIT
- [x] ~~utils.js - shared utility functions~~ ✅ FAIT
- [x] ~~audio-manager.js~~ ✅ Intégré dans les jeux
- [x] ~~progress-tracker.js~~ ✅ Score tracking implémenté
### Performance & UX
- [x] ~~Lazy loading for game modules~~ ✅ FAIT (GameLoader)
- [x] ~~Add loading states and spinners~~ ✅ FAIT
- [x] ~~Implement keyboard shortcuts (ESC = back)~~ ✅ FAIT
### Réseau et Cloud
- [x] ~~Configuration DigitalOcean Spaces~~ ✅ FAIT
- [x] ~~Proxy HTTP sur port 8083~~ ✅ FAIT
- [x] ~~Authentification AWS Signature V4~~ ✅ FAIT
- [x] ~~Support HEAD et GET dans le proxy~~ ✅ FAIT
- [x] ~~WebSocket logger sur port 8082~~ ✅ FAIT
## 🎯 ARCHITECTURE ACTUELLE
### Structure Implémentée ✅
```
├── index.html ✅
├── css/
│ ├── styles.css ✅
│ └── components/ ✅
├── js/
│ ├── core/
│ │ ├── navigation.js ✅
│ │ ├── game-loader.js ✅
│ │ ├── content-scanner.js ✅
│ │ ├── content-engine.js ✅
│ │ ├── json-content-loader.js ✅
│ │ ├── env-config.js ✅
│ │ └── websocket-logger.js ✅
│ ├── games/
│ │ ├── whack-a-mole.js ✅
│ │ ├── whack-a-mole-hard.js ✅
│ │ ├── memory-match.js ✅
│ │ ├── quiz-game.js ✅
│ │ ├── fill-the-blank.js ✅
│ │ ├── text-reader.js ✅
│ │ └── adventure-reader.js ✅
│ └── content/
│ ├── sbs-level-7-8-new.js ✅
│ └── [fichiers JSON distants via proxy]
├── export_logger/
│ ├── websocket-server.js ✅
│ └── logs-viewer.html ✅
└── Start_Class_Generator.bat ✅
```
## 🌟 FUTURES AMÉLIORATIONS
### Nouveaux Types de Jeux
- [ ] simon-says.js - jeu "Touch the X" digital
- [ ] speed-categories.js - catégorisation rapide
- [ ] true-false.js - vrai/faux avec images
- [ ] sound-match.js - correspondance audio-image
- [ ] catch-words.js - mots volants à attraper
- [ ] drag-drop.js - construction de phrases
- [ ] story-builder.js - construction narrative
### Système de Contenu
- [ ] Schémas de validation JSON
- [ ] Générateurs de contenu dynamique
- [ ] Import/export de contenu
- [ ] Support multi-langue UI
### Extensions Système
- [ ] Architecture de plugins pour jeux tiers
- [ ] API pour sources de contenu externes
- [ ] Système de cache offline avancé
- [ ] PWA (Progressive Web App)
## 🚀 VERSION CHINOISE (FUTUR)
### Adaptations Architecture
- [ ] Format de contenu étendu pour le chinois
- [ ] Support des tons dans le système audio
- [ ] Ordre des traits des caractères
- [ ] Système d'affichage pinyin
### Jeux Spécifiques Chinois
- [ ] stroke-order.js - écriture de caractères
- [ ] tone-practice.js - reconnaissance des tons
- [ ] radical-builder.js - composition de caractères
- [ ] pinyin-typing.js - pratique de romanisation
## 🤖 INTÉGRATION IA (FUTUR)
### Points d'Intégration API
- [ ] content-generator.js - création de contenu IA
- [ ] response-validator.js - vérification de réponses IA
- [ ] difficulty-adapter.js - ajustement de difficulté IA
- [ ] feedback-generator.js - feedback personnalisé IA
### Collection de Données
- [ ] Logging des interactions utilisateur
- [ ] Collection de métriques de performance
- [ ] Tracking des patterns d'erreur
- [ ] Structure de données de progression
## 📝 Notes Importantes
### Configuration Actuelle
- **Proxy** : `http://localhost:8083/do-proxy/`
- **WebSocket** : `ws://localhost:8082`
- **App** : `http://localhost:8080`
### Fichiers Confirmés sur DigitalOcean
- `english-class-demo.json` (12,425 caractères)
- `sbs-level-7-8-new.json` (9,382 caractères)
### Clés DigitalOcean
- Access Key : `DO8018LC8QF7CFBF7E2K`
- Limitation : GetObject seulement, pas ListBucket
### Problème Principal Restant
Les fichiers JSON distants sont détectés mais ne se transforment pas en modules JavaScript utilisables par l'application.