diff --git a/backend/scripts/bisaya-course-phase2-pedagogy.js b/backend/scripts/bisaya-course-phase2-pedagogy.js index 918d4d7..9fcdeb2 100644 --- a/backend/scripts/bisaya-course-phase2-pedagogy.js +++ b/backend/scripts/bisaya-course-phase2-pedagogy.js @@ -17,139 +17,142 @@ export const BISAYA_LESSON_PEDAGOGY = { 16: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 35, isIntensiveReview: false }, 17: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 35, isIntensiveReview: false }, 18: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'core_input', difficultyWeight: 4, newUnitTarget: 7, reviewWeight: 35, isIntensiveReview: false }, - 19: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, - 20: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: false }, - 21: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 35, isIntensiveReview: false }, - 22: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 7, reviewWeight: 35, isIntensiveReview: false }, - 23: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 40, isIntensiveReview: false }, - 24: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'core_input', difficultyWeight: 4, newUnitTarget: 6, reviewWeight: 40, isIntensiveReview: false }, - 25: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 45, isIntensiveReview: false }, - 26: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 45, isIntensiveReview: false }, - 27: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 40, isIntensiveReview: false }, - 28: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 40, isIntensiveReview: false }, - 29: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 94, isIntensiveReview: true }, - 30: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, - 31: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 55, isIntensiveReview: false }, - 32: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 33: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 60, isIntensiveReview: false }, - 34: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 35: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 65, isIntensiveReview: false }, - 36: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, - 37: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 70, isIntensiveReview: false }, - 38: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, - 39: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, - 40: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 2, newUnitTarget: 2, reviewWeight: 50, isIntensiveReview: false }, - 41: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 40, isIntensiveReview: false }, - 42: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 40, isIntensiveReview: false }, - 43: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 45, isIntensiveReview: false }, - 44: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 45, isIntensiveReview: false }, - 45: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 46: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 90, isIntensiveReview: true }, - 47: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 45, isIntensiveReview: false }, - 48: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 45, isIntensiveReview: false }, - 49: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, - 50: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, - 51: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, - 52: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, - 53: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, - 54: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 55, isIntensiveReview: false }, - 55: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 65, isIntensiveReview: false }, - 56: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, - 57: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 70, isIntensiveReview: false }, - 58: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, - 59: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, - 60: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'real_life_scenario', difficultyWeight: 2, newUnitTarget: 2, reviewWeight: 60, isIntensiveReview: false }, - 61: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 45, isIntensiveReview: false }, - 62: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 45, isIntensiveReview: false }, - 63: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 50, isIntensiveReview: false }, - 64: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, - 65: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 66: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, + 19: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'core_input', difficultyWeight: 4, newUnitTarget: 8, reviewWeight: 36, isIntensiveReview: false }, + 20: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'core_input', difficultyWeight: 4, newUnitTarget: 7, reviewWeight: 36, isIntensiveReview: false }, + 21: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'core_input', difficultyWeight: 4, newUnitTarget: 6, reviewWeight: 36, isIntensiveReview: false }, + 22: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, + 23: { phaseLabel: 'quickstart', blockNumber: 2, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: false }, + 24: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 35, isIntensiveReview: false }, + 25: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 7, reviewWeight: 35, isIntensiveReview: false }, + 26: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 40, isIntensiveReview: false }, + 27: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'core_input', difficultyWeight: 4, newUnitTarget: 6, reviewWeight: 40, isIntensiveReview: false }, + 28: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 45, isIntensiveReview: false }, + 29: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 45, isIntensiveReview: false }, + 30: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 40, isIntensiveReview: false }, + 31: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 40, isIntensiveReview: false }, + 32: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 94, isIntensiveReview: true }, + 33: { phaseLabel: 'daily_life', blockNumber: 3, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, + 34: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 55, isIntensiveReview: false }, + 35: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 36: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 60, isIntensiveReview: false }, + 37: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 38: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 65, isIntensiveReview: false }, + 39: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, + 40: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 70, isIntensiveReview: false }, + 41: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, + 42: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, + 43: { phaseLabel: 'stabilization', blockNumber: 4, didacticMode: 'real_life_scenario', difficultyWeight: 2, newUnitTarget: 2, reviewWeight: 50, isIntensiveReview: false }, + 44: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 40, isIntensiveReview: false }, + 45: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 40, isIntensiveReview: false }, + 46: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 45, isIntensiveReview: false }, + 47: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 45, isIntensiveReview: false }, + 48: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 49: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 90, isIntensiveReview: true }, + 50: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 45, isIntensiveReview: false }, + 51: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 45, isIntensiveReview: false }, + 52: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, + 53: { phaseLabel: 'daily_life', blockNumber: 5, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, + 54: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, + 55: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, + 56: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, + 57: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 55, isIntensiveReview: false }, + 58: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 65, isIntensiveReview: false }, + 59: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, + 60: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 70, isIntensiveReview: false }, + 61: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, + 62: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, + 63: { phaseLabel: 'stabilization', blockNumber: 6, didacticMode: 'real_life_scenario', difficultyWeight: 2, newUnitTarget: 2, reviewWeight: 60, isIntensiveReview: false }, + 64: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 45, isIntensiveReview: false }, + 65: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 45, isIntensiveReview: false }, + 66: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 50, isIntensiveReview: false }, 67: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, - 68: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, - 69: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, - 70: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, - 71: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, - 72: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, - 73: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 55, isIntensiveReview: false }, - 74: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, - 75: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 76: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, - 77: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, - 78: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 55, isIntensiveReview: false }, - 79: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, - 80: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, - 81: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, - 82: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, - 83: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 55, isIntensiveReview: false }, - 84: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, - 85: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 86: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, + 68: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 69: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, + 70: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, + 71: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, + 72: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, + 73: { phaseLabel: 'daily_life', blockNumber: 7, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, + 74: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, + 75: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, + 76: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 55, isIntensiveReview: false }, + 77: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, + 78: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 79: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, + 80: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, + 81: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 55, isIntensiveReview: false }, + 82: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, + 83: { phaseLabel: 'daily_life', blockNumber: 8, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, + 84: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, + 85: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, + 86: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 55, isIntensiveReview: false }, 87: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, - 88: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 55, isIntensiveReview: false }, - 89: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, - 90: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, - 91: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, - 92: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, - 93: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 55, isIntensiveReview: false }, - 94: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, - 95: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 96: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, - 97: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, - 98: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 55, isIntensiveReview: false }, - 99: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, - 100: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, - 101: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 60, isIntensiveReview: false }, - 102: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 60, isIntensiveReview: false }, - 103: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 65, isIntensiveReview: false }, - 104: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 65, isIntensiveReview: false }, - 105: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: true }, - 106: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 94, isIntensiveReview: true }, + 88: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 89: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, + 90: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, + 91: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 55, isIntensiveReview: false }, + 92: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, + 93: { phaseLabel: 'daily_life', blockNumber: 9, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, + 94: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 50, isIntensiveReview: false }, + 95: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 50, isIntensiveReview: false }, + 96: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 55, isIntensiveReview: false }, + 97: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'guided_dialogue', difficultyWeight: 3, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, + 98: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 99: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'intensive_review', difficultyWeight: 3, newUnitTarget: 0, reviewWeight: 92, isIntensiveReview: true }, + 100: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 55, isIntensiveReview: false }, + 101: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 55, isIntensiveReview: false }, + 102: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, + 103: { phaseLabel: 'daily_life', blockNumber: 10, didacticMode: 'checkpoint', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: false }, + 104: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 60, isIntensiveReview: false }, + 105: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 60, isIntensiveReview: false }, + 106: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'pattern_drill', difficultyWeight: 4, newUnitTarget: 4, reviewWeight: 65, isIntensiveReview: false }, 107: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 65, isIntensiveReview: false }, - 108: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 65, isIntensiveReview: false }, - 109: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, - 110: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, - 111: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 70, isIntensiveReview: false }, - 112: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 113: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 72, isIntensiveReview: false }, - 114: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'pattern_drill', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 80, isIntensiveReview: false }, - 115: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, - 116: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, - 117: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 75, isIntensiveReview: false }, - 118: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, - 119: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, - 120: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'real_life_scenario', difficultyWeight: 2, newUnitTarget: 2, reviewWeight: 65, isIntensiveReview: false }, - 121: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 72, isIntensiveReview: false }, - 122: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 94, isIntensiveReview: true }, - 123: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'pattern_drill', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 82, isIntensiveReview: false }, - 124: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 74, isIntensiveReview: false }, - 125: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, - 126: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 127: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 75, isIntensiveReview: false }, - 128: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 129: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, - 130: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, - 131: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 74, isIntensiveReview: false }, - 132: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 94, isIntensiveReview: true }, - 133: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'pattern_drill', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 84, isIntensiveReview: false }, - 134: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 76, isIntensiveReview: false }, - 135: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, - 136: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 137: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 78, isIntensiveReview: false }, - 138: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, - 139: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, - 140: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, - 141: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, - 142: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, - 143: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'pattern_drill', difficultyWeight: 5, newUnitTarget: 1, reviewWeight: 88, isIntensiveReview: false }, - 144: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 80, isIntensiveReview: false }, - 145: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: true }, - 146: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: true }, - 147: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 82, isIntensiveReview: false }, - 148: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, - 149: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, - 150: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'real_life_scenario', difficultyWeight: 2, newUnitTarget: 1, reviewWeight: 70, isIntensiveReview: false }, - 151: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 10, reviewWeight: 76, isIntensiveReview: false } + 108: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 97, isIntensiveReview: true }, + 109: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 94, isIntensiveReview: true }, + 110: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'guided_dialogue', difficultyWeight: 4, newUnitTarget: 5, reviewWeight: 65, isIntensiveReview: false }, + 111: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 6, reviewWeight: 65, isIntensiveReview: false }, + 112: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, + 113: { phaseLabel: 'stabilization', blockNumber: 11, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, + 114: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 70, isIntensiveReview: false }, + 115: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 116: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 72, isIntensiveReview: false }, + 117: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'pattern_drill', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 80, isIntensiveReview: false }, + 118: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, + 119: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 96, isIntensiveReview: true }, + 120: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 75, isIntensiveReview: false }, + 121: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, + 122: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, + 123: { phaseLabel: 'stabilization', blockNumber: 12, didacticMode: 'real_life_scenario', difficultyWeight: 2, newUnitTarget: 2, reviewWeight: 65, isIntensiveReview: false }, + 124: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 72, isIntensiveReview: false }, + 125: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 94, isIntensiveReview: true }, + 126: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'pattern_drill', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 82, isIntensiveReview: false }, + 127: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 74, isIntensiveReview: false }, + 128: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, + 129: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 130: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 75, isIntensiveReview: false }, + 131: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 132: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, + 133: { phaseLabel: 'stabilization', blockNumber: 13, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, + 134: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 74, isIntensiveReview: false }, + 135: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 94, isIntensiveReview: true }, + 136: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'pattern_drill', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 84, isIntensiveReview: false }, + 137: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 76, isIntensiveReview: false }, + 138: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 98, isIntensiveReview: true }, + 139: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 140: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 3, reviewWeight: 78, isIntensiveReview: false }, + 141: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 4, newUnitTarget: 0, reviewWeight: 95, isIntensiveReview: true }, + 142: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, + 143: { phaseLabel: 'stabilization', blockNumber: 14, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: false }, + 144: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, + 145: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 99, isIntensiveReview: true }, + 146: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'pattern_drill', difficultyWeight: 5, newUnitTarget: 1, reviewWeight: 88, isIntensiveReview: false }, + 147: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 80, isIntensiveReview: false }, + 148: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: true }, + 149: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'intensive_review', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: true }, + 150: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'real_life_scenario', difficultyWeight: 5, newUnitTarget: 2, reviewWeight: 82, isIntensiveReview: false }, + 151: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, + 152: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'checkpoint', difficultyWeight: 5, newUnitTarget: 0, reviewWeight: 100, isIntensiveReview: false }, + 153: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'real_life_scenario', difficultyWeight: 2, newUnitTarget: 1, reviewWeight: 70, isIntensiveReview: false }, + 154: { phaseLabel: 'stabilization', blockNumber: 15, didacticMode: 'core_input', difficultyWeight: 3, newUnitTarget: 10, reviewWeight: 76, isIntensiveReview: false } }; export function getBisayaLessonPedagogy(lessonNumber) { diff --git a/backend/scripts/bisaya-course-phase3-extension.js b/backend/scripts/bisaya-course-phase3-extension.js index 8a8003b..697ff7a 100644 --- a/backend/scripts/bisaya-course-phase3-extension.js +++ b/backend/scripts/bisaya-course-phase3-extension.js @@ -231,24 +231,24 @@ export const BISAYA_PHASE3_DIDACTICS = { }; export const BISAYA_PHASE3_LESSONS = [ - { week: 5, day: 1, num: 41, type: 'conversation', title: 'Besuch & Gastfreundschaft', desc: 'Besuch empfangen, hereinbitten und freundlich reagieren', targetMin: 18, targetScore: 80, review: false, cultural: 'Gastfreundschaft ist im philippinischen Familienalltag zentral.' }, - { week: 5, day: 1, num: 42, type: 'vocab', title: 'Besuch & Haushalt', desc: 'Wichtige Wörter für Besuch, Haus und gemeinsame Zeit', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 5, day: 2, num: 43, type: 'grammar', title: 'Fragen im Alltag vertiefen', desc: 'Rückfragen, Folgefragen und höfliches Nachhaken', targetMin: 22, targetScore: 78, review: true, cultural: null }, - { week: 5, day: 2, num: 44, type: 'conversation', title: 'Termine & Verabredungen', desc: 'Treffen planen und Uhrzeiten absprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 5, day: 3, num: 45, type: 'review', title: 'Woche 5 - Intensivwiederholung I', desc: 'Erste große Wiederholung zu Besuch, Alltag und Fürsorge', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 5, day: 3, num: 46, type: 'vocab', title: 'Spiralwiederholung - Familie & Fürsorge', desc: 'Alte Kernmuster gezielt wiederholen und festigen', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 5, day: 4, num: 47, type: 'conversation', title: 'Gesundheit im Alltag', desc: 'Nach Beschwerden fragen und Hilfe anbieten', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 5, day: 4, num: 48, type: 'vocab', title: 'Medikamente & Beschwerden', desc: 'Schmerz, Medizin und Fürsorgewortschatz', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 5, day: 5, num: 49, type: 'review', title: 'Woche 5 - Intensivwiederholung II', desc: 'Große Mischwiederholung mit Fokus auf Abruf und Tempo', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 5, day: 5, num: 50, type: 'vocab', title: 'Woche 5 - Checkpoint', desc: 'Checkpoint zu den Inhalten von Woche 5', targetMin: 16, targetScore: 82, review: true, cultural: null }, - { week: 6, day: 1, num: 51, type: 'conversation', title: 'Unterwegs & Transport', desc: 'Nach Weg, Fahrt, Preis und Ziel fragen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 6, day: 1, num: 52, type: 'vocab', title: 'Wege & Verkehr', desc: 'Verkehrs- und Bewegungswortschatz für den Alltag', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 6, day: 2, num: 53, type: 'conversation', title: 'Arbeit & Aufgaben', desc: 'Über Pflichten, Arbeit und Erledigungen sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 6, day: 2, num: 54, type: 'vocab', title: 'Tätigkeiten & Organisation', desc: 'Verben und Wörter für Aufgaben, Listen und Hilfe', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 6, day: 3, num: 55, type: 'conversation', title: 'Freies Gespräch - Familie & Alltag', desc: 'Freier sprechen über Familie, Zuhause und Tagesablauf', targetMin: 22, targetScore: 78, review: false, cultural: null }, - { week: 6, day: 3, num: 56, type: 'review', title: 'Spiralwiederholung - Wochen 1 bis 4', desc: 'Frühere Inhalte blockübergreifend wiederholen', targetMin: 28, targetScore: 82, review: false, cultural: null }, - { week: 6, day: 4, num: 57, type: 'conversation', title: 'Konflikte & Missverständnisse', desc: 'Höflich um Wiederholung bitten und Missverständnisse klären', targetMin: 20, targetScore: 80, review: false, cultural: 'Ruhiger, indirekter Umgang hilft in heiklen Gesprächen.' }, - { week: 6, day: 4, num: 58, type: 'vocab', title: 'Abschlusstest - Schnellstart', desc: 'Finaler Wortschatztest über den 6-Wochen-Schnellstart', targetMin: 18, targetScore: 82, review: true, cultural: null }, - { week: 6, day: 5, num: 59, type: 'review', title: 'Abschlussprüfung - Schnellstart', desc: 'Große Abschlussprüfung mit gemischten Inhalten', targetMin: 30, targetScore: 82, review: false, cultural: 'Die Abschlussphase prüft vor allem sichere Alltagsfähigkeit.' }, - { week: 6, day: 5, num: 60, type: 'culture', title: 'Kulturelle Vertiefung im Familienalltag', desc: 'Vertiefe wichtige kulturelle Muster für Sprache und Familienalltag', targetMin: 16, targetScore: 0, review: false, cultural: 'Sprache, Respekt und Familienrollen sind eng miteinander verbunden.' } + { week: 5, day: 1, num: 44, type: 'conversation', title: 'Besuch & Gastfreundschaft', desc: 'Besuch empfangen, hereinbitten und freundlich reagieren', targetMin: 18, targetScore: 80, review: false, cultural: 'Gastfreundschaft ist im philippinischen Familienalltag zentral.' }, + { week: 5, day: 1, num: 45, type: 'vocab', title: 'Besuch & Haushalt', desc: 'Wichtige Wörter für Besuch, Haus und gemeinsame Zeit', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 5, day: 2, num: 46, type: 'grammar', title: 'Fragen im Alltag vertiefen', desc: 'Rückfragen, Folgefragen und höfliches Nachhaken', targetMin: 22, targetScore: 78, review: true, cultural: null }, + { week: 5, day: 2, num: 47, type: 'conversation', title: 'Termine & Verabredungen', desc: 'Treffen planen und Uhrzeiten absprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 5, day: 3, num: 48, type: 'review', title: 'Woche 5 - Intensivwiederholung I', desc: 'Erste große Wiederholung zu Besuch, Alltag und Fürsorge', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 5, day: 3, num: 49, type: 'vocab', title: 'Spiralwiederholung - Familie & Fürsorge', desc: 'Alte Kernmuster gezielt wiederholen und festigen', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 5, day: 4, num: 50, type: 'conversation', title: 'Gesundheit im Alltag', desc: 'Nach Beschwerden fragen und Hilfe anbieten', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 5, day: 4, num: 51, type: 'vocab', title: 'Medikamente & Beschwerden', desc: 'Schmerz, Medizin und Fürsorgewortschatz', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 5, day: 5, num: 52, type: 'review', title: 'Woche 5 - Intensivwiederholung II', desc: 'Große Mischwiederholung mit Fokus auf Abruf und Tempo', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 5, day: 5, num: 53, type: 'vocab', title: 'Woche 5 - Checkpoint', desc: 'Checkpoint zu den Inhalten von Woche 5', targetMin: 16, targetScore: 82, review: true, cultural: null }, + { week: 6, day: 1, num: 54, type: 'conversation', title: 'Unterwegs & Transport', desc: 'Nach Weg, Fahrt, Preis und Ziel fragen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 6, day: 1, num: 55, type: 'vocab', title: 'Wege & Verkehr', desc: 'Verkehrs- und Bewegungswortschatz für den Alltag', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 6, day: 2, num: 56, type: 'conversation', title: 'Arbeit & Aufgaben', desc: 'Über Pflichten, Arbeit und Erledigungen sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 6, day: 2, num: 57, type: 'vocab', title: 'Tätigkeiten & Organisation', desc: 'Verben und Wörter für Aufgaben, Listen und Hilfe', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 6, day: 3, num: 58, type: 'conversation', title: 'Freies Gespräch - Familie & Alltag', desc: 'Freier sprechen über Familie, Zuhause und Tagesablauf', targetMin: 22, targetScore: 78, review: false, cultural: null }, + { week: 6, day: 3, num: 59, type: 'review', title: 'Spiralwiederholung - Wochen 1 bis 4', desc: 'Frühere Inhalte blockübergreifend wiederholen', targetMin: 28, targetScore: 82, review: false, cultural: null }, + { week: 6, day: 4, num: 60, type: 'conversation', title: 'Konflikte & Missverständnisse', desc: 'Höflich um Wiederholung bitten und Missverständnisse klären', targetMin: 20, targetScore: 80, review: false, cultural: 'Ruhiger, indirekter Umgang hilft in heiklen Gesprächen.' }, + { week: 6, day: 4, num: 61, type: 'vocab', title: 'Abschlusstest - Schnellstart', desc: 'Finaler Wortschatztest über den 6-Wochen-Schnellstart', targetMin: 18, targetScore: 82, review: true, cultural: null }, + { week: 6, day: 5, num: 62, type: 'review', title: 'Abschlussprüfung - Schnellstart', desc: 'Große Abschlussprüfung mit gemischten Inhalten', targetMin: 30, targetScore: 82, review: false, cultural: 'Die Abschlussphase prüft vor allem sichere Alltagsfähigkeit.' }, + { week: 6, day: 5, num: 63, type: 'culture', title: 'Kulturelle Vertiefung im Familienalltag', desc: 'Vertiefe wichtige kulturelle Muster für Sprache und Familienalltag', targetMin: 16, targetScore: 0, review: false, cultural: 'Sprache, Respekt und Familienrollen sind eng miteinander verbunden.' } ]; diff --git a/backend/scripts/bisaya-course-phase4-extension.js b/backend/scripts/bisaya-course-phase4-extension.js index a16d921..b263c0b 100644 --- a/backend/scripts/bisaya-course-phase4-extension.js +++ b/backend/scripts/bisaya-course-phase4-extension.js @@ -531,64 +531,64 @@ export const BISAYA_PHASE4_DIDACTICS = { }; export const BISAYA_PHASE4_LESSONS = [ - { week: 7, day: 1, num: 61, type: 'conversation', title: 'Kinder im Alltag', desc: 'Mit Kindern sprechen und Fürsorge im Alltag ausdrücken', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 7, day: 1, num: 62, type: 'vocab', title: 'Schule & Betreuung', desc: 'Wortschatz für Schule, Tasche, Unterricht und Betreuung', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 7, day: 2, num: 63, type: 'grammar', title: 'Fragen an Kinder vereinfachen', desc: 'Kurze, klare Fragen für Kinder und Betreuungssituationen', targetMin: 20, targetScore: 78, review: true, cultural: null }, - { week: 7, day: 2, num: 64, type: 'conversation', title: 'Hausaufgaben & Routine', desc: 'Über Schule, Lernen und Routinen zuhause sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 7, day: 3, num: 65, type: 'review', title: 'Woche 7 - Intensivwiederholung I', desc: 'Kinder, Schule und Familienroutine intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 7, day: 3, num: 66, type: 'vocab', title: 'Spiralwiederholung - Familie, Kinder & Fürsorge', desc: 'Frühe Kernmuster mit Kinderalltag verbinden', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 7, day: 4, num: 67, type: 'conversation', title: 'Spielen & Freizeit', desc: 'Mit Kindern über Spiel, Pause und Freizeit sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 7, day: 4, num: 68, type: 'vocab', title: 'Spielsachen & Aktivitäten', desc: 'Spiel- und Freizeitwortschatz für Familienalltag', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 7, day: 5, num: 69, type: 'review', title: 'Woche 7 - Intensivwiederholung II', desc: 'Große Mischwiederholung zur Kinder- und Schulwoche', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 7, day: 5, num: 70, type: 'vocab', title: 'Woche 7 - Checkpoint', desc: 'Checkpoint zu Familie, Kindern und Schule', targetMin: 16, targetScore: 82, review: true, cultural: null }, - { week: 8, day: 1, num: 71, type: 'conversation', title: 'Arzt & Termin', desc: 'Arzttermine vereinbaren und Gesundheitsfragen stellen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 8, day: 1, num: 72, type: 'vocab', title: 'Apotheke & Medikamente', desc: 'Wichtiger Wortschatz für Apotheke und Medizin', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 8, day: 2, num: 73, type: 'grammar', title: 'Beschwerden genauer beschreiben', desc: 'Schmerz, Verlauf und Stärke konkreter ausdrücken', targetMin: 20, targetScore: 78, review: true, cultural: null }, - { week: 8, day: 2, num: 74, type: 'conversation', title: 'Notfälle & Hilfe', desc: 'In einfachen Notfällen Hilfe holen und reagieren', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 8, day: 3, num: 75, type: 'review', title: 'Woche 8 - Intensivwiederholung I', desc: 'Gesundheit, Arzt und Hilfe intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 8, day: 3, num: 76, type: 'vocab', title: 'Spiralwiederholung - Gesundheit', desc: 'Frühere Fürsorge mit Gesundheit und Pflege verbinden', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 8, day: 4, num: 77, type: 'conversation', title: 'Essen, Ruhe & Genesung', desc: 'Pflege, Ruhe und Essen bei Krankheit besprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 8, day: 4, num: 78, type: 'vocab', title: 'Körper, Symptome & Pflege', desc: 'Körper- und Pflegewortschatz ausbauen', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 8, day: 5, num: 79, type: 'review', title: 'Woche 8 - Intensivwiederholung II', desc: 'Große Mischwiederholung zu Gesundheit und Hilfe', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 8, day: 5, num: 80, type: 'vocab', title: 'Woche 8 - Checkpoint', desc: 'Checkpoint zu Arzt, Apotheke und Pflege', targetMin: 16, targetScore: 82, review: true, cultural: null }, - { week: 9, day: 1, num: 81, type: 'conversation', title: 'Einkaufen vertiefen', desc: 'Komplexere Einkaufs- und Auswahlgespräche führen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 9, day: 1, num: 82, type: 'vocab', title: 'Markt & Mengen', desc: 'Wortschatz für Markt, Mengen und Auswahl', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 9, day: 2, num: 83, type: 'grammar', title: 'Wünsche, Bedarf und Bitte', desc: 'Wunsch, Notwendigkeit und höfliche Bitte unterscheiden', targetMin: 20, targetScore: 78, review: true, cultural: null }, - { week: 9, day: 2, num: 84, type: 'conversation', title: 'Behördengänge & Formulare', desc: 'Nach Formularen, Schaltern und Terminen fragen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 9, day: 3, num: 85, type: 'review', title: 'Woche 9 - Intensivwiederholung I', desc: 'Einkaufen und Erledigungen intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 9, day: 3, num: 86, type: 'vocab', title: 'Spiralwiederholung - Preise & Erledigungen', desc: 'Preis- und Erledigungsmuster spiralig festigen', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 9, day: 4, num: 87, type: 'conversation', title: 'Bank, Geld & Bezahlen', desc: 'Über Bezahlen, Wechselgeld und Geldsituationen sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 9, day: 4, num: 88, type: 'vocab', title: 'Dokumente & Termine', desc: 'Papierkram, Termine und Dokumente benennen', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 9, day: 5, num: 89, type: 'review', title: 'Woche 9 - Intensivwiederholung II', desc: 'Große Mischwiederholung zu Geld, Formularen und Terminen', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 9, day: 5, num: 90, type: 'vocab', title: 'Woche 9 - Checkpoint', desc: 'Checkpoint zu Einkauf, Bezahlen und Erledigungen', targetMin: 16, targetScore: 82, review: true, cultural: null }, - { week: 10, day: 1, num: 91, type: 'conversation', title: 'Nachbarschaft & Besuche', desc: 'Mit Nachbarn sprechen und Besuche im Umfeld einordnen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 10, day: 1, num: 92, type: 'vocab', title: 'Hilfe & Unterstützung', desc: 'Wortschatz für Hilfe, Unterstützung und soziale Nähe', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 10, day: 2, num: 93, type: 'grammar', title: 'Höflich reagieren und ablehnen', desc: 'Einladungen, Hilfe und Vorschläge fein abstufen', targetMin: 20, targetScore: 78, review: true, cultural: null }, - { week: 10, day: 2, num: 94, type: 'conversation', title: 'Feste & Einladungen', desc: 'Über Feste, Besuche und Einladungen sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 10, day: 3, num: 95, type: 'review', title: 'Woche 10 - Intensivwiederholung I', desc: 'Soziale Situationen und Hilfe intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 10, day: 3, num: 96, type: 'vocab', title: 'Spiralwiederholung - Soziale Situationen', desc: 'Besuche, Hilfe und Reaktionen blockübergreifend festigen', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 10, day: 4, num: 97, type: 'conversation', title: 'Konflikte ruhig lösen', desc: 'Missverständnisse ansprechen und Spannungen abfedern', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 10, day: 4, num: 98, type: 'vocab', title: 'Gefühle im Gespräch vertiefen', desc: 'Emotionen in sozialen Gesprächen genauer ausdrücken', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 10, day: 5, num: 99, type: 'review', title: 'Woche 10 - Intensivwiederholung II', desc: 'Große Mischwiederholung zu sozialen Situationen und Emotionen', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 10, day: 5, num: 100, type: 'vocab', title: 'Woche 10 - Checkpoint', desc: 'Checkpoint zu Hilfe, Besuchen und Gefühlen', targetMin: 16, targetScore: 82, review: true, cultural: null }, - { week: 11, day: 1, num: 101, type: 'conversation', title: 'Zuhause organisieren', desc: 'Ordnung, Haushalt und kleine Aufgaben zuhause besprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 11, day: 1, num: 102, type: 'vocab', title: 'Haushalt & Reparaturen', desc: 'Wörter für Haushalt, Ordnung und kleine Reparaturen', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 11, day: 2, num: 103, type: 'grammar', title: 'Vergangenes und Pläne im Alltag', desc: 'Vergangenheit und kommende Schritte in Routinen verbinden', targetMin: 20, targetScore: 78, review: true, cultural: null }, - { week: 11, day: 2, num: 104, type: 'conversation', title: 'Arbeit, Schule und Termine verbinden', desc: 'Mehrere Alltagsbereiche in einer Erzählung kombinieren', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 11, day: 3, num: 105, type: 'review', title: 'Woche 11 - Intensivwiederholung I', desc: 'Haushalt, Planung und Alltagslogistik intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 11, day: 3, num: 106, type: 'vocab', title: 'Spiralwiederholung - Alltagsmodule', desc: 'Module 6 bis 10 zusammenziehen und wiederholen', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 11, day: 4, num: 107, type: 'conversation', title: 'Unterwegs im Familienalltag', desc: 'Familie, Wege und Termine im Alltag verbinden', targetMin: 18, targetScore: 80, review: false, cultural: null }, - { week: 11, day: 4, num: 108, type: 'vocab', title: 'Nachbarschaft & Orte', desc: 'Wichtige Orte und Nachbarschaftswortschatz vertiefen', targetMin: 18, targetScore: 85, review: true, cultural: null }, - { week: 11, day: 5, num: 109, type: 'review', title: 'Woche 11 - Intensivwiederholung II', desc: 'Große Mischwiederholung zu Organisation und Familienlogistik', targetMin: 28, targetScore: 80, review: false, cultural: null }, - { week: 11, day: 5, num: 110, type: 'vocab', title: 'Woche 11 - Checkpoint', desc: 'Checkpoint zu Organisation, Haushalt und Alltagslogistik', targetMin: 16, targetScore: 82, review: true, cultural: null }, - { week: 12, day: 1, num: 111, type: 'conversation', title: 'Freies Gespräch - Alltag I', desc: 'Längere Alltagsgespräche freier und stabiler führen', targetMin: 22, targetScore: 78, review: false, cultural: null }, - { week: 12, day: 1, num: 112, type: 'vocab', title: 'Mischtraining - Kernwortschatz', desc: 'Kernwortschatz aus allen Modulen gemischt trainieren', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 12, day: 2, num: 113, type: 'conversation', title: 'Freies Gespräch - Alltag II', desc: 'Freies Sprechen mit mehr eigener Produktion vertiefen', targetMin: 22, targetScore: 78, review: false, cultural: null }, - { week: 12, day: 2, num: 114, type: 'grammar', title: 'Wiederholung schwieriger Muster', desc: 'Zeit, Bitte und Reaktion kontrastiv wiederholen', targetMin: 20, targetScore: 78, review: true, cultural: null }, - { week: 12, day: 3, num: 115, type: 'review', title: 'Großes Alltagsreview I', desc: 'Große Wiederholung aller Alltagsmodule', targetMin: 30, targetScore: 82, review: false, cultural: null }, - { week: 12, day: 3, num: 116, type: 'vocab', title: 'Fehlerschwerpunkte Alltag', desc: 'Typische Fehlercluster gezielt wiederholen', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 12, day: 4, num: 117, type: 'conversation', title: 'Rollenspiele - echte Situationen', desc: 'Mehrere reale Alltagsszenen in Rollenspielen üben', targetMin: 24, targetScore: 78, review: false, cultural: null }, - { week: 12, day: 4, num: 118, type: 'vocab', title: 'Abschlusstest - Alltagspfad', desc: 'Finaler Wortschatztest über den 3-Monats-Alltagspfad', targetMin: 20, targetScore: 82, review: true, cultural: null }, - { week: 12, day: 5, num: 119, type: 'review', title: 'Abschlussprüfung - Alltagsphase', desc: 'Große Abschlussprüfung zum 3-Monats-Alltagspfad', targetMin: 30, targetScore: 82, review: false, cultural: null }, - { week: 12, day: 5, num: 120, type: 'culture', title: 'Kultur, Höflichkeit & Familienleben vertiefen', desc: 'Kulturelle Muster für Sprache und Familienalltag weiter vertiefen', targetMin: 16, targetScore: 0, review: false, cultural: 'Die Alltagsphase endet mit einem stärkeren kulturellen Verständnis für Höflichkeit, Familie und indirekte Kommunikation.' } + { week: 7, day: 1, num: 64, type: 'conversation', title: 'Kinder im Alltag', desc: 'Mit Kindern sprechen und Fürsorge im Alltag ausdrücken', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 7, day: 1, num: 65, type: 'vocab', title: 'Schule & Betreuung', desc: 'Wortschatz für Schule, Tasche, Unterricht und Betreuung', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 7, day: 2, num: 66, type: 'grammar', title: 'Fragen an Kinder vereinfachen', desc: 'Kurze, klare Fragen für Kinder und Betreuungssituationen', targetMin: 20, targetScore: 78, review: true, cultural: null }, + { week: 7, day: 2, num: 67, type: 'conversation', title: 'Hausaufgaben & Routine', desc: 'Über Schule, Lernen und Routinen zuhause sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 7, day: 3, num: 68, type: 'review', title: 'Woche 7 - Intensivwiederholung I', desc: 'Kinder, Schule und Familienroutine intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 7, day: 3, num: 69, type: 'vocab', title: 'Spiralwiederholung - Familie, Kinder & Fürsorge', desc: 'Frühe Kernmuster mit Kinderalltag verbinden', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 7, day: 4, num: 70, type: 'conversation', title: 'Spielen & Freizeit', desc: 'Mit Kindern über Spiel, Pause und Freizeit sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 7, day: 4, num: 71, type: 'vocab', title: 'Spielsachen & Aktivitäten', desc: 'Spiel- und Freizeitwortschatz für Familienalltag', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 7, day: 5, num: 72, type: 'review', title: 'Woche 7 - Intensivwiederholung II', desc: 'Große Mischwiederholung zur Kinder- und Schulwoche', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 7, day: 5, num: 73, type: 'vocab', title: 'Woche 7 - Checkpoint', desc: 'Checkpoint zu Familie, Kindern und Schule', targetMin: 16, targetScore: 82, review: true, cultural: null }, + { week: 8, day: 1, num: 74, type: 'conversation', title: 'Arzt & Termin', desc: 'Arzttermine vereinbaren und Gesundheitsfragen stellen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 8, day: 1, num: 75, type: 'vocab', title: 'Apotheke & Medikamente', desc: 'Wichtiger Wortschatz für Apotheke und Medizin', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 8, day: 2, num: 76, type: 'grammar', title: 'Beschwerden genauer beschreiben', desc: 'Schmerz, Verlauf und Stärke konkreter ausdrücken', targetMin: 20, targetScore: 78, review: true, cultural: null }, + { week: 8, day: 2, num: 77, type: 'conversation', title: 'Notfälle & Hilfe', desc: 'In einfachen Notfällen Hilfe holen und reagieren', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 8, day: 3, num: 78, type: 'review', title: 'Woche 8 - Intensivwiederholung I', desc: 'Gesundheit, Arzt und Hilfe intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 8, day: 3, num: 79, type: 'vocab', title: 'Spiralwiederholung - Gesundheit', desc: 'Frühere Fürsorge mit Gesundheit und Pflege verbinden', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 8, day: 4, num: 80, type: 'conversation', title: 'Essen, Ruhe & Genesung', desc: 'Pflege, Ruhe und Essen bei Krankheit besprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 8, day: 4, num: 81, type: 'vocab', title: 'Körper, Symptome & Pflege', desc: 'Körper- und Pflegewortschatz ausbauen', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 8, day: 5, num: 82, type: 'review', title: 'Woche 8 - Intensivwiederholung II', desc: 'Große Mischwiederholung zu Gesundheit und Hilfe', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 8, day: 5, num: 83, type: 'vocab', title: 'Woche 8 - Checkpoint', desc: 'Checkpoint zu Arzt, Apotheke und Pflege', targetMin: 16, targetScore: 82, review: true, cultural: null }, + { week: 9, day: 1, num: 84, type: 'conversation', title: 'Einkaufen vertiefen', desc: 'Komplexere Einkaufs- und Auswahlgespräche führen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 9, day: 1, num: 85, type: 'vocab', title: 'Markt & Mengen', desc: 'Wortschatz für Markt, Mengen und Auswahl', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 9, day: 2, num: 86, type: 'grammar', title: 'Wünsche, Bedarf und Bitte', desc: 'Wunsch, Notwendigkeit und höfliche Bitte unterscheiden', targetMin: 20, targetScore: 78, review: true, cultural: null }, + { week: 9, day: 2, num: 87, type: 'conversation', title: 'Behördengänge & Formulare', desc: 'Nach Formularen, Schaltern und Terminen fragen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 9, day: 3, num: 88, type: 'review', title: 'Woche 9 - Intensivwiederholung I', desc: 'Einkaufen und Erledigungen intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 9, day: 3, num: 89, type: 'vocab', title: 'Spiralwiederholung - Preise & Erledigungen', desc: 'Preis- und Erledigungsmuster spiralig festigen', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 9, day: 4, num: 90, type: 'conversation', title: 'Bank, Geld & Bezahlen', desc: 'Über Bezahlen, Wechselgeld und Geldsituationen sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 9, day: 4, num: 91, type: 'vocab', title: 'Dokumente & Termine', desc: 'Papierkram, Termine und Dokumente benennen', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 9, day: 5, num: 92, type: 'review', title: 'Woche 9 - Intensivwiederholung II', desc: 'Große Mischwiederholung zu Geld, Formularen und Terminen', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 9, day: 5, num: 93, type: 'vocab', title: 'Woche 9 - Checkpoint', desc: 'Checkpoint zu Einkauf, Bezahlen und Erledigungen', targetMin: 16, targetScore: 82, review: true, cultural: null }, + { week: 10, day: 1, num: 94, type: 'conversation', title: 'Nachbarschaft & Besuche', desc: 'Mit Nachbarn sprechen und Besuche im Umfeld einordnen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 10, day: 1, num: 95, type: 'vocab', title: 'Hilfe & Unterstützung', desc: 'Wortschatz für Hilfe, Unterstützung und soziale Nähe', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 10, day: 2, num: 96, type: 'grammar', title: 'Höflich reagieren und ablehnen', desc: 'Einladungen, Hilfe und Vorschläge fein abstufen', targetMin: 20, targetScore: 78, review: true, cultural: null }, + { week: 10, day: 2, num: 97, type: 'conversation', title: 'Feste & Einladungen', desc: 'Über Feste, Besuche und Einladungen sprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 10, day: 3, num: 98, type: 'review', title: 'Woche 10 - Intensivwiederholung I', desc: 'Soziale Situationen und Hilfe intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 10, day: 3, num: 99, type: 'vocab', title: 'Spiralwiederholung - Soziale Situationen', desc: 'Besuche, Hilfe und Reaktionen blockübergreifend festigen', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 10, day: 4, num: 100, type: 'conversation', title: 'Konflikte ruhig lösen', desc: 'Missverständnisse ansprechen und Spannungen abfedern', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 10, day: 4, num: 101, type: 'vocab', title: 'Gefühle im Gespräch vertiefen', desc: 'Emotionen in sozialen Gesprächen genauer ausdrücken', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 10, day: 5, num: 102, type: 'review', title: 'Woche 10 - Intensivwiederholung II', desc: 'Große Mischwiederholung zu sozialen Situationen und Emotionen', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 10, day: 5, num: 103, type: 'vocab', title: 'Woche 10 - Checkpoint', desc: 'Checkpoint zu Hilfe, Besuchen und Gefühlen', targetMin: 16, targetScore: 82, review: true, cultural: null }, + { week: 11, day: 1, num: 104, type: 'conversation', title: 'Zuhause organisieren', desc: 'Ordnung, Haushalt und kleine Aufgaben zuhause besprechen', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 11, day: 1, num: 105, type: 'vocab', title: 'Haushalt & Reparaturen', desc: 'Wörter für Haushalt, Ordnung und kleine Reparaturen', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 11, day: 2, num: 106, type: 'grammar', title: 'Vergangenes und Pläne im Alltag', desc: 'Vergangenheit und kommende Schritte in Routinen verbinden', targetMin: 20, targetScore: 78, review: true, cultural: null }, + { week: 11, day: 2, num: 107, type: 'conversation', title: 'Arbeit, Schule und Termine verbinden', desc: 'Mehrere Alltagsbereiche in einer Erzählung kombinieren', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 11, day: 3, num: 108, type: 'review', title: 'Woche 11 - Intensivwiederholung I', desc: 'Haushalt, Planung und Alltagslogistik intensiv wiederholen', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 11, day: 3, num: 109, type: 'vocab', title: 'Spiralwiederholung - Alltagsmodule', desc: 'Module 6 bis 10 zusammenziehen und wiederholen', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 11, day: 4, num: 110, type: 'conversation', title: 'Unterwegs im Familienalltag', desc: 'Familie, Wege und Termine im Alltag verbinden', targetMin: 18, targetScore: 80, review: false, cultural: null }, + { week: 11, day: 4, num: 111, type: 'vocab', title: 'Nachbarschaft & Orte', desc: 'Wichtige Orte und Nachbarschaftswortschatz vertiefen', targetMin: 18, targetScore: 85, review: true, cultural: null }, + { week: 11, day: 5, num: 112, type: 'review', title: 'Woche 11 - Intensivwiederholung II', desc: 'Große Mischwiederholung zu Organisation und Familienlogistik', targetMin: 28, targetScore: 80, review: false, cultural: null }, + { week: 11, day: 5, num: 113, type: 'vocab', title: 'Woche 11 - Checkpoint', desc: 'Checkpoint zu Organisation, Haushalt und Alltagslogistik', targetMin: 16, targetScore: 82, review: true, cultural: null }, + { week: 12, day: 1, num: 114, type: 'conversation', title: 'Freies Gespräch - Alltag I', desc: 'Längere Alltagsgespräche freier und stabiler führen', targetMin: 22, targetScore: 78, review: false, cultural: null }, + { week: 12, day: 1, num: 115, type: 'vocab', title: 'Mischtraining - Kernwortschatz', desc: 'Kernwortschatz aus allen Modulen gemischt trainieren', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 12, day: 2, num: 116, type: 'conversation', title: 'Freies Gespräch - Alltag II', desc: 'Freies Sprechen mit mehr eigener Produktion vertiefen', targetMin: 22, targetScore: 78, review: false, cultural: null }, + { week: 12, day: 2, num: 117, type: 'grammar', title: 'Wiederholung schwieriger Muster', desc: 'Zeit, Bitte und Reaktion kontrastiv wiederholen', targetMin: 20, targetScore: 78, review: true, cultural: null }, + { week: 12, day: 3, num: 118, type: 'review', title: 'Großes Alltagsreview I', desc: 'Große Wiederholung aller Alltagsmodule', targetMin: 30, targetScore: 82, review: false, cultural: null }, + { week: 12, day: 3, num: 119, type: 'vocab', title: 'Fehlerschwerpunkte Alltag', desc: 'Typische Fehlercluster gezielt wiederholen', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 12, day: 4, num: 120, type: 'conversation', title: 'Rollenspiele - echte Situationen', desc: 'Mehrere reale Alltagsszenen in Rollenspielen üben', targetMin: 24, targetScore: 78, review: false, cultural: null }, + { week: 12, day: 4, num: 121, type: 'vocab', title: 'Abschlusstest - Alltagspfad', desc: 'Finaler Wortschatztest über den 3-Monats-Alltagspfad', targetMin: 20, targetScore: 82, review: true, cultural: null }, + { week: 12, day: 5, num: 122, type: 'review', title: 'Abschlussprüfung - Alltagsphase', desc: 'Große Abschlussprüfung zum 3-Monats-Alltagspfad', targetMin: 30, targetScore: 82, review: false, cultural: null }, + { week: 12, day: 5, num: 123, type: 'culture', title: 'Kultur, Höflichkeit & Familienleben vertiefen', desc: 'Kulturelle Muster für Sprache und Familienalltag weiter vertiefen', targetMin: 16, targetScore: 0, review: false, cultural: 'Die Alltagsphase endet mit einem stärkeren kulturellen Verständnis für Höflichkeit, Familie und indirekte Kommunikation.' } ]; diff --git a/backend/scripts/bisaya-course-phase5-extension.js b/backend/scripts/bisaya-course-phase5-extension.js index 7183f81..9b2ace6 100644 --- a/backend/scripts/bisaya-course-phase5-extension.js +++ b/backend/scripts/bisaya-course-phase5-extension.js @@ -302,35 +302,35 @@ export const BISAYA_PHASE5_DIDACTICS = { }; export const BISAYA_PHASE5_LESSONS = [ - { week: 13, day: 1, num: 121, type: 'conversation', title: 'Dialogtag - Familie & Planung', desc: 'Längere Dialoge zu Familie, Planung und Fürsorge', targetMin: 22, targetScore: 78, review: false, cultural: null }, - { week: 13, day: 1, num: 122, type: 'vocab', title: 'Mischtraining - Familie, Gesundheit, Alltag', desc: 'Gemischter Wortschatz aus zentralen Alltagsfeldern', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 13, day: 2, num: 123, type: 'grammar', title: 'Fehlertraining - häufige Verwechslungen I', desc: 'Kontrasttraining für typische Zeit- und Reaktionsfehler', targetMin: 20, targetScore: 78, review: true, cultural: null }, - { week: 13, day: 2, num: 124, type: 'conversation', title: 'Rollenspiel - Schule, Arzt, Besuch', desc: 'Mehrere reale Situationen in Rollenspielen verbinden', targetMin: 22, targetScore: 78, review: false, cultural: null }, - { week: 13, day: 3, num: 125, type: 'review', title: 'Stabilisierungsblock 1 - Intensiv I', desc: 'Erste große Stabilisierungsschleife', targetMin: 30, targetScore: 82, review: false, cultural: null }, - { week: 13, day: 3, num: 126, type: 'vocab', title: 'Fehlerschwerpunkte - Familie & Fürsorge', desc: 'Gezieltes Fehlertraining zu Nähe und Fürsorge', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 13, day: 4, num: 127, type: 'conversation', title: 'Freies Erzählen - Mein Alltag', desc: 'Den eigenen Alltag freier und länger erzählen', targetMin: 24, targetScore: 78, review: false, cultural: null }, - { week: 13, day: 4, num: 128, type: 'vocab', title: 'Mischtraining - Reale Situationen I', desc: 'Gemischtes Training realer Alltagssituationen', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 13, day: 5, num: 129, type: 'review', title: 'Stabilisierungsblock 1 - Intensiv II', desc: 'Zweite verdichtete Wiederholung im ersten Stabilisierungsschritt', targetMin: 30, targetScore: 82, review: false, cultural: null }, - { week: 13, day: 5, num: 130, type: 'vocab', title: 'Stabilisierungsblock 1 - Checkpoint', desc: 'Checkpoint zum ersten Stabilisierungsschritt', targetMin: 18, targetScore: 84, review: true, cultural: null }, - { week: 14, day: 1, num: 131, type: 'conversation', title: 'Dialogtag - Organisation & Wege', desc: 'Planung, Wege und Termine in längeren Dialogen verbinden', targetMin: 22, targetScore: 78, review: false, cultural: null }, - { week: 14, day: 1, num: 132, type: 'vocab', title: 'Mischtraining - Gesundheit, Schule, Erledigungen', desc: 'Gemischter Wortschatz aus drei großen Themenblöcken', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 14, day: 2, num: 133, type: 'grammar', title: 'Fehlertraining - häufige Verwechslungen II', desc: 'Zweite Runde Kontrasttraining für schwierige Alltagsmuster', targetMin: 20, targetScore: 78, review: true, cultural: null }, - { week: 14, day: 2, num: 134, type: 'conversation', title: 'Rollenspiel - Konflikt und Hilfe', desc: 'Konflikt, Hilfe und Erklärung in Rollenspielen zusammenführen', targetMin: 22, targetScore: 78, review: false, cultural: null }, - { week: 14, day: 3, num: 135, type: 'review', title: 'Stabilisierungsblock 2 - Intensiv I', desc: 'Erste verdichtete Wiederholung im zweiten Stabilisierungsschritt', targetMin: 30, targetScore: 82, review: false, cultural: null }, - { week: 14, day: 3, num: 136, type: 'vocab', title: 'Fehlerschwerpunkte - Termine, Zeit, Reaktion', desc: 'Gezieltes Fehlertraining zu Zeit, Reaktion und Terminmustern', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 14, day: 4, num: 137, type: 'conversation', title: 'Freies Erzählen - Familie, Sorgen, Pläne', desc: 'Familie, Sorgen und Zukunftspläne frei verbinden', targetMin: 24, targetScore: 78, review: false, cultural: null }, - { week: 14, day: 4, num: 138, type: 'vocab', title: 'Mischtraining - Reale Situationen II', desc: 'Zweite große Mischrunde realer Alltagssituationen', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 14, day: 5, num: 139, type: 'review', title: 'Stabilisierungsblock 2 - Intensiv II', desc: 'Zweite verdichtete Wiederholung im zweiten Stabilisierungsschritt', targetMin: 30, targetScore: 82, review: false, cultural: null }, - { week: 14, day: 5, num: 140, type: 'vocab', title: 'Stabilisierungsblock 2 - Checkpoint', desc: 'Checkpoint zum zweiten Stabilisierungsschritt', targetMin: 18, targetScore: 84, review: true, cultural: null }, - { week: 15, day: 1, num: 141, type: 'review', title: 'Großes Mischreview I', desc: 'Große blockübergreifende Wiederholung des Gesamtpfads', targetMin: 30, targetScore: 82, review: false, cultural: null }, - { week: 15, day: 1, num: 142, type: 'vocab', title: 'Großes Mischreview II', desc: 'Zweite große Mischrunde mit höherer Dichte', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 15, day: 2, num: 143, type: 'grammar', title: 'Fehlertraining - letzte Schwächen', desc: 'Letzte typische Fehler vor dem Gesamtabschluss bearbeiten', targetMin: 20, targetScore: 78, review: true, cultural: null }, - { week: 15, day: 2, num: 144, type: 'conversation', title: 'Freies Sprechen - Alltag ohne Stütze', desc: 'Alltagsgespräche mit minimaler Hilfe frei führen', targetMin: 24, targetScore: 78, review: false, cultural: null }, - { week: 15, day: 3, num: 145, type: 'review', title: 'Langzeitreview - Intensiv I', desc: 'Frühe Inhalte gezielt gegen Vergessen absichern', targetMin: 30, targetScore: 82, review: false, cultural: null }, - { week: 15, day: 3, num: 146, type: 'vocab', title: 'Langzeitreview - Intensiv II', desc: 'Frühe und späte Inhalte gemeinsam reaktivieren', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 15, day: 4, num: 147, type: 'conversation', title: 'Rollenspiele - echte Situationen', desc: 'Mehrere reale Alltagsszenen in längeren Rollenspielen üben', targetMin: 24, targetScore: 78, review: false, cultural: null }, - { week: 15, day: 4, num: 148, type: 'vocab', title: 'Abschlusstest - Stabilisierung', desc: 'Finaler Test über den Stabilisierungspfad', targetMin: 20, targetScore: 84, review: true, cultural: null }, - { week: 15, day: 5, num: 149, type: 'review', title: 'Abschlussprüfung - Gesamtpfad', desc: 'Große Abschlussprüfung über den gesamten Bisaya-Pfad', targetMin: 32, targetScore: 84, review: false, cultural: null }, - { week: 15, day: 5, num: 150, type: 'culture', title: 'Kultur, Familie & Sprache langfristig', desc: 'Kultur, Familie und Höflichkeit langfristig einordnen', targetMin: 16, targetScore: 0, review: false, cultural: 'Die Stabilisierung endet mit einem bewussten Blick auf Sprache, Familie und kulturelle Langzeitmuster.' }, - { week: 16, day: 1, num: 151, type: 'vocab', title: 'Familie - Verwandte & Stieffamilie', desc: 'Onkel, Tante, Cousin/Cousine, Neffe, Nichte, Enkel/in, Stiefeltern & Stiefkinder', targetMin: 22, targetScore: 85, review: true, cultural: 'Tito/Tita sind alltagsüblich; Stieffamilie wird oft mit Ikaduha nga … oder anak sa … klar gesagt statt mit einem einzigen festen Wort.' } + { week: 13, day: 1, num: 124, type: 'conversation', title: 'Dialogtag - Familie & Planung', desc: 'Längere Dialoge zu Familie, Planung und Fürsorge', targetMin: 22, targetScore: 78, review: false, cultural: null }, + { week: 13, day: 1, num: 125, type: 'vocab', title: 'Mischtraining - Familie, Gesundheit, Alltag', desc: 'Gemischter Wortschatz aus zentralen Alltagsfeldern', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 13, day: 2, num: 126, type: 'grammar', title: 'Fehlertraining - häufige Verwechslungen I', desc: 'Kontrasttraining für typische Zeit- und Reaktionsfehler', targetMin: 20, targetScore: 78, review: true, cultural: null }, + { week: 13, day: 2, num: 127, type: 'conversation', title: 'Rollenspiel - Schule, Arzt, Besuch', desc: 'Mehrere reale Situationen in Rollenspielen verbinden', targetMin: 22, targetScore: 78, review: false, cultural: null }, + { week: 13, day: 3, num: 128, type: 'review', title: 'Stabilisierungsblock 1 - Intensiv I', desc: 'Erste große Stabilisierungsschleife', targetMin: 30, targetScore: 82, review: false, cultural: null }, + { week: 13, day: 3, num: 129, type: 'vocab', title: 'Fehlerschwerpunkte - Familie & Fürsorge', desc: 'Gezieltes Fehlertraining zu Nähe und Fürsorge', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 13, day: 4, num: 130, type: 'conversation', title: 'Freies Erzählen - Mein Alltag', desc: 'Den eigenen Alltag freier und länger erzählen', targetMin: 24, targetScore: 78, review: false, cultural: null }, + { week: 13, day: 4, num: 131, type: 'vocab', title: 'Mischtraining - Reale Situationen I', desc: 'Gemischtes Training realer Alltagssituationen', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 13, day: 5, num: 132, type: 'review', title: 'Stabilisierungsblock 1 - Intensiv II', desc: 'Zweite verdichtete Wiederholung im ersten Stabilisierungsschritt', targetMin: 30, targetScore: 82, review: false, cultural: null }, + { week: 13, day: 5, num: 133, type: 'vocab', title: 'Stabilisierungsblock 1 - Checkpoint', desc: 'Checkpoint zum ersten Stabilisierungsschritt', targetMin: 18, targetScore: 84, review: true, cultural: null }, + { week: 14, day: 1, num: 134, type: 'conversation', title: 'Dialogtag - Organisation & Wege', desc: 'Planung, Wege und Termine in längeren Dialogen verbinden', targetMin: 22, targetScore: 78, review: false, cultural: null }, + { week: 14, day: 1, num: 135, type: 'vocab', title: 'Mischtraining - Gesundheit, Schule, Erledigungen', desc: 'Gemischter Wortschatz aus drei großen Themenblöcken', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 14, day: 2, num: 136, type: 'grammar', title: 'Fehlertraining - häufige Verwechslungen II', desc: 'Zweite Runde Kontrasttraining für schwierige Alltagsmuster', targetMin: 20, targetScore: 78, review: true, cultural: null }, + { week: 14, day: 2, num: 137, type: 'conversation', title: 'Rollenspiel - Konflikt und Hilfe', desc: 'Konflikt, Hilfe und Erklärung in Rollenspielen zusammenführen', targetMin: 22, targetScore: 78, review: false, cultural: null }, + { week: 14, day: 3, num: 138, type: 'review', title: 'Stabilisierungsblock 2 - Intensiv I', desc: 'Erste verdichtete Wiederholung im zweiten Stabilisierungsschritt', targetMin: 30, targetScore: 82, review: false, cultural: null }, + { week: 14, day: 3, num: 139, type: 'vocab', title: 'Fehlerschwerpunkte - Termine, Zeit, Reaktion', desc: 'Gezieltes Fehlertraining zu Zeit, Reaktion und Terminmustern', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 14, day: 4, num: 140, type: 'conversation', title: 'Freies Erzählen - Familie, Sorgen, Pläne', desc: 'Familie, Sorgen und Zukunftspläne frei verbinden', targetMin: 24, targetScore: 78, review: false, cultural: null }, + { week: 14, day: 4, num: 141, type: 'vocab', title: 'Mischtraining - Reale Situationen II', desc: 'Zweite große Mischrunde realer Alltagssituationen', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 14, day: 5, num: 142, type: 'review', title: 'Stabilisierungsblock 2 - Intensiv II', desc: 'Zweite verdichtete Wiederholung im zweiten Stabilisierungsschritt', targetMin: 30, targetScore: 82, review: false, cultural: null }, + { week: 14, day: 5, num: 143, type: 'vocab', title: 'Stabilisierungsblock 2 - Checkpoint', desc: 'Checkpoint zum zweiten Stabilisierungsschritt', targetMin: 18, targetScore: 84, review: true, cultural: null }, + { week: 15, day: 1, num: 144, type: 'review', title: 'Großes Mischreview I', desc: 'Große blockübergreifende Wiederholung des Gesamtpfads', targetMin: 30, targetScore: 82, review: false, cultural: null }, + { week: 15, day: 1, num: 145, type: 'vocab', title: 'Großes Mischreview II', desc: 'Zweite große Mischrunde mit höherer Dichte', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 15, day: 2, num: 146, type: 'grammar', title: 'Fehlertraining - letzte Schwächen', desc: 'Letzte typische Fehler vor dem Gesamtabschluss bearbeiten', targetMin: 20, targetScore: 78, review: true, cultural: null }, + { week: 15, day: 2, num: 147, type: 'conversation', title: 'Freies Sprechen - Alltag ohne Stütze', desc: 'Alltagsgespräche mit minimaler Hilfe frei führen', targetMin: 24, targetScore: 78, review: false, cultural: null }, + { week: 15, day: 3, num: 148, type: 'review', title: 'Langzeitreview - Intensiv I', desc: 'Frühe Inhalte gezielt gegen Vergessen absichern', targetMin: 30, targetScore: 82, review: false, cultural: null }, + { week: 15, day: 3, num: 149, type: 'vocab', title: 'Langzeitreview - Intensiv II', desc: 'Frühe und späte Inhalte gemeinsam reaktivieren', targetMin: 20, targetScore: 85, review: true, cultural: null }, + { week: 15, day: 4, num: 150, type: 'conversation', title: 'Rollenspiele - echte Situationen', desc: 'Mehrere reale Alltagsszenen in längeren Rollenspielen üben', targetMin: 24, targetScore: 78, review: false, cultural: null }, + { week: 15, day: 4, num: 151, type: 'vocab', title: 'Abschlusstest - Stabilisierung', desc: 'Finaler Test über den Stabilisierungspfad', targetMin: 20, targetScore: 84, review: true, cultural: null }, + { week: 15, day: 5, num: 152, type: 'review', title: 'Abschlussprüfung - Gesamtpfad', desc: 'Große Abschlussprüfung über den gesamten Bisaya-Pfad', targetMin: 32, targetScore: 84, review: false, cultural: null }, + { week: 15, day: 5, num: 153, type: 'culture', title: 'Kultur, Familie & Sprache langfristig', desc: 'Kultur, Familie und Höflichkeit langfristig einordnen', targetMin: 16, targetScore: 0, review: false, cultural: 'Die Stabilisierung endet mit einem bewussten Blick auf Sprache, Familie und kulturelle Langzeitmuster.' }, + { week: 16, day: 1, num: 154, type: 'vocab', title: 'Familie - Verwandte & Stieffamilie', desc: 'Onkel, Tante, Cousin/Cousine, Neffe, Nichte, Enkel/in, Stiefeltern & Stiefkinder', targetMin: 22, targetScore: 85, review: true, cultural: 'Tito/Tita sind alltagsüblich; Stieffamilie wird oft mit Ikaduha nga … oder anak sa … klar gesagt statt mit einem einzigen festen Wort.' } ]; diff --git a/backend/scripts/create-bisaya-course-content.js b/backend/scripts/create-bisaya-course-content.js index 17110ee..4066fcc 100644 --- a/backend/scripts/create-bisaya-course-content.js +++ b/backend/scripts/create-bisaya-course-content.js @@ -2129,63 +2129,243 @@ const BISAYA_EXERCISES = { } ], - // Lektion 18: Zahlen & Preise - 'Zahlen & Preise': [ + // Lektion 18: Zahlen 1–20 + 'Zahlen 1–20': [ { - exerciseTypeId: 2, // multiple_choice - title: 'Zahlwort zuordnen', + exerciseTypeId: 2, + title: 'Grundzahl erkennen', instruction: 'Wähle die richtige Bedeutung.', questionData: { type: 'multiple_choice', - question: 'Was bedeutet "baynte"?', - options: ['zwanzig', 'zehn', 'dreißig', 'hundert'] + question: 'Was bedeutet "tulo"?', + options: ['drei', 'vier', 'fünf', 'zehn'] }, answerData: { type: 'multiple_choice', correctAnswer: 0 }, - explanation: '"baynte" = zwanzig.' + explanation: '"tulo" = drei.' }, { - exerciseTypeId: 1, // gap_fill - title: 'Zahlenreihe ergänzen', - instruction: 'Fülle die Zahlwörter ein.', + exerciseTypeId: 1, + title: 'Eins bis fünf', + instruction: 'Setze die Zahlwörter ein.', questionData: { type: 'gap_fill', - text: '{gap} (1) | {gap} (2) | {gap} (3) | {gap} (10) | {gap} (20)', + text: '{gap} (1) | {gap} (2) | {gap} (3) | {gap} (4) | {gap} (5)', gaps: 5 }, answerData: { type: 'gap_fill', - answers: ['Usa', 'Duha', 'Tulo', 'Napulo', 'Baynte'] + answers: ['Usa', 'Duha', 'Tulo', 'Upat', 'Lima'] }, - explanation: 'Die Grundzahlen sind für Preisgespräche zentral.' + explanation: 'Die Grundzahlen 1–5 sind die Basis für alles Weitere.' }, { - exerciseTypeId: 4, // transformation - title: 'Preis auf Bisaya', + exerciseTypeId: 4, + title: 'Zehn und zwanzig', instruction: 'Übersetze ins Bisaya.', questionData: { type: 'transformation', - text: 'Zwanzig Peso', + text: 'zehn', sourceLanguage: 'Deutsch', targetLanguage: 'Bisaya' }, answerData: { type: 'transformation', - correct: 'Baynte pesos', - alternatives: ['Baynte pesos.'] + correct: 'Napulo', + alternatives: ['napulo'] }, - explanation: 'Preisangaben werden meist als „Zahl + pesos“ gesprochen.' + explanation: '"Napulo" = zehn; „baynte“ = zwanzig.' }, { - exerciseTypeId: 2, // multiple_choice - title: 'Preisfrage auswählen', - instruction: 'Wähle die passende Frage aus.', + exerciseTypeId: 2, + title: 'Bis zwanzig', + instruction: 'Wähle die richtige Übersetzung.', questionData: { type: 'multiple_choice', - question: 'Wie fragst du nach einem Betrag in Peso?', - options: ['Pila ka pesos?', 'Asa ka pesos?', 'Unsa ka pesos?', 'Kinsa ka pesos?'] + question: 'Was bedeutet "baynte"?', + options: ['zwanzig', 'zehn', 'dreißig', 'zwölf'] }, answerData: { type: 'multiple_choice', correctAnswer: 0 }, - explanation: '"Pila ka pesos?" ist die direkte Frage nach der Menge bzw. dem Betrag.' + explanation: '"baynte" = zwanzig.' + } + ], + + // Lektion 19: Zahlen: Zehner + 'Zahlen: Zehner': [ + { + exerciseTypeId: 2, + title: 'Zehnerwort', + instruction: 'Wähle die passende deutsche Bedeutung.', + questionData: { + type: 'multiple_choice', + question: 'Was bedeutet "traysenta"?', + options: ['dreißig', 'dreizehn', 'dreihundert', 'dreitausend'] + }, + answerData: { type: 'multiple_choice', correctAnswer: 0 }, + explanation: '"traysenta" entspricht typischerweise „dreißig“ (regional leicht variierend).' + }, + { + exerciseTypeId: 1, + title: 'Runde Zehner', + instruction: 'Ergänze die Zehnerwörter.', + questionData: { + type: 'gap_fill', + text: '{gap} (20) | {gap} (30) | {gap} (40) | {gap} (50)', + gaps: 4 + }, + answerData: { + type: 'gap_fill', + answers: ['Baynte', 'Traysenta', 'Kwarenta', 'Singkwenta'] + }, + explanation: 'Zehner werden im Alltag oft mit spanisch geprägten Formen gebildet.' + }, + { + exerciseTypeId: 4, + title: 'Übersetzung Zehner', + instruction: 'Übersetze ins Bisaya.', + questionData: { + type: 'transformation', + text: 'fünfzig', + sourceLanguage: 'Deutsch', + targetLanguage: 'Bisaya' + }, + answerData: { + type: 'transformation', + correct: 'Singkwenta', + alternatives: ['singkwenta'] + }, + explanation: '"Singkwenta" = fünfzig.' + }, + { + exerciseTypeId: 2, + title: 'Zehner zuordnen', + instruction: 'Welches Wort passt zu 80?', + questionData: { + type: 'multiple_choice', + question: 'Wie heißt „achtzig“ typischerweise?', + options: ['Otsenta', 'Nobenta', 'Baynte', 'Napulo'] + }, + answerData: { type: 'multiple_choice', correctAnswer: 0 }, + explanation: '"Otsenta" = achtzig (regional auch „otsenta“); „nobenta“ = neunzig.' + } + ], + + // Lektion 20: Zahlen: Hunderter + 'Zahlen: Hunderter': [ + { + exerciseTypeId: 2, + title: 'Hunderter Grundform', + instruction: 'Wähle die richtige Bedeutung.', + questionData: { + type: 'multiple_choice', + question: 'Was bedeutet "usa ka gatos"?', + options: ['einhundert', 'eintausend', 'zehn', 'ein Million'] + }, + answerData: { type: 'multiple_choice', correctAnswer: 0 }, + explanation: '"Usa ka gatos" = einhundert (wörtlich „eins mal hundert“).' + }, + { + exerciseTypeId: 1, + title: '200 und 300', + instruction: 'Ergänze die Hunderter.', + questionData: { + type: 'gap_fill', + text: '{gap} (200) | {gap} (300)', + gaps: 2 + }, + answerData: { + type: 'gap_fill', + answers: ['Duha ka gatos', 'Tulo ka gatos'] + }, + explanation: 'Vor „ka gatos“ steht die Anzahl der Hunderter.' + }, + { + exerciseTypeId: 4, + title: 'Fünfhundert', + instruction: 'Übersetze ins Bisaya.', + questionData: { + type: 'transformation', + text: 'fünfhundert', + sourceLanguage: 'Deutsch', + targetLanguage: 'Bisaya' + }, + answerData: { + type: 'transformation', + correct: 'Lima ka gatos', + alternatives: ['lima ka gatos'] + }, + explanation: '"Lima ka gatos" = fünfhundert.' + }, + { + exerciseTypeId: 2, + title: 'Hunderter hören', + instruction: 'Welche deutsche Zahl passt?', + questionData: { + type: 'multiple_choice', + question: 'Was bedeutet "upat ka gatos"?', + options: ['vierhundert', 'vierzig', 'viertausend', 'vierzehn'] + }, + answerData: { type: 'multiple_choice', correctAnswer: 0 }, + explanation: '"Upat ka gatos" = vierhundert.' + } + ], + + // Lektion 21: Zahlen: Tausender + 'Zahlen: Tausender': [ + { + exerciseTypeId: 2, + title: 'Tausender Grundform', + instruction: 'Wähle die richtige Bedeutung.', + questionData: { + type: 'multiple_choice', + question: 'Was bedeutet "usa ka libo"?', + options: ['eintausend', 'einhundert', 'zehntausend', 'eine Million'] + }, + answerData: { type: 'multiple_choice', correctAnswer: 0 }, + explanation: '"Libo" steht für Tausend; „usa ka libo“ = eintausend.' + }, + { + exerciseTypeId: 1, + title: 'Zweitausend', + instruction: 'Ergänze.', + questionData: { + type: 'gap_fill', + text: '{gap} (2000)', + gaps: 1 + }, + answerData: { + type: 'gap_fill', + answers: ['Duha ka libo'] + }, + explanation: '"Duha ka libo" = zweitausend.' + }, + { + exerciseTypeId: 4, + title: 'Dreitausend', + instruction: 'Übersetze ins Bisaya.', + questionData: { + type: 'transformation', + text: 'dreitausend', + sourceLanguage: 'Deutsch', + targetLanguage: 'Bisaya' + }, + answerData: { + type: 'transformation', + correct: 'Tulo ka libo', + alternatives: ['tulo ka libo'] + }, + explanation: '"Tulo ka libo" = dreitausend.' + }, + { + exerciseTypeId: 2, + title: 'Großer Betrag', + instruction: 'Welche Option drückt „fünftausend“ aus?', + questionData: { + type: 'multiple_choice', + question: 'Was passt zu 5000?', + options: ['Lima ka libo', 'Lima ka gatos', 'Baynte ka libo', 'Napulo ka libo'] + }, + answerData: { type: 'multiple_choice', correctAnswer: 0 }, + explanation: '"Lima ka libo" = fünftausend.' } ], @@ -5074,7 +5254,10 @@ async function createBisayaCourseContent() { 'Zeitformen - Grundlagen', 'Zeit & Datum', 'Einkaufen & Preise', - 'Zahlen & Preise', + 'Zahlen 1–20', + 'Zahlen: Zehner', + 'Zahlen: Hunderter', + 'Zahlen: Tausender', 'Woche 2 - Wiederholung', 'Woche 2 - Vokabeltest', 'Familie - Verwandte & Stieffamilie' diff --git a/backend/scripts/create-bisaya-course.js b/backend/scripts/create-bisaya-course.js index 1017f0c..4a23573 100755 --- a/backend/scripts/create-bisaya-course.js +++ b/backend/scripts/create-bisaya-course.js @@ -590,46 +590,154 @@ const LESSON_DIDACTICS = { } ] }, - 'Zahlen & Preise': { + 'Zahlen 1–20': { learningGoals: [ - 'Zahlen im Preis-Kontext sicher verstehen und aussprechen.', - 'Geldbeträge in Bisaya hören, nachsprechen und einordnen.', - 'Einfache Preisangaben in kurzen Sätzen verwenden.' + 'Die Grundzahlen 1–10 sicher sprechen und zuordnen.', + 'Zahlen 11–19 als Zehner-plus-Einer erkennen.', + 'Die Zahl 20 (baynte) sicher verwenden.' ], corePatterns: [ { target: 'Usa', gloss: 'eins' }, { target: 'Duha', gloss: 'zwei' }, { target: 'Tulo', gloss: 'drei' }, + { target: 'Upat', gloss: 'vier' }, + { target: 'Lima', gloss: 'fünf' }, + { target: 'Unom', gloss: 'sechs' }, + { target: 'Pito', gloss: 'sieben' }, + { target: 'Walo', gloss: 'acht' }, + { target: 'Siyam', gloss: 'neun' }, { target: 'Napulo', gloss: 'zehn' }, - { target: 'Baynte', gloss: 'zwanzig' }, - { target: 'Usa ka gatos', gloss: 'einhundert' }, - { target: 'Baynte pesos', gloss: 'zwanzig Peso' }, - { target: 'Pila ka pesos?', gloss: 'Wie viele Peso?' } + { target: 'Napulog-usa', gloss: 'elf' }, + { target: 'Baynte', gloss: 'zwanzig' } ], grammarFocus: [ { - title: 'Zahl + Währung', - text: 'Bei Preisangaben stehen Zahl und Währung meist direkt zusammen.', - example: 'Baynte pesos. Usa ka gatos.' + title: 'Aufbau 11–19', + text: 'Häufig „napulo + Zahl“ oder feste Kurzformen; im Kurs zuerst die häufigsten Varianten üben.', + example: 'Napulog-usa (11), …, baynte (20).' } ], speakingPrompts: [ { - title: 'Zahlen im Marktalltag', - prompt: 'Nenne drei Preise laut und frage einmal nach einem Betrag.', - cue: 'Napulo pesos. Baynte pesos. Pila ka pesos?' + title: 'Zählen bis 20', + prompt: 'Zähle laut von 1 bis 10 und dann in Einzelschritten bis 20.', + cue: 'Usa, duha, tulo … baynte.' } ], practicalTasks: [ { - title: 'Preislesen', - text: 'Lies fünf Zahlen laut auf Bisaya und ergänze jeweils „pesos“.' + title: 'Zahlenreihe', + text: 'Schreibe die Ziffern 1–20 auf Zettel und sage zu jeder die Bisaya-Form laut.' + } + ] + }, + 'Zahlen: Zehner': { + learningGoals: [ + 'Die runden Zehner 20–90 sicher erkennen und aussprechen.', + 'Zehner mit kleinen Zahlen kombinieren (z. B. 25).', + 'Zehner im Alltag (Preis, Menge) wiedererkennen.' + ], + corePatterns: [ + { target: 'Baynte', gloss: 'zwanzig' }, + { target: 'Traysenta', gloss: 'dreißig' }, + { target: 'Kwarenta', gloss: 'vierzig' }, + { target: 'Singkwenta', gloss: 'fünfzig' }, + { target: 'Sesenta', gloss: 'sechzig' }, + { target: 'Setenta', gloss: 'siebzig' }, + { target: 'Otsenta', gloss: 'achtzig' }, + { target: 'Nobenta', gloss: 'neunzig' } + ], + grammarFocus: [ + { + title: 'Spanische Zehnerformen', + text: 'Im Alltag sind spanisch geprägte Zehner sehr verbreitet; regionale Aussprache kann leicht variieren.', + example: 'Baynte pesos. Traysenta.' + } + ], + speakingPrompts: [ + { + title: 'Nur Zehner', + prompt: 'Nenne nacheinander 20, 30, … 90 auf Bisaya.', + cue: 'Baynte, traysenta, kwarenta … nobenta.' + } + ], + practicalTasks: [ + { + title: 'Zehnerkarten', + text: 'Ziehe eine Karte mit 20/30/… und bilde sofort einen kurzen Preis-Satz.' + } + ] + }, + 'Zahlen: Hunderter': { + learningGoals: [ + 'Hunderter mit „ka gatos“ bilden und verstehen.', + 'Zwischen 100, 200 und 900 unterscheiden.', + 'Einfache Mengenangaben mit Hundertern formulieren.' + ], + corePatterns: [ + { target: 'Usa ka gatos', gloss: 'einhundert' }, + { target: 'Duha ka gatos', gloss: 'zweihundert' }, + { target: 'Tulo ka gatos', gloss: 'dreihundert' }, + { target: 'Upat ka gatos', gloss: 'vierhundert' }, + { target: 'Lima ka gatos', gloss: 'fünfhundert' } + ], + grammarFocus: [ + { + title: 'Zahl + ka gatos', + text: '„Gatos“ entspricht oft der Idee von Hundert; davor steht die Anzahl.', + example: 'Duha ka gatos (200).' + } + ], + speakingPrompts: [ + { + title: 'Hunderter hören', + prompt: 'Sage drei Hunderter-Beträge laut und wiederhole sie.', + cue: 'Usa ka gatos. Duha ka gatos. Tulo ka gatos.' + } + ], + practicalTasks: [ + { + title: 'Preis grob', + text: 'Übe, große Beträge in Hunderter-Schritten zu nennen (z. B. 300, 500).' + } + ] + }, + 'Zahlen: Tausender': { + learningGoals: [ + 'Tausender mit „libo“ sicher bilden.', + 'Große Beträge (z. B. Gehalt, Miete, Rechnungen) grob einordnen.', + 'Einfache Kombinationen aus Tausend und Hundert verstehen.' + ], + corePatterns: [ + { target: 'Usa ka libo', gloss: 'eintausend' }, + { target: 'Duha ka libo', gloss: 'zweitausend' }, + { target: 'Tulo ka libo', gloss: 'dreitausend' }, + { target: 'Usa ka libo ug lima ka gatos', gloss: 'eintausendfünfhundert (typische Struktur)' } + ], + grammarFocus: [ + { + title: 'libo = Tausend', + text: 'Mit „usa/duha/… ka libo“ bildest du Tausender; oft folgen noch Hunderter oder kleinere Teile.', + example: 'Duha ka libo.' + } + ], + speakingPrompts: [ + { + title: 'Große Zahl', + prompt: 'Nenne einen vierstelligen Betrag in groben Tausender-Schritten.', + cue: 'Usa ka libo. Duha ka libo.' + } + ], + practicalTasks: [ + { + title: 'Realitätsanker', + text: 'Nenne zwei reale Beträge (z. B. Preis für Handy, Miete) und sage sie in groben Tausender-Schritten auf Bisaya.' } ] }, 'Woche 2 - Wiederholung': { learningGoals: [ - 'Die zentralen Muster von Lektion 11-18 sicher wiedererkennen.', + 'Die zentralen Muster von Lektion 11–21 sicher wiedererkennen.', 'Orte, Zeitangaben und Preisfragen in einem Durchgang kombinieren.', 'Kurze Alltagssituationen ohne Hilfe formulieren.' ], @@ -831,119 +939,134 @@ const LESSONS = [ targetMin: 15, targetScore: 80, review: false, cultural: 'Handeln ist in den Philippinen üblich und erwartet.' }, - { week: 2, day: 4, num: 18, type: 'vocab', title: 'Zahlen & Preise', - desc: '1-100, Preise, Mengen', - targetMin: 25, targetScore: 85, review: true, + { week: 2, day: 4, num: 18, type: 'vocab', title: 'Zahlen 1–20', + desc: 'Grundzahlen und Zahlen bis 20 (usa … baynte)', + targetMin: 22, targetScore: 85, review: true, cultural: null }, - - { week: 2, day: 5, num: 19, type: 'review', title: 'Woche 2 - Wiederholung', + + { week: 2, day: 4, num: 19, type: 'vocab', title: 'Zahlen: Zehner', + desc: 'Runde Zehner von 20 bis 90', + targetMin: 20, targetScore: 85, review: true, + cultural: null }, + + { week: 2, day: 4, num: 20, type: 'vocab', title: 'Zahlen: Hunderter', + desc: 'Hunderter bis 900 (usa ka gatos … siyam ka gatos)', + targetMin: 20, targetScore: 85, review: true, + cultural: null }, + + { week: 2, day: 4, num: 21, type: 'vocab', title: 'Zahlen: Tausender', + desc: 'Tausender und große Beträge (libo)', + targetMin: 18, targetScore: 85, review: true, + cultural: null }, + + { week: 2, day: 5, num: 22, type: 'review', title: 'Woche 2 - Wiederholung', desc: 'Wiederhole alle Inhalte der zweiten Woche', targetMin: 30, targetScore: 80, review: false, cultural: null }, - { week: 2, day: 5, num: 20, type: 'vocab', title: 'Woche 2 - Vokabeltest', + { week: 2, day: 5, num: 23, type: 'vocab', title: 'Woche 2 - Vokabeltest', desc: 'Teste dein Wissen aus Woche 2', targetMin: 15, targetScore: 80, review: true, cultural: null }, // WOCHE 3: Vertiefung - { week: 3, day: 1, num: 21, type: 'conversation', title: 'Gefühle & Emotionen', + { week: 3, day: 1, num: 24, type: 'conversation', title: 'Gefühle & Emotionen', desc: 'Nalipay, nasubo, nahadlok, naguol', targetMin: 15, targetScore: 80, review: false, cultural: 'Emotionen auszudrücken ist wichtig für echte Verbindung.' }, - { week: 3, day: 1, num: 22, type: 'vocab', title: 'Gefühle & Emotionen', + { week: 3, day: 1, num: 25, type: 'vocab', title: 'Gefühle & Emotionen', desc: 'Wörter für verschiedene Gefühle', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 3, day: 2, num: 23, type: 'conversation', title: 'Gesundheit & Wohlbefinden', + { week: 3, day: 2, num: 26, type: 'conversation', title: 'Gesundheit & Wohlbefinden', desc: 'Sakit, maayo, tambal, doktor', targetMin: 15, targetScore: 80, review: false, cultural: null }, - { week: 3, day: 2, num: 24, type: 'vocab', title: 'Körper & Gesundheit', + { week: 3, day: 2, num: 27, type: 'vocab', title: 'Körper & Gesundheit', desc: 'Wörter rund um den Körper und Gesundheit', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 3, day: 3, num: 25, type: 'grammar', title: 'Höflichkeitsformen', + { week: 3, day: 3, num: 28, type: 'grammar', title: 'Höflichkeitsformen', desc: 'Palihug, Pwede, Tabang', targetMin: 20, targetScore: 75, review: true, cultural: 'Höflichkeit ist extrem wichtig in der philippinischen Kultur.' }, - { week: 3, day: 3, num: 26, type: 'conversation', title: 'Bitten & Fragen', + { week: 3, day: 3, num: 29, type: 'conversation', title: 'Bitten & Fragen', desc: 'Wie man höflich fragt und bittet', targetMin: 15, targetScore: 80, review: false, cultural: null }, - { week: 3, day: 4, num: 27, type: 'conversation', title: 'Kinder & Familie', + { week: 3, day: 4, num: 30, type: 'conversation', title: 'Kinder & Familie', desc: 'Gespräche mit und über Kinder', targetMin: 15, targetScore: 80, review: false, cultural: 'Kinder sind sehr wichtig in philippinischen Familien.' }, - { week: 3, day: 4, num: 28, type: 'vocab', title: 'Kinder & Spiel', + { week: 3, day: 4, num: 31, type: 'vocab', title: 'Kinder & Spiel', desc: 'Wörter für Kinder und Spielsachen', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 3, day: 5, num: 29, type: 'review', title: 'Woche 3 - Wiederholung', + { week: 3, day: 5, num: 32, type: 'review', title: 'Woche 3 - Wiederholung', desc: 'Wiederhole alle Inhalte der dritten Woche', targetMin: 30, targetScore: 80, review: false, cultural: null }, - { week: 3, day: 5, num: 30, type: 'vocab', title: 'Woche 3 - Vokabeltest', + { week: 3, day: 5, num: 33, type: 'vocab', title: 'Woche 3 - Vokabeltest', desc: 'Teste dein Wissen aus Woche 3', targetMin: 15, targetScore: 80, review: true, cultural: null }, // WOCHE 4: Freies Sprechen - { week: 4, day: 1, num: 31, type: 'conversation', title: 'Freies Gespräch - Thema 1', + { week: 4, day: 1, num: 34, type: 'conversation', title: 'Freies Gespräch - Thema 1', desc: 'Übe freies Sprechen zu verschiedenen Themen', targetMin: 20, targetScore: 75, review: false, cultural: 'Fehler sind okay! Philippiner schätzen das Bemühen.' }, - { week: 4, day: 1, num: 32, type: 'vocab', title: 'Wiederholung - Woche 1 & 2', + { week: 4, day: 1, num: 35, type: 'vocab', title: 'Wiederholung - Woche 1 & 2', desc: 'Wiederhole wichtige Vokabeln aus den ersten beiden Wochen', targetMin: 25, targetScore: 85, review: true, cultural: null }, - { week: 4, day: 2, num: 33, type: 'conversation', title: 'Freies Gespräch - Thema 2', + { week: 4, day: 2, num: 36, type: 'conversation', title: 'Freies Gespräch - Thema 2', desc: 'Weitere Übung im freien Sprechen', targetMin: 20, targetScore: 75, review: false, cultural: null }, - { week: 4, day: 2, num: 34, type: 'vocab', title: 'Wiederholung - Woche 3', + { week: 4, day: 2, num: 37, type: 'vocab', title: 'Wiederholung - Woche 3', desc: 'Wiederhole wichtige Vokabeln aus Woche 3', targetMin: 25, targetScore: 85, review: true, cultural: null }, - { week: 4, day: 3, num: 35, type: 'conversation', title: 'Komplexere Gespräche', + { week: 4, day: 3, num: 38, type: 'conversation', title: 'Komplexere Gespräche', desc: 'Längere Gespräche zu verschiedenen Themen', targetMin: 25, targetScore: 75, review: false, cultural: 'Je mehr du sprichst, desto besser wirst du!' }, - { week: 4, day: 3, num: 36, type: 'review', title: 'Gesamtwiederholung', + { week: 4, day: 3, num: 39, type: 'review', title: 'Gesamtwiederholung', desc: 'Wiederhole alle wichtigen Inhalte des Kurses', targetMin: 30, targetScore: 80, review: false, cultural: null }, - { week: 4, day: 4, num: 37, type: 'conversation', title: 'Praktische Übung', + { week: 4, day: 4, num: 40, type: 'conversation', title: 'Praktische Übung', desc: 'Simuliere echte Gesprächssituationen', targetMin: 25, targetScore: 75, review: false, cultural: null }, - { week: 4, day: 4, num: 38, type: 'vocab', title: 'Abschlusstest - Vokabeln', + { week: 4, day: 4, num: 41, type: 'vocab', title: 'Abschlusstest - Vokabeln', desc: 'Finaler Vokabeltest über den gesamten Kurs', targetMin: 20, targetScore: 80, review: true, cultural: null }, - { week: 4, day: 5, num: 39, type: 'review', title: 'Abschlussprüfung', + { week: 4, day: 5, num: 42, type: 'review', title: 'Abschlussprüfung', desc: 'Finale Prüfung über alle Kursinhalte', targetMin: 30, targetScore: 80, review: false, cultural: 'Gratulation zum Abschluss des Kurses!' }, - { week: 4, day: 5, num: 40, type: 'culture', title: 'Kulturelle Tipps & Tricks', + { week: 4, day: 5, num: 43, type: 'culture', title: 'Kulturelle Tipps & Tricks', desc: 'Wichtige kulturelle Hinweise für den Alltag', targetMin: 15, targetScore: 0, review: false, cultural: 'Kulturelles Verständnis ist genauso wichtig wie die Sprache selbst.' }, diff --git a/backend/scripts/create-language-courses.js b/backend/scripts/create-language-courses.js index 52df94b..9c820b6 100755 --- a/backend/scripts/create-language-courses.js +++ b/backend/scripts/create-language-courses.js @@ -109,119 +109,134 @@ const LESSON_TEMPLATE = [ targetMin: 15, targetScore: 80, review: false, cultural: 'Einkaufen ist eine wichtige Alltagssituation.' }, - { week: 2, day: 4, num: 18, type: 'vocab', title: 'Zahlen & Preise', - desc: 'Zahlen 1-100, Preise, Mengen', - targetMin: 25, targetScore: 85, review: true, + { week: 2, day: 4, num: 18, type: 'vocab', title: 'Zahlen 1–20', + desc: 'Grundzahlen und Zahlen bis 20', + targetMin: 22, targetScore: 85, review: true, cultural: null }, - - { week: 2, day: 5, num: 19, type: 'review', title: 'Woche 2 - Wiederholung', + + { week: 2, day: 4, num: 19, type: 'vocab', title: 'Zahlen: Zehner', + desc: 'Runde Zehner 20–90', + targetMin: 20, targetScore: 85, review: true, + cultural: null }, + + { week: 2, day: 4, num: 20, type: 'vocab', title: 'Zahlen: Hunderter', + desc: 'Hunderter bis 900', + targetMin: 20, targetScore: 85, review: true, + cultural: null }, + + { week: 2, day: 4, num: 21, type: 'vocab', title: 'Zahlen: Tausender', + desc: 'Tausender und große Beträge', + targetMin: 18, targetScore: 85, review: true, + cultural: null }, + + { week: 2, day: 5, num: 22, type: 'review', title: 'Woche 2 - Wiederholung', desc: 'Wiederhole alle Inhalte der zweiten Woche', targetMin: 30, targetScore: 80, review: false, cultural: null }, - { week: 2, day: 5, num: 20, type: 'vocab', title: 'Woche 2 - Vokabeltest', + { week: 2, day: 5, num: 23, type: 'vocab', title: 'Woche 2 - Vokabeltest', desc: 'Teste dein Wissen aus Woche 2', targetMin: 15, targetScore: 80, review: true, cultural: null }, // WOCHE 3: Vertiefung - { week: 3, day: 1, num: 21, type: 'conversation', title: 'Gefühle & Emotionen', + { week: 3, day: 1, num: 24, type: 'conversation', title: 'Gefühle & Emotionen', desc: 'Wie man verschiedene Gefühle ausdrückt', targetMin: 15, targetScore: 80, review: false, cultural: 'Emotionen auszudrücken ist wichtig für echte Verbindung.' }, - { week: 3, day: 1, num: 22, type: 'vocab', title: 'Gefühle & Emotionen', + { week: 3, day: 1, num: 25, type: 'vocab', title: 'Gefühle & Emotionen', desc: 'Wörter für verschiedene Gefühle', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 3, day: 2, num: 23, type: 'conversation', title: 'Gesundheit & Wohlbefinden', + { week: 3, day: 2, num: 26, type: 'conversation', title: 'Gesundheit & Wohlbefinden', desc: 'Gespräche über Gesundheit', targetMin: 15, targetScore: 80, review: false, cultural: null }, - { week: 3, day: 2, num: 24, type: 'vocab', title: 'Körper & Gesundheit', + { week: 3, day: 2, num: 27, type: 'vocab', title: 'Körper & Gesundheit', desc: 'Wörter rund um den Körper und Gesundheit', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 3, day: 3, num: 25, type: 'grammar', title: 'Höflichkeitsformen', + { week: 3, day: 3, num: 28, type: 'grammar', title: 'Höflichkeitsformen', desc: 'Wie man höflich spricht', targetMin: 20, targetScore: 75, review: true, cultural: 'Höflichkeit ist extrem wichtig in jeder Kultur.' }, - { week: 3, day: 3, num: 26, type: 'conversation', title: 'Bitten & Fragen', + { week: 3, day: 3, num: 29, type: 'conversation', title: 'Bitten & Fragen', desc: 'Wie man höflich fragt und bittet', targetMin: 15, targetScore: 80, review: false, cultural: null }, - { week: 3, day: 4, num: 27, type: 'conversation', title: 'Kinder & Familie', + { week: 3, day: 4, num: 30, type: 'conversation', title: 'Kinder & Familie', desc: 'Gespräche mit und über Kinder', targetMin: 15, targetScore: 80, review: false, cultural: 'Kinder sind sehr wichtig in Familien.' }, - { week: 3, day: 4, num: 28, type: 'vocab', title: 'Kinder & Spiel', + { week: 3, day: 4, num: 31, type: 'vocab', title: 'Kinder & Spiel', desc: 'Wörter für Kinder und Spielsachen', targetMin: 20, targetScore: 85, review: true, cultural: null }, - { week: 3, day: 5, num: 29, type: 'review', title: 'Woche 3 - Wiederholung', + { week: 3, day: 5, num: 32, type: 'review', title: 'Woche 3 - Wiederholung', desc: 'Wiederhole alle Inhalte der dritten Woche', targetMin: 30, targetScore: 80, review: false, cultural: null }, - { week: 3, day: 5, num: 30, type: 'vocab', title: 'Woche 3 - Vokabeltest', + { week: 3, day: 5, num: 33, type: 'vocab', title: 'Woche 3 - Vokabeltest', desc: 'Teste dein Wissen aus Woche 3', targetMin: 15, targetScore: 80, review: true, cultural: null }, // WOCHE 4: Freies Sprechen - { week: 4, day: 1, num: 31, type: 'conversation', title: 'Freies Gespräch - Thema 1', + { week: 4, day: 1, num: 34, type: 'conversation', title: 'Freies Gespräch - Thema 1', desc: 'Übe freies Sprechen zu verschiedenen Themen', targetMin: 20, targetScore: 75, review: false, cultural: 'Fehler sind okay! Muttersprachler schätzen das Bemühen.' }, - { week: 4, day: 1, num: 32, type: 'vocab', title: 'Wiederholung - Woche 1 & 2', + { week: 4, day: 1, num: 35, type: 'vocab', title: 'Wiederholung - Woche 1 & 2', desc: 'Wiederhole wichtige Vokabeln aus den ersten beiden Wochen', targetMin: 25, targetScore: 85, review: true, cultural: null }, - { week: 4, day: 2, num: 33, type: 'conversation', title: 'Freies Gespräch - Thema 2', + { week: 4, day: 2, num: 36, type: 'conversation', title: 'Freies Gespräch - Thema 2', desc: 'Weitere Übung im freien Sprechen', targetMin: 20, targetScore: 75, review: false, cultural: null }, - { week: 4, day: 2, num: 34, type: 'vocab', title: 'Wiederholung - Woche 3', + { week: 4, day: 2, num: 37, type: 'vocab', title: 'Wiederholung - Woche 3', desc: 'Wiederhole wichtige Vokabeln aus Woche 3', targetMin: 25, targetScore: 85, review: true, cultural: null }, - { week: 4, day: 3, num: 35, type: 'conversation', title: 'Komplexere Gespräche', + { week: 4, day: 3, num: 38, type: 'conversation', title: 'Komplexere Gespräche', desc: 'Längere Gespräche zu verschiedenen Themen', targetMin: 25, targetScore: 75, review: false, cultural: 'Je mehr du sprichst, desto besser wirst du!' }, - { week: 4, day: 3, num: 36, type: 'review', title: 'Gesamtwiederholung', + { week: 4, day: 3, num: 39, type: 'review', title: 'Gesamtwiederholung', desc: 'Wiederhole alle wichtigen Inhalte des Kurses', targetMin: 30, targetScore: 80, review: false, cultural: null }, - { week: 4, day: 4, num: 37, type: 'conversation', title: 'Praktische Übung', + { week: 4, day: 4, num: 40, type: 'conversation', title: 'Praktische Übung', desc: 'Simuliere echte Gesprächssituationen', targetMin: 25, targetScore: 75, review: false, cultural: null }, - { week: 4, day: 4, num: 38, type: 'vocab', title: 'Abschlusstest - Vokabeln', + { week: 4, day: 4, num: 41, type: 'vocab', title: 'Abschlusstest - Vokabeln', desc: 'Finaler Vokabeltest über den gesamten Kurs', targetMin: 20, targetScore: 80, review: true, cultural: null }, - { week: 4, day: 5, num: 39, type: 'review', title: 'Abschlussprüfung', + { week: 4, day: 5, num: 42, type: 'review', title: 'Abschlussprüfung', desc: 'Finale Prüfung über alle Kursinhalte', targetMin: 30, targetScore: 80, review: false, cultural: 'Gratulation zum Abschluss des Kurses!' }, - { week: 4, day: 5, num: 40, type: 'culture', title: 'Kulturelle Tipps & Tricks', + { week: 4, day: 5, num: 43, type: 'culture', title: 'Kulturelle Tipps & Tricks', desc: 'Wichtige kulturelle Hinweise für den Alltag', targetMin: 15, targetScore: 0, review: false, cultural: 'Kulturelles Verständnis ist genauso wichtig wie die Sprache selbst.' } diff --git a/backend/scripts/update-bisaya-didactics.js b/backend/scripts/update-bisaya-didactics.js index dfb73c8..c414536 100644 --- a/backend/scripts/update-bisaya-didactics.js +++ b/backend/scripts/update-bisaya-didactics.js @@ -303,35 +303,85 @@ const LESSON_DIDACTICS = { { title: 'Preisrunde', text: 'Nimm drei Gegenstände in deiner Umgebung und frage zu jedem einmal „Tagpila ni?“ laut.' } ] }, - 'Zahlen & Preise': { + 'Zahlen 1–20': { learningGoals: [ - 'Zahlen im Preis-Kontext sicher verstehen und aussprechen.', - 'Geldbeträge in Bisaya hören, nachsprechen und einordnen.', - 'Einfache Preisangaben in kurzen Sätzen verwenden.' + 'Die Grundzahlen 1–10 sicher sprechen und zuordnen.', + 'Zahlen bis 20 wiedererkennen und laut bilden.', + 'Den Aufbau von 11–19 gegenüber Zehnern unterscheiden.' ], corePatterns: [ { target: 'Usa', gloss: 'eins' }, { target: 'Duha', gloss: 'zwei' }, { target: 'Tulo', gloss: 'drei' }, { target: 'Napulo', gloss: 'zehn' }, - { target: 'Baynte', gloss: 'zwanzig' }, - { target: 'Usa ka gatos', gloss: 'einhundert' }, - { target: 'Baynte pesos', gloss: 'zwanzig Peso' }, - { target: 'Pila ka pesos?', gloss: 'Wie viele Peso?' } - ], - grammarFocus: [ - { title: 'Zahl + Währung', text: 'Bei Preisen stehen Zahlwort und Währung meist direkt zusammen.', example: 'Baynte pesos. Usa ka gatos.' } + { target: 'Baynte', gloss: 'zwanzig' } ], speakingPrompts: [ - { title: 'Zahlen im Marktalltag', prompt: 'Nenne drei Preise laut und frage einmal nach einem Betrag.', cue: 'Napulo pesos. Baynte pesos. Pila ka pesos?' } + { title: 'Zählen', prompt: 'Zähle laut von 1 bis 10 und dann einzeln bis 20.', cue: 'Usa, duha, tulo … baynte.' } ], practicalTasks: [ - { title: 'Preislesen', text: 'Lies fünf Zahlen laut auf Bisaya und ergänze jeweils „pesos“.' } + { title: 'Zahlenkarten', text: 'Schreibe 1–20 auf Karten und übersetze jede Zahl ins Bisaya.' } + ] + }, + 'Zahlen: Zehner': { + learningGoals: [ + 'Die runden Zehner 20–90 sicher erkennen.', + 'Zehner mit spanisch geprägten Formen im Alltag wiedererkennen.', + 'Einfache Kombinationen mit Zehnern (z. B. Preis grob) verstehen.' + ], + corePatterns: [ + { target: 'Baynte', gloss: 'zwanzig' }, + { target: 'Traysenta', gloss: 'dreißig' }, + { target: 'Kwarenta', gloss: 'vierzig' }, + { target: 'Singkwenta', gloss: 'fünfzig' }, + { target: 'Nobenta', gloss: 'neunzig' } + ], + grammarFocus: [ + { title: 'Zehner im Markt', text: 'Preise werden oft mit Zehnerformen genannt.', example: 'Baynte pesos.' } + ], + practicalTasks: [ + { title: 'Nur Zehner', text: 'Nenne laut nacheinander 20, 30, … 90.' } + ] + }, + 'Zahlen: Hunderter': { + learningGoals: [ + 'Hunderter mit „ka gatos“ bilden.', + 'Zwischen 100 und 900 unterscheiden.', + 'Hunderter in groben Preisangaben erkennen.' + ], + corePatterns: [ + { target: 'Usa ka gatos', gloss: 'einhundert' }, + { target: 'Duha ka gatos', gloss: 'zweihundert' }, + { target: 'Lima ka gatos', gloss: 'fünfhundert' } + ], + speakingPrompts: [ + { title: 'Hunderter hören', prompt: 'Sage drei Hunderter-Beträge laut.', cue: 'Usa ka gatos. Duha ka gatos. Tulo ka gatos.' } + ], + practicalTasks: [ + { title: 'Grober Preis', text: 'Übe Preise in Hunderter-Schritten zu nennen.' } + ] + }, + 'Zahlen: Tausender': { + learningGoals: [ + 'Tausender mit „libo“ bilden.', + 'Große Beträge grob einordnen.', + 'Einfache Tausender in Kontexten wie Miete oder Gehalt erkennen.' + ], + corePatterns: [ + { target: 'Usa ka libo', gloss: 'eintausend' }, + { target: 'Duha ka libo', gloss: 'zweitausend' }, + { target: 'Tulo ka libo', gloss: 'dreitausend' } + ], + grammarFocus: [ + { title: 'libo', text: '„Libo“ markiert Tausender; davor steht die Anzahl.', example: 'Usa ka libo.' } + ], + practicalTasks: [ + { title: 'Tausender sagen', text: 'Nenne zwei vierstellige Beträge in groben Tausender-Schritten auf Bisaya.' } ] }, 'Woche 2 - Wiederholung': { learningGoals: [ - 'Die zentralen Muster von Lektion 11–18 sicher wiedererkennen.', + 'Die zentralen Muster von Lektion 11–21 sicher wiedererkennen.', 'Orte, Zeitangaben und Preisfragen in einem Durchgang kombinieren.', 'Kurze Alltagssituationen ohne Hilfe formulieren.' ],