878d911065
✅ P1.1 Phase 9 Touch Input (4h) - TouchEmulator: 4x4 grid navigation via buttons (UP/DOWN/LEFT/RIGHT toggle) - Files: touch_emulator.{h,cpp} + AmigaUIShell integration - Button mapping: 0=UP, 1=SELECT, 2=DOWN, 3=MENU, 4=TOGGLE_LR - Build SUCCESS (31.06s, 64.4% RAM, 42.0% Flash) ✅ P1.2 Documentation Update (1h) - AGENT_TODO.md: Phase 9 completion + Sprint 9 section added - Root cause analysis: watchdog timeout (cycle 9) → stack fix (8192→16384) - Troubleshooting guide: common issues + debug commands Files: + touch_emulator.{h,cpp} ~ ui_amiga_shell.* + main.cpp + AGENT_TODO.md Next: P1.3 (Sprint 1 endurance validation) + P2 (main.cpp refactor)
52 lines
2.1 KiB
Markdown
52 lines
2.1 KiB
Markdown
# Spec App - Sciences Enfants (`kids_science`)
|
||
|
||
## 1. Cadrage
|
||
- ID runtime: `kids_science`
|
||
- Catégorie: `kids_learning`
|
||
- Scène d'entrée: `SCENE_KIDS_SCIENCE`
|
||
- Module actuel: `KidsLearningModule`
|
||
- Manifest attendu: `/apps/kids_science/manifest.json`
|
||
- Offline: **oui** | Streaming: **oui**
|
||
|
||
## 2. Capacités
|
||
- Requises (128): `CAP_GPU_UI`
|
||
- Optionnelles (81): `CAP_AUDIO_OUT`, `CAP_WIFI`, `CAP_STORAGE_FS`
|
||
|
||
## 3. Objectif Produit
|
||
- Parcours pédagogique guidé (leçons, quiz, session audio).
|
||
|
||
## 4. Contrat Actions (`APP_ACTION` / `/api/apps/action`)
|
||
| Action | Payload | Effet attendu |
|
||
|---|---|---|
|
||
| `lesson_open` | `lesson id` | Ouvre une leçon et reset le step. |
|
||
| `lesson_next` | `vide` | Passe à l'étape suivante. |
|
||
| `lesson_prev` | `vide` | Revient à l'étape précédente. |
|
||
| `quiz_answer` | `answer` | Met à jour le score si réponse correcte. |
|
||
| `session_start / play` | `path/url optionnel` | Lance audio guidé. |
|
||
| `pause` | `vide` | Pause audio + sauvegarde progression. |
|
||
| `session_stop / stop` | `vide` | Stop audio + sauvegarde. |
|
||
| `seek_ms` | `entier ms` | Met à jour curseur logique. |
|
||
|
||
## 5. Stockage & Persistance
|
||
- Progression: /apps/<app_id>/progress.json
|
||
- Cursor: lesson, step, score, cursor_ms
|
||
- Audio offline recommandé: /apps/<app_id>/audio/session.mp3
|
||
|
||
## 6. Backlog Développement (MVP)
|
||
- Flow leçon/quiz complet et robuste.
|
||
- Persistance fine de progression par app.
|
||
- Fallback audio offline si Wi-Fi indisponible.
|
||
- Intégrer le déclenchement depuis le launcher (`AmigaUIShell::launchSelectedApp`) via `APP_OPEN`.
|
||
- Vérifier la route de scène (`entry_screen`) et la cohérence UI/LVGL.
|
||
|
||
## 7. Critères d’Acceptation
|
||
- L'app se lance via API et via commande série sans crash.
|
||
- Les actions principales répondent sans erreur non gérée.
|
||
- Le statut runtime reflète correctement `state`, `last_event`, `last_error`.
|
||
- Retour propre à `SCENE_READY` après fermeture app.
|
||
|
||
## 8. Tests Recommandés
|
||
1. `APP_OPEN kids_science` puis contrôle `UI_SCENE_STATUS`.
|
||
2. Exécuter 3-5 actions clés de `KidsLearningModule` (serial/API).
|
||
3. `APP_CLOSE` puis validation `APP_IDLE` et absence de fuite mémoire visible.
|