feat: aktualisiere Zahlen und Didaktik im Bisaya-Kurs, ersetze "baynte" durch "kawhaan"
All checks were successful
Deploy to production / deploy (push) Successful in 1m7s

This commit is contained in:
Torsten Schulz (local)
2026-05-27 14:49:44 +02:00
parent e21949affb
commit 908be3e83b
5 changed files with 113 additions and 69 deletions

View File

@@ -2914,7 +2914,7 @@ const BISAYA_EXERCISES = {
correct: 'Napulo',
alternatives: ['napulo']
},
explanation: '"Napulo" = zehn; „baynte“ = zwanzig.'
explanation: '"Napulo" = zehn; „kawhaan“ = zwanzig.'
},
{
exerciseTypeId: 2,
@@ -2922,11 +2922,11 @@ const BISAYA_EXERCISES = {
instruction: 'Wähle die richtige Übersetzung.',
questionData: {
type: 'multiple_choice',
question: 'Was bedeutet "baynte"?',
question: 'Was bedeutet "kawhaan"?',
options: ['zwanzig', 'zehn', 'dreißig', 'zwölf']
},
answerData: { type: 'multiple_choice', correctAnswer: 0 },
explanation: '"baynte" = zwanzig.'
explanation: '"kawhaan" = zwanzig.'
}
],
@@ -2938,11 +2938,11 @@ const BISAYA_EXERCISES = {
instruction: 'Wähle die passende deutsche Bedeutung.',
questionData: {
type: 'multiple_choice',
question: 'Was bedeutet "traysenta"?',
question: 'Was bedeutet "katloan"?',
options: ['dreißig', 'dreizehn', 'dreihundert', 'dreitausend']
},
answerData: { type: 'multiple_choice', correctAnswer: 0 },
explanation: '"traysenta" entspricht typischerweise „dreißig“ (regional leicht variierend).'
explanation: '"Katloan" = dreißig in der nativen Zahlenreihe.'
},
{
exerciseTypeId: 1,
@@ -2955,9 +2955,24 @@ const BISAYA_EXERCISES = {
},
answerData: {
type: 'gap_fill',
answers: ['Baynte', 'Traysenta', 'Kwarenta', 'Singkwenta']
answers: ['Kawhaan', 'Katloan', 'Kap-atan', 'Kalim-an']
},
explanation: 'Zehner werden im Alltag oft mit spanisch geprägten Formen gebildet.'
explanation: 'Die native Zahlenreihe bildet runde Zehner als eigene Grundformen.'
},
{
exerciseTypeId: 1,
title: 'Zehner und Einer zusammensetzen',
instruction: 'Ergänze die Zahlwörter nach dem Muster Zehner + ug + Einer.',
questionData: {
type: 'gap_fill',
text: '{gap} (21) | {gap} (25) | {gap} (31) | {gap} (58)',
gaps: 4
},
answerData: {
type: 'gap_fill',
answers: ['Kawhaan ug usa', 'Kawhaan ug lima', 'Katloan ug usa', 'Kalim-an ug walo']
},
explanation: 'In der nativen Reihe folgt auf den Zehner mit „ug“ die Einerzahl.'
},
{
exerciseTypeId: 4,
@@ -2971,10 +2986,10 @@ const BISAYA_EXERCISES = {
},
answerData: {
type: 'transformation',
correct: 'Singkwenta',
alternatives: ['singkwenta']
correct: 'Kalim-an',
alternatives: ['kalim-an']
},
explanation: '"Singkwenta" = fünfzig.'
explanation: '"Kalim-an" = fünfzig.'
},
{
exerciseTypeId: 2,
@@ -2983,10 +2998,10 @@ const BISAYA_EXERCISES = {
questionData: {
type: 'multiple_choice',
question: 'Wie heißt „achtzig“ typischerweise?',
options: ['Otsenta', 'Nobenta', 'Baynte', 'Napulo']
options: ['Kawaloan', 'Kasiyaman', 'Kawhaan', 'Napulo']
},
answerData: { type: 'multiple_choice', correctAnswer: 0 },
explanation: '"Otsenta" = achtzig (regional auch „otsenta“); „nobenta“ = neunzig.'
explanation: '"Kawaloan" = achtzig; „Kasiyaman“ = neunzig.'
}
],
@@ -3103,7 +3118,7 @@ const BISAYA_EXERCISES = {
questionData: {
type: 'multiple_choice',
question: 'Was passt zu 5000?',
options: ['Lima ka libo', 'Lima ka gatos', 'Baynte ka libo', 'Napulo ka libo']
options: ['Lima ka libo', 'Lima ka gatos', 'Kawhaan ka libo', 'Napulo ka libo']
},
answerData: { type: 'multiple_choice', correctAnswer: 0 },
explanation: '"Lima ka libo" = fünftausend.'
@@ -3200,7 +3215,7 @@ const BISAYA_EXERCISES = {
},
answerData: {
type: 'gap_fill',
answers: ['Baynte', 'Baynte', 'Tagpila']
answers: ['Kawhaan', 'Kawhaan', 'Tagpila']
},
explanation: 'Die Kombination aus Zahlwort und Preisfrage ist Kernstoff aus Woche 2.'
},
@@ -6150,13 +6165,19 @@ async function createBisayaCourseContent() {
continue;
}
// Lektionen mit Platzhalter-Ersetzung: alte Übungen entfernen und durch echte ersetzen
// Lektionen mit korrigierten Platzhaltern werden im regulären Sync in
// place aktualisiert, damit bestehender Übungsfortschritt an stabilen
// Exercise-IDs erhalten bleibt.
const replacePlaceholders = lessonMatchesPlaceholderRebuildList(lesson);
const existingCount = await VocabGrammarExercise.count({
where: { lessonId: lesson.id }
});
if (existingCount > 0 && !replacePlaceholders && !forceRebuildAll && SAFE_EXERCISE_UPDATE_TITLES.has(lesson.title)) {
if (
existingCount > 0
&& !forceRebuildAll
&& (replacePlaceholders || SAFE_EXERCISE_UPDATE_TITLES.has(lesson.title))
) {
const lessonDidactics = getLessonDidactics(lesson);
const mergedGrammarFocus = mergeGrammarFocusForLesson(
lessonDidactics.grammarFocus,
@@ -6217,10 +6238,9 @@ async function createBisayaCourseContent() {
continue;
}
if ((replacePlaceholders || forceRebuildAll) && existingCount > 0) {
if (forceRebuildAll && existingCount > 0) {
const deleted = await VocabGrammarExercise.destroy({ where: { lessonId: lesson.id } });
const reason = forceRebuildAll ? 'vollständig neu aufgebaut' : 'Platzhalter entfernt';
console.log(` 🗑️ Lektion ${lesson.lessonNumber}: "${lesson.title}" - ${deleted} Übungen entfernt (${reason})`);
console.log(` 🗑️ Lektion ${lesson.lessonNumber}: "${lesson.title}" - ${deleted} Übungen entfernt (vollständig neu aufgebaut)`);
}
// Erstelle Übungen