This commit is contained in:
2026-05-10 10:16:50 +02:00
parent 13ac2436c1
commit 17ae5f5e5b
2 changed files with 156 additions and 0 deletions

View File

@@ -0,0 +1,149 @@
# Notes de session - 2026-05-09 - Reprise qualite SVG fractions
## Bilan de la session
Session efficace de reprise qualite sur les SVG de lecon du sous-theme `01B_fractions`.
Objectif principal : fiabiliser les fractions verticales dans les SVG, notamment les barres de fraction, les alignements, les espacements et les chevauchements.
Les 8 SVG de lecon ont ete repris progressivement a partir des retours image par image.
## Fichiers concernes
Dossier :
`backend/contenus_pedagogiques/cycle_3/mathematiques/cm1/01_nombres_calcul_resolution/01B_fractions/svg/`
SVG de lecon :
- `01_lire_ecrire_fraction_simple.svg`
- `02_representer_fraction_partage.svg`
- `03_fraction_sur_demi_droite_graduee.svg`
- `04_fraction_superieure_a_un.svg`
- `05_comparer_fractions_simples.svg`
- `06_encadrer_fraction_entre_entiers.svg`
- `07_additionner_soustraire_fractions_simples.svg`
- `08_fraction_d_une_quantite.svg`
## Probleme initial
Les SVG etaient visuellement mieux que la premiere generation, mais plusieurs erreurs persistaient :
- fractions qui chevauchent des textes ou des figures ;
- numerateurs trop hauts ou trop proches des traits ;
- signes `+`, `-`, `=`, `<` mal centres par rapport aux traits de fraction ;
- fractions trop proches ou trop eloignees des signes ;
- elements qui sortent d'un panneau ;
- textes avec caracteres casses lors de certaines generations ;
- corrections ponctuelles non suffisantes pour garantir les futures fiches.
## Decisions prises
Le SVG reste le format de sortie, mais il ne doit plus etre traite comme une simple image libre.
Pour les contenus mathematiques sensibles, il faut raisonner avec des primitives et des boites :
- une fraction verticale est un composant reserve ;
- une expression mathematique est une suite de tokens ;
- chaque token expose une boite logique ;
- les panneaux imposent une zone utile ;
- le validateur doit refuser les collisions, pas seulement les erreurs XML.
La note generale est dans :
`SVG_CONTENT_ARCHITECTURE.md`
## Regles stabilisees pour les fractions
### Fraction verticale
- Utiliser `fraction-g` pour toutes les fractions visibles.
- Ajouter un `data-box` sur chaque `fraction-g`.
- Interdire les fractions obliques de type `3/4` dans les SVG eleves.
- Barre horizontale obligatoire, visible et separee des chiffres.
- Numerateur et denominateur centres sur la barre.
- Equilibrer optiquement la fraction autour du trait, pas seulement avec une symetrie de baseline SVG.
### Anti-chevauchement
- Une fraction reserve sa boite complete.
- Aucun texte, signe, figure, point, bande, disque ou autre fraction ne doit intersecter cette boite.
- Les fractions posees pres d'une figure doivent etre dans une zone mathematique separee.
- Quand une nouvelle ligne ou un nouveau token est ajoute, verifier la place disponible avec une marge suffisante par rapport aux formes deja presentes.
### Operations
- Chaque signe est un token separe.
- Chaque entier isole dans une operation est un token separe.
- Ne pas grouper `= 1 +`, `= 2`, `2 <`, `< 3` dans un seul texte lorsque la ligne contient des fractions.
- Garder des ecarts visuels constants entre les tokens d'une operation.
- Les signes sont centres sur l'axe des traits de fraction.
- Les signes de comparaison sont au milieu de l'espace entre les fractions.
### Panneaux
- Un element ne doit pas sortir de sa bulle ou de son panneau.
- Les textes longs doivent etre raccourcis, passes en `small` ou coupes sur deux lignes.
- Il faut conserver une marge perceptible, meme si le SVG est techniquement valide.
## Validateur ajoute / renforce
Fichier :
`backend/tools/validate_svg_quality.py`
Fonctions principales ajoutees ou renforcees :
- detection de fractions obliques ;
- detection de mojibake ou caracteres de remplacement suspects ;
- controle de structure `fraction-g` ;
- controle de `data-box` ;
- controle de collisions autour des fractions ;
- controle de confinement dans les panneaux ;
- controle des espacements autour des barres de fraction ;
- validation possible avec `--warnings-as-errors`.
Commande de reference :
```powershell
& C:\Users\baron\AppData\Local\Programs\Python\Python313\python.exe backend\tools\validate_svg_quality.py backend\contenus_pedagogiques\cycle_3\mathematiques\cm1\01_nombres_calcul_resolution\01B_fractions\svg --warnings-as-errors
```
Resultat final de la session :
```text
SVG controles: 8 | erreurs: 0 | warnings: 0
```
Recherche finale des caracteres casses sur les SVG de lecon : aucun resultat.
## Point important pour la suite
Les regles sont maintenant documentees et outillees, mais elles ne remplacent pas encore une vraie generation structuree.
Pour les futures fiches, eviter de produire directement du SVG brut. Idealement, generer :
1. une description structuree des zones ;
2. des tokens mathematiques ;
3. des primitives controlees ;
4. le SVG final ;
5. une validation automatique.
## Prochaine reprise
La prochaine session doit repartir sur les JSON ou des commentaires auront ete ajoutes.
Priorites annoncees :
1. relire les JSON commentes ;
2. valider les parcours ;
3. valider le diagnostic ;
4. valider la lecon ;
5. garder en tete que les SVG fractions de lecon sont proches du niveau attendu, mais que les futures generations doivent passer par les nouvelles regles.
## A ne pas oublier
- Ne pas reprendre les SVG fractions en mode correction ponctuelle sans relancer le validateur.
- Si un nouveau SVG contient une fraction, lancer le validateur avant revue utilisateur.
- Les exercices SVG existants peuvent encore remonter des warnings de `data-box` manquant si on valide tout `backend/contenus_pedagogiques`.
- Le lot de lecons `01B_fractions/svg` est le lot de reference propre pour les nouvelles regles.

View File

@@ -82,6 +82,13 @@ Decision :
- utiliser un composant de fraction stable, avec espacements imposes et controles visuels ;
- ne pas assimiler definitivement ces SVG tant que la reprise n'est pas validee.
Reprise qualite du `2026-05-09` :
- notes detaillees : `NOTES_SESSION_2026-05-09.md` ;
- architecture et regles SVG : `SVG_CONTENT_ARCHITECTURE.md` ;
- validateur : `backend/tools/validate_svg_quality.py` ;
- commande de reference : valider `svg/` avec `--warnings-as-errors`.
## Contextes dynamiques generes
Phase 4A : 24 contextes dynamiques par card generes dans `card_contexts/`.