001project_wildgrowth/backend/scripts/migrate-prompt-configs.ts

112 lines
3.3 KiB
TypeScript
Raw Permalink Normal View History

2026-02-11 15:26:03 +08:00
/**
* 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);
});