實作所有測驗資料的答題詳細內容

This commit is contained in:
2025-09-29 20:18:39 +08:00
parent 18123d6f56
commit b56a9d2ab2
5 changed files with 332 additions and 16 deletions

View File

@@ -0,0 +1,58 @@
const { executeQuery } = require('../lib/database/connection');
async function checkCombinedBreakdown() {
console.log('🔍 檢查綜合測試的 breakdown 資料');
console.log('==============================');
try {
// 檢查 combined_test_results 的 breakdown 資料
const results = await executeQuery('SELECT id, user_id, logic_breakdown, creativity_breakdown FROM combined_test_results LIMIT 3');
results.forEach((result, index) => {
console.log(`\n📋 綜合測試 ${index + 1}:`);
console.log('ID:', result.id);
console.log('User ID:', result.user_id);
console.log('Logic Breakdown 類型:', typeof result.logic_breakdown);
console.log('Creativity Breakdown 類型:', typeof result.creativity_breakdown);
if (result.logic_breakdown) {
console.log('Logic Breakdown 內容:', JSON.stringify(result.logic_breakdown, null, 2));
}
if (result.creativity_breakdown) {
console.log('Creativity Breakdown 內容:', JSON.stringify(result.creativity_breakdown, null, 2));
}
});
// 檢查 logic_test_answers 資料
console.log('\n📋 Logic Test Answers:');
const logicAnswers = await executeQuery('SELECT * FROM logic_test_answers LIMIT 3');
logicAnswers.forEach((answer, index) => {
console.log(`答案 ${index + 1}:`, {
test_result_id: answer.test_result_id,
question_id: answer.question_id,
user_answer: answer.user_answer,
is_correct: answer.is_correct
});
});
// 檢查 creative_test_answers 資料
console.log('\n📋 Creative Test Answers:');
const creativeAnswers = await executeQuery('SELECT * FROM creative_test_answers LIMIT 3');
creativeAnswers.forEach((answer, index) => {
console.log(`答案 ${index + 1}:`, {
test_result_id: answer.test_result_id,
question_id: answer.question_id,
user_answer: answer.user_answer,
score: answer.score
});
});
} catch (error) {
console.error('❌ 檢查失敗:', error.message);
}
console.log('==============================\n');
}
checkCombinedBreakdown();

View File

@@ -0,0 +1,68 @@
const { executeQuery } = require('../lib/database/connection');
async function checkDatabaseStructure() {
console.log('🔍 檢查資料庫結構');
console.log('==============================');
try {
// 檢查 combined_test_results 的結構
console.log('\n📋 combined_test_results 範例:');
const combinedResults = await executeQuery('SELECT * FROM combined_test_results LIMIT 1');
if (combinedResults.length > 0) {
const result = combinedResults[0];
console.log('ID:', result.id);
console.log('User ID:', result.user_id);
console.log('Logic Score:', result.logic_score);
console.log('Creativity Score:', result.creativity_score);
console.log('Balance Score:', result.balance_score);
console.log('Overall Score:', result.overall_score);
console.log('Logic Breakdown:', typeof result.logic_breakdown, result.logic_breakdown);
console.log('Creativity Breakdown:', typeof result.creativity_breakdown, result.creativity_breakdown);
} else {
console.log('沒有 combined_test_results 資料');
}
// 檢查 logic_test_answers 的結構
console.log('\n📋 logic_test_answers 範例:');
const logicAnswers = await executeQuery('SELECT * FROM logic_test_answers LIMIT 3');
if (logicAnswers.length > 0) {
logicAnswers.forEach((answer, index) => {
console.log(`答案 ${index + 1}:`, {
id: answer.id,
test_result_id: answer.test_result_id,
question_id: answer.question_id,
user_answer: answer.user_answer,
correct_answer: answer.correct_answer,
is_correct: answer.is_correct,
explanation: answer.explanation
});
});
} else {
console.log('沒有 logic_test_answers 資料');
}
// 檢查 creative_test_answers 的結構
console.log('\n📋 creative_test_answers 範例:');
const creativeAnswers = await executeQuery('SELECT * FROM creative_test_answers LIMIT 3');
if (creativeAnswers.length > 0) {
creativeAnswers.forEach((answer, index) => {
console.log(`答案 ${index + 1}:`, {
id: answer.id,
test_result_id: answer.test_result_id,
question_id: answer.question_id,
user_answer: answer.user_answer,
score: answer.score
});
});
} else {
console.log('沒有 creative_test_answers 資料');
}
} catch (error) {
console.error('❌ 檢查失敗:', error.message);
}
console.log('==============================\n');
}
checkDatabaseStructure();

