// 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]) }