/** * 迁移Prompt配置脚本 * 将 book_content_prompt 重命名为 text_parse_prompt * 添加 direct_generation_prompt 和 continue_course_prompt 的默认值 */ import prisma from '../src/utils/prisma'; import { logger } from '../src/utils/logger'; import { PROMPT_KEYS, DEFAULT_TEXT_PARSE_PROMPT, DEFAULT_DIRECT_GENERATION_PROMPT, DEFAULT_CONTINUE_COURSE_PROMPT, } from '../src/services/promptConfigService'; async function migratePromptConfigs() { try { logger.info('[迁移脚本] 开始迁移Prompt配置...'); // 1. 迁移 book_content_prompt → text_parse_prompt const oldPrompt = await prisma.appConfig.findUnique({ where: { key: 'book_content_prompt' }, }); if (oldPrompt) { // 如果存在旧配置,迁移到新key await prisma.appConfig.upsert({ where: { key: PROMPT_KEYS.TEXT_PARSE }, create: { key: PROMPT_KEYS.TEXT_PARSE, value: oldPrompt.value, updatedAt: new Date(), }, update: { value: oldPrompt.value, updatedAt: new Date(), }, }); logger.info('[迁移脚本] ✅ book_content_prompt 已迁移到 text_parse_prompt'); } else { // 如果不存在,创建默认值 await prisma.appConfig.upsert({ where: { key: PROMPT_KEYS.TEXT_PARSE }, create: { key: PROMPT_KEYS.TEXT_PARSE, value: DEFAULT_TEXT_PARSE_PROMPT, updatedAt: new Date(), }, update: { value: DEFAULT_TEXT_PARSE_PROMPT, updatedAt: new Date(), }, }); logger.info('[迁移脚本] ✅ text_parse_prompt 已创建默认值'); } // 2. 添加 direct_generation_prompt(如果不存在) const directPrompt = await prisma.appConfig.findUnique({ where: { key: PROMPT_KEYS.DIRECT_GENERATION }, }); if (!directPrompt) { await prisma.appConfig.create({ data: { key: PROMPT_KEYS.DIRECT_GENERATION, value: DEFAULT_DIRECT_GENERATION_PROMPT, updatedAt: new Date(), }, }); logger.info('[迁移脚本] ✅ direct_generation_prompt 已创建默认值'); } else { logger.info('[迁移脚本] ℹ️ direct_generation_prompt 已存在,跳过'); } // 3. 添加 continue_course_prompt(如果不存在) const continuePrompt = await prisma.appConfig.findUnique({ where: { key: PROMPT_KEYS.CONTINUE_COURSE }, }); if (!continuePrompt) { await prisma.appConfig.create({ data: { key: PROMPT_KEYS.CONTINUE_COURSE, value: DEFAULT_CONTINUE_COURSE_PROMPT, updatedAt: new Date(), }, }); logger.info('[迁移脚本] ✅ continue_course_prompt 已创建默认值'); } else { logger.info('[迁移脚本] ℹ️ continue_course_prompt 已存在,跳过'); } logger.info('[迁移脚本] ✅ Prompt配置迁移完成'); } catch (error: any) { logger.error(`[迁移脚本] ❌ 迁移失败: ${error.message}`, error); throw error; } finally { await prisma.$disconnect(); } } // 执行迁移 migratePromptConfigs() .then(() => { console.log('✅ 迁移完成'); process.exit(0); }) .catch((error) => { console.error('❌ 迁移失败:', error); process.exit(1); });