Files
autoAiWorkSys/_sql/add_pla_account_json_config_fields.sql
张成 d5d8069573 1
2025-11-26 18:39:15 +08:00

140 lines
5.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 为 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 并执行