dramaling-vocab-learning/test-cefr-integration.js

84 lines
3.4 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

// 純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();