// CEFR等級映射 export const getCEFRToLevel = (cefr: string): number => { const mapping: { [key: string]: number } = { 'A1': 20, 'A2': 35, 'B1': 50, 'B2': 65, 'C1': 80, 'C2': 95 } return mapping[cefr] || 50 } // 根據CEFR等級獲取複習類型 export const getReviewTypesByCEFR = (userCEFR: string, wordCEFR: string): string[] => { const userLevel = getCEFRToLevel(userCEFR) const wordLevel = getCEFRToLevel(wordCEFR) const difficulty = wordLevel - userLevel if (userCEFR === 'A1') { return ['flip-memory', 'vocab-choice'] } else if (difficulty < -10) { return ['sentence-reorder', 'sentence-fill'] } else if (difficulty >= -10 && difficulty <= 10) { return ['sentence-fill', 'sentence-reorder'] } else { return ['flip-memory', 'vocab-choice'] } } // 模式標籤映射 export const getModeLabel = (mode: string): string => { const labels: { [key: string]: string } = { 'flip-memory': '翻卡記憶', 'vocab-choice': '詞彙選擇', 'sentence-fill': '例句填空', 'sentence-reorder': '例句重組', 'vocab-listening': '詞彙聽力', 'sentence-listening': '例句聽力', 'sentence-speaking': '例句口說' } return labels[mode] || mode }