Files
YG-Datasets/easy-dataset-main/prisma/schema.prisma

407 lines
14 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "darwin-arm64", "darwin", "windows", "debian-openssl-3.0.x", "linux-arm64-openssl-3.0.x", "debian-openssl-1.1.x"]
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model Projects {
id String @id @default(nanoid(12))
name String
description String
globalPrompt String @default("")
questionPrompt String @default("")
answerPrompt String @default("")
labelPrompt String @default("")
domainTreePrompt String @default("")
cleanPrompt String @default("")
defaultModelConfigId String?
test String @default("")
createAt DateTime @default(now())
updateAt DateTime @updatedAt
Questions Questions[]
Datasets Datasets[]
DatasetConversations DatasetConversations[]
Chunks Chunks[]
ModelConfig ModelConfig[]
UploadFiles UploadFiles[]
Tags Tags[]
Task Task[]
GaPairs GaPairs[]
CustomPrompts CustomPrompts[]
Images Images[]
ImageDatasets ImageDatasets[]
QuestionTemplates QuestionTemplates[]
EvalDatasets EvalDatasets[]
}
model UploadFiles {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
fileName String
fileExt String
path String
size Int
md5 String
createAt DateTime @default(now())
updateAt DateTime @updatedAt
GaPairs GaPairs[]
}
model Chunks {
id String @id @default(nanoid())
name String
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
fileId String
fileName String
content String
summary String
size Int
createAt DateTime @default(now())
updateAt DateTime @updatedAt
Questions Questions[]
EvalDatasets EvalDatasets[]
@@index([projectId])
}
model Tags {
id String @id @default(nanoid())
label String
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
parentId String?
parent Tags? @relation("Tags", fields: [parentId], references: [id])
children Tags[] @relation("Tags")
@@index([projectId, label])
@@index([projectId, parentId])
}
model Questions {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
chunk Chunks @relation(fields: [chunkId], references: [id])
chunkId String
gaPair GaPairs? @relation(fields: [gaPairId], references: [id])
gaPairId String? // Optional: links question to the GA pair that generated it
question String
label String
answered Boolean @default(false)
imageId String? // Optional: for image-based questions
imageName String? // Optional: for image-based questions
templateId String? // Optional: links to ImageQuestionTemplates
createAt DateTime @default(now())
updateAt DateTime @updatedAt
@@index([projectId])
@@index([imageId])
@@index([templateId])
@@index([projectId, label])
}
model Datasets {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
questionId String
question String
answer String
answerType String? @default("text") // 'text' | 'label' | 'custom_format'
chunkName String
chunkContent String
model String
questionLabel String
cot String
confirmed Boolean @default(false)
score Float @default(0)
aiEvaluation String @default("") // AI评估结论
tags String @default("")
note String @default("")
other String @default("") // 存储其他字段的JSON字符串
createAt DateTime @default(now())
updateAt DateTime @updatedAt
@@index([projectId])
@@index([projectId, confirmed, createAt, id], name: "idx_export_confirmed")
@@index([projectId, createAt], name: "idx_project_createAt")
}
model DatasetConversations {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
questionId String // 第一个问题 Id初始问题
question String // 第一个问题(初始问题)
chunkId String // 基于哪个文本块生成
model String
questionLabel String
score Float @default(0)
aiEvaluation String @default("") // AI评估结论
tags String @default("")
note String @default("")
scenario String // 对话场景(教学/咨询/讨论等)
roleA String // 角色A设定
roleB String // 角色B设定
turnCount Int // 实际轮数
maxTurns Int // 设置的最大轮数
rawMessages String // JSON存储完整对话和 ShareGPT 格式保持完全一致)
confirmed Boolean @default(false)
createAt DateTime @default(now())
updateAt DateTime @updatedAt
@@index([projectId])
}
model LlmProviders {
id String @id
name String
apiUrl String
createAt DateTime @default(now())
updateAt DateTime @updatedAt
LlmModels LlmModels[]
}
model LlmModels {
id String @id @default(nanoid())
modelId String
modelName String
provider LlmProviders @relation(fields: [providerId], references: [id])
providerId String
createAt DateTime @default(now())
updateAt DateTime @updatedAt
}
model ModelConfig {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
providerId String
providerName String
endpoint String
apiKey String
modelId String
modelName String
type String
temperature Float
maxTokens Int
topP Float
topK Float
status Int
createAt DateTime @default(now())
updateAt DateTime @updatedAt
}
model Task {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
taskType String // 任务类型: text-processing, question-generation, answer-generation, data-distillation
status Int // 任务状态: 0-处理中, 1-已完成, 2-失败, 3-已中断
startTime DateTime @default(now())
endTime DateTime?
completedCount Int @default(0)
totalCount Int @default(0)
modelInfo String // JSON格式存储包含使用的模型信息
language String @default("zh-CN")
detail String @default("") // 任务详情
note String @default("") // 任务备注
createAt DateTime @default(now())
updateAt DateTime @updatedAt
@@index([projectId])
}
model CustomPrompts {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
promptType String // 提示词类型,对应 lib/llm/prompts 下的文件名
promptKey String // 提示词在模块中的键名,如 QUESTION_PROMPT, QUESTION_PROMPT_EN
language String // 语言: zh-CN, en
content String // 自定义的提示词内容
isActive Boolean @default(true) // 是否启用
createAt DateTime @default(now())
updateAt DateTime @updatedAt
@@unique([projectId, promptType, promptKey, language])
@@index([projectId, promptType])
@@index([projectId, language])
}
model GaPairs {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
uploadFile UploadFiles @relation(fields: [fileId], references: [id], onDelete: Cascade)
fileId String
pairNumber Int // 1-5, representing the 5 generated pairs
genreTitle String // Genre name/title
genreDesc String // Genre description
audienceTitle String // Audience name/title
audienceDesc String // Audience description
isActive Boolean @default(true) // Whether this pair is active for use
questions Questions[] // Questions generated by this GA pair
createAt DateTime @default(now())
updateAt DateTime @updatedAt
@@unique([fileId, pairNumber])
@@index([projectId])
@@index([fileId])
}
model Images {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
imageName String
path String // 图片存储路径
size Int // 文件大小(字节)
width Int? // 图片宽度
height Int? // 图片高度
createAt DateTime @default(now())
updateAt DateTime @updatedAt
ImageDatasets ImageDatasets[]
@@unique([projectId, imageName])
@@index([projectId])
}
model ImageDatasets {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
image Images @relation(fields: [imageId], references: [id], onDelete: Cascade)
imageId String
imageName String
questionId String? // Optional: links to Questions table
question String
answer String // Stores all answer types: text, JSON array for labels, or custom format JSON
answerType String @default("text") // 'text' | 'label' | 'custom_format'
model String
confirmed Boolean @default(false)
score Float @default(0)
tags String @default("")
note String @default("")
createAt DateTime @default(now())
updateAt DateTime @updatedAt
@@index([projectId])
@@index([imageId])
@@index([questionId])
}
model QuestionTemplates {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
question String // Question content
sourceType String // 'image' | 'text' - data source type
answerType String // 'text' | 'label' | 'custom_format'
description String @default("") // Question description
labels String @default("") // JSON array of label options (for answerType='label')
customFormat String @default("") // Custom format definition (for answerType='custom_format')
order Int @default(0) // Display order
createAt DateTime @default(now())
updateAt DateTime @updatedAt
@@index([projectId])
@@index([projectId, sourceType])
}
model LlmUsageLogs {
id String @id @default(nanoid())
projectId String
provider String // 提供商: openai, anthropic, google 等
model String // 模型名称
// 核心指标
inputTokens Int @default(0)
outputTokens Int @default(0)
totalTokens Int @default(0)
latency Int @default(0) // 响应耗时(毫秒)
// 状态与追踪
status String @default("SUCCESS") // 状态: "SUCCESS", "FAILED"
errorMessage String? // 失败原因status="FAILED" 时填写
// 时间维度
createAt DateTime @default(now())
dateString String // 格式 "YYYY-MM-DD",用于快速按天聚合
@@index([projectId, dateString])
@@index([dateString])
@@index([provider])
@@index([model])
}
model EvalDatasets {
id String @id @default(nanoid())
project Projects @relation(fields: [projectId], references: [id], onDelete: Cascade)
projectId String
// 题目内容
question String // 题目内容
questionType String // 题型: true_false, single_choice, multiple_choice, short_answer, open_ended
// 上下文信息(关联到文本块)
chunkId String? // 关联到 Chunks 表
chunks Chunks? @relation(fields: [chunkId], references: [id])
// 选项(仅选择题使用)
options String @default("") // JSON数组: ["选项A", "选项B", "选项C", "选项D"]
// 标准答案
correctAnswer String // 标准答案
tags String @default("") // 标签,逗号分隔
note String @default("") // 备注
// 时间戳
createAt DateTime @default(now())
updateAt DateTime @updatedAt
// 关联评估结果
EvalResults EvalResults[]
@@index([projectId])
@@index([projectId, questionType])
@@index([chunkId])
}
model EvalResults {
id String @id @default(nanoid())
projectId String
taskId String // 关联到 Task 表
// 关联评估题目
evalDataset EvalDatasets @relation(fields: [evalDatasetId], references: [id], onDelete: Cascade)
evalDatasetId String
// 评估结果
modelAnswer String // 模型的回答
score Float @default(0) // 得分 (0-1 之间)
isCorrect Boolean @default(false) // 是否正确(用于客观题)
judgeResponse String @default("") // LLM 评分的响应(用于主观题)
// 答题详情
duration Int @default(0) // 答题耗时(毫秒)
status Int @default(0) // 答题状态0-成功, 1-输出不符合规范, 2-LLM调用报错
errorMessage String @default("") // 答题报错信息
// 时间戳
createAt DateTime @default(now())
updateAt DateTime @updatedAt
@@unique([taskId, evalDatasetId]) // 每个任务对每道题只能有一个结果
@@index([projectId])
@@index([taskId])
@@index([evalDatasetId])
}