103 lines
3.2 KiB
JavaScript
103 lines
3.2 KiB
JavaScript
const http = require('http')
|
||
const fs = require('fs')
|
||
|
||
const testImportFix = async () => {
|
||
console.log('🔍 測試修正後的匯入功能')
|
||
console.log('=' .repeat(30))
|
||
|
||
try {
|
||
// 創建測試 CSV 檔案
|
||
console.log('\n📊 創建測試 CSV 檔案...')
|
||
|
||
const testLogicCSV = `"題目ID","題目內容","選項A","選項B","選項C","選項D","選項E","正確答案","解釋"
|
||
"1","測試邏輯題目:如果 A > B 且 B > C,那麼?","A > C","A < C","A = C","無法確定","A = B","A","根據傳遞性,A > C"`
|
||
|
||
const testCreativeCSV = `"題目ID","陳述內容","類別","反向計分"
|
||
"1","我喜歡嘗試新的解決方案","innovation","否"
|
||
"2","我習慣按照既定規則工作","flexibility","是"`
|
||
|
||
// 保存測試檔案
|
||
fs.writeFileSync('test-logic-import.csv', testLogicCSV, 'utf8')
|
||
fs.writeFileSync('test-creative-import.csv', testCreativeCSV, 'utf8')
|
||
|
||
console.log('✅ 測試檔案創建成功')
|
||
console.log(' test-logic-import.csv')
|
||
console.log(' test-creative-import.csv')
|
||
|
||
// 測試匯入 API 端點
|
||
console.log('\n📊 測試匯入 API 端點...')
|
||
|
||
// 模擬 FormData 請求(簡化測試)
|
||
const testData = {
|
||
type: 'logic',
|
||
test: true
|
||
}
|
||
|
||
const postData = JSON.stringify(testData)
|
||
|
||
const options = {
|
||
hostname: 'localhost',
|
||
port: 3000,
|
||
path: '/api/questions/import',
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
'Content-Length': Buffer.byteLength(postData)
|
||
}
|
||
}
|
||
|
||
const response = await new Promise((resolve, reject) => {
|
||
const req = http.request(options, (res) => {
|
||
let data = ''
|
||
res.on('data', chunk => data += chunk)
|
||
res.on('end', () => resolve({
|
||
status: res.statusCode,
|
||
data: data
|
||
}))
|
||
})
|
||
req.on('error', reject)
|
||
req.write(postData)
|
||
req.end()
|
||
})
|
||
|
||
console.log(`狀態碼: ${response.status}`)
|
||
console.log(`回應: ${response.data}`)
|
||
|
||
if (response.status === 400) {
|
||
console.log('✅ API 端點正常運作(預期缺少檔案參數)')
|
||
} else if (response.status === 500) {
|
||
console.log('❌ 仍有伺服器錯誤')
|
||
} else {
|
||
console.log('⚠️ 意外的回應狀態')
|
||
}
|
||
|
||
console.log('\n🎯 修正說明:')
|
||
console.log('✅ 移除了 FileReader 依賴')
|
||
console.log('✅ 使用 XLSX 庫直接處理檔案')
|
||
console.log('✅ 在伺服器端定義解析函數')
|
||
console.log('✅ 支援 CSV 和 Excel 格式')
|
||
|
||
console.log('\n📋 使用方式:')
|
||
console.log('1. 下載範本檔案(CSV 格式)')
|
||
console.log('2. 在 Excel 中編輯內容')
|
||
console.log('3. 保存為 CSV 或 Excel 格式')
|
||
console.log('4. 在網頁中選擇檔案並上傳')
|
||
console.log('5. 系統會清空舊資料並插入新資料')
|
||
|
||
} catch (error) {
|
||
console.error('❌ 測試失敗:', error.message)
|
||
} finally {
|
||
// 清理測試檔案
|
||
try {
|
||
fs.unlinkSync('test-logic-import.csv')
|
||
fs.unlinkSync('test-creative-import.csv')
|
||
console.log('\n🧹 測試檔案已清理')
|
||
} catch (e) {
|
||
// 忽略清理錯誤
|
||
}
|
||
console.log('\n✅ 匯入功能修正測試完成')
|
||
}
|
||
}
|
||
|
||
testImportFix()
|