新增邏輯思維測試與資料庫整合

This commit is contained in:
2025-09-29 00:23:06 +08:00
parent 9b224fa7e1
commit dcd63c5695
12 changed files with 721 additions and 31 deletions

View File

@@ -0,0 +1,45 @@
const mysql = require('mysql2/promise')
async function checkLogicQuestions() {
const config = {
host: process.env.DB_HOST || 'mysql.theaken.com',
port: parseInt(process.env.DB_PORT || '33306'),
user: process.env.DB_USER || 'hr_assessment',
password: process.env.DB_PASSWORD || 'QFOts8FlibiI',
database: process.env.DB_NAME || 'db_hr_assessment',
}
console.log('🔄 正在檢查邏輯思維題目...')
try {
const connection = await mysql.createConnection(config)
const [rows] = await connection.execute('SELECT * FROM logic_questions ORDER BY id')
console.log(`\n📋 共找到 ${rows.length} 道邏輯思維題目:`)
console.log('=' .repeat(80))
rows.forEach((question, index) => {
console.log(`\n${index + 1}. ID: ${question.id}`)
console.log(` 題目: ${question.question}`)
console.log(` A. ${question.option_a}`)
console.log(` B. ${question.option_b}`)
console.log(` C. ${question.option_c}`)
console.log(` D. ${question.option_d}`)
if (question.option_e) {
console.log(` E. ${question.option_e}`)
}
console.log(` 正確答案: ${question.correct_answer}`)
if (question.explanation) {
console.log(` 解說: ${question.explanation}`)
}
})
await connection.end()
console.log('\n✅ 檢查完成')
} catch (error) {
console.error('❌ 檢查失敗:', error.message)
}
}
checkLogicQuestions()

View File

@@ -0,0 +1,39 @@
const mysql = require('mysql2/promise')
async function checkTableStructure() {
const config = {
host: process.env.DB_HOST || 'mysql.theaken.com',
port: parseInt(process.env.DB_PORT || '33306'),
user: process.env.DB_USER || 'hr_assessment',
password: process.env.DB_PASSWORD || 'QFOts8FlibiI',
database: process.env.DB_NAME || 'db_hr_assessment',
}
console.log('🔄 正在檢查資料庫表結構...')
try {
const connection = await mysql.createConnection(config)
// 檢查 logic_questions 表是否存在
const [tables] = await connection.execute("SHOW TABLES LIKE 'logic_questions'")
if (tables.length === 0) {
console.log('❌ logic_questions 表不存在')
} else {
console.log('✅ logic_questions 表存在')
// 檢查表結構
const [columns] = await connection.execute("DESCRIBE logic_questions")
console.log('\n📋 logic_questions 表結構:')
columns.forEach(col => {
console.log(` ${col.Field}: ${col.Type} ${col.Null === 'NO' ? 'NOT NULL' : 'NULL'} ${col.Key ? col.Key : ''}`)
})
}
await connection.end()
} catch (error) {
console.error('❌ 檢查失敗:', error.message)
}
}
checkTableStructure()

View File

@@ -0,0 +1,80 @@
const fetch = require('node-fetch').default || require('node-fetch')
async function testLogicFlow() {
console.log('🔄 正在測試邏輯思維測試完整流程...')
try {
// 1. 測試獲取題目 API
console.log('\n1. 測試獲取題目 API...')
const questionsResponse = await fetch('http://localhost:3000/api/logic-questions')
const questionsData = await questionsResponse.json()
if (questionsData.success) {
console.log(`✅ 成功獲取 ${questionsData.questions.length} 道題目`)
// 檢查第一道題目是否包含 E 選項
const firstQuestion = questionsData.questions[0]
if (firstQuestion.option_e) {
console.log('✅ 題目包含 E 選項')
console.log(` 範例:${firstQuestion.question.substring(0, 30)}...`)
console.log(` E 選項:${firstQuestion.option_e}`)
} else {
console.log('❌ 題目缺少 E 選項')
}
} else {
console.log('❌ 獲取題目失敗:', questionsData.error)
}
// 2. 模擬測試結果
console.log('\n2. 模擬測試結果...')
const mockResults = {
type: "logic",
score: 60,
correctAnswers: 6,
totalQuestions: 10,
answers: {
0: "C",
1: "C",
2: "B",
3: "B",
4: "E",
5: "B",
6: "E",
7: "A",
8: "C",
9: "D"
},
completedAt: new Date().toISOString()
}
console.log('✅ 模擬測試結果已準備')
console.log(` 答對題數:${mockResults.correctAnswers}/${mockResults.totalQuestions}`)
console.log(` 正確率:${mockResults.score}%`)
// 3. 檢查結果頁面需要的數據結構
console.log('\n3. 檢查數據結構...')
const hasAllRequiredFields = questionsData.questions.every(q =>
q.question &&
q.option_a &&
q.option_b &&
q.option_c &&
q.option_d &&
q.option_e &&
q.correct_answer &&
q.explanation
)
if (hasAllRequiredFields) {
console.log('✅ 所有題目都包含完整字段')
} else {
console.log('❌ 部分題目缺少必要字段')
}
console.log('\n✅ 邏輯思維測試流程驗證完成')
} catch (error) {
console.error('❌ 測試失敗:', error.message)
}
}
testLogicFlow()

View File

@@ -0,0 +1,38 @@
const mysql = require('mysql2/promise')
async function updateLogicTable() {
const config = {
host: process.env.DB_HOST || 'mysql.theaken.com',
port: parseInt(process.env.DB_PORT || '33306'),
user: process.env.DB_USER || 'hr_assessment',
password: process.env.DB_PASSWORD || 'QFOts8FlibiI',
database: process.env.DB_NAME || 'db_hr_assessment',
}
console.log('🔄 正在更新 logic_questions 表結構...')
try {
const connection = await mysql.createConnection(config)
// 檢查是否已有 option_e 欄位
const [columns] = await connection.execute("SHOW COLUMNS FROM logic_questions LIKE 'option_e'")
if (columns.length === 0) {
console.log('📝 加入 option_e 欄位...')
await connection.execute("ALTER TABLE logic_questions ADD COLUMN option_e VARCHAR(500) NOT NULL DEFAULT '' AFTER option_d")
console.log('📝 更新 correct_answer 欄位以支援 E 選項...')
await connection.execute("ALTER TABLE logic_questions MODIFY COLUMN correct_answer ENUM('A', 'B', 'C', 'D', 'E') NOT NULL")
console.log('✅ 表結構更新完成')
} else {
console.log('✅ option_e 欄位已存在')
}
await connection.end()
} catch (error) {
console.error('❌ 更新失敗:', error.message)
}
}
updateLogicTable()