初始化参数百科网站项目
- Next.js 14 + Tailwind CSS + Prisma - 模型数据库页面 (列表+详情) - GPU数据库页面 (列表+详情) - CPU数据库页面 - 显存计算器工具 - 参数对比工具 - 知识库页面 - 初始数据: 15个模型, 10个GPU, 3个CPU
This commit is contained in:
215
prisma/schema.prisma
Normal file
215
prisma/schema.prisma
Normal file
@@ -0,0 +1,215 @@
|
||||
// Prisma schema for ParamHub - 参数百科数据库
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
// 大模型数据
|
||||
model Model {
|
||||
id Int @id @default(autoincrement())
|
||||
name String
|
||||
slug String @unique
|
||||
organization String?
|
||||
parametersCount BigInt? // 参数量(以B为单位存储实际数值)
|
||||
architecture String?
|
||||
layers Int?
|
||||
hiddenSize Int?
|
||||
attentionHeads Int?
|
||||
contextLength Int?
|
||||
trainingTokens BigInt? // 训练token数
|
||||
trainingCostUsd Float?
|
||||
releaseDate DateTime?
|
||||
isOpenSource Boolean @default(false)
|
||||
license String?
|
||||
description String? @db.Text
|
||||
imageUrl String?
|
||||
|
||||
// Benchmark 分数
|
||||
benchmarkMmlu Float?
|
||||
benchmarkHumaneval Float?
|
||||
benchmarkGsm8k Float?
|
||||
benchmarkMath Float?
|
||||
|
||||
// 部署要求
|
||||
minVramFp16 Int? // GB
|
||||
minVramInt8 Int?
|
||||
minVramInt4 Int?
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
// 关联
|
||||
apis ModelApi[]
|
||||
categories ModelCategory[]
|
||||
comparisonsA ModelComparison[] @relation("ModelA")
|
||||
comparisonsB ModelComparison[] @relation("ModelB")
|
||||
|
||||
@@index([organization])
|
||||
@@index([parametersCount])
|
||||
@@index([releaseDate])
|
||||
}
|
||||
|
||||
// 模型API信息
|
||||
model ModelApi {
|
||||
id Int @id @default(autoincrement())
|
||||
modelId Int
|
||||
provider String // OpenAI, Azure, Together, etc.
|
||||
apiName String?
|
||||
inputPricePer1k Float? // 输入价格 $/1K tokens
|
||||
outputPricePer1k Float? // 输出价格 $/1K tokens
|
||||
contextLimit Int?
|
||||
rateLimitRpm Int?
|
||||
available Boolean @default(true)
|
||||
|
||||
model Model @relation(fields: [modelId], references: [id])
|
||||
|
||||
@@index([provider])
|
||||
}
|
||||
|
||||
// 模型分类
|
||||
model ModelCategory {
|
||||
id Int @id @default(autoincrement())
|
||||
modelId Int
|
||||
category String // chat, code, embedding, image, etc.
|
||||
|
||||
model Model @relation(fields: [modelId], references: [id])
|
||||
|
||||
@@unique([modelId, category])
|
||||
}
|
||||
|
||||
// 模型对比记录
|
||||
model ModelComparison {
|
||||
id Int @id @default(autoincrement())
|
||||
modelAId Int
|
||||
modelBId Int
|
||||
comparisonType String? // performance, cost, etc.
|
||||
notes String? @db.Text
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
modelA Model @relation("ModelA", fields: [modelAId], references: [id])
|
||||
modelB Model @relation("ModelB", fields: [modelBId], references: [id])
|
||||
}
|
||||
|
||||
// GPU数据
|
||||
model Gpu {
|
||||
id Int @id @default(autoincrement())
|
||||
name String
|
||||
slug String @unique
|
||||
manufacturer String // NVIDIA, AMD, Intel
|
||||
architecture String?
|
||||
cudaCores Int?
|
||||
tensorCores Int?
|
||||
memoryGb Float?
|
||||
memoryType String? // GDDR6X, HBM2e, etc.
|
||||
memoryBandwidthGbps Float?
|
||||
fp32Tflops Float?
|
||||
fp16Tflops Float?
|
||||
int8Tops Float?
|
||||
tdpWatts Int?
|
||||
priceUsd Float?
|
||||
releaseDate DateTime?
|
||||
recommendedFor String[] // training, inference, gaming
|
||||
imageUrl String?
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@index([manufacturer])
|
||||
@@index([memoryGb])
|
||||
@@index([priceUsd])
|
||||
}
|
||||
|
||||
// CPU数据
|
||||
model Cpu {
|
||||
id Int @id @default(autoincrement())
|
||||
name String
|
||||
slug String @unique
|
||||
manufacturer String // AMD, Intel
|
||||
architecture String?
|
||||
cores Int?
|
||||
threads Int?
|
||||
baseClockGhz Float?
|
||||
boostClockGhz Float?
|
||||
l3CacheMb Int?
|
||||
tdpWatts Int?
|
||||
memoryType String?
|
||||
memoryChannels Int?
|
||||
pcieLanes Int?
|
||||
priceUsd Float?
|
||||
releaseDate DateTime?
|
||||
imageUrl String?
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@index([manufacturer])
|
||||
@@index([cores])
|
||||
}
|
||||
|
||||
// 服务器配置
|
||||
model ServerConfig {
|
||||
id Int @id @default(autoincrement())
|
||||
name String
|
||||
slug String @unique
|
||||
cpuConfig String? @db.Text // JSON
|
||||
gpuConfig String? @db.Text // JSON
|
||||
memoryGb Int?
|
||||
storageConfig String? @db.Text // JSON
|
||||
networkConfig String? @db.Text // JSON
|
||||
totalTdpWatts Int?
|
||||
priceUsd Float?
|
||||
useCase String?
|
||||
description String? @db.Text
|
||||
imageUrl String?
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
// 知识库文章
|
||||
model Article {
|
||||
id Int @id @default(autoincrement())
|
||||
title String
|
||||
slug String @unique
|
||||
category String // explanation, guide, best-practice
|
||||
content String @db.Text // Markdown
|
||||
tags String[]
|
||||
author String?
|
||||
publishedAt DateTime?
|
||||
views Int @default(0)
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@index([category])
|
||||
@@index([tags])
|
||||
}
|
||||
|
||||
// 用户
|
||||
model User {
|
||||
id Int @id @default(autoincrement())
|
||||
email String @unique
|
||||
name String?
|
||||
avatar String?
|
||||
role String @default("user") // user, admin, contributor
|
||||
favorites String[] // 模型/GPU slug列表
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
// 计算器使用记录(可选,用于统计)
|
||||
model CalculatorLog {
|
||||
id Int @id @default(autoincrement())
|
||||
calculatorType String // vram, training-cost, inference-cost
|
||||
inputParams String @db.Text // JSON
|
||||
outputResult String @db.Text // JSON
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@index([calculatorType])
|
||||
}
|
||||
Reference in New Issue
Block a user