feat: strengthen risk controls and review workflows
This commit is contained in:
+31
-25
@@ -74,9 +74,9 @@ model EnterpriseCertification {
|
||||
model User {
|
||||
id String @id @default(cuid())
|
||||
tenantId String?
|
||||
username String @unique
|
||||
email String? @unique
|
||||
phone String? @unique
|
||||
username String
|
||||
email String?
|
||||
phone String?
|
||||
displayName String
|
||||
passwordHash String
|
||||
status String @default("active")
|
||||
@@ -384,32 +384,34 @@ model SmsBillingRecord {
|
||||
}
|
||||
|
||||
model SmsApplication {
|
||||
id String @id @default(cuid())
|
||||
id String @id @default(cuid())
|
||||
tenantId String
|
||||
name String
|
||||
scene String?
|
||||
callbackUrl String?
|
||||
cmppAccount String @unique
|
||||
cmppAccount String @unique
|
||||
cmppEnterpriseCode String
|
||||
cmppApplicationExtension String?
|
||||
cmppAccessNumberFillEnabled Boolean @default(false)
|
||||
cmppAccessNumberFillEnabled Boolean @default(false)
|
||||
cmppAccessNumberFillPrefix String?
|
||||
cmppClientSrcId String? @unique
|
||||
cmppClientSrcId String? @unique
|
||||
secretHash String
|
||||
interfaceEnabled Boolean @default(true)
|
||||
interfaceType String @default("cmpp20")
|
||||
cmppMaxConnections Int @default(1)
|
||||
cmppWindowSize Int @default(16)
|
||||
dailyLimit Int @default(100000)
|
||||
customerUnitPrice BigInt @default(0)
|
||||
queuePriority String @default("normal")
|
||||
maxPhonesPerTask Int @default(10000)
|
||||
templateMismatchMode String @default("reject")
|
||||
downstreamReceiptRetryEnabled Boolean @default(true)
|
||||
downstreamUplinkRetryEnabled Boolean @default(true)
|
||||
status String @default("active")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
interfaceEnabled Boolean @default(true)
|
||||
interfaceType String @default("cmpp20")
|
||||
cmppMaxConnections Int @default(1)
|
||||
cmppWindowSize Int @default(16)
|
||||
dailyLimit Int @default(100000)
|
||||
customerUnitPrice BigInt @default(0)
|
||||
queuePriority String @default("normal")
|
||||
templateMismatchMode String @default("reject")
|
||||
downstreamReceiptRetryEnabled Boolean @default(true)
|
||||
downstreamUplinkRetryEnabled Boolean @default(true)
|
||||
status String @default("active")
|
||||
disablingAt DateTime?
|
||||
autoDisableAt DateTime?
|
||||
disableReason String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
tenant Tenant @relation(fields: [tenantId], references: [id])
|
||||
ipAllowlist SmsApplicationIpAllowlist[]
|
||||
@@ -435,8 +437,10 @@ model SmsApplication {
|
||||
httpWebhookEvents HttpWebhookEvent[]
|
||||
dailyUsages SmsApplicationDailyUsage[]
|
||||
inboundLongMessages CmppInboundLongMessage[]
|
||||
riskRules RiskRule[]
|
||||
|
||||
@@index([tenantId, status])
|
||||
@@index([status, autoDisableAt])
|
||||
}
|
||||
|
||||
model SmsApplicationIpAllowlist {
|
||||
@@ -1213,6 +1217,7 @@ model ReportReceiptImport {
|
||||
model RiskRule {
|
||||
id String @id @default(cuid())
|
||||
tenantId String?
|
||||
applicationId String?
|
||||
code String
|
||||
name String
|
||||
description String?
|
||||
@@ -1225,11 +1230,12 @@ model RiskRule {
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
tenant Tenant? @relation(fields: [tenantId], references: [id])
|
||||
hits RiskHitRecord[]
|
||||
tenant Tenant? @relation(fields: [tenantId], references: [id])
|
||||
application SmsApplication? @relation(fields: [applicationId], references: [id], onDelete: Cascade)
|
||||
hits RiskHitRecord[]
|
||||
|
||||
@@unique([tenantId, code])
|
||||
@@index([tenantId, status, priority])
|
||||
@@unique([applicationId, code])
|
||||
@@index([tenantId, applicationId, status, priority])
|
||||
}
|
||||
|
||||
model SmsSendTask {
|
||||
|
||||
Reference in New Issue
Block a user