新增 AI 結果與資料庫整合

This commit is contained in:
2025-09-23 20:36:53 +08:00
parent ec7d101e96
commit 46db696122
30 changed files with 2352 additions and 54 deletions

View File

@@ -0,0 +1,98 @@
const mysql = require('mysql2/promise');
// 資料庫配置
const dbConfig = {
host: process.env.DB_HOST || 'localhost',
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_NAME || 'ai_scoring_app',
timezone: '+08:00',
};
async function updateEvaluationTable() {
let connection;
try {
console.log('🔗 連接到資料庫...');
connection = await mysql.createConnection(dbConfig);
console.log('✅ 資料庫連接成功');
// 檢查欄位是否已存在
console.log('🔍 檢查 evaluations 表結構...');
const [columns] = await connection.execute(`
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = 'evaluations'
`, [dbConfig.database]);
const existingColumns = columns.map(col => col.COLUMN_NAME);
console.log('📋 現有欄位:', existingColumns);
// 添加新欄位
const newColumns = [
{ name: 'performance_status', type: 'varchar(50) DEFAULT NULL COMMENT \'表現狀況\'' },
{ name: 'recommended_stars', type: 'int(11) DEFAULT NULL COMMENT \'推薦等級(星星數量)\'' },
{ name: 'excellent_items', type: 'int(11) DEFAULT NULL COMMENT \'優秀項目數量\'' },
{ name: 'improvement_items', type: 'int(11) DEFAULT NULL COMMENT \'待改進項目數量\'' }
];
for (const column of newColumns) {
if (!existingColumns.includes(column.name)) {
console.log(` 添加欄位: ${column.name}`);
await connection.execute(`
ALTER TABLE evaluations
ADD COLUMN \`${column.name}\` ${column.type}
AFTER \`grade\`
`);
console.log(`✅ 欄位 ${column.name} 添加成功`);
} else {
console.log(`⚠️ 欄位 ${column.name} 已存在,跳過`);
}
}
// 驗證更新結果
console.log('🔍 驗證更新結果...');
const [updatedColumns] = await connection.execute(`
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = 'evaluations'
ORDER BY ORDINAL_POSITION
`, [dbConfig.database]);
console.log('📊 更新後的 evaluations 表結構:');
updatedColumns.forEach(col => {
console.log(` - ${col.COLUMN_NAME}: ${col.DATA_TYPE} ${col.IS_NULLABLE === 'YES' ? 'NULL' : 'NOT NULL'} ${col.COLUMN_DEFAULT ? `DEFAULT ${col.COLUMN_DEFAULT}` : ''} ${col.COLUMN_COMMENT ? `(${col.COLUMN_COMMENT})` : ''}`);
});
console.log('\n🎉 evaluations 表更新完成!');
console.log('📝 新增的欄位:');
console.log(' - performance_status: 表現狀況');
console.log(' - recommended_stars: 推薦等級(星星數量)');
console.log(' - excellent_items: 優秀項目數量');
console.log(' - improvement_items: 待改進項目數量');
} catch (error) {
console.error('❌ 更新過程中發生錯誤:', error);
throw error;
} finally {
if (connection) {
await connection.end();
console.log('🔌 資料庫連接已關閉');
}
}
}
// 執行更新
if (require.main === module) {
updateEvaluationTable()
.then(() => {
console.log('✅ 腳本執行完成');
process.exit(0);
})
.catch((error) => {
console.error('❌ 腳本執行失敗:', error);
process.exit(1);
});
}
module.exports = { updateEvaluationTable };