初始化参数百科网站项目

- Next.js 14 + Tailwind CSS + Prisma
- 模型数据库页面 (列表+详情)
- GPU数据库页面 (列表+详情)
- CPU数据库页面
- 显存计算器工具
- 参数对比工具
- 知识库页面
- 初始数据: 15个模型, 10个GPU, 3个CPU
This commit is contained in:
2026-04-08 10:37:07 +08:00
commit 0561c6da6f
26 changed files with 3018 additions and 0 deletions

215
prisma/schema.prisma Normal file
View 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])
}