84 lines
3.4 KiB
JavaScript
84 lines
3.4 KiB
JavaScript
// 純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(); |