Aktueller Stand
This commit is contained in:
@@ -31,14 +31,19 @@ enum RuleActionType {
|
||||
DELETE
|
||||
ARCHIVE
|
||||
LABEL
|
||||
MARK_READ
|
||||
MARK_UNREAD
|
||||
}
|
||||
|
||||
enum RuleConditionType {
|
||||
HEADER
|
||||
HEADER_MISSING
|
||||
SUBJECT
|
||||
FROM
|
||||
LIST_UNSUBSCRIBE
|
||||
LIST_ID
|
||||
UNSUBSCRIBE_STATUS
|
||||
SCORE
|
||||
}
|
||||
|
||||
enum ExportStatus {
|
||||
@@ -60,6 +65,42 @@ model Tenant {
|
||||
mailboxAccounts MailboxAccount[]
|
||||
rules Rule[]
|
||||
jobs CleanupJob[]
|
||||
metric TenantMetric?
|
||||
providerMetrics TenantProviderMetric[]
|
||||
}
|
||||
|
||||
model TenantMetric {
|
||||
id String @id @default(cuid())
|
||||
tenantId String @unique
|
||||
avgProcessingRate Float?
|
||||
sampleCount Int @default(0)
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
tenant Tenant @relation(fields: [tenantId], references: [id])
|
||||
}
|
||||
|
||||
model TenantProviderMetric {
|
||||
id String @id @default(cuid())
|
||||
tenantId String
|
||||
provider MailProvider
|
||||
avgListingRate Float?
|
||||
avgProcessingRate Float?
|
||||
avgUnsubscribeRate Float?
|
||||
avgRoutingRate Float?
|
||||
avgListingSecondsPerMessage Float?
|
||||
avgProcessingSecondsPerMessage Float?
|
||||
avgUnsubscribeSecondsPerMessage Float?
|
||||
avgRoutingSecondsPerMessage Float?
|
||||
listingSampleCount Int @default(0)
|
||||
processingSampleCount Int @default(0)
|
||||
unsubscribeSampleCount Int @default(0)
|
||||
routingSampleCount Int @default(0)
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
tenant Tenant @relation(fields: [tenantId], references: [id])
|
||||
|
||||
@@unique([tenantId, provider])
|
||||
@@index([tenantId])
|
||||
}
|
||||
|
||||
model ExportJob {
|
||||
@@ -120,6 +161,7 @@ model MailboxAccount {
|
||||
tenant Tenant @relation(fields: [tenantId], references: [id])
|
||||
folders MailboxFolder[]
|
||||
jobs CleanupJob[]
|
||||
candidates CleanupJobCandidate[]
|
||||
|
||||
@@index([tenantId])
|
||||
}
|
||||
@@ -161,6 +203,9 @@ model Rule {
|
||||
tenantId String
|
||||
name String
|
||||
enabled Boolean @default(true)
|
||||
matchMode RuleMatchMode @default(ALL)
|
||||
position Int @default(0)
|
||||
stopOnMatch Boolean @default(false)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@ -169,6 +214,12 @@ model Rule {
|
||||
actions RuleAction[]
|
||||
|
||||
@@index([tenantId])
|
||||
@@index([tenantId, position])
|
||||
}
|
||||
|
||||
enum RuleMatchMode {
|
||||
ALL
|
||||
ANY
|
||||
}
|
||||
|
||||
model RuleCondition {
|
||||
@@ -205,6 +256,12 @@ model CleanupJob {
|
||||
checkpointUpdatedAt DateTime?
|
||||
processedMessages Int?
|
||||
totalMessages Int?
|
||||
listingSeconds Int?
|
||||
processingSeconds Int?
|
||||
unsubscribeSeconds Int?
|
||||
routingSeconds Int?
|
||||
unsubscribeAttempts Int?
|
||||
actionAttempts Int?
|
||||
startedAt DateTime?
|
||||
finishedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
@@ -212,17 +269,50 @@ model CleanupJob {
|
||||
|
||||
tenant Tenant @relation(fields: [tenantId], references: [id])
|
||||
mailboxAccount MailboxAccount @relation(fields: [mailboxAccountId], references: [id])
|
||||
unsubscribeAttempts UnsubscribeAttempt[]
|
||||
unsubscribeAttemptItems UnsubscribeAttempt[]
|
||||
events CleanupJobEvent[]
|
||||
candidates CleanupJobCandidate[]
|
||||
|
||||
@@index([tenantId])
|
||||
@@index([mailboxAccountId])
|
||||
}
|
||||
|
||||
model CleanupJobCandidate {
|
||||
id String @id @default(cuid())
|
||||
jobId String
|
||||
mailboxAccountId String
|
||||
provider MailProvider
|
||||
externalId String
|
||||
subject String?
|
||||
from String?
|
||||
fromDomain String?
|
||||
receivedAt DateTime?
|
||||
listId String?
|
||||
listUnsubscribe String?
|
||||
listUnsubscribePost String?
|
||||
score Int
|
||||
signals Json
|
||||
actions Json?
|
||||
unsubscribeStatus String?
|
||||
unsubscribeMessage String?
|
||||
unsubscribeTarget String?
|
||||
unsubscribeDetails Json?
|
||||
reviewed Boolean @default(false)
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
job CleanupJob @relation(fields: [jobId], references: [id])
|
||||
mailboxAccount MailboxAccount @relation(fields: [mailboxAccountId], references: [id])
|
||||
|
||||
@@unique([jobId, externalId])
|
||||
@@index([jobId])
|
||||
@@index([jobId, fromDomain])
|
||||
}
|
||||
|
||||
model UnsubscribeAttempt {
|
||||
id String @id @default(cuid())
|
||||
jobId String
|
||||
mailItemId String?
|
||||
dedupeKey String?
|
||||
method String
|
||||
target String
|
||||
status String
|
||||
@@ -231,6 +321,19 @@ model UnsubscribeAttempt {
|
||||
job CleanupJob @relation(fields: [jobId], references: [id])
|
||||
|
||||
@@index([jobId])
|
||||
@@unique([jobId, dedupeKey])
|
||||
}
|
||||
|
||||
model UnsubscribeHistory {
|
||||
id String @id @default(cuid())
|
||||
tenantId String
|
||||
dedupeKey String
|
||||
target String
|
||||
status String
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@unique([tenantId, dedupeKey])
|
||||
@@index([tenantId])
|
||||
}
|
||||
|
||||
model CleanupJobEvent {
|
||||
|
||||
Reference in New Issue
Block a user