// 純CEFR字符串智能複習系統測試腳本 const API_BASE_URL = 'http://localhost:5008/api'; async function testCEFRIntegration() { console.log('🧪 開始純CEFR字符串智能複習系統測試...\n'); try { // 1. 測試取得到期詞卡 console.log('1️⃣ 測試取得到期詞卡 API...'); const dueResponse = await fetch(`${API_BASE_URL}/flashcards/due?limit=5`); const dueData = await dueResponse.json(); if (dueData.success && dueData.data.length > 0) { console.log('✅ 取得到期詞卡成功:', dueData.data.length, '張詞卡'); const firstCard = dueData.data[0]; console.log(' 第一張詞卡:', firstCard.word, '-', firstCard.translation); console.log(' 詞彙CEFR等級:', firstCard.difficultyLevel); // 2. 測試新的CEFR字符串智能選擇 console.log('\n2️⃣ 測試CEFR字符串智能選擇 API...'); const modeResponse = await fetch(`${API_BASE_URL}/flashcards/${firstCard.id}/optimal-review-mode`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ userCEFRLevel: 'A2', // 使用CEFR字符串 wordCEFRLevel: firstCard.difficultyLevel || 'A2', includeHistory: true }) }); const modeData = await modeResponse.json(); if (modeData.success) { console.log('✅ CEFR智能選擇成功:'); console.log(' 用戶等級: A2'); console.log(' 詞彙等級:', firstCard.difficultyLevel); console.log(' 選擇題型:', modeData.data.selectedMode); console.log(' 適配情境:', modeData.data.adaptationContext); console.log(' 選擇理由:', modeData.data.reason); // 3. 測試復習結果提交 (保持原有格式) console.log('\n3️⃣ 測試復習結果提交 API...'); const reviewResponse = await fetch(`${API_BASE_URL}/flashcards/${firstCard.id}/review`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ isCorrect: true, questionType: modeData.data.selectedMode, userAnswer: 'test answer', timeTaken: 5000 }) }); const reviewData = await reviewResponse.json(); if (reviewData.success) { console.log('✅ 復習結果提交成功:'); console.log(' 新的熟悉度:', reviewData.data.masteryLevel || reviewData.data.newMasteryLevel); console.log(' 下次復習日期:', reviewData.data.nextReviewDate); console.log(' 新間隔天數:', reviewData.data.newInterval || reviewData.data.newIntervalDays); console.log('\n🎉 純CEFR字符串智能複習系統測試完全成功!'); console.log('🔗 系統已成功從數值欄位改為CEFR字符串架構'); console.log('📊 CEFR即時轉換正常運作,無性能問題'); } else { console.log('❌ 復習結果提交失敗:', reviewData.error); } } else { console.log('❌ CEFR智能選擇失敗:', modeData.error); } } else { console.log('❌ 取得到期詞卡失敗:', dueData.error); } } catch (error) { console.error('❌ 測試過程中發生錯誤:', error.message); } } // 執行測試 testCEFRIntegration();