This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
CREATE TABLE "NightSendingWindow" (
|
||||
"id" TEXT PRIMARY KEY,
|
||||
"tenantId" TEXT NOT NULL,
|
||||
"applicationId" TEXT NOT NULL,
|
||||
"windowStartedAt" TIMESTAMP(3) NOT NULL,
|
||||
"windowEndsAt" TIMESTAMP(3) NOT NULL,
|
||||
"count" INTEGER NOT NULL DEFAULT 0,
|
||||
"baselineCount" INTEGER NOT NULL DEFAULT 0,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL
|
||||
);
|
||||
CREATE UNIQUE INDEX "NightSendingWindow_applicationId_windowStartedAt_key" ON "NightSendingWindow"("applicationId", "windowStartedAt");
|
||||
CREATE INDEX "NightSendingWindow_applicationId_windowEndsAt_idx" ON "NightSendingWindow"("applicationId", "windowEndsAt");
|
||||
CREATE TABLE "NightSendingReservation" (
|
||||
"messageRecordId" TEXT PRIMARY KEY,
|
||||
"tenantId" TEXT NOT NULL,
|
||||
"applicationId" TEXT NOT NULL,
|
||||
"windowId" TEXT NOT NULL,
|
||||
"sequence" INTEGER NOT NULL,
|
||||
"thresholdValue" INTEGER NOT NULL,
|
||||
"reviewTaskId" TEXT,
|
||||
"continuedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
CREATE INDEX "NightSendingReservation_applicationId_windowId_idx" ON "NightSendingReservation"("applicationId", "windowId");
|
||||
CREATE INDEX "NightSendingReservation_reviewTaskId_idx" ON "NightSendingReservation"("reviewTaskId");
|
||||
ALTER TABLE "SmsSendTask" ADD COLUMN "continuationLeaseOwner" TEXT;
|
||||
ALTER TABLE "SmsSendTask" ADD COLUMN "continuationLeaseExpiresAt" TIMESTAMP(3);
|
||||
-- Preserve rule IDs and thresholds for application overrides and historical hits.
|
||||
UPDATE "RiskRule" SET "name" = '夜间累计发送量审核',
|
||||
"description" = '同一企业应用在夜间累计业务短信超过阈值后进入人工审核,所有入口与内容合并计数。',
|
||||
"metric" = 'nightSendingCount', "action" = 'manual_review',
|
||||
"config" = COALESCE("config", '{}'::jsonb) || '{"timeZone":"Asia/Shanghai"}'::jsonb,
|
||||
"updatedAt" = CURRENT_TIMESTAMP
|
||||
WHERE "code" = 'NON_WORKING_MARKETING_BULK';
|
||||
-- The newly approved policy applies by default to every application.
|
||||
UPDATE "RiskRule" SET "status" = 'active', "updatedAt" = CURRENT_TIMESTAMP
|
||||
WHERE "code" = 'NON_WORKING_MARKETING_BULK' AND "applicationId" IS NULL AND "status" <> 'deleted';
|
||||
@@ -1511,6 +1511,36 @@ model ReportReceiptImport {
|
||||
task ChannelSignatureReportTask @relation(fields: [taskId], references: [id], onDelete: Cascade)
|
||||
}
|
||||
|
||||
model NightSendingWindow {
|
||||
id String @id
|
||||
tenantId String
|
||||
applicationId String
|
||||
windowStartedAt DateTime
|
||||
windowEndsAt DateTime
|
||||
count Int @default(0)
|
||||
baselineCount Int @default(0)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@unique([applicationId, windowStartedAt])
|
||||
@@index([applicationId, windowEndsAt])
|
||||
}
|
||||
|
||||
model NightSendingReservation {
|
||||
messageRecordId String @id
|
||||
tenantId String
|
||||
applicationId String
|
||||
windowId String
|
||||
sequence Int
|
||||
thresholdValue Int
|
||||
reviewTaskId String?
|
||||
continuedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@index([applicationId, windowId])
|
||||
@@index([reviewTaskId])
|
||||
}
|
||||
|
||||
model RiskRule {
|
||||
id String @id @default(cuid())
|
||||
tenantId String?
|
||||
@@ -1563,6 +1593,8 @@ model SmsSendTask {
|
||||
createdById String?
|
||||
reviewedById String?
|
||||
reviewedAt DateTime?
|
||||
continuationLeaseOwner String?
|
||||
continuationLeaseExpiresAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
|
||||
Reference in New Issue
Block a user