chore: initial commit with Phase 0 setup
This commit is contained in:
88
apps/web/prisma/schema.prisma
Normal file
88
apps/web/prisma/schema.prisma
Normal file
@@ -0,0 +1,88 @@
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
}
|
||||
|
||||
model Task {
|
||||
id String @id @default(uuid())
|
||||
title String
|
||||
description String
|
||||
status String // Enum: TaskStatus (OPEN, EXECUTING, VERIFYING, COMPLETED, FAILED, etc)
|
||||
difficulty String // Enum: TaskDifficulty (HELLO_WORLD, COMPONENT, VIEW, EPIC)
|
||||
scope_clarity_score Float
|
||||
error_classification String? // Enum: TaskErrorClassification
|
||||
reward_amount Int // Stored in cents
|
||||
reward_currency String // USD, TWD, USDC
|
||||
acceptance_criteria Json // Contains validation_mode, test_file_content, rules
|
||||
required_stack String[]
|
||||
retry_count Int @default(0)
|
||||
stripe_payment_intent_id String?
|
||||
expires_at DateTime?
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @updatedAt
|
||||
|
||||
claims Claim[]
|
||||
submissions Submission[]
|
||||
}
|
||||
|
||||
model Claim {
|
||||
id String @id @default(uuid())
|
||||
task_id String
|
||||
task Task @relation(fields: [task_id], references: [id])
|
||||
developer_wallet String
|
||||
status String // EXECUTING, CANCELLED, VERIFYING, COMPLETED
|
||||
claim_token String @unique // Idempotency token for this claim
|
||||
held_amount Int
|
||||
held_currency String
|
||||
expires_at DateTime
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @updatedAt
|
||||
|
||||
submissions Submission[]
|
||||
}
|
||||
|
||||
model Submission {
|
||||
id String @id @default(uuid())
|
||||
task_id String
|
||||
task Task @relation(fields: [task_id], references: [id])
|
||||
claim_id String
|
||||
claim Claim @relation(fields: [claim_id], references: [id])
|
||||
status String // VERIFYING, JUDGED
|
||||
deliverables Json // Files and notes submitted
|
||||
estimated_judge_complete_at DateTime?
|
||||
created_at DateTime @default(now())
|
||||
updated_at DateTime @updatedAt
|
||||
|
||||
judge_results JudgeResult[]
|
||||
}
|
||||
|
||||
model JudgeResult {
|
||||
id String @id @default(uuid())
|
||||
submission_id String
|
||||
submission Submission @relation(fields: [submission_id], references: [id])
|
||||
overall_result String // PASS, FAIL, TIMEOUT
|
||||
tests Json // Array of test results
|
||||
artifacts Json? // screenshot_url, logs_url, diff_url
|
||||
error_classification String? // Enum: JudgeErrorClassification
|
||||
error_signature String?
|
||||
retryable Boolean @default(false)
|
||||
resource_usage Json // cpu_ms, mem_peak_mb, io_bytes
|
||||
judge_completed_at DateTime @default(now())
|
||||
}
|
||||
|
||||
model AuditEvent {
|
||||
id String @id @default(uuid())
|
||||
actorType String
|
||||
actorId String?
|
||||
action String
|
||||
entityType String
|
||||
entityId String
|
||||
beforeState Json?
|
||||
afterState Json?
|
||||
reason String?
|
||||
metadata Json?
|
||||
createdAt DateTime @default(now())
|
||||
}
|
||||
Reference in New Issue
Block a user