echos-ocr/prisma/schema.prisma
Randall Stillwell d58285785e Add Monday.com board fields and expand column mapper
- Add followUp, notes, serviceTime, planningCenter, iSaidYesBookSent,
  ftGuestLetterSent fields to ResponseCard to match Monday.com board
- Expand column mapper from 8 fields to all 32 ResponseCard fields with
  friendly labels matching the Easter Survey spreadsheet columns
- Add Workflow & Tracking section on card detail page for the new fields
- Fix pre-existing Buffer type error in images API route

Made-with: Cursor
2026-04-07 12:50:03 -05:00

149 lines
3.9 KiB
Text

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