generator client { provider = "prisma-client" output = "../src/generated/prisma" } datasource db { provider = "postgresql" } model ResponseCard { id String @id @default(cuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt // Personal Info (Response Card side) name String? gender String? dateOfBirth String? maritalStatus String? maritalStatusOther String? visitType String? cellPhone String? homePhone String? email String? address String? aptNumber String? city String? state String? zip String? prayerRequests String? prayerForTeam Boolean @default(false) prayerConfidential Boolean @default(false) // Survey Info (Easter Survey side) messageTopics Json? messageTopicsOther String? nextStep Json? attendanceDuration String? campusPreference Json? campusPreferenceOther String? howHeard Json? howHeardOther String? serviceAttended String? // Monday.com / Workflow fields followUp String? notes String? serviceTime String? planningCenter String? iSaidYesBookSent Boolean @default(false) ftGuestLetterSent Boolean @default(false) // Meta sourceFile String? frontImagePath String? backImagePath String? ocrStatus String @default("pending") reviewStatus String @default("unreviewed") ocrConfidence Float? ocrError String? rawOcrResponse Json? mondayItemId String? @@index([ocrStatus]) @@index([reviewStatus]) @@index([name]) @@index([createdAt]) @@index([mondayItemId]) } model ProcessingJob { id String @id @default(cuid()) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt fileName String filePath String status String @default("queued") totalPages Int @default(0) processed Int @default(0) error String? cardIds Json? @@index([status]) } model AppSettings { id String @id @default("singleton") ollamaUrl String @default("http://192.168.68.108:11434") model String @default("llava:7b") watchDir String @default("") watching Boolean @default(false) sourceRetentionDays Int @default(30) imageRetentionDays Int @default(180) aiProvider String @default("gateway") aiModel String @default("") mondayApiToken String @default("") mondayBoardId String @default("") mondayEnabled Boolean @default(false) mondayColumnMap Json? mondayWebhookId String @default("") mondayWebhookUrl String @default("") webhookUrl String @default("") webhookSecret String @default("") webhookEnabled Boolean @default(false) webhookEvents Json? emailImapHost String @default("imap.dreamhost.com") emailImapPort Int @default(993) emailImapUser String @default("echo-ocr@stillwell.cloud") emailImapPass String @default("") emailImapTls Boolean @default(true) emailFolder String @default("INBOX") emailWatching Boolean @default(false) emailProcessed String @default("mark_read") emailProcessedFolder String @default("Processed") } model ActivityLog { id String @id @default(cuid()) createdAt DateTime @default(now()) cardId String action String source String summary String changes Json? @@index([cardId, createdAt]) } model Notification { id String @id @default(cuid()) createdAt DateTime @default(now()) read Boolean @default(false) dismissed Boolean @default(false) type String title String message String cardId String? actionUrl String? meta Json? @@index([read, dismissed, createdAt]) @@index([cardId]) }