Progression des leçons dans le stockage des parties

Nouvelle clé « lessons » du magasin settings d'IndexedDB (et
ustagammon.lessons en repli), format versionné relu par
readLessonProgress. Amendement de l'ADR 0007.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-12 10:18:07 +01:00
co-authored by Claude Opus 5.5
parent 635612a2a8
commit e9ef965438
7 changed files with 299 additions and 9 deletions
@@ -202,3 +202,28 @@ le panneau d'analyse de gnubg de bureau.
à la reprise et recalculé en arrière-plan ; les analyses de l'ordinateur
(`review.computer`), du même format, aussi.
- Ni les événements (version 2) ni le schéma IndexedDB ne changent.
### 2026-11-12 — La progression dans les leçons
Avec les leçons (étape 1g), la progression rejoint les formats durables. Elle
est rangée dans le stockage des parties (étape 1b), à côté de la partie en
cours :
- IndexedDB : une nouvelle clé `lessons` dans le magasin `settings`
existant. Le schéma ne change pas (base « ustagammon », version 1, mêmes
magasins) : aucune montée de version n'est nécessaire, et une base
enregistrée avant l'étape 1g se lit telle quelle, sans progression.
- Repli localStorage (et mémoire) : la clé `ustagammon.lessons`.
- La valeur, en JSON, porte sa version (`LESSON_PROGRESS_VERSION`, 1) et,
par numéro de leçon, la dernière étape vue (`last`), la plus lointaine
(`reached`, 99 pour la fin) et les étapes dont l'exercice est réussi
(`solved`) (`app/src/domain/learning/lessons.ts`).
- `readLessonProgress` relit toute valeur enregistrée : absente ou
illisible, la progression est vide ; une leçon mal formée est oubliée sans
toucher aux autres ; une version inconnue est lue comme vide plutôt que
mal comprise. Toute évolution du format passera par une nouvelle version
et sa migration dans cette fonction, testées dans
`app/tests/lessons.test.ts` comme ici.
- Une leçon est terminée quand tous ses exercices sont réussis ; ce n'est
pas enregistré à part, mais déduit des exercices réussis et du texte de la
leçon : ajouter un exercice à une leçon la fait repasser « en cours ».