實作所有測驗結果與資料庫整合

This commit is contained in:
2025-09-29 19:45:31 +08:00
parent 373036c003
commit afc7580259
12 changed files with 1460 additions and 207 deletions

View File

@@ -1,14 +1,12 @@
const http = require('http')
const testExportSimple = async () => {
console.log('🔍 測試簡化匯出功能')
console.log('🔍 簡單測試匯出功能')
console.log('=' .repeat(30))
try {
// 先測試獲取題目資料
console.log('\n📊 測試獲取邏輯題目資料...')
const logicResponse = await new Promise((resolve, reject) => {
const req = http.get('http://localhost:3000/api/questions/logic', (res) => {
const response = await new Promise((resolve, reject) => {
const req = http.get('http://localhost:3000/api/admin/test-results/export', (res) => {
let data = ''
res.on('data', chunk => data += chunk)
res.on('end', () => resolve({
@@ -19,50 +17,40 @@ const testExportSimple = async () => {
req.on('error', reject)
})
console.log(`狀態碼: ${logicResponse.status}`)
if (logicResponse.status === 200) {
const logicData = JSON.parse(logicResponse.data)
console.log(`成功獲取 ${logicData.data?.length || 0} 道邏輯題目`)
if (logicData.data && logicData.data.length > 0) {
const firstQuestion = logicData.data[0]
console.log(`第一題: ${firstQuestion.question?.substring(0, 50)}...`)
console.log(`選項A: ${firstQuestion.option_a}`)
console.log(`正確答案: ${firstQuestion.correct_answer}`)
if (response.status === 200) {
const data = JSON.parse(response.data)
if (data.success) {
console.log('✅ 匯出成功')
// 解碼並檢查 CSV 內容
const binaryString = Buffer.from(data.data, 'base64').toString('binary')
const csvContent = Buffer.from(binaryString, 'binary').toString('utf-8')
// 只顯示前幾行
const lines = csvContent.split('\n')
console.log('\n📋 CSV 前 10 行:')
lines.slice(0, 10).forEach((line, index) => {
console.log(`${index + 1}: ${line}`)
})
// 檢查是否有「創意」和「平衡」字樣
const hasCreative = csvContent.includes('創意')
const hasBalance = csvContent.includes('平衡')
console.log(`\n🔍 檢查結果:`)
console.log(` 包含「創意」: ${hasCreative ? '是' : '否'}`)
console.log(` 包含「平衡」: ${hasBalance ? '是' : '否'}`)
if (hasCreative && hasBalance) {
console.log('✅ 修復成功!')
} else {
console.log('❌ 仍有問題')
}
} else {
console.log('❌ 匯出失敗:', data.message)
}
} else {
console.log('❌ 獲取邏輯題目失敗')
}
// 測試創意題目
console.log('\n📊 測試獲取創意題目資料...')
const creativeResponse = await new Promise((resolve, reject) => {
const req = http.get('http://localhost:3000/api/questions/creative', (res) => {
let data = ''
res.on('data', chunk => data += chunk)
res.on('end', () => resolve({
status: res.statusCode,
data: data
}))
})
req.on('error', reject)
})
console.log(`狀態碼: ${creativeResponse.status}`)
if (creativeResponse.status === 200) {
const creativeData = JSON.parse(creativeResponse.data)
console.log(`成功獲取 ${creativeData.data?.length || 0} 道創意題目`)
if (creativeData.data && creativeData.data.length > 0) {
const firstQuestion = creativeData.data[0]
console.log(`第一題: ${firstQuestion.statement?.substring(0, 50)}...`)
console.log(`類別: ${firstQuestion.category}`)
console.log(`反向計分: ${firstQuestion.is_reverse}`)
}
} else {
console.log('❌ 獲取創意題目失敗')
console.log('❌ 匯出失敗,狀態碼:', response.status)
}
} catch (error) {
@@ -70,4 +58,4 @@ const testExportSimple = async () => {
}
}
testExportSimple()
testExportSimple()