feat(bisaya-course): enhance phase 4 didactics with new learning goals and speaking prompts
All checks were successful
Deploy to production / deploy (push) Successful in 1m31s

- Expanded the BISAYA_PHASE4_DIDACTICS by adding new learning goals, core patterns, speaking prompts, and practical tasks to improve language acquisition.
- Updated the course content generation scripts to incorporate the new lesson structures and ensure alignment with the latest didactic updates.
- Enhanced the logic for generating exercises based on lesson types, introducing additional situational and speaking exercises for advanced lessons.
This commit is contained in:
Torsten Schulz (local)
2026-04-17 15:12:21 +02:00
parent 4df8f97a41
commit 4205639de3
10 changed files with 599 additions and 69 deletions

View File

@@ -63,3 +63,43 @@ export function getGermanForBisayaLessonPedagogy(lessonNumber, lessonType, lesso
isIntensiveReview: lessonType === 'review'
};
}
export function getGermanForBisayaProgressTargets(lessonData, pedagogy) {
const baseMinutes = Number(lessonData?.targetMin || 18);
const baseScore = Number(lessonData?.targetScore || 80);
const lessonNumber = Number(lessonData?.num || 1);
const lessonType = String(lessonData?.type || '');
const didacticMode = String(pedagogy?.didacticMode || '');
const isCheckpoint = String(lessonData?.title || '').toLowerCase().includes('checkpoint');
// Spuerbar steilere Progression: spaetere Wochen bekommen mehr Produktionszeit
// und hoehere Zielwerte, ohne den Einstieg zu ueberfrachten.
let minutesBump = 0;
if (lessonNumber >= 61 && lessonNumber <= 90) minutesBump += 2;
if (lessonNumber >= 91 && lessonNumber <= 120) minutesBump += 4;
if (lessonNumber >= 121) minutesBump += 6;
if (lessonType === 'conversation' && lessonNumber >= 91) minutesBump += 2;
if (lessonType === 'review') minutesBump += 3;
if (isCheckpoint) minutesBump += 2;
let scoreBump = 0;
if (lessonNumber >= 61 && lessonNumber <= 90) scoreBump += 2;
if (lessonNumber >= 91 && lessonNumber <= 120) scoreBump += 4;
if (lessonNumber >= 121) scoreBump += 6;
if (lessonType === 'grammar') scoreBump += 2;
if (lessonType === 'review') scoreBump += 2;
if (didacticMode === 'contrast_training') scoreBump += 1;
if (isCheckpoint) scoreBump += 3;
const targetMinutes = Math.min(45, baseMinutes + minutesBump);
const targetScorePercent = lessonType === 'culture'
? 0
: Math.min(96, baseScore + scoreBump);
return {
targetMinutes,
targetScorePercent
};
}