112 lines
3.3 KiB
TypeScript
112 lines
3.3 KiB
TypeScript
/**
|
||
* 迁移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);
|
||
});
|