This commit is contained in:
2026-05-12 23:44:30 +02:00
parent 367d72e200
commit e1f6bf7264
6 changed files with 163 additions and 8 deletions

View File

@@ -295,3 +295,21 @@ Approche progressive recommandee:
- `README.md`
- `MEMORY.md`
## Session 2026-05-12 - Architecture contenus programme et SVG fractions
- Decision structurante: chaque lecon doit suivre l'arborescence canonique `lecon.md`, `fiches/*/fiche.md + fiche.svg`, `cards/*/card_XX.md + card_XX.svg`, `exercices/*/exercices.md + exercices.svg`, `tests/*`, `exercices/parcours_adaptes/*`, `sources/*`.
- `kit_adaptatif`, `svg/`, `card_contexts/` et `exercices_svg/` sont des dossiers legacy. Une nouvelle generation ne doit plus les produire.
- Chaque contenu pedagogique doit garder une section `Sources` ou un contexte equivalent pour audit Education nationale: PDF officiel, extraction locale, cycle, niveau, matiere, theme, date/validation si connue.
- `PROGRAM_CONTENT_ARCHITECTURE.md` est la reference de l'arborescence canonique et du flux pedagogique.
- `01B_fractions` et `01A_nombres_entiers` ont ete migres dans cette structure, dans les deux miroirs `backend/contenus_pedagogiques/...` et `Programme/contenus_pedagogiques/...`.
- Le loader programme doit parcourir les types utiles dans l'UI: `lesson`, `fiche`, `card`, `exercice`, `test`, `support`. Plus de type editorial `kit`.
- Le modele doit charger `lecon.md` comme contexte general, puis le contexte specifique de l'objet actif: fiche, card, exercice ou test.
- `backend/app/program_content.py` lit les parcours adaptes recursivement avec `rglob`, afin que `exercices/parcours_adaptes/<profil>/exercices.md + exercices.svg` soit visible dans l'arbre et dans le contexte adaptatif.
- La validation globale doit afficher SVG et contexte ensemble. Dans l'onglet `Programme global`, la zone de droite a ete reorganisee: SVG et Markdown se partagent l'espace, et le bouton `Ouvrir dans Validation contenus` flotte discretement en bas a droite.
- Piege majeur sur les fractions SVG: `text@y` est une baseline, pas le bord visible du chiffre. Les tests qui regardent seulement `bar_y - text_y` donnent de faux verts.
- Regle retenue pour les fractions: tester la clairance visible estimee entre barre et glyphes, via `numerator_bottom = y + font_size * 0.25` et `denominator_top = y - font_size * 0.85`.
- Les fractions doivent porter `class="math-expression fraction-g"`, `data-math="fraction"` et un `data-box` recalcule autour du rendu reel.
- Les outils importants: `backend/tools/validate_svg_quality.py`, `backend/tools/regenerate_fraction_exercise_svgs.py`, `backend/tools/compact_fraction_svg_spacing.py`, `backend/tools/migrate_nombres_entiers_content.py`.
- Validation de fin de session: fractions strictes OK dans les deux miroirs, nombres entiers OK pendant migration, `npm.cmd run build` OK apres ajustement UI.
- A retenir pour la suite: avant toute validation humaine des SVG fractions, lancer le validateur strict sur les deux miroirs et inspecter visuellement au moins le premier exercice de chaque famille, car les faux verts de baseline ont deja ete observes.