-- 为 pla_account 表添加 JSON 配置字段
-- 执行时间：2025-01-XX
-- 说明：将自动投递、自动沟通、自动回复、自动活跃的配置项统一到 JSON 配置字段中

-- ============================================
-- 添加自动投递配置字段（deliver_config）
-- ============================================
-- 如果字段已存在则跳过，否则添加
SET @exist_deliver_config = (
    SELECT COUNT(*) 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = 'pla_account' 
    AND COLUMN_NAME = 'deliver_config'
);

SET @sql_deliver_config = IF(@exist_deliver_config = 0,
    'ALTER TABLE `pla_account` 
    ADD COLUMN `deliver_config` JSON COMMENT ''自动投递配置（JSON对象，包含：deliver_interval-投递间隔分钟数, min_salary-最低薪资, max_salary-最高薪资, page_count-滚动获取职位列表次数, max_deliver-每次最多投递数量, filter_keywords-过滤关键词, exclude_keywords-排除关键词）'' 
    AFTER `auto_deliver`',
    'SELECT ''字段 deliver_config 已存在，跳过添加'' AS message'
);

PREPARE stmt FROM @sql_deliver_config;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- ============================================
-- 添加自动沟通策略配置字段（chat_strategy）
-- ============================================
SET @exist_chat_strategy = (
    SELECT COUNT(*) 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = 'pla_account' 
    AND COLUMN_NAME = 'chat_strategy'
);

SET @sql_chat_strategy = IF(@exist_chat_strategy = 0,
    'ALTER TABLE `pla_account` 
    ADD COLUMN `chat_strategy` JSON COMMENT ''自动沟通策略配置（JSON对象，包含：chat_interval-沟通间隔分钟数, is_chat_outsourcing-是否沟通外包岗位, time_range-沟通时间段配置）'' 
    AFTER `auto_chat`',
    'SELECT ''字段 chat_strategy 已存在，跳过添加'' AS message'
);

PREPARE stmt FROM @sql_chat_strategy;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- ============================================
-- 添加自动回复配置字段（reply_config）
-- ============================================
SET @exist_reply_config = (
    SELECT COUNT(*) 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = 'pla_account' 
    AND COLUMN_NAME = 'reply_config'
);

SET @sql_reply_config = IF(@exist_reply_config = 0,
    'ALTER TABLE `pla_account` 
    ADD COLUMN `reply_config` JSON COMMENT ''自动回复配置（JSON对象）'' 
    AFTER `auto_reply`',
    'SELECT ''字段 reply_config 已存在，跳过添加'' AS message'
);

PREPARE stmt FROM @sql_reply_config;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- ============================================
-- 添加自动活跃动作配置字段（active_actions）
-- ============================================
SET @exist_active_actions = (
    SELECT COUNT(*) 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA = DATABASE() 
    AND TABLE_NAME = 'pla_account' 
    AND COLUMN_NAME = 'active_actions'
);

SET @sql_active_actions = IF(@exist_active_actions = 0,
    'ALTER TABLE `pla_account` 
    ADD COLUMN `active_actions` TEXT COMMENT ''自动活跃动作配置（JSON对象，包含：active_interval-活跃间隔分钟数, actions-活跃动作列表）'' 
    AFTER `auto_active`',
    'SELECT ''字段 active_actions 已存在，跳过添加'' AS message'
);

PREPARE stmt FROM @sql_active_actions;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- ============================================
-- 数据迁移说明
-- ============================================
-- 如果需要将旧字段数据迁移到新 JSON 配置字段，可以执行以下 SQL：
-- 
-- 1. 迁移自动投递配置（如果存在旧字段）
-- UPDATE pla_account 
-- SET deliver_config = JSON_OBJECT(
--     'deliver_interval', 30,
--     'min_salary', COALESCE(min_salary, 0),
--     'max_salary', COALESCE(max_salary, 0),
--     'page_count', COALESCE(page_count, 3),
--     'max_deliver', COALESCE(max_deliver, 10),
--     'filter_keywords', COALESCE(filter_keywords, JSON_ARRAY()),
--     'exclude_keywords', COALESCE(exclude_keywords, JSON_ARRAY())
-- )
-- WHERE deliver_config IS NULL AND (min_salary IS NOT NULL OR max_salary IS NOT NULL);
-- 
-- 2. 迁移自动沟通配置（如果存在旧字段）
-- UPDATE pla_account 
-- SET chat_strategy = JSON_OBJECT(
--     'chat_interval', COALESCE(chat_interval, 30),
--     'is_chat_outsourcing', COALESCE(is_chat_outsourcing, 0),
--     'time_range', JSON_OBJECT(
--         'start_time', '09:00',
--         'end_time', '18:00',
--         'workdays_only', 1
--     )
-- )
-- WHERE chat_strategy IS NULL AND (chat_interval IS NOT NULL OR is_chat_outsourcing IS NOT NULL);
-- 
-- 3. 迁移自动活跃配置（如果存在旧字段）
-- UPDATE pla_account 
-- SET active_actions = CONCAT('{"active_interval":', COALESCE(active_interval, 60), ',"actions":[]}')
-- WHERE active_actions IS NULL OR active_actions = '' AND active_interval IS NOT NULL;

-- ============================================
-- 注意事项
-- ============================================
-- 1. deliver_config、chat_strategy、reply_config 使用 JSON 类型（MySQL 5.7+）
-- 2. active_actions 使用 TEXT 类型（兼容已有数据库结构）
-- 3. 如果 MySQL 版本低于 5.7，请将其他 JSON 类型改为 TEXT 类型
-- 4. 执行前建议先备份数据库
-- 5. 字段已存在时会自动跳过，不会报错
-- 6. 如果需要迁移旧数据，请取消注释上面的数据迁移 SQL 并执行

