dramaling-vocab-learning/test-integration.js

79 lines
3.0 KiB
JavaScript
Raw 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();