Files
yourpart3/backend/scripts/create-bisaya-course.js
Torsten Schulz (local) 6dce418728
All checks were successful
Deploy to production / deploy (push) Successful in 2m51s
feat(bisaya-course): enhance numerical lessons with expanded content
- Updated lessons on numbers to include detailed sections for "Zahlen 1–20," "Zahlen: Zehner," "Zahlen: Hunderter," and "Zahlen: Tausender," focusing on foundational numerical concepts in Bisaya.
- Introduced various exercise types such as multiple-choice, gap-fill, and transformation tasks to improve learner engagement and comprehension of numerical expressions.
- Enhanced didactics with clear learning goals, core patterns, grammar focus, speaking prompts, and practical tasks to support effective learning.
- Added review lessons to reinforce key concepts and ensure continuity in learning progression.
2026-04-16 21:55:05 +02:00

1181 lines
46 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env node
/**
* Script zum Erstellen eines vollständigen 6-Wochen Bisaya-Kurses
*
* Verwendung:
* node backend/scripts/create-bisaya-course.js <languageId> <ownerHashedId>
*/
import { sequelize } from '../utils/sequelize.js';
import VocabCourse from '../models/community/vocab_course.js';
import VocabCourseLesson from '../models/community/vocab_course_lesson.js';
import User from '../models/community/user.js';
import crypto from 'crypto';
import { getBisayaLessonPedagogy } from './bisaya-course-phase2-pedagogy.js';
import { BISAYA_PHASE3_DIDACTICS, BISAYA_PHASE3_LESSONS } from './bisaya-course-phase3-extension.js';
import { BISAYA_PHASE4_DIDACTICS, BISAYA_PHASE4_LESSONS } from './bisaya-course-phase4-extension.js';
import { BISAYA_PHASE5_DIDACTICS, BISAYA_PHASE5_LESSONS } from './bisaya-course-phase5-extension.js';
const LESSON_DIDACTICS = {
'Begrüßungen & Höflichkeit': {
learningGoals: [
'Einfache Begrüßungen verstehen und selbst verwenden.',
'Tageszeitbezogene Grüße und einfache Verabschiedungen unterscheiden.',
'Höfliche Reaktionen wie Danke und Bitte passend einsetzen.',
'Ein kurzes Begrüßungs-Mini-Gespräch laut üben.',
'Eine kurze Abend- und Schlafensroutine im Familienalltag sprechen.'
],
corePatterns: [
{ target: 'Kumusta ka?', gloss: 'Wie geht es dir?' },
{ target: 'Maayong buntag.', gloss: 'Guten Morgen.' },
{ target: 'Maayong adlaw.', gloss: 'Guten Tag.' },
{ target: 'Maayong gabii.', gloss: 'Guten Abend.' },
{ target: 'Maayong gabii, matulog na ta.', gloss: 'Guten Abend, wir legen uns schlafen.' },
{ target: 'Katulog og maayo.', gloss: 'Schlaf gut.' },
{ target: 'Kapoy na ka?', gloss: 'Bist du müde?' },
{ target: 'Matulog na ta.', gloss: 'Lass uns schlafen gehen.' },
{ target: 'Inom sa og tubig.', gloss: 'Trink Wasser.' },
{ target: 'Patya ang suga.', gloss: 'Mach das Licht aus.' },
{ target: 'Tabuni ang imong kaugalingon.', gloss: 'Deck dich zu.' },
{ target: 'Ugma nasad.', gloss: 'Bis morgen wieder.' },
{ target: 'Damgo og nindot.', gloss: 'Träum schön.' },
{ target: 'Amping.', gloss: 'Pass auf dich auf.' },
{ target: 'Babay.', gloss: 'Tschüss.' },
{ target: 'Maayo ko.', gloss: 'Mir geht es gut.' },
{ target: 'Salamat.', gloss: 'Danke.' },
{ target: 'Palihug.', gloss: 'Bitte.' }
],
grammarFocus: [
{
title: 'Kurzantworten mit ko',
text: 'Mit "ko" sprichst du über dich selbst: "Maayo ko."',
example: 'Maayo ko. = Mir geht es gut.'
},
{
title: 'Maayong + Tageszeit',
text: 'Mit "Maayong" kannst du Grüße für verschiedene Tageszeiten bilden.',
example: 'Maayong buntag. / Maayong gabii.'
},
{
title: 'Abend und Schlafen',
text: 'Im Familienalltag folgen auf einen Abendgruß oft direkte Schlafens- oder Fürsorgeformeln.',
example: 'Maayong gabii. / Katulog og maayo.'
},
{
title: 'Sanfte Schlafensroutine',
text: 'Kurze Fragen nach Müdigkeit und kleine Aufforderungen klingen im Familienalltag natürlicher als lange Sätze.',
example: 'Kapoy na ka? Matulog na ta. Inom sa og tubig.'
},
{
title: 'Familiäre Abendformeln',
text: 'Am Abend folgen oft sehr kurze Handlungsformeln wie Licht aus, zudecken oder ein Schlafwunsch.',
example: 'Patya ang suga. Tabuni ang imong kaugalingon. Damgo og nindot.'
}
],
speakingPrompts: [
{
title: 'Mini-Gespräch',
prompt: 'Begrüße eine Person, frage nach dem Befinden und reagiere höflich.',
cue: 'Kumusta ka? Maayo ko. Salamat.'
},
{
title: 'Verabschiedung',
prompt: 'Verabschiede dich kurz und wünsche, dass die andere Person auf sich aufpasst.',
cue: 'Babay. Amping.'
},
{
title: 'Abend und Schlaf',
prompt: 'Wünsche einen guten Abend, eine gute Nacht und dass die Person gut schlafen soll.',
cue: 'Maayong gabii. Katulog og maayo.'
},
{
title: 'Schlafensroutine',
prompt: 'Frage, ob die Person müde ist, und leite dann sanft zum Schlafengehen über.',
cue: 'Kapoy na ka? Matulog na ta. Inom sa og tubig.'
},
{
title: 'Vor dem Schlafen',
prompt: 'Bitte darum, das Licht auszumachen, sich zuzudecken, und wünsche eine gute Nacht bis morgen.',
cue: 'Patya ang suga. Tabuni ang imong kaugalingon. Ugma nasad. Damgo og nindot.'
}
],
practicalTasks: [
{
title: 'Alltag',
text: 'Sprich die Begrüßung dreimal laut und variiere die Antwort.'
}
]
},
'Familienwörter': {
learningGoals: [
'Die wichtigsten Familienbezeichnungen sicher erkennen.',
'Familienmitglieder und Großeltern mit respektvollen Wörtern ansprechen.',
'Kurze Sätze über die eigene Familie bilden.'
],
corePatterns: [
{ target: 'Si Nanay.', gloss: 'Das ist Mama.' },
{ target: 'Si Tatay.', gloss: 'Das ist Papa.' },
{ target: 'Si Kuya nako.', gloss: 'Das ist mein älterer Bruder.' },
{ target: 'Si Ate nako.', gloss: 'Das ist meine ältere Schwester.' },
{ target: 'Si Dodong nako.', gloss: 'Das ist mein jüngerer Bruder.' },
{ target: 'Si Inday nako.', gloss: 'Das ist meine jüngere Schwester.' },
{ target: 'Si Lola nako.', gloss: 'Das ist meine Großmutter.' },
{ target: 'Si Lolo nako.', gloss: 'Das ist mein Großvater.' }
],
grammarFocus: [
{
title: 'Respekt in Familienanreden',
text: 'Kuya und Ate richtest du an ältere Geschwister (oder respektvoll an andere). Dodong und Inday nutzt du für jüngere Brüder bzw. Schwestern; „Ading“ ist eine weiche Anrede an jüngere Geschwister.',
example: 'Kuya, palihug. / Si Dodong nako.'
},
{
title: 'si als Personenmarker',
text: 'Mit "si" markierst du im einfachen Satz eine konkrete Person.',
example: 'Si Nanay. Si Tatay.'
}
],
speakingPrompts: [
{
title: 'Meine Familie',
prompt: 'Stelle vier Familienmitglieder mit kurzen Sätzen vor.',
cue: 'Si Nanay. Si Tatay. Si Kuya nako. Si Dodong nako.'
}
],
practicalTasks: [
{
title: 'Familienpraxis',
text: 'Nenne laut die acht Kern-Familienwörter und bilde danach drei Mini-Sätze über deine Familie.'
}
]
},
'Überlebenssätze - Teil 1': {
learningGoals: [
'Zentrale Notfall- und Verständnisfragen schnell abrufen.',
'Höflich um Wiederholung, Hilfe und langsamere Sprache bitten.',
'Drei Überlebenssätze hintereinander sicher sprechen.'
],
corePatterns: [
{ target: 'Wala ko kasabot.', gloss: 'Ich verstehe nicht.' },
{ target: 'Palihug ka mubalik?', gloss: 'Kannst du das bitte wiederholen?' },
{ target: 'Asa ang CR?', gloss: 'Wo ist die Toilette?' },
{ target: 'Hinay-hinay lang.', gloss: 'Bitte langsam.' },
{ target: 'Tabangi ko, palihug.', gloss: 'Hilf mir bitte.' },
{ target: 'Unsay pasabot ani?', gloss: 'Was bedeutet das?' }
],
grammarFocus: [
{
title: 'Bitte-Formeln mit palihug',
text: '"Palihug" macht Bitten höflich und taucht in vielen Überlebenssätzen auf.',
example: 'Palihug ka mubalik? / Tabangi ko, palihug.'
},
{
title: 'Kurze Verständnisfragen',
text: 'Sehr kurze Fragen helfen dir im Alltag oft mehr als lange Sätze.',
example: 'Unsay pasabot ani? Asa ang CR?'
}
],
speakingPrompts: [
{
title: 'Wenn du etwas nicht verstehst',
prompt: 'Sage, dass du etwas nicht verstehst, und bitte um Wiederholung.',
cue: 'Wala ko kasabot. Palihug ka mubalik?'
},
{
title: 'Soforthilfe',
prompt: 'Bitte um Hilfe und frage dann nach der Toilette oder nach der Bedeutung eines Wortes.',
cue: 'Tabangi ko, palihug. Asa ang CR?'
}
],
practicalTasks: [
{
title: 'Alltagsanker',
text: 'Sprich alle sechs Überlebenssätze laut durch und ordne sie drei Alltagssituationen zu.'
}
]
},
'Familien-Gespräche': {
learningGoals: [
'Kurze Familiengespräche sicher verstehen.',
'Nach Familienmitgliedern fragen und einfache Antworten geben.',
'Ein Mini-Gespräch über Hunger und Zuhause nachsprechen.'
],
corePatterns: [
{ target: 'Kumusta ka, Nanay?', gloss: 'Wie geht es dir, Mama?' },
{ target: 'Asa si Tatay?', gloss: 'Wo ist Papa?' },
{ target: 'Naa siya sa balay.', gloss: 'Er ist zu Hause.' },
{ target: 'Kumusta na ang Kuya?', gloss: 'Wie geht es dem älteren Bruder?' },
{ target: 'Kumusta na ang Dodong?', gloss: 'Wie geht es dem jüngeren Bruder?' },
{ target: 'Kumusta na ang Inday?', gloss: 'Wie geht es der jüngeren Schwester?' },
{ target: 'Gutom na ko, Nanay.', gloss: 'Ich habe Hunger, Mama.' },
{ target: 'Hapit na ang pagkaon.', gloss: 'Das Essen ist fast fertig.' }
],
grammarFocus: [
{
title: 'naa für Ort und Vorhandensein',
text: '"Naa" hilft dir, über Orte und Vorhandensein zu sprechen.',
example: 'Naa siya sa balay.'
}
],
speakingPrompts: [
{
title: 'Familien-Mini-Dialog',
prompt: 'Frage nach einem Familienmitglied und reagiere dann mit einer kurzen Antwort.',
cue: 'Asa si Tatay? Naa siya sa balay.'
}
],
practicalTasks: [
{
title: 'Gesprächspraxis',
text: 'Spiele einen kurzen Familienaustausch mit Frage, Antwort und Fürsorge nach.'
}
]
},
'Gefühle & Zuneigung': {
learningGoals: [
'Wichtige Gefühle und Zuneigungsformeln sicher unterscheiden.',
'Freundliche Nähe und Vermissen sprachlich ausdrücken.',
'Zwischen positiven und negativen Gefühlen wechseln.'
],
corePatterns: [
{ target: 'Palangga taka.', gloss: 'Ich hab dich lieb.' },
{ target: 'Ganahan ko nimo.', gloss: 'Ich mag dich.' },
{ target: 'Gimingaw ko nimo.', gloss: 'Ich vermisse dich.' },
{ target: 'Nalipay ko.', gloss: 'Ich bin glücklich.' },
{ target: 'Nasubo ko.', gloss: 'Ich bin traurig.' },
{ target: 'Nalipay ko nga nakita ka.', gloss: 'Ich freue mich, dich zu sehen.' }
],
grammarFocus: [
{
title: 'ko für eigene Gefühle',
text: 'Viele Gefühlsaussagen bauen direkt auf dem Muster "Gefühl + ko" auf.',
example: 'Nalipay ko. Nasubo ko.'
}
],
speakingPrompts: [
{
title: 'Gefühl ausdrücken',
prompt: 'Sage, dass du jemanden magst oder vermisst, und ergänze danach ein einfaches Gefühl.',
cue: 'Ganahan ko nimo. Nalipay ko.'
}
],
practicalTasks: [
{
title: 'Herzsprache',
text: 'Lies drei Zuneigungsformeln laut und entscheide danach: liebhaben, mögen oder vermissen?'
}
]
},
'Überlebenssätze - Teil 2': {
learningGoals: [
'Weitere zentrale Alltagsfragen sicher sprechen.',
'Höflich Entschuldigung, Nachfrage und Hilfesprache verbinden.',
'Im Alltag Preise, Dinge und Sprache klar ansprechen.'
],
corePatterns: [
{ target: 'Tagpila ni?', gloss: 'Wie viel kostet das?' },
{ target: 'Unsa ni?', gloss: 'Was ist das?' },
{ target: 'Pasensya.', gloss: 'Entschuldigung.' },
{ target: 'Dili ko mag-Bisaya.', gloss: 'Ich spreche kein Bisaya.' },
{ target: 'Palihug isulat ni.', gloss: 'Bitte schreib das auf.' },
{ target: 'Nawala ko.', gloss: 'Ich habe mich verlaufen.' }
],
grammarFocus: [
{
title: 'Kurze Markt- und Orientierungssprache',
text: 'Kurze Fragewörter plus ein Nomen reichen oft, um im Alltag voranzukommen.',
example: 'Tagpila ni? Unsa ni?'
}
],
speakingPrompts: [
{
title: 'Auf dem Markt',
prompt: 'Frage nach Preis und Bedeutung eines Gegenstands und bitte dann darum, etwas aufzuschreiben.',
cue: 'Tagpila ni? Unsa ni? Palihug isulat ni.'
}
],
practicalTasks: [
{
title: 'Unterwegs',
text: 'Sprich drei Sätze für Einkauf, Nachfrage und Orientierung laut hintereinander.'
}
]
},
'Essen & Fürsorge': {
learningGoals: [
'Fürsorgliche Fragen rund ums Essen verstehen.',
'Einladungen zum Essen passend beantworten.',
'Kurze Essens-Dialoge laut üben.'
],
corePatterns: [
{ target: 'Nikaon na ka?', gloss: 'Hast du schon gegessen?' },
{ target: 'Kaon ta.', gloss: 'Lass uns essen.' },
{ target: 'Gusto ka mokaon?', gloss: 'Möchtest du essen?' },
{ target: 'Gutom na ko.', gloss: 'Ich habe Hunger.' },
{ target: 'Palihug, hatagi ko ug tubig.', gloss: 'Bitte gib mir Wasser.' },
{ target: 'Salamat sa pagkaon.', gloss: 'Danke für das Essen.' },
{ target: 'Busog na ko.', gloss: 'Ich bin satt.' },
{ target: 'Lami kaayo.', gloss: 'Sehr lecker.' }
],
grammarFocus: [
{
title: 'na als Zustandsmarker',
text: '"na" markiert oft etwas, das bereits eingetreten ist oder jetzt gilt.',
example: 'Nikaon na ka?'
},
{
title: 'Bitten mit hatagi ko',
text: 'Mit "hatagi ko" bittest du konkret darum, dass dir etwas gegeben wird.',
example: 'Palihug, hatagi ko ug tubig.'
}
],
speakingPrompts: [
{
title: 'Fürsorge-Dialog',
prompt: 'Frage, ob jemand schon gegessen hat, und biete Essen oder Wasser an.',
cue: 'Nikaon na ka? Gusto ka mokaon?'
},
{
title: 'Beim Essen reagieren',
prompt: 'Sage, dass du Hunger hast, bitte um Wasser und reagiere danach auf das Essen.',
cue: 'Gutom na ko. Palihug, hatagi ko ug tubig. Lami kaayo.'
}
],
practicalTasks: [
{
title: 'Rollenspiel',
text: 'Spiele ein kurzes Gespräch zwischen Gastgeber und Gast beim Essen.'
}
]
},
'Essen & Trinken': {
learningGoals: [
'Wichtige Essens- und Trinkwörter schnell erkennen.',
'Zwischen Grundnahrungsmitteln, Getränken und Beilagen unterscheiden.',
'Mit den neuen Wörtern kurze Einkaufs- oder Tischsätze bauen.'
],
corePatterns: [
{ target: 'Kan-on', gloss: 'gekochter Reis' },
{ target: 'Tubig', gloss: 'Wasser' },
{ target: 'Isda', gloss: 'Fisch' },
{ target: 'Manok', gloss: 'Huhn' },
{ target: 'Gulay', gloss: 'Gemüse' },
{ target: 'Prutas', gloss: 'Obst' },
{ target: 'Gatas', gloss: 'Milch' }
],
grammarFocus: [
{
title: 'Wortschatz statt ganzer Sätze',
text: 'In dieser Lektion sammelst du bewusst Grundwörter, damit du später kurze Essenssätze daraus bauen kannst.',
example: 'Kan-on. Tubig. Isda.'
}
],
speakingPrompts: [
{
title: 'Auf dem Tisch',
prompt: 'Nenne drei Dinge, die auf dem Tisch stehen oder die du essen und trinken möchtest.',
cue: 'Kan-on, isda ug tubig.'
}
],
practicalTasks: [
{
title: 'Küchenrunde',
text: 'Zeige nacheinander auf sieben Lebensmittel oder stelle sie dir vor und sprich jedes Wort laut aus.'
}
]
},
'Alltagsgespräche - Teil 1': {
learningGoals: [
'Alltagsaktivitäten in ganzen Sätzen beschreiben.',
'Nach Tagesplan, Aufgaben und Rückkehr fragen.',
'Kurze Familienabsprachen für den Tag sicher führen.'
],
corePatterns: [
{ target: 'Unsa imong buhat karon?', gloss: 'Was machst du heute?' },
{ target: 'Nagluto ko para sa panihapon.', gloss: 'Ich koche für das Abendessen.' },
{ target: 'Naglimpyo ko sa balay.', gloss: 'Ich putze das Haus.' },
{ target: 'Human na ka sa trabaho?', gloss: 'Bist du mit der Arbeit fertig?' },
{ target: 'Dali lang ko mubalik.', gloss: 'Ich komme gleich wieder.' },
{ target: 'Naa koy lakaw karong hapon.', gloss: 'Ich habe heute Nachmittag etwas zu erledigen.' },
{ target: 'Magpahuway ko gamay unya.', gloss: 'Ich ruhe mich später kurz aus.' },
{ target: 'Tawagi ko kung mahuman ka.', gloss: 'Ruf mich an, wenn du fertig bist.' }
],
speakingPrompts: [
{
title: 'Tagesablauf abstimmen',
prompt: 'Frage nach dem Plan und sage, was du heute erledigst.',
cue: 'Unsa imong buhat karon? Naglimpyo ko sa balay.'
}
],
practicalTasks: [
{
title: 'Alltagscheck',
text: 'Sprich vier Sätze zu deinem heutigen Ablauf: Aufgabe, Erledigung, Rückkehr und Pause.'
}
]
},
'Haus & Familie': {
learningGoals: [
'Wichtige Wörter für Haus, Räume und Familie zuordnen und aussprechen.',
'Mit „Naa … sa …“ sagen, wo sich jemand oder etwas im Haus befindet.',
'Kurze Sätze über Zuhause und Familie verstehen und nachsprechen.'
],
corePatterns: [
{ target: 'Balay', gloss: 'Haus' },
{ target: 'Kwarto', gloss: 'Zimmer' },
{ target: 'Kusina', gloss: 'Küche' },
{ target: 'Sala', gloss: 'Wohnzimmer' },
{ target: 'Banyo', gloss: 'Badezimmer' },
{ target: 'Pultahan', gloss: 'Tür' },
{ target: 'Bintana', gloss: 'Fenster' },
{ target: 'Atop', gloss: 'Dach' },
{ target: 'Pamilya', gloss: 'Familie' },
{ target: 'Among pamilya', gloss: 'unsere Familie' },
{ target: 'Naa ko sa balay.', gloss: 'Ich bin zu Hause.' },
{ target: 'Naa sila sa kusina.', gloss: 'Sie sind in der Küche.' },
{ target: 'Asa ang kusina?', gloss: 'Wo ist die Küche?' },
{ target: 'Ang among balay.', gloss: 'Unser Haus.' }
],
grammarFocus: [
{
title: 'Naa … sa … für Ort',
text: '„Naa“ drückt aus, dass jemand oder etwas irgendwo ist; „sa“ verbindet mit dem Ort.',
example: 'Naa ko sa balay. Naa sila sa kusina.'
},
{
title: 'among = unser (Plural inklusiv)',
text: '„Among“ passt zu „wir/unsere“ im Sinne von Familie oder Gruppe.',
example: 'Among pamilya. Ang among balay.'
}
],
speakingPrompts: [
{
title: 'Räume benennen',
prompt: 'Nenne Küche, Wohnzimmer und Badezimmer auf Bisaya.',
cue: 'Kusina, sala, banyo.'
},
{
title: 'Wer ist wo?',
prompt: 'Sage, dass du zu Hause bist, und frage, wo die Küche ist.',
cue: 'Naa ko sa balay. Asa ang kusina?'
}
],
practicalTasks: [
{
title: 'Rundgang',
text: 'Geh in Gedanken durch dein Zuhause und benenne jeden Raum laut auf Bisaya.'
}
]
},
'Zeitformen - Grundlagen': {
learningGoals: [
'Vergangenheit, laufende Handlung und Zukunft in einfachen Alltagssätzen unterscheiden.',
'Zeitmarker (ni-, nag-/ga-, mo-) mit Zeitwörtern sinnvoll kombinieren.',
'Zwischen denselben Verben in drei Zeitbezügen sicher wechseln.'
],
corePatterns: [
{ target: 'Ni-kaon ko ganiha.', gloss: 'Ich habe vorhin gegessen.' },
{ target: 'Nagkaon ko karon.', gloss: 'Ich esse gerade jetzt.' },
{ target: 'Mo-kaon ko unya.', gloss: 'Ich werde später essen.' },
{ target: 'Ni-adto ko sa merkado ganiha.', gloss: 'Ich bin vorhin zum Markt gegangen.' },
{ target: 'Naa ko sa merkado karon.', gloss: 'Ich bin jetzt auf dem Markt.' },
{ target: 'Mo-adto ko sa merkado ugma.', gloss: 'Ich werde morgen zum Markt gehen.' },
{ target: 'Nipalit ko og isda ganiha.', gloss: 'Ich habe vorhin Fisch gekauft.' },
{ target: 'Mupalit ko og isda ugma.', gloss: 'Ich werde morgen Fisch kaufen.' }
],
grammarFocus: [
{
title: 'Vergangenheit mit ni-',
text: 'ni- markiert im Grundkurs häufig abgeschlossene Handlungen in der Vergangenheit.',
example: 'Ni-kaon ko ganiha.'
},
{
title: 'Laufende Handlung mit nag-/ga-',
text: 'Für gerade laufende oder aktuelle Handlungen wird oft nag-/ga- genutzt, häufig zusammen mit karon.',
example: 'Nagkaon ko karon.'
},
{
title: 'Zukunft/Absicht mit mo-',
text: 'mo- markiert im Kurs Zukünftiges oder Vorhaben und wird oft mit unya/ugma kombiniert.',
example: 'Mo-adto ko ugma.'
},
{
title: 'Zeitwörter als Klarsteller',
text: 'Wörter wie ganiha, karon und ugma helfen, den Zeitbezug eindeutig zu machen.',
example: 'ganiha (vorhin), karon (jetzt), ugma (morgen)'
}
],
speakingPrompts: [
{
title: 'Dreierschritt Zeit',
prompt: 'Formuliere denselben Inhalt nacheinander für Vergangenheit, Gegenwart und Zukunft.',
cue: 'Ni-adto ko ganiha. Naa ko diri karon. Mo-adto ko ugma.'
},
{
title: 'Tagesplanung mit Zeiten',
prompt: 'Sage, was du vorhin getan hast, was du jetzt machst und was du später tun wirst.',
cue: 'Nipalit ko ganiha. Nagluto ko karon. Mo-kaon ko unya.'
}
],
practicalTasks: [
{
title: 'Verb-Staffel',
text: 'Nimm drei Verben (z. B. kaon, adto, palit) und bilde jeweils Vergangenheit, Gegenwart und Zukunft laut.'
},
{
title: 'Zeitkarten',
text: 'Ziehe zufällig ein Zeitwort (ganiha/karon/unya/ugma) und bilde sofort einen passenden Satz.'
}
]
},
'Zeit & Datum': {
learningGoals: [
'Die drei wichtigsten Zeitwörter (gestern/heute/morgen) sicher erkennen.',
'Zeitmarker in kurzen Sätzen verwenden (ganiha/karon/ugma).',
'Einfache Datums- und Zeitfragen verstehen.'
],
corePatterns: [
{ target: 'Ganiha', gloss: 'vorhin / früher heute' },
{ target: 'Gahapon', gloss: 'gestern' },
{ target: 'Karon', gloss: 'jetzt / heute' },
{ target: 'Ugma', gloss: 'morgen' },
{ target: 'Unya', gloss: 'später' },
{ target: 'Unsang adlaw karon?', gloss: 'Welcher Wochentag ist heute?' },
{ target: 'Alas pila na?', gloss: 'Wie spät ist es?' }
],
grammarFocus: [
{
title: 'Zeitmarker statt komplexer Tempora',
text: 'Cebuano nutzt häufig Zeitwörter wie karon, gahapon und ugma, um den Zeitpunkt klarzumachen.',
example: 'Ni-adto ko gahapon. Mo-adto ko ugma.'
}
],
speakingPrompts: [
{
title: 'Gestern-heute-morgen',
prompt: 'Sprich drei Mini-Sätze mit denselben Verb über gestern, heute und morgen.',
cue: 'Ni-adto ko gahapon. Naa ko diri karon. Mo-adto ko ugma.'
}
],
practicalTasks: [
{
title: 'Zeitanker',
text: 'Nenne fünf Aktivitäten und hänge je nach Zeitpunkt „gahapon“, „karon“ oder „ugma“ an.'
}
]
},
'Einkaufen & Preise': {
learningGoals: [
'Preise erfragen und auf einfache Antworten reagieren.',
'Beim Einkauf höflich nachfragen oder um einen besseren Preis bitten.',
'Einen kurzen Markt-Dialog mit Frage und Antwort führen.'
],
corePatterns: [
{ target: 'Tagpila ni?', gloss: 'Wie viel kostet das?' },
{ target: 'Mahal ba ni?', gloss: 'Ist das teuer?' },
{ target: 'Pwede barato?', gloss: 'Geht es günstiger?' },
{ target: 'Sige, paliton nako.', gloss: 'Okay, ich nehme es.' },
{ target: 'Unsaon pagbayad?', gloss: 'Wie bezahle ich?' }
],
speakingPrompts: [
{
title: 'Kaufgespräch',
prompt: 'Frage nach dem Preis, handle kurz und entscheide dann, ob du kaufst.',
cue: 'Tagpila ni? Pwede barato? Sige, paliton nako.'
}
],
practicalTasks: [
{
title: 'Preisrunde',
text: 'Frage zu drei Gegenständen laut nach dem Preis und antworte dir jeweils selbst.'
}
]
},
'Zahlen 120': {
learningGoals: [
'Die Grundzahlen 110 sicher sprechen und zuordnen.',
'Zahlen 1119 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: 'Napulog-usa', gloss: 'elf' },
{ target: 'Baynte', gloss: 'zwanzig' }
],
grammarFocus: [
{
title: 'Aufbau 1119',
text: 'Häufig „napulo + Zahl“ oder feste Kurzformen; im Kurs zuerst die häufigsten Varianten üben.',
example: 'Napulog-usa (11), …, baynte (20).'
}
],
speakingPrompts: [
{
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: 'Zahlenreihe',
text: 'Schreibe die Ziffern 120 auf Zettel und sage zu jeder die Bisaya-Form laut.'
}
]
},
'Zahlen: Zehner': {
learningGoals: [
'Die runden Zehner 2090 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 1121 sicher wiedererkennen.',
'Orte, Zeitangaben und Preisfragen in einem Durchgang kombinieren.',
'Kurze Alltagssituationen ohne Hilfe formulieren.'
],
corePatterns: [
{ target: 'Naa ko sa balay.', gloss: 'Ich bin zu Hause.' },
{ target: 'Asa ka moadto unya?', gloss: 'Wohin gehst du später?' },
{ target: 'Mo-adto ko ugma.', gloss: 'Ich gehe morgen.' },
{ target: 'Tagpila ni?', gloss: 'Wie viel kostet das?' },
{ target: 'Baynte pesos.', gloss: 'Zwanzig Peso.' }
],
speakingPrompts: [
{
title: 'Woche-2-Mix',
prompt: 'Baue einen Mini-Dialog mit Ort, Zeit und Preis.',
cue: 'Asa ka moadto unya? Tagpila ni? Baynte pesos.'
}
],
practicalTasks: [
{
title: 'Spiral-Wiederholung',
text: 'Sprich nacheinander je einen Satz zu Ort, Zeit und Einkauf.'
}
]
},
'Woche 2 - Vokabeltest': {
learningGoals: [
'Wortschatz aus Woche 2 schnell abrufen.',
'Ähnliche Zeit- und Ortswörter sicher unterscheiden.',
'Zahlen und Preisvokabeln fehlerfrei zuordnen.'
],
corePatterns: [
{ target: 'Balay', gloss: 'Haus' },
{ target: 'Kusina', gloss: 'Küche' },
{ target: 'Karon', gloss: 'heute/jetzt' },
{ target: 'Ugma', gloss: 'morgen' },
{ target: 'Tagpila ni?', gloss: 'Wie viel kostet das?' },
{ target: 'Baynte', gloss: 'zwanzig' }
],
practicalTasks: [
{
title: 'Selbsttest',
text: 'Nimm zehn Wörter aus Woche 2 und übersetze sie laut in beide Richtungen.'
}
]
},
'Alltagsgespräche - Teil 2': {
learningGoals: [
'Ziele, Wege und Zeitpunkte im Alltag genauer angeben.',
'Verabredungen und Rückkehrzeiten in ganzen Sätzen formulieren.',
'Einkaufs- und Familienwege natürlich besprechen.'
],
corePatterns: [
{ target: 'Asa ka moadto unya?', gloss: 'Wohin gehst du später?' },
{ target: 'Moadto ko sa merkado unya.', gloss: 'Ich gehe später zum Markt.' },
{ target: 'Unsa imong plano karong gabii?', gloss: 'Was ist dein Plan heute Abend?' },
{ target: 'Magkita mi sa silingan karon.', gloss: 'Wir treffen jetzt die Nachbarn.' },
{ target: 'Mupalit ko ug pagkaon para sa balay.', gloss: 'Ich kaufe Essen für zu Hause.' },
{ target: 'Mahimo ba ta magkita ugma buntag?', gloss: 'Können wir uns morgen früh treffen?' },
{ target: 'Unsa orasa ka mouli?', gloss: 'Um wie viel Uhr kommst du nach Hause?' },
{ target: 'Mouli ko mga alas sais.', gloss: 'Ich komme gegen sechs nach Hause.' }
],
speakingPrompts: [
{
title: 'Weg und Zeit planen',
prompt: 'Frage nach Ziel und Uhrzeit und gib eine konkrete Antwort.',
cue: 'Asa ka moadto unya? Mouli ko mga alas sais.'
}
],
practicalTasks: [
{
title: 'Planungsdialog',
text: 'Baue einen Mini-Dialog mit Zielort, Uhrzeit und Rückkehr in mindestens vier Sätzen.'
}
]
},
'Woche 1 - Wiederholung': {
learningGoals: [
'Die Kernmuster der ersten Woche ohne Hilfe wiederholen.',
'Zwischen Begrüßung, Familie und Fürsorge schneller wechseln.',
'Eine kurze Alltagssequenz frei sprechen.'
],
corePatterns: [
'Kumusta ka?',
'Palangga taka.',
'Nikaon na ka?',
'Wala ko kasabot.'
],
speakingPrompts: [
{
title: 'Freie Wiederholung',
prompt: 'Begrüße jemanden, drücke Zuneigung aus und frage fürsorglich nach dem Essen.',
cue: 'Kumusta ka? Palangga taka. Nikaon na ka?'
}
]
},
'Woche 1 - Vokabeltest': {
learningGoals: [
'Die wichtigsten Wörter der ersten Woche schnell abrufen.',
'Bedeutung und Gebrauch zentraler Wörter unterscheiden.',
'Von einzelnen Wörtern zu kurzen Sätzen übergehen.'
],
corePatterns: [
'Kumusta',
'Salamat',
'Lami',
'Mingaw ko nimo'
]
},
...BISAYA_PHASE3_DIDACTICS,
...BISAYA_PHASE4_DIDACTICS,
...BISAYA_PHASE5_DIDACTICS
};
const LESSONS = [
// WOCHE 1: Grundlagen & Aussprache
{ week: 1, day: 1, num: 1, type: 'conversation', title: 'Begrüßungen & Höflichkeit',
desc: 'Lerne die wichtigsten Begrüßungen und Höflichkeitsformeln',
targetMin: 15, targetScore: 80, review: false,
cultural: 'Philippiner schätzen Höflichkeit sehr. Lächeln ist wichtig!' },
{ week: 1, day: 1, num: 2, type: 'vocab', title: 'Überlebenssätze - Teil 1',
desc: 'Die 10 wichtigsten Sätze für den Alltag',
targetMin: 20, targetScore: 85, review: true,
cultural: 'Diese Sätze helfen dir sofort im Alltag weiter.' },
{ week: 1, day: 2, num: 3, type: 'vocab', title: 'Familienwörter',
desc: 'Mama, Papa, Kuya, Ate, Dodong, Inday, Lola, Lolo',
targetMin: 20, targetScore: 85, review: true,
cultural: 'Kuya und Ate für Ältere; Dodong und Inday für jüngere Geschwister. Kuya/Ate werden auch respektvoll außerhalb der Familie genutzt.' },
{ week: 1, day: 2, num: 4, type: 'conversation', title: 'Familien-Gespräche',
desc: 'Einfache Gespräche mit Familienmitgliedern',
targetMin: 15, targetScore: 80, review: false,
cultural: 'Familienkonversationen sind herzlicher als formelle Gespräche.' },
{ week: 1, day: 3, num: 5, type: 'conversation', title: 'Gefühle & Zuneigung',
desc: 'Mingaw ko nimo, Palangga taka und mehr',
targetMin: 15, targetScore: 80, review: false,
cultural: 'Palangga taka ist wärmer als "I love you" im Familienkontext.' },
{ week: 1, day: 3, num: 6, type: 'vocab', title: 'Überlebenssätze - Teil 2',
desc: 'Weitere wichtige Alltagssätze',
targetMin: 20, targetScore: 85, review: true,
cultural: null },
{ week: 1, day: 4, num: 7, type: 'conversation', title: 'Essen & Fürsorge',
desc: 'Nikaon ka? Kaon ta! Lami!',
targetMin: 15, targetScore: 80, review: false,
cultural: 'Essen = Liebe! "Nikaon na ka?" ist sehr fürsorglich.' },
{ week: 1, day: 4, num: 8, type: 'vocab', title: 'Essen & Trinken',
desc: 'Wichtige Wörter rund ums Essen',
targetMin: 20, targetScore: 85, review: true,
cultural: null },
{ week: 1, day: 5, num: 9, type: 'review', title: 'Woche 1 - Wiederholung',
desc: 'Wiederhole alle Inhalte der ersten Woche',
targetMin: 30, targetScore: 80, review: false,
cultural: 'Wiederholung ist der Schlüssel zum Erfolg!' },
{ week: 1, day: 5, num: 10, type: 'vocab', title: 'Woche 1 - Vokabeltest',
desc: 'Teste dein Wissen aus Woche 1',
targetMin: 15, targetScore: 80, review: true,
cultural: null },
// WOCHE 2: Alltag & Familie
{ week: 2, day: 1, num: 11, type: 'conversation', title: 'Alltagsgespräche - Teil 1',
desc: 'Wie war dein Tag? Was machst du?',
targetMin: 25, targetScore: 80, review: false,
cultural: 'Alltagsgespräche sind wichtig für echte Kommunikation.' },
{ week: 2, day: 1, num: 12, type: 'vocab', title: 'Haus & Familie',
desc: 'Haus, Räume, Familie: Balay, kwarto, kusina, sala, banyo, pamilya',
targetMin: 22, targetScore: 85, review: true,
cultural: null },
{ week: 2, day: 2, num: 13, type: 'conversation', title: 'Alltagsgespräche - Teil 2',
desc: 'Wohin gehst du? Was machst du heute?',
targetMin: 15, targetScore: 80, review: false,
cultural: null },
{ week: 2, day: 2, num: 14, type: 'vocab', title: 'Ort & Richtung',
desc: 'Asa, dinhi, didto, padulong',
targetMin: 20, targetScore: 85, review: true,
cultural: null },
{ week: 2, day: 3, num: 15, type: 'grammar', title: 'Zeitformen - Grundlagen',
desc: 'Ni-kaon ko, Mo-kaon ko - Vergangenheit und Zukunft',
targetMin: 25, targetScore: 75, review: true,
cultural: 'Cebuano hat keine komplexen Zeiten wie Deutsch. Zeit wird mit Präfixen ausgedrückt.' },
{ week: 2, day: 3, num: 16, type: 'vocab', title: 'Zeit & Datum',
desc: 'Karon, ugma, gahapon, karon adlaw',
targetMin: 20, targetScore: 85, review: true,
cultural: null },
{ week: 2, day: 4, num: 17, type: 'conversation', title: 'Einkaufen & Preise',
desc: 'Tagpila ni? Pwede barato?',
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 120',
desc: 'Grundzahlen und Zahlen bis 20 (usa … baynte)',
targetMin: 22, targetScore: 85, review: true,
cultural: null },
{ 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: 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: 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: 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: 26, type: 'conversation', title: 'Gesundheit & Wohlbefinden',
desc: 'Sakit, maayo, tambal, doktor',
targetMin: 15, targetScore: 80, review: false,
cultural: null },
{ 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 40, type: 'conversation', title: 'Praktische Übung',
desc: 'Simuliere echte Gesprächssituationen',
targetMin: 25, targetScore: 75, review: false,
cultural: null },
{ 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: 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: 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.' },
...BISAYA_PHASE3_LESSONS,
...BISAYA_PHASE4_LESSONS,
...BISAYA_PHASE5_LESSONS
];
async function createBisayaCourse(languageId, ownerHashedId) {
try {
// Finde User
const user = await User.findOne({ where: { hashedId: ownerHashedId } });
if (!user) {
throw new Error(`User mit hashedId ${ownerHashedId} nicht gefunden`);
}
// Prüfe, ob Sprache existiert
const [lang] = await sequelize.query(
`SELECT id FROM community.vocab_language WHERE id = :langId`,
{ replacements: { langId: languageId }, type: sequelize.QueryTypes.SELECT }
);
if (!lang) {
throw new Error(`Sprache mit ID ${languageId} nicht gefunden`);
}
// Erstelle Kurs
const shareCode = crypto.randomBytes(8).toString('hex');
const course = await VocabCourse.create({
ownerUserId: user.id,
title: 'Bisaya für Familien - Alltag & Stabilisierung',
description: 'Lerne Bisaya (Cebuano) praxisnah für den Familienalltag. Der Pfad verbindet Schnellstart, Alltagsmodule und Stabilisierungsblöcke mit Spiralwiederholung, Fehlertraining und freier Produktion.',
languageId: Number(languageId),
difficultyLevel: 1,
isPublic: true,
shareCode
});
console.log(`✅ Kurs erstellt: ${course.id} - "${course.title}"`);
console.log(` Share-Code: ${shareCode}`);
// Erstelle Lektionen
for (const lessonData of LESSONS) {
const pedagogy = getBisayaLessonPedagogy(lessonData.num) || {};
const lesson = await VocabCourseLesson.create({
courseId: course.id,
chapterId: null, // Wird später mit Vokabeln verknüpft
lessonNumber: lessonData.num,
title: lessonData.title,
description: lessonData.desc,
weekNumber: lessonData.week,
dayNumber: lessonData.day,
lessonType: lessonData.type,
culturalNotes: lessonData.cultural,
learningGoals: LESSON_DIDACTICS[lessonData.title]?.learningGoals || [],
corePatterns: LESSON_DIDACTICS[lessonData.title]?.corePatterns || [],
grammarFocus: LESSON_DIDACTICS[lessonData.title]?.grammarFocus || [],
speakingPrompts: LESSON_DIDACTICS[lessonData.title]?.speakingPrompts || [],
practicalTasks: LESSON_DIDACTICS[lessonData.title]?.practicalTasks || [],
targetMinutes: lessonData.targetMin,
targetScorePercent: lessonData.targetScore,
requiresReview: lessonData.review,
didacticMode: pedagogy.didacticMode || null,
phaseLabel: pedagogy.phaseLabel || null,
blockNumber: pedagogy.blockNumber ?? null,
difficultyWeight: pedagogy.difficultyWeight ?? null,
newUnitTarget: pedagogy.newUnitTarget ?? null,
reviewWeight: pedagogy.reviewWeight ?? null,
isIntensiveReview: Boolean(pedagogy.isIntensiveReview)
});
console.log(` ✅ Lektion ${lessonData.num}: ${lessonData.title} (Woche ${lessonData.week}, Tag ${lessonData.day})`);
}
console.log(`\n🎉 Kurs erfolgreich erstellt mit ${LESSONS.length} Lektionen!`);
console.log(`\n📊 Kurs-Statistik:`);
console.log(` - Gesamte Lektionen: ${LESSONS.length}`);
console.log(` - Vokabel-Lektionen: ${LESSONS.filter(l => l.type === 'vocab').length}`);
console.log(` - Konversations-Lektionen: ${LESSONS.filter(l => l.type === 'conversation').length}`);
console.log(` - Grammatik-Lektionen: ${LESSONS.filter(l => l.type === 'grammar').length}`);
console.log(` - Wiederholungs-Lektionen: ${LESSONS.filter(l => l.type === 'review').length}`);
console.log(` - Durchschnittliche Zeit pro Tag: ~${Math.round(LESSONS.reduce((sum, l) => sum + l.targetMin, 0) / (15 * 5))} Minuten`);
console.log(`\n💡 Nächste Schritte:`);
console.log(` 1. Füge Vokabeln zu den Vokabel-Lektionen hinzu`);
console.log(` 2. Erstelle Grammatik-Übungen für die Grammatik-Lektionen`);
console.log(` 3. Teile den Kurs mit anderen (Share-Code: ${shareCode})`);
return course;
} catch (error) {
console.error('❌ Fehler beim Erstellen des Kurses:', error);
throw error;
}
}
// CLI-Aufruf
const languageId = process.argv[2];
const ownerHashedId = process.argv[3];
if (!languageId || !ownerHashedId) {
console.error('Verwendung: node create-bisaya-course.js <languageId> <ownerHashedId>');
console.error('Beispiel: node create-bisaya-course.js 1 abc123def456');
process.exit(1);
}
createBisayaCourse(languageId, ownerHashedId)
.then(() => {
process.exit(0);
})
.catch((error) => {
console.error(error);
process.exit(1);
});