View File

@@ -0,0 +1,121 @@
const fetch = require('node-fetch');
async function testDetailedAnswersFixed() {
console.log('🔍 測試修復後的詳細答題結果功能');
console.log('==============================');
try {
// 先獲取測試結果列表
const listResponse = await fetch('http://localhost:3000/api/admin/test-results');
const listData = await listResponse.json();
if (listData.success && listData.data.results.length > 0) {
// 測試綜合能力測試的詳細結果
const combinedResult = listData.data.results.find(r => r.type === 'combined');
if (combinedResult) {
console.log(`📋 測試綜合能力結果: ${combinedResult.userName}`);
console.log(` 分數: ${combinedResult.score}, 等級: ${combinedResult.grade}`);
console.log(` ID: ${combinedResult.id}`);
const detailResponse = await fetch(`http://localhost:3000/api/admin/test-results/detail?testResultId=${combinedResult.id}&testType=combined`);
const detailData = await detailResponse.json();
if (detailData.success) {
console.log('✅ 綜合能力詳細結果獲取成功');
console.log('📊 用戶資訊:', {
name: detailData.data.user.name,
email: detailData.data.user.email,
department: detailData.data.user.department
});
console.log('📈 測試結果:', {
type: detailData.data.result.type,
score: detailData.data.result.score,
completedAt: detailData.data.result.completedAt
});
console.log('🎯 能力分析:', {
logicScore: detailData.data.result.details.logicScore,
creativeScore: detailData.data.result.details.creativeScore,
abilityBalance: detailData.data.result.details.abilityBalance
});
console.log('📝 題目總數:', detailData.data.questions?.length || 0);
if (detailData.data.questions && detailData.data.questions.length > 0) {
const logicQuestions = detailData.data.questions.filter(q => q.type === 'logic');
const creativeQuestions = detailData.data.questions.filter(q => q.type === 'creative');
console.log(`\n🧠 邏輯思維題目: ${logicQuestions.length}`);
console.log(`💡 創意能力題目: ${creativeQuestions.length}`);
if (logicQuestions.length > 0) {
console.log('\n📋 邏輯題詳情:');
logicQuestions.forEach((q, index) => {
console.log(`${index + 1} 題:`, {
question: q.question?.substring(0, 50) + '...',
userAnswer: q.userAnswer,
correctAnswer: q.correctAnswer,
isCorrect: q.isCorrect
});
});
}
if (creativeQuestions.length > 0) {
console.log('\n📋 創意題詳情:');
creativeQuestions.forEach((q, index) => {
console.log(`${index + 1} 題:`, {
statement: q.statement?.substring(0, 50) + '...',
userAnswer: q.userAnswer,
score: q.score
});
});
}
} else {
console.log('⚠️ 沒有找到詳細答題資料');
}
} else {
console.error('❌ 綜合能力詳細結果獲取失敗:', detailData.message);
}
} else {
console.log('⚠️ 沒有找到綜合能力測試結果');
}
// 測試單一測試類型
const singleResult = listData.data.results.find(r => r.type !== 'combined');
if (singleResult) {
console.log(`\n📋 測試單一類型結果: ${singleResult.userName} - ${singleResult.type}`);
const detailResponse = await fetch(`http://localhost:3000/api/admin/test-results/detail?testResultId=${singleResult.id}&testType=${singleResult.type}`);
const detailData = await detailResponse.json();
if (detailData.success) {
console.log('✅ 單一類型詳細結果獲取成功');
console.log('📝 題目數量:', detailData.data.questions?.length || 0);
if (detailData.data.questions && detailData.data.questions.length > 0) {
console.log('\n📋 題目詳情:');
detailData.data.questions.forEach((q, index) => {
console.log(`${index + 1} 題:`, {
question: (q.question || q.statement)?.substring(0, 50) + '...',
userAnswer: q.userAnswer,
isCorrect: q.isCorrect,
score: q.score
});
});
}
} else {
console.error('❌ 單一類型詳細結果獲取失敗:', detailData.message);
}
}
} else {
console.log('⚠️ 沒有找到測試結果');
}
} catch (error) {
console.error('❌ 測試錯誤:', error.message);
}
console.log('==============================\n');
}
testDetailedAnswersFixed();