imetting_backend/sql/migrate_prompts_table.sql

68 lines
2.2 KiB
MySQL
Raw Normal View History

2025-12-11 08:48:12 +00:00
-- 提示词表改造迁移脚本
-- 将 prompt_config 表的功能整合到 prompts 表
-- 步骤1: 添加新字段
ALTER TABLE prompts
ADD COLUMN task_type ENUM('MEETING_TASK', 'KNOWLEDGE_TASK')
COMMENT '任务类型MEETING_TASK-会议任务, KNOWLEDGE_TASK-知识库任务' AFTER name;
ALTER TABLE prompts
ADD COLUMN is_default BOOLEAN NOT NULL DEFAULT FALSE
COMMENT '是否为该任务类型的默认模板' AFTER content;
-- 步骤2: 修改 is_active 字段(如果存在且类型不是 BOOLEAN
-- 先检查字段是否存在,如果不存在则添加
ALTER TABLE prompts
MODIFY COLUMN is_active BOOLEAN NOT NULL DEFAULT TRUE
COMMENT '是否启用(只有启用的提示词才能被使用)';
-- 步骤3: 删除 tags 字段
ALTER TABLE prompts DROP COLUMN IF EXISTS tags;
-- 步骤4: 从 prompt_config 迁移数据(如果 prompt_config 表存在)
-- 更新 task_type 和 is_default
UPDATE prompts p
LEFT JOIN prompt_config pc ON p.id = pc.prompt_id
SET
p.task_type = CASE
WHEN pc.task_name IS NOT NULL THEN pc.task_name
ELSE 'MEETING_TASK' -- 默认值
END,
p.is_default = CASE
WHEN pc.is_default = 1 THEN TRUE
ELSE FALSE
END
WHERE pc.prompt_id IS NOT NULL OR p.task_type IS NULL;
-- 步骤5: 为所有没有设置 task_type 的提示词设置默认值
UPDATE prompts
SET task_type = 'MEETING_TASK'
WHERE task_type IS NULL;
-- 步骤6: 将 task_type 设置为 NOT NULL
ALTER TABLE prompts
MODIFY COLUMN task_type ENUM('MEETING_TASK', 'KNOWLEDGE_TASK') NOT NULL
COMMENT '任务类型MEETING_TASK-会议任务, KNOWLEDGE_TASK-知识库任务';
-- 步骤7: 确保每个 task_type 只有一个默认提示词
-- 如果有多个默认,只保留 id 最小的那个
UPDATE prompts p1
LEFT JOIN (
SELECT task_type, MIN(id) as min_id
FROM prompts
WHERE is_default = TRUE
GROUP BY task_type
) p2 ON p1.task_type = p2.task_type
SET p1.is_default = FALSE
WHERE p1.is_default = TRUE AND p1.id != p2.min_id;
-- 步骤8: (可选) 备注 prompt_config 表已废弃
-- 如果需要删除 prompt_config 表,取消下面的注释
-- DROP TABLE IF EXISTS prompt_config;
-- 迁移完成
SELECT '提示词表迁移完成!' as message;
SELECT task_type, COUNT(*) as total, SUM(is_default) as default_count
FROM prompts
GROUP BY task_type;