/**
 * 同步 resume_info 表结构
 * 用于创建或更新数据库表
 */

const db = require('../api/middleware/dbProxy');

async function syncResumeTable() {
    console.log('🔄 开始同步 resume_info 表结构...\n');

    try {
        // 获取模型
        const resume_info = db.getModel('resume_info');

        if (!resume_info) {
            console.error('❌ 无法获取 resume_info 模型');
            return;
        }

        // 同步表结构（force: true 会删除并重建表，慎用！）
        // 如果表已存在且有数据，请使用 alter: true
        console.log('⚠️  注意：使用 alter: true 模式同步（保留现有数据）');
        console.log('如果需要完全重建表，请修改为 force: true\n');

        await resume_info.sync({ alter: true });

        console.log('✅ resume_info 表同步成功！\n');

        // 显示表结构
        const tableInfo = await db.models.sequelize.query(
            `DESCRIBE resume_info`,
            { type: db.models.sequelize.QueryTypes.SELECT }
        );

        console.log('📋 当前表结构：');
        console.table(tableInfo.map(field => ({
            字段名: field.Field,
            类型: field.Type,
            允许空: field.Null,
            默认值: field.Default
        })));

        // 检查关键字段
        const requiredFields = [
            'id',
            'sn_code',
            'account_id',
            'platform',
            'fullName',
            'gender',
            'age',
            'phone',
            'email',
            'education',
            'workYears',
            'expectedPosition',
            'expectedSalary',
            'skills',
            'projectExperience',
            'workExperience',
            'aiSkillTags',
            'aiStrengths',
            'aiWeaknesses',
            'aiCareerSuggestion',
            'aiCompetitiveness',
            'originalData',
            'isActive',
            'syncTime'
        ];
        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✅ 所有必需字段都存在！');
        }

    } catch (error) {
        console.error('❌ 同步失败:', error.message);
        console.error('\n详细错误:', error);
    }
}

// 执行同步
syncResumeTable()
    .then(() => {
        console.log('\n✨ 同步完成！');
        process.exit(0);
    })
    .catch(error => {
        console.error('\n💥 执行失败:', error);
        process.exit(1);
    });

