Files
iag-dev-evaluator/prisma/schema.prisma

90 lines
2.7 KiB
Plaintext

// IA Gen Maturity Evaluator - Prisma Schema
// SQLite for local dev; switch to Postgres for production
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model User {
id String @id @default(cuid())
email String @unique
name String?
role String @default("evaluator") // evaluator | admin
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Template {
id String @id // "full-15"
name String
dimensions TemplateDimension[]
evaluations Evaluation[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model TemplateDimension {
id String @id @default(cuid())
templateId String
template Template @relation(fields: [templateId], references: [id], onDelete: Cascade)
slug String // "tools", "prompts", etc.
orderIndex Int
title String
rubric String // "1:X;2:Y;3:Z;4:A;5:B" or "1-5"
suggestedQuestions String? // JSON array: ["Q1", "Q2", "Q3"]
dimensionScores DimensionScore[]
@@unique([templateId, slug])
}
model Evaluation {
id String @id @default(cuid())
candidateName String
candidateRole String
evaluatorName String
evaluationDate DateTime
templateId String
template Template @relation(fields: [templateId], references: [id])
status String @default("draft") // draft | submitted
findings String? // auto-generated summary
recommendations String?
dimensionScores DimensionScore[]
auditLogs AuditLog[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model DimensionScore {
id String @id @default(cuid())
evaluationId String
evaluation Evaluation @relation(fields: [evaluationId], references: [id], onDelete: Cascade)
dimensionId String
dimension TemplateDimension @relation(fields: [dimensionId], references: [id], onDelete: Cascade)
score Int? // 1-5
justification String?
examplesObserved String?
confidence String? // low | med | high
candidateNotes String? // evaluator's notes from interview
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([evaluationId, dimensionId])
}
model AuditLog {
id String @id @default(cuid())
evaluationId String
evaluation Evaluation @relation(fields: [evaluationId], references: [id], onDelete: Cascade)
action String // created | updated | submitted | score_changed
field String?
oldValue String?
newValue String?
userId String?
createdAt DateTime @default(now())
}