Add CE2 homophones chapter (a/à, et/est, son/sont, on/ont)

Same directives as the CE1 chapter: 4 rules with a substitution test
each, 8 multiple-choice + 4 sentence corrections + 3 dictées per rule
(draft), 3 missions per rule, Piper audio for the 12 dictées.

21 missions don't fit on one map, so the world map now shows the
missions of the profile's school level (derived from the rule's level,
no data-format change), with a button letting a CE2 profile revisit the
CE1 map. Mission-position guard test now checks each level separately.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Denis Defolie
2026-10-11 21:58:16 +02:00
parent 233cc26452
commit aad229ef7b
113 changed files with 2814 additions and 31 deletions
+30
View File
@@ -0,0 +1,30 @@
{
"id": "ce2_a_a_dictee_01",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_a_a"
],
"difficulty": 1,
"target_text": "Léa a un chat.",
"words": [
{
"text": "Léa",
"expects_capital": true
},
{
"text": "a",
"rule_id": "regle_homophone_a_a"
},
{
"text": "un"
},
{
"text": "chat."
}
],
"audio_id": "ce2_a_a_dictee_01",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
+33
View File
@@ -0,0 +1,33 @@
{
"id": "ce2_a_a_dictee_02",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_a_a"
],
"difficulty": 2,
"target_text": "Nous allons à la piscine.",
"words": [
{
"text": "Nous",
"expects_capital": true
},
{
"text": "allons"
},
{
"text": "à",
"rule_id": "regle_homophone_a_a"
},
{
"text": "la"
},
{
"text": "piscine."
}
],
"audio_id": "ce2_a_a_dictee_02",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
+40
View File
@@ -0,0 +1,40 @@
{
"id": "ce2_a_a_dictee_03",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_a_a"
],
"difficulty": 3,
"target_text": "Papa a donné un cadeau à Léa.",
"words": [
{
"text": "Papa",
"expects_capital": true
},
{
"text": "a",
"rule_id": "regle_homophone_a_a"
},
{
"text": "donné"
},
{
"text": "un"
},
{
"text": "cadeau"
},
{
"text": "à",
"rule_id": "regle_homophone_a_a"
},
{
"text": "Léa."
}
],
"audio_id": "ce2_a_a_dictee_03",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
+30
View File
@@ -0,0 +1,30 @@
{
"id": "ce2_et_est_dictee_01",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_et_est"
],
"difficulty": 1,
"target_text": "Le chat est noir.",
"words": [
{
"text": "Le",
"expects_capital": true
},
{
"text": "chat"
},
{
"text": "est",
"rule_id": "regle_homophone_et_est"
},
{
"text": "noir."
}
],
"audio_id": "ce2_et_est_dictee_01",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
+33
View File
@@ -0,0 +1,33 @@
{
"id": "ce2_et_est_dictee_02",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_et_est"
],
"difficulty": 2,
"target_text": "Paul et Marie jouent ensemble.",
"words": [
{
"text": "Paul",
"expects_capital": true
},
{
"text": "et",
"rule_id": "regle_homophone_et_est"
},
{
"text": "Marie"
},
{
"text": "jouent"
},
{
"text": "ensemble."
}
],
"audio_id": "ce2_et_est_dictee_02",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
+37
View File
@@ -0,0 +1,37 @@
{
"id": "ce2_et_est_dictee_03",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_et_est"
],
"difficulty": 3,
"target_text": "Mon frère est petit et blond.",
"words": [
{
"text": "Mon",
"expects_capital": true
},
{
"text": "frère"
},
{
"text": "est",
"rule_id": "regle_homophone_et_est"
},
{
"text": "petit"
},
{
"text": "et",
"rule_id": "regle_homophone_et_est"
},
{
"text": "blond."
}
],
"audio_id": "ce2_et_est_dictee_03",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
+27
View File
@@ -0,0 +1,27 @@
{
"id": "ce2_on_ont_dictee_01",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_on_ont"
],
"difficulty": 1,
"target_text": "On joue dehors.",
"words": [
{
"text": "On",
"expects_capital": true,
"rule_id": "regle_homophone_on_ont"
},
{
"text": "joue"
},
{
"text": "dehors."
}
],
"audio_id": "ce2_on_ont_dictee_01",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
+30
View File
@@ -0,0 +1,30 @@
{
"id": "ce2_on_ont_dictee_02",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_on_ont"
],
"difficulty": 2,
"target_text": "Les enfants ont faim.",
"words": [
{
"text": "Les",
"expects_capital": true
},
{
"text": "enfants"
},
{
"text": "ont",
"rule_id": "regle_homophone_on_ont"
},
{
"text": "faim."
}
],
"audio_id": "ce2_on_ont_dictee_02",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
+46
View File
@@ -0,0 +1,46 @@
{
"id": "ce2_on_ont_dictee_03",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_on_ont"
],
"difficulty": 3,
"target_text": "Les enfants ont sommeil et on lit une histoire.",
"words": [
{
"text": "Les",
"expects_capital": true
},
{
"text": "enfants"
},
{
"text": "ont",
"rule_id": "regle_homophone_on_ont"
},
{
"text": "sommeil"
},
{
"text": "et"
},
{
"text": "on",
"rule_id": "regle_homophone_on_ont"
},
{
"text": "lit"
},
{
"text": "une"
},
{
"text": "histoire."
}
],
"audio_id": "ce2_on_ont_dictee_03",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
@@ -0,0 +1,30 @@
{
"id": "ce2_son_sont_dictee_01",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_son_sont"
],
"difficulty": 1,
"target_text": "Les chats sont gentils.",
"words": [
{
"text": "Les",
"expects_capital": true
},
{
"text": "chats"
},
{
"text": "sont",
"rule_id": "regle_homophone_son_sont"
},
{
"text": "gentils."
}
],
"audio_id": "ce2_son_sont_dictee_01",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
@@ -0,0 +1,30 @@
{
"id": "ce2_son_sont_dictee_02",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_son_sont"
],
"difficulty": 2,
"target_text": "Paul range son cartable.",
"words": [
{
"text": "Paul",
"expects_capital": true
},
{
"text": "range"
},
{
"text": "son",
"rule_id": "regle_homophone_son_sont"
},
{
"text": "cartable."
}
],
"audio_id": "ce2_son_sont_dictee_02",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}
@@ -0,0 +1,40 @@
{
"id": "ce2_son_sont_dictee_03",
"level": "CE2",
"domain": "orthographe",
"rule_ids": [
"regle_homophone_son_sont"
],
"difficulty": 3,
"target_text": "Léa et Paul sont dans son jardin.",
"words": [
{
"text": "Léa",
"expects_capital": true
},
{
"text": "et"
},
{
"text": "Paul"
},
{
"text": "sont",
"rule_id": "regle_homophone_son_sont"
},
{
"text": "dans"
},
{
"text": "son",
"rule_id": "regle_homophone_son_sont"
},
{
"text": "jardin."
}
],
"audio_id": "ce2_son_sont_dictee_03",
"audio_provisional": true,
"accepted_variants": [],
"review_status": "draft"
}