🎉 feat: initialize 宇之然AI维度 project
- uni-app Vue3 frontend with dark glassmorphism theme - 5 AI dimensions: Origin / Development / Current / Learning / Trend - AI Chat system prompt updated from geometry to AI - 23 AI knowledge articles initialized in DB - Trend API + cron job for daily news - Product pricing (Pro ¥19.9, VIP ¥39.9) - Pinia stores + API utilities - AGENTS.md documentation
This commit is contained in:
+182
@@ -0,0 +1,182 @@
|
||||
/**
|
||||
* 初始化知识数据脚本
|
||||
* 用于填充测试知识内容
|
||||
*/
|
||||
|
||||
const mongoose = require('mongoose')
|
||||
require('dotenv').config()
|
||||
|
||||
// 导入知识模型
|
||||
const Knowledge = require('../src/models/Knowledge')
|
||||
|
||||
// 测试知识数据
|
||||
const testKnowledgeData = [
|
||||
// 一维知识
|
||||
{
|
||||
title: '一维空间的基本概念',
|
||||
content: '一维空间是数学中最简单的空间形式,它只有长度这一个维度。在物理学中,一维空间可以用来描述直线运动,比如物体在直线上来回运动。一维空间的特点是所有点都在同一条直线上,没有宽度和高度。',
|
||||
dim: 1,
|
||||
category: 'concept',
|
||||
tags: ['一维', '空间', '数学'],
|
||||
status: 'approved',
|
||||
isPremium: false,
|
||||
requiredPoints: 0,
|
||||
price: 0
|
||||
},
|
||||
{
|
||||
title: '一维空间的数学表示',
|
||||
content: '在数学中,一维空间通常用实数轴来表示。实数轴上的每个点对应一个实数,点与点之间的距离就是它们对应实数的差的绝对值。一维空间中的向量只有一个分量,可以用一个实数来表示。',
|
||||
dim: 1,
|
||||
category: 'application',
|
||||
tags: ['一维', '数学', '实数轴'],
|
||||
status: 'approved',
|
||||
isPremium: false,
|
||||
requiredPoints: 0,
|
||||
price: 0
|
||||
},
|
||||
|
||||
// 二维知识
|
||||
{
|
||||
title: '二维空间的几何特性',
|
||||
content: '二维空间具有两个维度:长度和宽度。在二维空间中,我们可以定义平面几何图形,如点、线、三角形、圆形等。二维空间中的每个点可以用两个坐标(x, y)来表示。',
|
||||
dim: 2,
|
||||
category: 'concept',
|
||||
tags: ['二维', '几何', '平面'],
|
||||
status: 'approved',
|
||||
isPremium: false,
|
||||
requiredPoints: 10,
|
||||
price: 0
|
||||
},
|
||||
{
|
||||
title: '二维坐标系的应用',
|
||||
content: '二维坐标系在计算机图形学、地理信息系统、工程设计等领域有广泛应用。笛卡尔坐标系是最常见的二维坐标系,它使用相互垂直的x轴和y轴来定位平面上的点。',
|
||||
dim: 2,
|
||||
category: 'application',
|
||||
tags: ['二维', '坐标系', '应用'],
|
||||
status: 'approved',
|
||||
isPremium: false,
|
||||
requiredPoints: 20,
|
||||
price: 0
|
||||
},
|
||||
|
||||
// 三维知识
|
||||
{
|
||||
title: '理解三维空间',
|
||||
content: '三维空间是我们最熟悉的空间形式,它具有长度、宽度和高度三个维度。在三维空间中,物体具有体积,可以定义立体几何图形如立方体、球体、圆柱体等。',
|
||||
dim: 3,
|
||||
category: 'concept',
|
||||
tags: ['三维', '空间', '立体'],
|
||||
status: 'approved',
|
||||
isPremium: false,
|
||||
requiredPoints: 30,
|
||||
price: 0
|
||||
},
|
||||
{
|
||||
title: '三维建模技术',
|
||||
content: '三维建模技术在动画制作、游戏开发、建筑设计等领域有重要应用。常见的三维建模方法包括多边形建模、NURBS建模、体素建模等。',
|
||||
dim: 3,
|
||||
category: 'application',
|
||||
tags: ['三维', '建模', '技术'],
|
||||
status: 'approved',
|
||||
isPremium: false,
|
||||
requiredPoints: 40,
|
||||
price: 0
|
||||
},
|
||||
|
||||
// 四维知识(付费内容)
|
||||
{
|
||||
title: '四维时空的概念',
|
||||
content: '四维时空是爱因斯坦相对论中的核心概念,它将三维空间与时间维度结合。在四维时空中,事件的发生不仅取决于空间位置,还取决于时间点。四维时空的几何特性由闵可夫斯基度规描述。',
|
||||
dim: 4,
|
||||
category: 'concept',
|
||||
tags: ['四维', '时空', '相对论'],
|
||||
status: 'approved',
|
||||
isPremium: true,
|
||||
requiredPoints: 0,
|
||||
price: 9.9
|
||||
},
|
||||
{
|
||||
title: '四维空间的可视化',
|
||||
content: '由于人类无法直接感知四维空间,科学家们开发了多种可视化技术。常见的方法包括投影法、切片法、颜色编码法等,帮助我们理解高维空间的特性。',
|
||||
dim: 4,
|
||||
category: 'application',
|
||||
tags: ['四维', '可视化', '高维'],
|
||||
status: 'approved',
|
||||
isPremium: true,
|
||||
requiredPoints: 0,
|
||||
price: 12.9
|
||||
},
|
||||
|
||||
// 五维知识(高级付费内容)
|
||||
{
|
||||
title: '五维空间的物理意义',
|
||||
content: '五维空间理论在弦理论和卡鲁扎-克莱因理论中有重要应用。在五维空间中,除了三维空间和一维时间外,还可能存在额外的紧致维度。这些理论试图统一引力与其他基本力。',
|
||||
dim: 5,
|
||||
category: 'concept',
|
||||
tags: ['五维', '弦理论', '统一理论'],
|
||||
status: 'approved',
|
||||
isPremium: true,
|
||||
requiredPoints: 0,
|
||||
price: 19.9
|
||||
},
|
||||
{
|
||||
title: '高维空间的数学基础',
|
||||
content: '高维空间的数学研究涉及线性代数、微分几何、拓扑学等多个领域。n维空间中的点可以用n个坐标表示,距离和角度等概念可以通过推广低维空间的定义来建立。',
|
||||
dim: 5,
|
||||
category: 'application',
|
||||
tags: ['高维', '数学', '几何'],
|
||||
status: 'approved',
|
||||
isPremium: true,
|
||||
requiredPoints: 0,
|
||||
price: 24.9
|
||||
}
|
||||
]
|
||||
|
||||
async function initKnowledgeData() {
|
||||
try {
|
||||
// 连接数据库
|
||||
await mongoose.connect(process.env.MONGODB_URI, {
|
||||
useNewUrlParser: true,
|
||||
useUnifiedTopology: true
|
||||
})
|
||||
|
||||
console.log('✅ 数据库连接成功')
|
||||
|
||||
// 清空现有知识数据(可选)
|
||||
await Knowledge.deleteMany({})
|
||||
console.log('✅ 已清空现有知识数据')
|
||||
|
||||
// 插入测试数据
|
||||
const inserted = await Knowledge.insertMany(testKnowledgeData)
|
||||
console.log(`✅ 成功插入 ${inserted.length} 条知识数据`)
|
||||
|
||||
// 显示插入的数据统计
|
||||
const dimCounts = {}
|
||||
inserted.forEach(item => {
|
||||
dimCounts[item.dim] = (dimCounts[item.dim] || 0) + 1
|
||||
})
|
||||
|
||||
console.log('📊 知识数据统计:')
|
||||
Object.keys(dimCounts).sort().forEach(dim => {
|
||||
console.log(` ${dim}维知识: ${dimCounts[dim]} 条`)
|
||||
})
|
||||
|
||||
const premiumCount = inserted.filter(item => item.isPremium).length
|
||||
const freeCount = inserted.length - premiumCount
|
||||
console.log(` 💰 付费内容: ${premiumCount} 条`)
|
||||
console.log(` 🆓 免费内容: ${freeCount} 条`)
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ 初始化知识数据失败:', error)
|
||||
} finally {
|
||||
await mongoose.connection.close()
|
||||
console.log('🔚 数据库连接已关闭')
|
||||
}
|
||||
}
|
||||
|
||||
// 执行初始化
|
||||
if (require.main === module) {
|
||||
initKnowledgeData()
|
||||
}
|
||||
|
||||
module.exports = { initKnowledgeData }
|
||||
Reference in New Issue
Block a user