From 1b75ac0b0d7205580b0feaaa9fb8647b7b0d8102 Mon Sep 17 00:00:00 2001 From: Caihaohan Date: Tue, 27 Jan 2026 20:21:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E8=AF=8D=E8=AF=8D=E4=BA=91=E7=A7=8D=E5=AD=90=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/seed-keyword-cloud.ts | 172 ++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 scripts/seed-keyword-cloud.ts diff --git a/scripts/seed-keyword-cloud.ts b/scripts/seed-keyword-cloud.ts new file mode 100644 index 0000000..d6fd6c3 --- /dev/null +++ b/scripts/seed-keyword-cloud.ts @@ -0,0 +1,172 @@ +import { PrismaClient } from '@prisma/client'; + +const prisma = new PrismaClient(); + +async function main() { + console.log('开始初始化关键词词云数据...'); + + // 1. 创建视觉样式规则 + const rules = [ + { + name: '热门大词-金色', + minScore: 90, + maxScore: 100, + color: 'primary', + size: 'text-5xl', + border: 'border-4', + rotation: 'rotate-1', + priority: 0, + enabled: true, + }, + { + name: '中等词汇-蓝色', + minScore: 70, + maxScore: 89, + color: 'secondary', + size: 'text-3xl', + border: 'border-4', + rotation: 'rotate-2', + priority: 1, + enabled: true, + }, + { + name: '小词汇-紫色', + minScore: 50, + maxScore: 69, + color: 'accent', + size: 'text-xl', + border: 'border-2', + rotation: '-rotate-1', + priority: 2, + enabled: true, + }, + { + name: '长尾词-灰色', + minScore: 0, + maxScore: 49, + color: 'gray', + size: 'text-base', + border: 'border-2', + rotation: null, + priority: 3, + enabled: true, + }, + ]; + + for (const rule of rules) { + await prisma.visualStyleRule.upsert({ + where: { name: rule.name }, + update: rule, + create: rule, + }); + console.log(`✓ 创建规则: ${rule.name}`); + } + + // 2. 创建示例季度(2023-Q1) + const quarter = await prisma.quarter.upsert({ + where: { quarter: '2023-Q1' }, + update: {}, + create: { + quarter: '2023-Q1', + title: '2023年第一季度', + titleEn: 'Q1 2023', + subtitle: '聊天界面的黎明', + subtitleEn: 'The dawn of chat interface', + displayOrder: 0, + isActive: true, + }, + }); + console.log(`✓ 创建季度: ${quarter.quarter}`); + + // 3. 创建示例关键词 + const sampleKeywords = [ + { + word: 'ChatGPT', + trendScore: 98, + description: 'OpenAI 开发的对话式人工智能助手,支持多轮对话', + detailPoints: ['基于 GPT-3.5 架构', '2023年用户突破1亿', '引领对话式AI热潮'], + visualConfig: { + color: 'secondary', + size: 'text-5xl', + border: 'border-4', + rotation: 'rotate-1', + }, + }, + { + word: 'GPT-4', + trendScore: 92, + description: 'OpenAI 发布的多模态大型语言模型', + detailPoints: ['支持图像输入', '推理能力显著提升', '上下文窗口扩大'], + visualConfig: { + color: 'primary', + size: 'text-4xl', + border: 'border-4', + rotation: 'rotate-2', + }, + }, + { + word: 'LLM', + trendScore: 88, + description: 'Large Language Model,大型语言模型', + detailPoints: ['基于Transformer架构', '参数规模达十亿级', '涌现能力'], + visualConfig: { + color: 'secondary', + size: 'text-3xl', + border: 'border-4', + rotation: '-rotate-1', + }, + }, + { + word: 'Prompt Engineering', + trendScore: 85, + description: '提示词工程,优化AI模型输入的技术', + detailPoints: ['Few-shot prompting', '思维链提示', '迭代优化'], + visualConfig: { + color: 'accent', + size: 'text-3xl', + border: 'border-2', + rotation: 'rotate-1', + }, + }, + { + word: 'Transformer', + trendScore: 75, + description: '基于自注意力机制的神经网络架构', + detailPoints: ['并行计算能力强', '成为LLM基础架构', '2017年Google提出'], + visualConfig: { + color: 'secondary', + size: 'text-2xl', + border: 'border-2', + rotation: null, + }, + }, + ]; + + // 先删除已存在的关键词 + await prisma.keyword.deleteMany({ + where: { quarterId: quarter.id }, + }); + + for (const kw of sampleKeywords) { + await prisma.keyword.create({ + data: { + quarterId: quarter.id, + ...kw, + detailPoints: kw.detailPoints as any, + visualConfig: kw.visualConfig as any, + }, + }); + console.log(`✓ 创建关键词: ${kw.word}`); + } + + console.log('\n初始化完成!'); +} + +main() + .catch((e) => { + console.error('错误:', e); + process.exit(1); + }) + .finally(async () => { + await prisma.$disconnect(); + });