/**
 * 添加职位类型数据
 * 添加 web全栈工程师 和 售前工程师 两条记录
 */

const Framework = require('../framework/node-core-framework.js');
const frameworkConfig = require('../config/framework.config.js');

async function addJobTypesData() {
    console.log('🔄 开始添加职位类型数据...\n');

    try {
        // 初始化框架
        console.log('正在初始化框架...');
        await Framework.init(frameworkConfig);
        const models = Framework.getModels();
        
        if (!models || !models.job_types) {
            throw new Error('无法获取 job_types 模型');
        }

        const job_types = models.job_types;

        // 1. 添加 web全栈工程师
        const [webFullStack, created1] = await job_types.findOrCreate({
            where: { name: 'web全栈工程师' },
            defaults: {
                name: 'web全栈工程师',
                description: 'Web全栈开发工程师，掌握前后端技术栈',
                commonSkills: JSON.stringify([
                    'Vue', 'React', 'Angular', 'JavaScript', 'TypeScript', 'Node.js',
                    'Express', 'Koa', 'NestJS', 'Webpack', 'Vite',
                    'HTML5', 'CSS3', 'Sass', 'Less',
                    'MySQL', 'MongoDB', 'Redis',
                    'Git', 'Docker', 'Linux',
                    'RESTful API', 'GraphQL', 'WebSocket'
                ]),
                excludeKeywords: JSON.stringify([
                    '外包', '外派', '驻场', '销售', '客服',
                    '地推', '推广', '市场', '运营'
                ]),
                is_enabled: 1,
                sort_order: 1
            }
        });

        if (created1) {
            console.log('✅ 添加成功：web全栈工程师');
        } else {
            console.log('⚠️  已存在：web全栈工程师');
        }

        // 2. 添加 售前工程师
        const [preSales, created2] = await job_types.findOrCreate({
            where: { name: '售前工程师' },
            defaults: {
                name: '售前工程师',
                description: '售前技术支持工程师，负责技术方案设计和客户沟通',
                commonSkills: JSON.stringify([
                    '技术方案', '产品演示', '客户沟通', '需求分析',
                    '技术咨询', '解决方案', 'PPT制作', '技术文档',
                    '项目管理', '商务谈判', '行业知识'
                ]),
                excludeKeywords: JSON.stringify([
                    '纯销售', '电话销售', '地推', '推广',
                    '客服', '文员', '行政'
                ]),
                is_enabled: 1,
                sort_order: 2
            }
        });

        if (created2) {
            console.log('✅ 添加成功：售前工程师');
        } else {
            console.log('⚠️  已存在：售前工程师');
        }

        // 显示所有职位类型
        console.log('\n📋 当前所有职位类型：');
        const allTypes = await job_types.findAll({
            where: { is_enabled: 1 },
            order: [['sort_order', 'ASC'], ['id', 'ASC']]
        });

        allTypes.forEach((type, index) => {
            const data = type.toJSON();
            console.log(`   ${index + 1}. ${data.name} (ID: ${data.id}, 排序: ${data.sort_order})`);
        });

        console.log('\n✨ 操作完成！');

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

// 执行添加
addJobTypesData()
    .then(() => {
        process.exit(0);
    })
    .catch(error => {
        console.error('\n💥 执行失败:', error);
        process.exit(1);
    });

