mirror of
https://github.com/deunix-educ/aventuriers-des-mots.git
synced 2026-10-13 02:11:58 +02:00
Add JSON schemas, data validator, and first CE1 content
Introduces a generic JSON-Schema-subset validator in GDScript (scripts/data/schema_validator.gd) used both by `make validate-data` and, later, by ExerciseEngine at load time, plus semantic_checks.gd for cross-field constraints a schema can't express (answer index bounds, at least one faulty token in sentence correction, word count matching between a dictation's target_text and its annotations). Schemas cover rule, exercise (dispatched per type: multiple_choice, sentence_correction), dictation, curriculum, and save (save.schema.json is not yet wired into validate-data; saves live in user://, handled at the Profiles/Saves step). First draft content for the CE1 "accord_adjectif" rule (one rule, two multiple-choice exercises, one sentence correction, one dictation, one curriculum entry) exercises the full pipeline end to end and seeds docs/review/content-review.md, regenerated by the new tools/generate_content_review.py (`make content-review`). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Revue du contenu pedagogique
|
||||
|
||||
Genere automatiquement depuis `data/` par `tools/generate_content_review.py`. Ne pas editer ce fichier a la main.
|
||||
|
||||
## regle_accord_adjectif (CE1, grammaire)
|
||||
|
||||
**Enonce** : Quand un adjectif accompagne un nom, il s'accorde avec ce nom en genre et en nombre.
|
||||
|
||||
**Exemple** : Un petit chien. Une petite chienne. Des petits chiens. Des petites chiennes.
|
||||
|
||||
**Statut** : draft
|
||||
|
||||
### Choix multiples
|
||||
|
||||
- **ce1_accord_adjectif_qcm_01** (difficulte 1) : Les ... chiens jouent.
|
||||
- Reponses : petit, petits, petite
|
||||
- Reponse attendue : petits
|
||||
- Indice : Observe le determinant « les » et le nom « chiens ».
|
||||
- Explication : Le groupe nominal est au pluriel. L'adjectif prend ici la marque du pluriel.
|
||||
- Statut : draft
|
||||
- **ce1_accord_adjectif_qcm_02** (difficulte 1) : La ... maison est jolie.
|
||||
- Reponses : petit, petite, petites
|
||||
- Reponse attendue : petite
|
||||
- Indice : Observe le determinant « la » et le nom « maison ».
|
||||
- Explication : Le nom « maison » est feminin singulier. L'adjectif prend donc la marque du feminin.
|
||||
- Statut : draft
|
||||
|
||||
### Corrections de phrase
|
||||
|
||||
- **ce1_accord_adjectif_correction_01** (difficulte 2) : Les [petit -> petits] chiens courent.
|
||||
- Indice : Le determinant « les » indique un pluriel.
|
||||
- Explication : L'adjectif « petit » s'accorde avec le nom « chiens », qui est au pluriel : il faut ecrire « petits ».
|
||||
- Statut : draft
|
||||
|
||||
### Dictees
|
||||
|
||||
- **ce1_accord_adjectif_dictee_01** : Les petits chats dorment.
|
||||
- Variantes acceptees : aucune
|
||||
- Audio : provisoire
|
||||
- Statut : draft
|
||||
|
||||
@@ -88,3 +88,13 @@ Ajouts à l'arborescence proposée :
|
||||
- Licence et hébergement : tranchés ci-dessus (point 0).
|
||||
- Validation du contenu CE1/CE2 par un enseignant avant diffusion : à organiser, pas de date fixée.
|
||||
- Spécification minimale de performance pour « appareil familial » : non définie, à préciser avant les exports.
|
||||
|
||||
## 11. Étape « Données » : précisions prises en cours d'implémentation
|
||||
|
||||
- Le validateur générique (`scripts/data/schema_validator.gd`) implémente un sous-ensemble de JSON Schema (`type`, `required`, `properties`, `additionalProperties`, `items`, `enum`, `const`, bornes numériques, longueurs, `pattern`). Suffisant pour tous les schémas actuels ; pas de `patternProperties` ni de `if`/`then`.
|
||||
- Le dispatch du schéma d'exercice se fait sur le champ `type` (`multiple_choice` → `exercise_multiple_choice.schema.json`, `sentence_correction` → `exercise_sentence_correction.schema.json`), dans `DataLoader.exercise_schema_name_for_type`. Un type absent de cette fonction est rejeté explicitement par `make validate-data`, conformément à l'invariant « liste fermée des types d'exercices ».
|
||||
- Les contraintes croisées qu'un schéma ne peut pas exprimer (index `correct_answer` dans les bornes de `answers`, au moins un token fautif en correction de phrase avec une correction `expected`, cohérence entre `target_text` et `words` en dictée) vivent dans `scripts/data/semantic_checks.gd`, testées indépendamment du schéma.
|
||||
- Schéma de dictée : `words` (annotation mot par mot : `rule_id` et `expects_capital` facultatifs) est **obligatoire**, pas facultatif — sans lui, l'erreur reste non classée (cf. « Points durs » du prompt de lancement). Le nombre de mots dans `words` doit correspondre à `target_text` découpé sur les espaces.
|
||||
- Le schéma `save` reste provisoire pour le champ `skills` (`{"type": "object"}`, sans validation des clés dynamiques) : le validateur actuel ne sait pas exprimer un schéma pour des clés arbitraires. À affiner à l'étape « Profils et sauvegardes ».
|
||||
- GUT est pinné en v9.6.0, pas la dernière version (9.7.1 référence le singleton `AccessibilityServer`, absent de Godot 4.6.3 en mode headless).
|
||||
- `tools/setup.sh` lance `godot --headless --path . --import` en fin d'installation : nécessaire pour que les scripts `class_name` globaux (`SchemaValidator`, `DataLoader`, `SemanticChecks`) soient résolus avant la première exécution de `make test` / `make validate-data`.
|
||||
|
||||
Reference in New Issue
Block a user