This commit is contained in:
张成
2025-11-24 13:23:42 +08:00
commit 5d7444cd65
156 changed files with 50653 additions and 0 deletions

View File

@@ -0,0 +1,120 @@
/**
* 同步 job_postings 表结构
* 用于创建或更新数据库表
*/
const Sequelize = require('sequelize');
// 加载配置
const config = require('../config/config');
const dbConfig = config.db;
async function syncJobPostingsTable() {
console.log('🔄 开始同步 job_postings 表结构...\n');
try {
// 创建 Sequelize 实例
const sequelize = new Sequelize(
dbConfig.database,
dbConfig.username,
dbConfig.password,
{
host: dbConfig.host,
port: dbConfig.port,
dialect: dbConfig.dialect,
logging: false
}
);
// 测试连接
await sequelize.authenticate();
console.log('✅ 数据库连接成功\n');
// 加载模型定义
const job_postings = require('../api/model/job_postings')(sequelize);
// 同步表结构alter: true 会自动添加缺失的字段,保留现有数据)
console.log('⚠️ 注意:使用 alter: true 模式同步(保留现有数据)');
console.log('如果需要完全重建表,请修改为 force: true\n');
await job_postings.sync({ alter: true });
console.log('✅ job_postings 表同步成功!\n');
// 显示表结构
const tableInfo = await sequelize.query(
`DESCRIBE job_postings`,
{ type: Sequelize.QueryTypes.SELECT }
);
console.log('📋 当前表结构:');
console.table(tableInfo.map(field => ({
字段名: field.Field,
类型: field.Type,
允许空: field.Null,
默认值: field.Default
})));
// 检查关键字段
const requiredFields = [
'id',
'sn_code',
'platform',
'keyword',
'encryptBossId',
'jobId',
'jobTitle',
'companyId',
'companyName',
'companySize',
'companyIndustry',
'salary',
'jobRequirements',
'jobDescription',
'location',
'experience',
'education',
'aiMatchScore',
'applyStatus',
'chatStatus',
'originalData'
];
const existingFields = tableInfo.map(f => f.Field);
console.log('\n🔍 检查关键字段:');
const missingFields = [];
requiredFields.forEach(field => {
const exists = existingFields.includes(field);
console.log(` ${exists ? '✅' : '❌'} ${field}`);
if (!exists) {
missingFields.push(field);
}
});
if (missingFields.length > 0) {
console.log('\n⚠ 缺少以下字段:', missingFields.join(', '));
console.log('建议:重新运行同步或手动添加这些字段');
} else {
console.log('\n✅ 所有必需字段都存在!');
}
// 关闭连接
await sequelize.close();
} catch (error) {
console.error('❌ 同步失败:', error.message);
console.error('\n详细错误:', error);
}
}
// 执行同步
syncJobPostingsTable()
.then(() => {
console.log('\n✨ 同步完成!');
process.exit(0);
})
.catch(error => {
console.error('\n💥 执行失败:', error);
process.exit(1);
});