dramaling-vocab-learning/test-integration.js

79 lines
3.0 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.

// 智能複習系統串接測試腳本
const API_BASE_URL = 'http://localhost:5008/api';
async function testIntegration() {
console.log('🧪 開始智能複習系統串接測試...\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);
// 2. 測試智能題型選擇
console.log('\n2⃣ 測試智能題型選擇 API...');
const modeResponse = await fetch(`${API_BASE_URL}/flashcards/${firstCard.id}/optimal-review-mode`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
userLevel: firstCard.userLevel || 50,
wordLevel: firstCard.wordLevel || 50
})
});
const modeData = await modeResponse.json();
if (modeData.success) {
console.log('✅ 智能題型選擇成功:');
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🎉 智能複習系統串接測試完全成功!');
console.log('🔗 前後端已成功串接並正常運作');
} else {
console.log('❌ 復習結果提交失敗:', reviewData.error);
}
} else {
console.log('❌ 智能題型選擇失敗:', modeData.error);
}
} else {
console.log('❌ 取得到期詞卡失敗:', dueData.error);
}
} catch (error) {
console.error('❌ 測試過程中發生錯誤:', error.message);
}
}
// 執行測試
testIntegration();