#!/usr/bin/env node /** * Script zum Erstellen von Übungen für die "Essen & Fürsorge" und "Essen & Trinken" Lektionen * * Verwendung: * node backend/scripts/update-food-care-exercises.js * * Erstellt Gesprächsübungen für die "Essen & Fürsorge" und "Essen & Trinken" Lektionen in allen Bisaya-Kursen. */ import { sequelize } from '../utils/sequelize.js'; import VocabCourseLesson from '../models/community/vocab_course_lesson.js'; import VocabGrammarExercise from '../models/community/vocab_grammar_exercise.js'; import VocabCourse from '../models/community/vocab_course.js'; import User from '../models/community/user.js'; import crypto from 'crypto'; import bcrypt from 'bcryptjs'; import { Op } from 'sequelize'; // Essen & Fürsorge / Essen & Trinken auf Bisaya mit verschiedenen Muttersprachen const FOOD_CARE_CONVERSATIONS = { // Deutsch -> Bisaya 'Deutsch': { 'Essen & Fürsorge': [ { bisaya: 'Gutom na ko.', native: 'Ich habe Hunger.', explanation: '"Gutom" bedeutet "Hunger", "na" ist "schon", "ko" ist "ich"' }, { bisaya: 'Gihikap ko.', native: 'Ich habe Durst.', explanation: '"Gihikap" bedeutet "Durst haben", "ko" ist "ich"' }, { bisaya: 'Gusto ka mokaon?', native: 'Möchtest du essen?', explanation: '"Gusto" bedeutet "möchten", "ka" ist "du", "mokaon" ist "essen"' }, { bisaya: 'Oo, gusto ko.', native: 'Ja, ich möchte.', explanation: '"Oo" ist "Ja", "gusto ko" ist "ich möchte"' }, { bisaya: 'Unsa ang gusto nimo?', native: 'Was möchtest du?', explanation: '"Unsa" ist "Was", "ang" ist Artikel, "gusto nimo" ist "du möchtest"' }, { bisaya: 'Gusto ko ug kan-on.', native: 'Ich möchte Reis.', explanation: '"Gusto ko" ist "ich möchte", "ug" ist "und/ein", "kan-on" ist "Reis"' }, { bisaya: 'Palihug, hatagi ko ug tubig.', native: 'Bitte gib mir Wasser.', explanation: '"Palihug" ist "Bitte", "hatagi" ist "geben", "ko" ist "mir", "ug tubig" ist "Wasser"' }, { bisaya: 'Salamat sa pagkaon.', native: 'Danke für das Essen.', explanation: '"Salamat" ist "Danke", "sa pagkaon" ist "für das Essen"' }, { bisaya: 'Lami kaayo!', native: 'Sehr lecker!', explanation: '"Lami" bedeutet "lecker", "kaayo" ist "sehr"' }, { bisaya: 'Busog na ko.', native: 'Ich bin satt.', explanation: '"Busog" bedeutet "satt", "na" ist "schon", "ko" ist "ich"' }, { bisaya: 'Kumusta ang pagkaon?', native: 'Wie schmeckt das Essen?', explanation: '"Kumusta" ist "Wie", "ang pagkaon" ist "das Essen"' }, { bisaya: 'Maayo kaayo ang pagkaon.', native: 'Das Essen ist sehr gut.', explanation: '"Maayo" ist "gut", "kaayo" ist "sehr", "ang pagkaon" ist "das Essen"' } ], 'Essen & Trinken': [ { bisaya: 'Kan-on', native: 'Reis', explanation: '"Kan-on" ist das grundlegende Wort für "Reis"' }, { bisaya: 'Tubig', native: 'Wasser', explanation: '"Tubig" bedeutet "Wasser"' }, { bisaya: 'Pan', native: 'Brot', explanation: '"Pan" bedeutet "Brot"' }, { bisaya: 'Isda', native: 'Fisch', explanation: '"Isda" bedeutet "Fisch"' }, { bisaya: 'Manok', native: 'Huhn', explanation: '"Manok" bedeutet "Huhn"' }, { bisaya: 'Baboy', native: 'Schwein', explanation: '"Baboy" bedeutet "Schwein"' }, { bisaya: 'Gulay', native: 'Gemüse', explanation: '"Gulay" bedeutet "Gemüse"' }, { bisaya: 'Prutas', native: 'Obst', explanation: '"Prutas" bedeutet "Obst"' }, { bisaya: 'Gatas', native: 'Milch', explanation: '"Gatas" bedeutet "Milch"' }, { bisaya: 'Kape', native: 'Kaffee', explanation: '"Kape" bedeutet "Kaffee"' }, { bisaya: 'Tsa', native: 'Tee', explanation: '"Tsa" bedeutet "Tee"' }, { bisaya: 'Asin', native: 'Salz', explanation: '"Asin" bedeutet "Salz"' }, { bisaya: 'Asukar', native: 'Zucker', explanation: '"Asukar" bedeutet "Zucker"' }, { bisaya: 'Tinapay', native: 'Brot (alternativ)', explanation: '"Tinapay" ist eine alternative Bezeichnung für "Brot"' }, { bisaya: 'Bugas', native: 'Reis (roh)', explanation: '"Bugas" ist ungekochter Reis, "kan-on" ist gekochter Reis' } ] }, // Englisch -> Bisaya 'Englisch': { 'Essen & Fürsorge': [ { bisaya: 'Gutom na ko.', native: 'I am hungry.', explanation: '"Gutom" means "hungry", "na" is "already", "ko" is "I"' }, { bisaya: 'Gihikap ko.', native: 'I am thirsty.', explanation: '"Gihikap" means "thirsty", "ko" is "I"' }, { bisaya: 'Gusto ka mokaon?', native: 'Do you want to eat?', explanation: '"Gusto" means "want", "ka" is "you", "mokaon" is "to eat"' }, { bisaya: 'Oo, gusto ko.', native: 'Yes, I want.', explanation: '"Oo" is "Yes", "gusto ko" is "I want"' }, { bisaya: 'Unsa ang gusto nimo?', native: 'What do you want?', explanation: '"Unsa" is "What", "ang" is article, "gusto nimo" is "you want"' }, { bisaya: 'Gusto ko ug kan-on.', native: 'I want rice.', explanation: '"Gusto ko" is "I want", "ug" is "a/some", "kan-on" is "rice"' }, { bisaya: 'Palihug, hatagi ko ug tubig.', native: 'Please give me water.', explanation: '"Palihug" is "Please", "hatagi" is "give", "ko" is "me", "ug tubig" is "water"' }, { bisaya: 'Salamat sa pagkaon.', native: 'Thank you for the food.', explanation: '"Salamat" is "Thank you", "sa pagkaon" is "for the food"' }, { bisaya: 'Lami kaayo!', native: 'Very delicious!', explanation: '"Lami" means "delicious", "kaayo" is "very"' }, { bisaya: 'Busog na ko.', native: 'I am full.', explanation: '"Busog" means "full", "na" is "already", "ko" is "I"' }, { bisaya: 'Kumusta ang pagkaon?', native: 'How is the food?', explanation: '"Kumusta" is "How", "ang pagkaon" is "the food"' }, { bisaya: 'Maayo kaayo ang pagkaon.', native: 'The food is very good.', explanation: '"Maayo" is "good", "kaayo" is "very", "ang pagkaon" is "the food"' } ], 'Essen & Trinken': [ { bisaya: 'Kan-on', native: 'Rice', explanation: '"Kan-on" is the basic word for "rice"' }, { bisaya: 'Tubig', native: 'Water', explanation: '"Tubig" means "water"' }, { bisaya: 'Pan', native: 'Bread', explanation: '"Pan" means "bread"' }, { bisaya: 'Isda', native: 'Fish', explanation: '"Isda" means "fish"' }, { bisaya: 'Manok', native: 'Chicken', explanation: '"Manok" means "chicken"' }, { bisaya: 'Baboy', native: 'Pig', explanation: '"Baboy" means "pig"' }, { bisaya: 'Gulay', native: 'Vegetables', explanation: '"Gulay" means "vegetables"' }, { bisaya: 'Prutas', native: 'Fruit', explanation: '"Prutas" means "fruit"' }, { bisaya: 'Gatas', native: 'Milk', explanation: '"Gatas" means "milk"' }, { bisaya: 'Kape', native: 'Coffee', explanation: '"Kape" means "coffee"' }, { bisaya: 'Tsa', native: 'Tea', explanation: '"Tsa" means "tea"' }, { bisaya: 'Asin', native: 'Salt', explanation: '"Asin" means "salt"' }, { bisaya: 'Asukar', native: 'Sugar', explanation: '"Asukar" means "sugar"' }, { bisaya: 'Tinapay', native: 'Bread (alternative)', explanation: '"Tinapay" is an alternative term for "bread"' }, { bisaya: 'Bugas', native: 'Rice (uncooked)', explanation: '"Bugas" is uncooked rice, "kan-on" is cooked rice' } ] } }; // Erweitere für weitere Sprachen (Spanisch, Französisch, Italienisch, Portugiesisch, Tagalog) const ADDITIONAL_LANGUAGES = { 'Spanisch': { 'Essen & Fürsorge': [ { bisaya: 'Gutom na ko.', native: 'Tengo hambre.', explanation: '"Gutom" significa "hambre", "na" es "ya", "ko" es "yo"' }, { bisaya: 'Gihikap ko.', native: 'Tengo sed.', explanation: '"Gihikap" significa "sed", "ko" es "yo"' }, { bisaya: 'Gusto ka mokaon?', native: '¿Quieres comer?', explanation: '"Gusto" significa "querer", "ka" es "tú", "mokaon" es "comer"' }, { bisaya: 'Oo, gusto ko.', native: 'Sí, quiero.', explanation: '"Oo" es "Sí", "gusto ko" es "quiero"' }, { bisaya: 'Unsa ang gusto nimo?', native: '¿Qué quieres?', explanation: '"Unsa" es "Qué", "ang" es artículo, "gusto nimo" es "quieres"' }, { bisaya: 'Gusto ko ug kan-on.', native: 'Quiero arroz.', explanation: '"Gusto ko" es "quiero", "ug kan-on" es "arroz"' }, { bisaya: 'Palihug, hatagi ko ug tubig.', native: 'Por favor, dame agua.', explanation: '"Palihug" es "Por favor", "hatagi" es "dar", "ko" es "me", "ug tubig" es "agua"' }, { bisaya: 'Salamat sa pagkaon.', native: 'Gracias por la comida.', explanation: '"Salamat" es "Gracias", "sa pagkaon" es "por la comida"' }, { bisaya: 'Lami kaayo!', native: '¡Muy delicioso!', explanation: '"Lami" significa "delicioso", "kaayo" es "muy"' }, { bisaya: 'Busog na ko.', native: 'Estoy lleno.', explanation: '"Busog" significa "lleno", "na" es "ya", "ko" es "yo"' }, { bisaya: 'Kumusta ang pagkaon?', native: '¿Cómo está la comida?', explanation: '"Kumusta" es "Cómo", "ang pagkaon" es "la comida"' }, { bisaya: 'Maayo kaayo ang pagkaon.', native: 'La comida está muy buena.', explanation: '"Maayo" es "buena", "kaayo" es "muy", "ang pagkaon" es "la comida"' } ], 'Essen & Trinken': [ { bisaya: 'Kan-on', native: 'Arroz', explanation: '"Kan-on" es la palabra básica para "arroz"' }, { bisaya: 'Tubig', native: 'Agua', explanation: '"Tubig" significa "agua"' }, { bisaya: 'Pan', native: 'Pan', explanation: '"Pan" significa "pan"' }, { bisaya: 'Isda', native: 'Pescado', explanation: '"Isda" significa "pescado"' }, { bisaya: 'Manok', native: 'Pollo', explanation: '"Manok" significa "pollo"' }, { bisaya: 'Baboy', native: 'Cerdo', explanation: '"Baboy" significa "cerdo"' }, { bisaya: 'Gulay', native: 'Verduras', explanation: '"Gulay" significa "verduras"' }, { bisaya: 'Prutas', native: 'Fruta', explanation: '"Prutas" significa "fruta"' }, { bisaya: 'Gatas', native: 'Leche', explanation: '"Gatas" significa "leche"' }, { bisaya: 'Kape', native: 'Café', explanation: '"Kape" significa "café"' }, { bisaya: 'Tsa', native: 'Té', explanation: '"Tsa" significa "té"' }, { bisaya: 'Asin', native: 'Sal', explanation: '"Asin" significa "sal"' }, { bisaya: 'Asukar', native: 'Azúcar', explanation: '"Asukar" significa "azúcar"' }, { bisaya: 'Tinapay', native: 'Pan (alternativo)', explanation: '"Tinapay" es un término alternativo para "pan"' }, { bisaya: 'Bugas', native: 'Arroz (crudo)', explanation: '"Bugas" es arroz crudo, "kan-on" es arroz cocido' } ] }, 'Französisch': { 'Essen & Fürsorge': [ { bisaya: 'Gutom na ko.', native: 'J\'ai faim.', explanation: '"Gutom" signifie "faim", "na" est "déjà", "ko" est "je"' }, { bisaya: 'Gihikap ko.', native: 'J\'ai soif.', explanation: '"Gihikap" signifie "soif", "ko" est "je"' }, { bisaya: 'Gusto ka mokaon?', native: 'Tu veux manger?', explanation: '"Gusto" signifie "vouloir", "ka" est "tu", "mokaon" est "manger"' }, { bisaya: 'Oo, gusto ko.', native: 'Oui, je veux.', explanation: '"Oo" est "Oui", "gusto ko" est "je veux"' }, { bisaya: 'Unsa ang gusto nimo?', native: 'Que veux-tu?', explanation: '"Unsa" est "Que", "ang" est article, "gusto nimo" est "tu veux"' }, { bisaya: 'Gusto ko ug kan-on.', native: 'Je veux du riz.', explanation: '"Gusto ko" est "je veux", "ug kan-on" est "riz"' }, { bisaya: 'Palihug, hatagi ko ug tubig.', native: 'S\'il te plaît, donne-moi de l\'eau.', explanation: '"Palihug" est "S\'il te plaît", "hatagi" est "donner", "ko" est "moi", "ug tubig" est "eau"' }, { bisaya: 'Salamat sa pagkaon.', native: 'Merci pour la nourriture.', explanation: '"Salamat" est "Merci", "sa pagkaon" est "pour la nourriture"' }, { bisaya: 'Lami kaayo!', native: 'Très délicieux!', explanation: '"Lami" signifie "délicieux", "kaayo" est "très"' }, { bisaya: 'Busog na ko.', native: 'Je suis rassasié.', explanation: '"Busog" signifie "rassasié", "na" est "déjà", "ko" est "je"' }, { bisaya: 'Kumusta ang pagkaon?', native: 'Comment est la nourriture?', explanation: '"Kumusta" est "Comment", "ang pagkaon" est "la nourriture"' }, { bisaya: 'Maayo kaayo ang pagkaon.', native: 'La nourriture est très bonne.', explanation: '"Maayo" est "bonne", "kaayo" est "très", "ang pagkaon" est "la nourriture"' } ], 'Essen & Trinken': [ { bisaya: 'Kan-on', native: 'Riz', explanation: '"Kan-on" est le mot de base pour "riz"' }, { bisaya: 'Tubig', native: 'Eau', explanation: '"Tubig" signifie "eau"' }, { bisaya: 'Pan', native: 'Pain', explanation: '"Pan" signifie "pain"' }, { bisaya: 'Isda', native: 'Poisson', explanation: '"Isda" signifie "poisson"' }, { bisaya: 'Manok', native: 'Poulet', explanation: '"Manok" signifie "poulet"' }, { bisaya: 'Baboy', native: 'Porc', explanation: '"Baboy" signifie "porc"' }, { bisaya: 'Gulay', native: 'Légumes', explanation: '"Gulay" signifie "légumes"' }, { bisaya: 'Prutas', native: 'Fruit', explanation: '"Prutas" signifie "fruit"' }, { bisaya: 'Gatas', native: 'Lait', explanation: '"Gatas" signifie "lait"' }, { bisaya: 'Kape', native: 'Café', explanation: '"Kape" signifie "café"' }, { bisaya: 'Tsa', native: 'Thé', explanation: '"Tsa" signifie "thé"' }, { bisaya: 'Asin', native: 'Sel', explanation: '"Asin" signifie "sel"' }, { bisaya: 'Asukar', native: 'Sucre', explanation: '"Asukar" signifie "sucre"' }, { bisaya: 'Tinapay', native: 'Pain (alternatif)', explanation: '"Tinapay" est un terme alternatif pour "pain"' }, { bisaya: 'Bugas', native: 'Riz (cru)', explanation: '"Bugas" est riz cru, "kan-on" est riz cuit' } ] }, 'Italienisch': { 'Essen & Fürsorge': [ { bisaya: 'Gutom na ko.', native: 'Ho fame.', explanation: '"Gutom" significa "fame", "na" è "già", "ko" è "io"' }, { bisaya: 'Gihikap ko.', native: 'Ho sete.', explanation: '"Gihikap" significa "sete", "ko" è "io"' }, { bisaya: 'Gusto ka mokaon?', native: 'Vuoi mangiare?', explanation: '"Gusto" significa "volere", "ka" è "tu", "mokaon" è "mangiare"' }, { bisaya: 'Oo, gusto ko.', native: 'Sì, voglio.', explanation: '"Oo" è "Sì", "gusto ko" è "voglio"' }, { bisaya: 'Unsa ang gusto nimo?', native: 'Cosa vuoi?', explanation: '"Unsa" è "Cosa", "ang" è articolo, "gusto nimo" è "vuoi"' }, { bisaya: 'Gusto ko ug kan-on.', native: 'Voglio riso.', explanation: '"Gusto ko" è "voglio", "ug kan-on" è "riso"' }, { bisaya: 'Palihug, hatagi ko ug tubig.', native: 'Per favore, dammi acqua.', explanation: '"Palihug" è "Per favore", "hatagi" è "dare", "ko" è "mi", "ug tubig" è "acqua"' }, { bisaya: 'Salamat sa pagkaon.', native: 'Grazie per il cibo.', explanation: '"Salamat" è "Grazie", "sa pagkaon" è "per il cibo"' }, { bisaya: 'Lami kaayo!', native: 'Molto delizioso!', explanation: '"Lami" significa "delizioso", "kaayo" è "molto"' }, { bisaya: 'Busog na ko.', native: 'Sono sazio.', explanation: '"Busog" significa "sazio", "na" è "già", "ko" è "io"' }, { bisaya: 'Kumusta ang pagkaon?', native: 'Com\'è il cibo?', explanation: '"Kumusta" è "Come", "ang pagkaon" è "il cibo"' }, { bisaya: 'Maayo kaayo ang pagkaon.', native: 'Il cibo è molto buono.', explanation: '"Maayo" è "buono", "kaayo" è "molto", "ang pagkaon" è "il cibo"' } ], 'Essen & Trinken': [ { bisaya: 'Kan-on', native: 'Riso', explanation: '"Kan-on" è la parola base per "riso"' }, { bisaya: 'Tubig', native: 'Acqua', explanation: '"Tubig" significa "acqua"' }, { bisaya: 'Pan', native: 'Pane', explanation: '"Pan" significa "pane"' }, { bisaya: 'Isda', native: 'Pesce', explanation: '"Isda" significa "pesce"' }, { bisaya: 'Manok', native: 'Pollo', explanation: '"Manok" significa "pollo"' }, { bisaya: 'Baboy', native: 'Maiale', explanation: '"Baboy" significa "maiale"' }, { bisaya: 'Gulay', native: 'Verdura', explanation: '"Gulay" significa "verdura"' }, { bisaya: 'Prutas', native: 'Frutta', explanation: '"Prutas" significa "frutta"' }, { bisaya: 'Gatas', native: 'Latte', explanation: '"Gatas" significa "latte"' }, { bisaya: 'Kape', native: 'Caffè', explanation: '"Kape" significa "caffè"' }, { bisaya: 'Tsa', native: 'Tè', explanation: '"Tsa" significa "tè"' }, { bisaya: 'Asin', native: 'Sale', explanation: '"Asin" significa "sale"' }, { bisaya: 'Asukar', native: 'Zucchero', explanation: '"Asukar" significa "zucchero"' }, { bisaya: 'Tinapay', native: 'Pane (alternativo)', explanation: '"Tinapay" è un termine alternativo per "pane"' }, { bisaya: 'Bugas', native: 'Riso (crudo)', explanation: '"Bugas" è riso crudo, "kan-on" è riso cotto' } ] }, 'Portugiesisch': { 'Essen & Fürsorge': [ { bisaya: 'Gutom na ko.', native: 'Tenho fome.', explanation: '"Gutom" significa "fome", "na" é "já", "ko" é "eu"' }, { bisaya: 'Gihikap ko.', native: 'Tenho sede.', explanation: '"Gihikap" significa "sede", "ko" é "eu"' }, { bisaya: 'Gusto ka mokaon?', native: 'Quer comer?', explanation: '"Gusto" significa "querer", "ka" é "você", "mokaon" é "comer"' }, { bisaya: 'Oo, gusto ko.', native: 'Sim, quero.', explanation: '"Oo" é "Sim", "gusto ko" é "quero"' }, { bisaya: 'Unsa ang gusto nimo?', native: 'O que você quer?', explanation: '"Unsa" é "O que", "ang" é artigo, "gusto nimo" é "você quer"' }, { bisaya: 'Gusto ko ug kan-on.', native: 'Quero arroz.', explanation: '"Gusto ko" é "quero", "ug kan-on" é "arroz"' }, { bisaya: 'Palihug, hatagi ko ug tubig.', native: 'Por favor, me dê água.', explanation: '"Palihug" é "Por favor", "hatagi" é "dar", "ko" é "me", "ug tubig" é "água"' }, { bisaya: 'Salamat sa pagkaon.', native: 'Obrigado pela comida.', explanation: '"Salamat" é "Obrigado", "sa pagkaon" é "pela comida"' }, { bisaya: 'Lami kaayo!', native: 'Muito delicioso!', explanation: '"Lami" significa "delicioso", "kaayo" é "muito"' }, { bisaya: 'Busog na ko.', native: 'Estou cheio.', explanation: '"Busog" significa "cheio", "na" é "já", "ko" é "eu"' }, { bisaya: 'Kumusta ang pagkaon?', native: 'Como está a comida?', explanation: '"Kumusta" é "Como", "ang pagkaon" é "a comida"' }, { bisaya: 'Maayo kaayo ang pagkaon.', native: 'A comida está muito boa.', explanation: '"Maayo" é "boa", "kaayo" é "muito", "ang pagkaon" é "a comida"' } ], 'Essen & Trinken': [ { bisaya: 'Kan-on', native: 'Arroz', explanation: '"Kan-on" é a palavra básica para "arroz"' }, { bisaya: 'Tubig', native: 'Água', explanation: '"Tubig" significa "água"' }, { bisaya: 'Pan', native: 'Pão', explanation: '"Pan" significa "pão"' }, { bisaya: 'Isda', native: 'Peixe', explanation: '"Isda" significa "peixe"' }, { bisaya: 'Manok', native: 'Frango', explanation: '"Manok" significa "frango"' }, { bisaya: 'Baboy', native: 'Porco', explanation: '"Baboy" significa "porco"' }, { bisaya: 'Gulay', native: 'Legumes', explanation: '"Gulay" significa "legumes"' }, { bisaya: 'Prutas', native: 'Fruta', explanation: '"Prutas" significa "fruta"' }, { bisaya: 'Gatas', native: 'Leite', explanation: '"Gatas" significa "leite"' }, { bisaya: 'Kape', native: 'Café', explanation: '"Kape" significa "café"' }, { bisaya: 'Tsa', native: 'Chá', explanation: '"Tsa" significa "chá"' }, { bisaya: 'Asin', native: 'Sal', explanation: '"Asin" significa "sal"' }, { bisaya: 'Asukar', native: 'Açúcar', explanation: '"Asukar" significa "açúcar"' }, { bisaya: 'Tinapay', native: 'Pão (alternativo)', explanation: '"Tinapay" é um termo alternativo para "pão"' }, { bisaya: 'Bugas', native: 'Arroz (cru)', explanation: '"Bugas" é arroz cru, "kan-on" é arroz cozido' } ] }, 'Tagalog': { 'Essen & Fürsorge': [ { bisaya: 'Gutom na ko.', native: 'Gutom na ako.', explanation: '"Gutom" ay "gutom", "na" ay "na", "ko" ay "ako"' }, { bisaya: 'Gihikap ko.', native: 'Nauuhaw ako.', explanation: '"Gihikap" ay "nauuhaw", "ko" ay "ako"' }, { bisaya: 'Gusto ka mokaon?', native: 'Gusto mo bang kumain?', explanation: '"Gusto" ay "gusto", "ka" ay "mo", "mokaon" ay "kumain"' }, { bisaya: 'Oo, gusto ko.', native: 'Oo, gusto ko.', explanation: '"Oo" ay "Oo", "gusto ko" ay "gusto ko"' }, { bisaya: 'Unsa ang gusto nimo?', native: 'Ano ang gusto mo?', explanation: '"Unsa" ay "Ano", "ang" ay "ang", "gusto nimo" ay "gusto mo"' }, { bisaya: 'Gusto ko ug kan-on.', native: 'Gusto ko ng kanin.', explanation: '"Gusto ko" ay "gusto ko", "ug kan-on" ay "kanin"' }, { bisaya: 'Palihug, hatagi ko ug tubig.', native: 'Pakiusap, bigyan mo ako ng tubig.', explanation: '"Palihug" ay "Pakiusap", "hatagi" ay "bigyan", "ko" ay "ako", "ug tubig" ay "tubig"' }, { bisaya: 'Salamat sa pagkaon.', native: 'Salamat sa pagkain.', explanation: '"Salamat" ay "Salamat", "sa pagkaon" ay "sa pagkain"' }, { bisaya: 'Lami kaayo!', native: 'Masarap talaga!', explanation: '"Lami" ay "masarap", "kaayo" ay "talaga"' }, { bisaya: 'Busog na ko.', native: 'Busog na ako.', explanation: '"Busog" ay "busog", "na" ay "na", "ko" ay "ako"' }, { bisaya: 'Kumusta ang pagkaon?', native: 'Kumusta ang pagkain?', explanation: '"Kumusta" ay "Kumusta", "ang pagkaon" ay "ang pagkain"' }, { bisaya: 'Maayo kaayo ang pagkaon.', native: 'Mabuti talaga ang pagkain.', explanation: '"Maayo" ay "mabuti", "kaayo" ay "talaga", "ang pagkaon" ay "ang pagkain"' } ], 'Essen & Trinken': [ { bisaya: 'Kan-on', native: 'Kanin', explanation: '"Kan-on" ay ang salitang base para sa "kanin"' }, { bisaya: 'Tubig', native: 'Tubig', explanation: '"Tubig" ay "tubig"' }, { bisaya: 'Pan', native: 'Tinapay', explanation: '"Pan" ay "tinapay"' }, { bisaya: 'Isda', native: 'Isda', explanation: '"Isda" ay "isda"' }, { bisaya: 'Manok', native: 'Manok', explanation: '"Manok" ay "manok"' }, { bisaya: 'Baboy', native: 'Baboy', explanation: '"Baboy" ay "baboy"' }, { bisaya: 'Gulay', native: 'Gulay', explanation: '"Gulay" ay "gulay"' }, { bisaya: 'Prutas', native: 'Prutas', explanation: '"Prutas" ay "prutas"' }, { bisaya: 'Gatas', native: 'Gatas', explanation: '"Gatas" ay "gatas"' }, { bisaya: 'Kape', native: 'Kape', explanation: '"Kape" ay "kape"' }, { bisaya: 'Tsa', native: 'Tsa', explanation: '"Tsa" ay "tsa"' }, { bisaya: 'Asin', native: 'Asin', explanation: '"Asin" ay "asin"' }, { bisaya: 'Asukar', native: 'Asukal', explanation: '"Asukar" ay "asukal"' }, { bisaya: 'Tinapay', native: 'Tinapay', explanation: '"Tinapay" ay "tinapay"' }, { bisaya: 'Bugas', native: 'Bigas', explanation: '"Bugas" ay "bigas", "kan-on" ay "kanin"' } ] } }; // Kombiniere alle Sprachen const ALL_FOOD_CARE = { ...FOOD_CARE_CONVERSATIONS, ...ADDITIONAL_LANGUAGES }; async function findOrCreateSystemUser() { let systemUser = await User.findOne({ where: { username: { [Op.in]: ['system', 'admin', 'System', 'Admin'] } } }); if (!systemUser) { console.error('❌ System-Benutzer nicht gefunden.'); throw new Error('System user not found'); } return systemUser; } async function updateFoodCareExercises() { await sequelize.authenticate(); console.log('Datenbankverbindung erfolgreich hergestellt.\n'); const systemUser = await findOrCreateSystemUser(); console.log(`Verwende System-Benutzer: ${systemUser.username} (ID: ${systemUser.id})\n`); // Finde alle Bisaya-Kurse const [bisayaLanguage] = await sequelize.query( `SELECT id FROM community.vocab_language WHERE name = 'Bisaya' LIMIT 1`, { type: sequelize.QueryTypes.SELECT } ); if (!bisayaLanguage) { console.error('❌ Bisaya-Sprache nicht gefunden.'); return; } const courses = await VocabCourse.findAll({ where: { languageId: bisayaLanguage.id }, include: [ { model: sequelize.models.VocabLanguage, as: 'nativeLanguage', attributes: ['name'] } ] }); console.log(`Gefunden: ${courses.length} Bisaya-Kurse\n`); let totalExercisesCreated = 0; let totalLessonsUpdated = 0; for (const course of courses) { console.log(`📚 Kurs: ${course.title} (ID: ${course.id})`); const nativeLangName = course.nativeLanguage?.name || 'Deutsch'; console.log(` Muttersprache: ${nativeLangName}`); // Finde "Essen & Fürsorge" und "Essen & Trinken" Lektionen const lessons = await VocabCourseLesson.findAll({ where: { courseId: course.id, title: ['Essen & Fürsorge', 'Essen & Trinken'] }, order: [['lessonNumber', 'ASC']] }); console.log(` ${lessons.length} Lektion(en) gefunden\n`); for (const lesson of lessons) { const conversations = ALL_FOOD_CARE[nativeLangName]?.[lesson.title]; if (!conversations || conversations.length === 0) { console.log(` ⚠️ Lektion ${lesson.lessonNumber}: "${lesson.title}" - keine Übungen für Muttersprache "${nativeLangName}" definiert`); continue; } // Lösche bestehende Übungen const deletedCount = await VocabGrammarExercise.destroy({ where: { lessonId: lesson.id } }); console.log(` 🗑️ Lektion ${lesson.lessonNumber}: "${lesson.title}" - ${deletedCount} alte Übung(en) gelöscht`); // Erstelle neue Übungen basierend auf dem Lektionstyp let exerciseNumber = 1; if (lesson.title === 'Essen & Fürsorge') { // Gesprächsübungen für "Essen & Fürsorge" for (const conv of conversations) { // Multiple Choice: Übersetzung von Muttersprache zu Bisaya await VocabGrammarExercise.create({ lessonId: lesson.id, exerciseTypeId: 2, // multiple_choice exerciseNumber: exerciseNumber++, title: `Wie sagt man "${conv.native}"?`, instruction: 'Wähle die richtige Übersetzung.', questionData: JSON.stringify({ type: 'multiple_choice', question: `Wie sagt man "${conv.native}" auf Bisaya?`, options: [ conv.bisaya, conversations[(exerciseNumber - 2 + 1) % conversations.length]?.bisaya || 'Salamat', conversations[(exerciseNumber - 2 + 2) % conversations.length]?.bisaya || 'Maayo', conversations[(exerciseNumber - 2 + 3) % conversations.length]?.bisaya || 'Palihug' ] }), answerData: JSON.stringify({ type: 'multiple_choice', correctAnswer: 0 }), explanation: conv.explanation, createdByUserId: course.ownerUserId || systemUser.id }); totalExercisesCreated++; // Multiple Choice: Übersetzung von Bisaya zu Muttersprache await VocabGrammarExercise.create({ lessonId: lesson.id, exerciseTypeId: 2, // multiple_choice exerciseNumber: exerciseNumber++, title: `Was bedeutet "${conv.bisaya}"?`, instruction: 'Wähle die richtige Übersetzung.', questionData: JSON.stringify({ type: 'multiple_choice', question: `Was bedeutet "${conv.bisaya}"?`, options: [ conv.native, conversations[(exerciseNumber - 3 + 1) % conversations.length]?.native || 'Danke', conversations[(exerciseNumber - 3 + 2) % conversations.length]?.native || 'Bitte', conversations[(exerciseNumber - 3 + 3) % conversations.length]?.native || 'Gut' ] }), answerData: JSON.stringify({ type: 'multiple_choice', correctAnswer: 0 }), explanation: conv.explanation, createdByUserId: course.ownerUserId || systemUser.id }); totalExercisesCreated++; } // Transformation-Übungen const selectedConvs = conversations.slice(0, 3); for (const conv of selectedConvs) { await VocabGrammarExercise.create({ lessonId: lesson.id, exerciseTypeId: 4, // transformation exerciseNumber: exerciseNumber++, title: `Übersetze: "${conv.native}"`, instruction: 'Übersetze den Satz ins Bisaya.', questionData: JSON.stringify({ type: 'transformation', text: conv.native, sourceLanguage: nativeLangName, targetLanguage: 'Bisaya' }), answerData: JSON.stringify({ type: 'transformation', correct: conv.bisaya, alternatives: [] }), explanation: conv.explanation, createdByUserId: course.ownerUserId || systemUser.id }); totalExercisesCreated++; } } else if (lesson.title === 'Essen & Trinken') { // Vokabular-Übungen für "Essen & Trinken" for (const vocab of conversations) { // Multiple Choice: Muttersprache -> Bisaya await VocabGrammarExercise.create({ lessonId: lesson.id, exerciseTypeId: 2, // multiple_choice exerciseNumber: exerciseNumber++, title: `Wie sagt man "${vocab.native}"?`, instruction: 'Wähle die richtige Übersetzung.', questionData: JSON.stringify({ type: 'multiple_choice', question: `Wie sagt man "${vocab.native}" auf Bisaya?`, options: [ vocab.bisaya, conversations[(exerciseNumber - 2 + 1) % conversations.length]?.bisaya || 'Salamat', conversations[(exerciseNumber - 2 + 2) % conversations.length]?.bisaya || 'Maayo', conversations[(exerciseNumber - 2 + 3) % conversations.length]?.bisaya || 'Palihug' ] }), answerData: JSON.stringify({ type: 'multiple_choice', correctAnswer: 0 }), explanation: vocab.explanation, createdByUserId: course.ownerUserId || systemUser.id }); totalExercisesCreated++; // Multiple Choice: Bisaya -> Muttersprache await VocabGrammarExercise.create({ lessonId: lesson.id, exerciseTypeId: 2, // multiple_choice exerciseNumber: exerciseNumber++, title: `Was bedeutet "${vocab.bisaya}"?`, instruction: 'Wähle die richtige Übersetzung.', questionData: JSON.stringify({ type: 'multiple_choice', question: `Was bedeutet "${vocab.bisaya}"?`, options: [ vocab.native, conversations[(exerciseNumber - 3 + 1) % conversations.length]?.native || 'Danke', conversations[(exerciseNumber - 3 + 2) % conversations.length]?.native || 'Bitte', conversations[(exerciseNumber - 3 + 3) % conversations.length]?.native || 'Gut' ] }), answerData: JSON.stringify({ type: 'multiple_choice', correctAnswer: 0 }), explanation: vocab.explanation, createdByUserId: course.ownerUserId || systemUser.id }); totalExercisesCreated++; } } } console.log(` ✅ ${lessons.length} Lektion(en) aktualisiert\n`); totalLessonsUpdated += lessons.length; } console.log(`\n🎉 Zusammenfassung:`); console.log(` ${totalLessonsUpdated} Lektionen aktualisiert`); console.log(` ${totalExercisesCreated} neue Grammatik-Übungen erstellt`); } updateFoodCareExercises() .then(() => { sequelize.close(); process.exit(0); }) .catch((error) => { console.error('❌ Fehler:', error); sequelize.close(); process.exit(1); });