-- 提示词表改造迁移脚本 -- 将 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;