1188 lines
42 KiB
SQL
1188 lines
42 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "Tenant" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Tenant_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT,
|
|
"username" TEXT NOT NULL,
|
|
"displayName" TEXT NOT NULL,
|
|
"passwordHash" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Role" (
|
|
"id" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"scope" TEXT NOT NULL DEFAULT 'platform',
|
|
"description" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Role_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Permission" (
|
|
"id" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Permission_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "UserRole" (
|
|
"userId" TEXT NOT NULL,
|
|
"roleId" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "UserRole_pkey" PRIMARY KEY ("userId","roleId")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "RolePermission" (
|
|
"roleId" TEXT NOT NULL,
|
|
"permissionId" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "RolePermission_pkey" PRIMARY KEY ("roleId","permissionId")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "OperationLog" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT,
|
|
"userId" TEXT,
|
|
"action" TEXT NOT NULL,
|
|
"resource" TEXT NOT NULL,
|
|
"resourceId" TEXT,
|
|
"ipAddress" TEXT,
|
|
"userAgent" TEXT,
|
|
"detail" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "OperationLog_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "FileObject" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT,
|
|
"bucket" TEXT NOT NULL,
|
|
"objectKey" TEXT NOT NULL,
|
|
"fileName" TEXT NOT NULL,
|
|
"contentType" TEXT NOT NULL,
|
|
"sizeBytes" BIGINT NOT NULL,
|
|
"checksum" TEXT,
|
|
"purpose" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "FileObject_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PhoneSegment" (
|
|
"id" TEXT NOT NULL,
|
|
"prefix" TEXT NOT NULL,
|
|
"carrier" TEXT NOT NULL,
|
|
"province" TEXT,
|
|
"city" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "PhoneSegment_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SensitiveWord" (
|
|
"id" TEXT NOT NULL,
|
|
"word" TEXT NOT NULL,
|
|
"level" TEXT NOT NULL DEFAULT 'block',
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SensitiveWord_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "EnterpriseBlacklist" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"phoneNumber" TEXT NOT NULL,
|
|
"reason" TEXT,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "EnterpriseBlacklist_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "GlobalBlacklist" (
|
|
"id" TEXT NOT NULL,
|
|
"phoneNumber" TEXT NOT NULL,
|
|
"reason" TEXT,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "GlobalBlacklist_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "DrainageField" (
|
|
"id" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"fieldType" TEXT NOT NULL,
|
|
"required" BOOLEAN NOT NULL DEFAULT false,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"description" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "DrainageField_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "BillingPlan" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"priceCents" INTEGER NOT NULL,
|
|
"smsUnits" INTEGER NOT NULL,
|
|
"validDays" INTEGER NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"description" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "BillingPlan_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TenantAccount" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"balanceCents" INTEGER NOT NULL DEFAULT 0,
|
|
"smsUnits" INTEGER NOT NULL DEFAULT 0,
|
|
"creditCents" INTEGER NOT NULL DEFAULT 0,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "TenantAccount_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "AccountTransaction" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"transactionType" TEXT NOT NULL,
|
|
"amountCents" INTEGER NOT NULL DEFAULT 0,
|
|
"smsUnits" INTEGER NOT NULL DEFAULT 0,
|
|
"balanceAfter" INTEGER NOT NULL DEFAULT 0,
|
|
"relatedType" TEXT,
|
|
"relatedId" TEXT,
|
|
"remark" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "AccountTransaction_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "BillingRule" (
|
|
"id" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"chargeBasis" TEXT NOT NULL DEFAULT 'submit_success',
|
|
"unitPrice" INTEGER NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "BillingRule_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "RechargeOrder" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"planId" TEXT,
|
|
"orderNo" TEXT NOT NULL,
|
|
"amountCents" INTEGER NOT NULL,
|
|
"smsUnits" INTEGER NOT NULL DEFAULT 0,
|
|
"status" TEXT NOT NULL DEFAULT 'created',
|
|
"payMethod" TEXT,
|
|
"paidAt" TIMESTAMP(3),
|
|
"operatorId" TEXT,
|
|
"remark" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "RechargeOrder_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsBillingRecord" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"applicationId" TEXT,
|
|
"taskId" TEXT,
|
|
"messageId" TEXT,
|
|
"phoneNumber" TEXT,
|
|
"contentLength" INTEGER NOT NULL,
|
|
"billingUnits" INTEGER NOT NULL,
|
|
"unitPrice" INTEGER NOT NULL,
|
|
"amountCents" INTEGER NOT NULL,
|
|
"billingStatus" TEXT NOT NULL DEFAULT 'estimated',
|
|
"transactionId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsBillingRecord_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsApplication" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"scene" TEXT,
|
|
"callbackUrl" TEXT,
|
|
"secretHash" TEXT NOT NULL,
|
|
"dailyLimit" INTEGER,
|
|
"maxPhonesPerTask" INTEGER NOT NULL DEFAULT 1000000,
|
|
"templateMismatchMode" TEXT NOT NULL DEFAULT 'reject',
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsApplication_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsApplicationIpAllowlist" (
|
|
"id" TEXT NOT NULL,
|
|
"applicationId" TEXT NOT NULL,
|
|
"ipCidr" TEXT NOT NULL,
|
|
"remark" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "SmsApplicationIpAllowlist_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsSignature" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"applicationId" TEXT,
|
|
"name" TEXT NOT NULL,
|
|
"purpose" TEXT,
|
|
"drainageInfo" JSONB,
|
|
"auditStatus" TEXT NOT NULL DEFAULT 'draft',
|
|
"reportStatus" TEXT NOT NULL DEFAULT 'waiting_material',
|
|
"rejectReason" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsSignature_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SignatureMaterial" (
|
|
"id" TEXT NOT NULL,
|
|
"signatureId" TEXT NOT NULL,
|
|
"fileObjectId" TEXT,
|
|
"materialType" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "SignatureMaterial_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsTemplate" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"applicationId" TEXT NOT NULL,
|
|
"signatureId" TEXT,
|
|
"name" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"category" TEXT,
|
|
"auditStatus" TEXT NOT NULL DEFAULT 'draft',
|
|
"rejectReason" TEXT,
|
|
"billingUnits" INTEGER NOT NULL DEFAULT 1,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsTemplate_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TemplateVariable" (
|
|
"id" TEXT NOT NULL,
|
|
"templateId" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"example" TEXT,
|
|
"required" BOOLEAN NOT NULL DEFAULT true,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "TemplateVariable_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "AuditRecord" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT,
|
|
"targetType" TEXT NOT NULL,
|
|
"targetId" TEXT NOT NULL,
|
|
"action" TEXT NOT NULL,
|
|
"statusBefore" TEXT,
|
|
"statusAfter" TEXT NOT NULL,
|
|
"reason" TEXT,
|
|
"reviewerId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "AuditRecord_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsChannel" (
|
|
"id" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"carrier" TEXT,
|
|
"protocol" TEXT NOT NULL DEFAULT 'CMPP',
|
|
"gatewayHost" TEXT NOT NULL,
|
|
"gatewayPort" INTEGER NOT NULL,
|
|
"enterpriseCode" TEXT,
|
|
"account" TEXT NOT NULL,
|
|
"passwordCipher" TEXT NOT NULL,
|
|
"srcId" TEXT NOT NULL,
|
|
"cmppVersion" TEXT NOT NULL DEFAULT '3.0',
|
|
"rateLimitPerSecond" INTEGER NOT NULL DEFAULT 100,
|
|
"unitPrice" INTEGER NOT NULL DEFAULT 0,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"config" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsChannel_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsChannelGroup" (
|
|
"id" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsChannelGroup_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsChannelGroupItem" (
|
|
"id" TEXT NOT NULL,
|
|
"groupId" TEXT NOT NULL,
|
|
"channelId" TEXT NOT NULL,
|
|
"carrier" TEXT,
|
|
"province" TEXT,
|
|
"priority" INTEGER NOT NULL DEFAULT 100,
|
|
"weight" INTEGER NOT NULL DEFAULT 1,
|
|
"isBackup" BOOLEAN NOT NULL DEFAULT false,
|
|
"rateLimitPerSecond" INTEGER,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "SmsChannelGroupItem_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ChannelRouteRule" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT,
|
|
"applicationId" TEXT,
|
|
"groupId" TEXT NOT NULL,
|
|
"channelId" TEXT,
|
|
"carrier" TEXT,
|
|
"province" TEXT,
|
|
"priority" INTEGER NOT NULL DEFAULT 100,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ChannelRouteRule_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ChannelHealthMetric" (
|
|
"id" TEXT NOT NULL,
|
|
"channelId" TEXT NOT NULL,
|
|
"submitTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"submitSuccess" INTEGER NOT NULL DEFAULT 0,
|
|
"submitFailed" INTEGER NOT NULL DEFAULT 0,
|
|
"receiptSuccess" INTEGER NOT NULL DEFAULT 0,
|
|
"receiptFailed" INTEGER NOT NULL DEFAULT 0,
|
|
"unknownTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"windowStart" TIMESTAMP(3) NOT NULL,
|
|
"windowEnd" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "ChannelHealthMetric_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ChannelReportField" (
|
|
"id" TEXT NOT NULL,
|
|
"channelId" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"fieldType" TEXT NOT NULL,
|
|
"required" BOOLEAN NOT NULL DEFAULT false,
|
|
"description" TEXT,
|
|
"sortOrder" INTEGER NOT NULL DEFAULT 100,
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ChannelReportField_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SignatureReportMaterial" (
|
|
"id" TEXT NOT NULL,
|
|
"signatureId" TEXT NOT NULL,
|
|
"channelId" TEXT NOT NULL,
|
|
"fieldCode" TEXT NOT NULL,
|
|
"fieldValue" TEXT,
|
|
"fileObjectId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SignatureReportMaterial_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ChannelSignatureReportTask" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"signatureId" TEXT NOT NULL,
|
|
"channelId" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'pending',
|
|
"reason" TEXT,
|
|
"createdById" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ChannelSignatureReportTask_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ChannelSignatureReportRecord" (
|
|
"id" TEXT NOT NULL,
|
|
"taskId" TEXT NOT NULL,
|
|
"channelId" TEXT NOT NULL,
|
|
"action" TEXT NOT NULL,
|
|
"statusBefore" TEXT,
|
|
"statusAfter" TEXT NOT NULL,
|
|
"reason" TEXT,
|
|
"operatorId" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "ChannelSignatureReportRecord_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ReportExportFile" (
|
|
"id" TEXT NOT NULL,
|
|
"taskId" TEXT NOT NULL,
|
|
"fileObjectId" TEXT,
|
|
"fileName" TEXT NOT NULL,
|
|
"rowCount" INTEGER NOT NULL DEFAULT 0,
|
|
"status" TEXT NOT NULL DEFAULT 'generated',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "ReportExportFile_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ReportReceiptImport" (
|
|
"id" TEXT NOT NULL,
|
|
"taskId" TEXT NOT NULL,
|
|
"fileObjectId" TEXT,
|
|
"fileName" TEXT NOT NULL,
|
|
"rowCount" INTEGER NOT NULL DEFAULT 0,
|
|
"successCount" INTEGER NOT NULL DEFAULT 0,
|
|
"failedCount" INTEGER NOT NULL DEFAULT 0,
|
|
"status" TEXT NOT NULL DEFAULT 'imported',
|
|
"result" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "ReportReceiptImport_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "RiskRule" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT,
|
|
"code" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"metric" TEXT NOT NULL,
|
|
"thresholdValue" DOUBLE PRECISION NOT NULL,
|
|
"action" TEXT NOT NULL DEFAULT 'manual_review',
|
|
"status" TEXT NOT NULL DEFAULT 'active',
|
|
"priority" INTEGER NOT NULL DEFAULT 100,
|
|
"config" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "RiskRule_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsSendTask" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"applicationId" TEXT,
|
|
"templateId" TEXT,
|
|
"taskNo" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"category" TEXT,
|
|
"phoneTotal" INTEGER NOT NULL,
|
|
"uniquePhoneTotal" INTEGER NOT NULL,
|
|
"duplicateRatio" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"illegalRatio" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"blacklistHitRatio" DOUBLE PRECISION NOT NULL DEFAULT 0,
|
|
"variableIssues" JSONB,
|
|
"status" TEXT NOT NULL DEFAULT 'created',
|
|
"riskDecision" TEXT NOT NULL DEFAULT 'allow',
|
|
"reviewReason" TEXT,
|
|
"rejectReason" TEXT,
|
|
"createdById" TEXT,
|
|
"reviewedById" TEXT,
|
|
"reviewedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsSendTask_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "RiskHitRecord" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"taskId" TEXT NOT NULL,
|
|
"ruleId" TEXT,
|
|
"ruleCode" TEXT NOT NULL,
|
|
"ruleName" TEXT NOT NULL,
|
|
"thresholdValue" DOUBLE PRECISION NOT NULL,
|
|
"actualValue" DOUBLE PRECISION NOT NULL,
|
|
"action" TEXT NOT NULL,
|
|
"reason" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "RiskHitRecord_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsBatchTask" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"applicationId" TEXT,
|
|
"templateId" TEXT,
|
|
"taskNo" TEXT NOT NULL,
|
|
"sourceType" TEXT NOT NULL DEFAULT 'client',
|
|
"content" TEXT NOT NULL,
|
|
"category" TEXT,
|
|
"phoneTotal" INTEGER NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'created',
|
|
"riskTaskId" TEXT,
|
|
"auditStatus" TEXT NOT NULL DEFAULT 'approved',
|
|
"reviewReason" TEXT,
|
|
"rejectReason" TEXT,
|
|
"progressTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"submittedTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"successTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"failedTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"unknownTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"timeoutTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"createdById" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsBatchTask_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsApiRequest" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"batchTaskId" TEXT NOT NULL,
|
|
"requestId" TEXT NOT NULL,
|
|
"sourceIp" TEXT,
|
|
"userAgent" TEXT,
|
|
"payloadSummary" JSONB,
|
|
"status" TEXT NOT NULL DEFAULT 'accepted',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "SmsApiRequest_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsMessageRecord" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"batchTaskId" TEXT NOT NULL,
|
|
"applicationId" TEXT,
|
|
"templateId" TEXT,
|
|
"messageId" TEXT NOT NULL,
|
|
"phoneNumber" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"billingUnits" INTEGER NOT NULL DEFAULT 1,
|
|
"unitPrice" INTEGER NOT NULL DEFAULT 0,
|
|
"amountCents" INTEGER NOT NULL DEFAULT 0,
|
|
"channelId" TEXT,
|
|
"submitId" TEXT,
|
|
"gatewayMessageId" TEXT,
|
|
"status" TEXT NOT NULL DEFAULT 'queued',
|
|
"submitStatus" TEXT,
|
|
"receiptStatus" TEXT,
|
|
"errorCode" TEXT,
|
|
"errorMessage" TEXT,
|
|
"queuedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"submittedAt" TIMESTAMP(3),
|
|
"deliveredAt" TIMESTAMP(3),
|
|
"timeoutAt" TIMESTAMP(3),
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsMessageRecord_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "CmppSubmitSession" (
|
|
"id" TEXT NOT NULL,
|
|
"channelId" TEXT NOT NULL,
|
|
"sessionNo" TEXT NOT NULL,
|
|
"status" TEXT NOT NULL DEFAULT 'open',
|
|
"submitTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"acceptedTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"rejectedTotal" INTEGER NOT NULL DEFAULT 0,
|
|
"startedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"endedAt" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "CmppSubmitSession_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsSubmitRecord" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"batchTaskId" TEXT NOT NULL,
|
|
"messageRecordId" TEXT NOT NULL,
|
|
"channelId" TEXT NOT NULL,
|
|
"sessionId" TEXT,
|
|
"submitId" TEXT NOT NULL,
|
|
"sequenceId" INTEGER,
|
|
"gatewayMessageId" TEXT,
|
|
"submitStatus" TEXT NOT NULL DEFAULT 'queued',
|
|
"errorCode" TEXT,
|
|
"errorMessage" TEXT,
|
|
"submittedAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "SmsSubmitRecord_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsReceiptRecord" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"batchTaskId" TEXT,
|
|
"messageRecordId" TEXT,
|
|
"channelId" TEXT,
|
|
"messageId" TEXT NOT NULL,
|
|
"gatewayMessageId" TEXT NOT NULL,
|
|
"sequenceId" INTEGER,
|
|
"receiptStatus" TEXT NOT NULL,
|
|
"rawStatus" TEXT NOT NULL,
|
|
"errorCode" TEXT,
|
|
"deliveredAt" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "SmsReceiptRecord_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "SmsUplinkMessage" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT,
|
|
"channelId" TEXT NOT NULL,
|
|
"messageId" TEXT,
|
|
"sequenceId" INTEGER,
|
|
"phoneNumber" TEXT NOT NULL,
|
|
"destId" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"receivedAt" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "SmsUplinkMessage_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Tenant_code_key" ON "Tenant"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_username_key" ON "User"("username");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Role_code_key" ON "Role"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Permission_code_key" ON "Permission"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "OperationLog_tenantId_createdAt_idx" ON "OperationLog"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "OperationLog_userId_createdAt_idx" ON "OperationLog"("userId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "FileObject_objectKey_key" ON "FileObject"("objectKey");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "PhoneSegment_prefix_key" ON "PhoneSegment"("prefix");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SensitiveWord_word_key" ON "SensitiveWord"("word");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "EnterpriseBlacklist_tenantId_phoneNumber_key" ON "EnterpriseBlacklist"("tenantId", "phoneNumber");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "GlobalBlacklist_phoneNumber_key" ON "GlobalBlacklist"("phoneNumber");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "DrainageField_code_key" ON "DrainageField"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "TenantAccount_tenantId_key" ON "TenantAccount"("tenantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AccountTransaction_tenantId_createdAt_idx" ON "AccountTransaction"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AccountTransaction_relatedType_relatedId_idx" ON "AccountTransaction"("relatedType", "relatedId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "BillingRule_code_key" ON "BillingRule"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "RechargeOrder_orderNo_key" ON "RechargeOrder"("orderNo");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "RechargeOrder_tenantId_createdAt_idx" ON "RechargeOrder"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsBillingRecord_tenantId_createdAt_idx" ON "SmsBillingRecord"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsBillingRecord_taskId_idx" ON "SmsBillingRecord"("taskId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsBillingRecord_messageId_idx" ON "SmsBillingRecord"("messageId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsApplication_tenantId_status_idx" ON "SmsApplication"("tenantId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SmsApplicationIpAllowlist_applicationId_ipCidr_key" ON "SmsApplicationIpAllowlist"("applicationId", "ipCidr");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsSignature_tenantId_auditStatus_idx" ON "SmsSignature"("tenantId", "auditStatus");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsSignature_tenantId_reportStatus_idx" ON "SmsSignature"("tenantId", "reportStatus");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsTemplate_tenantId_auditStatus_idx" ON "SmsTemplate"("tenantId", "auditStatus");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsTemplate_applicationId_idx" ON "SmsTemplate"("applicationId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "TemplateVariable_templateId_name_key" ON "TemplateVariable"("templateId", "name");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AuditRecord_targetType_targetId_idx" ON "AuditRecord"("targetType", "targetId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AuditRecord_tenantId_createdAt_idx" ON "AuditRecord"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SmsChannel_code_key" ON "SmsChannel"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsChannel_status_idx" ON "SmsChannel"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SmsChannelGroup_code_key" ON "SmsChannelGroup"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsChannelGroupItem_channelId_idx" ON "SmsChannelGroupItem"("channelId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SmsChannelGroupItem_groupId_channelId_carrier_province_key" ON "SmsChannelGroupItem"("groupId", "channelId", "carrier", "province");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChannelRouteRule_tenantId_applicationId_status_idx" ON "ChannelRouteRule"("tenantId", "applicationId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChannelRouteRule_groupId_priority_idx" ON "ChannelRouteRule"("groupId", "priority");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChannelHealthMetric_channelId_windowStart_idx" ON "ChannelHealthMetric"("channelId", "windowStart");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "ChannelReportField_channelId_code_key" ON "ChannelReportField"("channelId", "code");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SignatureReportMaterial_channelId_idx" ON "SignatureReportMaterial"("channelId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SignatureReportMaterial_signatureId_channelId_fieldCode_key" ON "SignatureReportMaterial"("signatureId", "channelId", "fieldCode");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChannelSignatureReportTask_tenantId_status_idx" ON "ChannelSignatureReportTask"("tenantId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChannelSignatureReportTask_signatureId_channelId_idx" ON "ChannelSignatureReportTask"("signatureId", "channelId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChannelSignatureReportRecord_taskId_createdAt_idx" ON "ChannelSignatureReportRecord"("taskId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "ChannelSignatureReportRecord_channelId_createdAt_idx" ON "ChannelSignatureReportRecord"("channelId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "RiskRule_tenantId_status_priority_idx" ON "RiskRule"("tenantId", "status", "priority");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "RiskRule_tenantId_code_key" ON "RiskRule"("tenantId", "code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SmsSendTask_taskNo_key" ON "SmsSendTask"("taskNo");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsSendTask_tenantId_status_createdAt_idx" ON "SmsSendTask"("tenantId", "status", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsSendTask_applicationId_createdAt_idx" ON "SmsSendTask"("applicationId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "RiskHitRecord_tenantId_createdAt_idx" ON "RiskHitRecord"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "RiskHitRecord_taskId_idx" ON "RiskHitRecord"("taskId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "RiskHitRecord_ruleCode_idx" ON "RiskHitRecord"("ruleCode");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SmsBatchTask_taskNo_key" ON "SmsBatchTask"("taskNo");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsBatchTask_tenantId_status_createdAt_idx" ON "SmsBatchTask"("tenantId", "status", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsBatchTask_applicationId_createdAt_idx" ON "SmsBatchTask"("applicationId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SmsApiRequest_requestId_key" ON "SmsApiRequest"("requestId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsApiRequest_tenantId_createdAt_idx" ON "SmsApiRequest"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsApiRequest_batchTaskId_idx" ON "SmsApiRequest"("batchTaskId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SmsMessageRecord_messageId_key" ON "SmsMessageRecord"("messageId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsMessageRecord_tenantId_status_queuedAt_idx" ON "SmsMessageRecord"("tenantId", "status", "queuedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsMessageRecord_batchTaskId_status_idx" ON "SmsMessageRecord"("batchTaskId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsMessageRecord_phoneNumber_idx" ON "SmsMessageRecord"("phoneNumber");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsMessageRecord_gatewayMessageId_idx" ON "SmsMessageRecord"("gatewayMessageId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "CmppSubmitSession_sessionNo_key" ON "CmppSubmitSession"("sessionNo");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "CmppSubmitSession_channelId_status_idx" ON "CmppSubmitSession"("channelId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "SmsSubmitRecord_submitId_key" ON "SmsSubmitRecord"("submitId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsSubmitRecord_tenantId_createdAt_idx" ON "SmsSubmitRecord"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsSubmitRecord_messageRecordId_idx" ON "SmsSubmitRecord"("messageRecordId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsSubmitRecord_gatewayMessageId_idx" ON "SmsSubmitRecord"("gatewayMessageId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsReceiptRecord_tenantId_createdAt_idx" ON "SmsReceiptRecord"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsReceiptRecord_messageId_idx" ON "SmsReceiptRecord"("messageId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsReceiptRecord_gatewayMessageId_idx" ON "SmsReceiptRecord"("gatewayMessageId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsUplinkMessage_tenantId_createdAt_idx" ON "SmsUplinkMessage"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsUplinkMessage_channelId_receivedAt_idx" ON "SmsUplinkMessage"("channelId", "receivedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "SmsUplinkMessage_phoneNumber_idx" ON "SmsUplinkMessage"("phoneNumber");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "User" ADD CONSTRAINT "User_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "UserRole" ADD CONSTRAINT "UserRole_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "UserRole" ADD CONSTRAINT "UserRole_roleId_fkey" FOREIGN KEY ("roleId") REFERENCES "Role"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RolePermission" ADD CONSTRAINT "RolePermission_roleId_fkey" FOREIGN KEY ("roleId") REFERENCES "Role"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RolePermission" ADD CONSTRAINT "RolePermission_permissionId_fkey" FOREIGN KEY ("permissionId") REFERENCES "Permission"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "OperationLog" ADD CONSTRAINT "OperationLog_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "OperationLog" ADD CONSTRAINT "OperationLog_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "FileObject" ADD CONSTRAINT "FileObject_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "EnterpriseBlacklist" ADD CONSTRAINT "EnterpriseBlacklist_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TenantAccount" ADD CONSTRAINT "TenantAccount_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "AccountTransaction" ADD CONSTRAINT "AccountTransaction_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RechargeOrder" ADD CONSTRAINT "RechargeOrder_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RechargeOrder" ADD CONSTRAINT "RechargeOrder_planId_fkey" FOREIGN KEY ("planId") REFERENCES "BillingPlan"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsBillingRecord" ADD CONSTRAINT "SmsBillingRecord_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsApplication" ADD CONSTRAINT "SmsApplication_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsApplicationIpAllowlist" ADD CONSTRAINT "SmsApplicationIpAllowlist_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "SmsApplication"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSignature" ADD CONSTRAINT "SmsSignature_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSignature" ADD CONSTRAINT "SmsSignature_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "SmsApplication"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SignatureMaterial" ADD CONSTRAINT "SignatureMaterial_signatureId_fkey" FOREIGN KEY ("signatureId") REFERENCES "SmsSignature"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsTemplate" ADD CONSTRAINT "SmsTemplate_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsTemplate" ADD CONSTRAINT "SmsTemplate_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "SmsApplication"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsTemplate" ADD CONSTRAINT "SmsTemplate_signatureId_fkey" FOREIGN KEY ("signatureId") REFERENCES "SmsSignature"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TemplateVariable" ADD CONSTRAINT "TemplateVariable_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "SmsTemplate"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "AuditRecord" ADD CONSTRAINT "AuditRecord_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "AuditRecord" ADD CONSTRAINT "AuditRecord_reviewerId_fkey" FOREIGN KEY ("reviewerId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsChannelGroupItem" ADD CONSTRAINT "SmsChannelGroupItem_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "SmsChannelGroup"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsChannelGroupItem" ADD CONSTRAINT "SmsChannelGroupItem_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChannelRouteRule" ADD CONSTRAINT "ChannelRouteRule_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "SmsChannelGroup"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChannelRouteRule" ADD CONSTRAINT "ChannelRouteRule_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChannelHealthMetric" ADD CONSTRAINT "ChannelHealthMetric_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChannelReportField" ADD CONSTRAINT "ChannelReportField_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SignatureReportMaterial" ADD CONSTRAINT "SignatureReportMaterial_signatureId_fkey" FOREIGN KEY ("signatureId") REFERENCES "SmsSignature"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChannelSignatureReportTask" ADD CONSTRAINT "ChannelSignatureReportTask_signatureId_fkey" FOREIGN KEY ("signatureId") REFERENCES "SmsSignature"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChannelSignatureReportTask" ADD CONSTRAINT "ChannelSignatureReportTask_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChannelSignatureReportRecord" ADD CONSTRAINT "ChannelSignatureReportRecord_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "ChannelSignatureReportTask"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ChannelSignatureReportRecord" ADD CONSTRAINT "ChannelSignatureReportRecord_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ReportExportFile" ADD CONSTRAINT "ReportExportFile_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "ChannelSignatureReportTask"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "ReportReceiptImport" ADD CONSTRAINT "ReportReceiptImport_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "ChannelSignatureReportTask"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RiskRule" ADD CONSTRAINT "RiskRule_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSendTask" ADD CONSTRAINT "SmsSendTask_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSendTask" ADD CONSTRAINT "SmsSendTask_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "SmsApplication"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSendTask" ADD CONSTRAINT "SmsSendTask_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "SmsTemplate"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSendTask" ADD CONSTRAINT "SmsSendTask_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSendTask" ADD CONSTRAINT "SmsSendTask_reviewedById_fkey" FOREIGN KEY ("reviewedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RiskHitRecord" ADD CONSTRAINT "RiskHitRecord_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RiskHitRecord" ADD CONSTRAINT "RiskHitRecord_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "SmsSendTask"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "RiskHitRecord" ADD CONSTRAINT "RiskHitRecord_ruleId_fkey" FOREIGN KEY ("ruleId") REFERENCES "RiskRule"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsBatchTask" ADD CONSTRAINT "SmsBatchTask_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsBatchTask" ADD CONSTRAINT "SmsBatchTask_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "SmsApplication"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsBatchTask" ADD CONSTRAINT "SmsBatchTask_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "SmsTemplate"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsBatchTask" ADD CONSTRAINT "SmsBatchTask_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsApiRequest" ADD CONSTRAINT "SmsApiRequest_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsApiRequest" ADD CONSTRAINT "SmsApiRequest_batchTaskId_fkey" FOREIGN KEY ("batchTaskId") REFERENCES "SmsBatchTask"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsMessageRecord" ADD CONSTRAINT "SmsMessageRecord_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsMessageRecord" ADD CONSTRAINT "SmsMessageRecord_batchTaskId_fkey" FOREIGN KEY ("batchTaskId") REFERENCES "SmsBatchTask"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsMessageRecord" ADD CONSTRAINT "SmsMessageRecord_applicationId_fkey" FOREIGN KEY ("applicationId") REFERENCES "SmsApplication"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsMessageRecord" ADD CONSTRAINT "SmsMessageRecord_templateId_fkey" FOREIGN KEY ("templateId") REFERENCES "SmsTemplate"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsMessageRecord" ADD CONSTRAINT "SmsMessageRecord_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "CmppSubmitSession" ADD CONSTRAINT "CmppSubmitSession_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSubmitRecord" ADD CONSTRAINT "SmsSubmitRecord_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSubmitRecord" ADD CONSTRAINT "SmsSubmitRecord_batchTaskId_fkey" FOREIGN KEY ("batchTaskId") REFERENCES "SmsBatchTask"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSubmitRecord" ADD CONSTRAINT "SmsSubmitRecord_messageRecordId_fkey" FOREIGN KEY ("messageRecordId") REFERENCES "SmsMessageRecord"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSubmitRecord" ADD CONSTRAINT "SmsSubmitRecord_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsSubmitRecord" ADD CONSTRAINT "SmsSubmitRecord_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "CmppSubmitSession"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsReceiptRecord" ADD CONSTRAINT "SmsReceiptRecord_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsReceiptRecord" ADD CONSTRAINT "SmsReceiptRecord_batchTaskId_fkey" FOREIGN KEY ("batchTaskId") REFERENCES "SmsBatchTask"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsReceiptRecord" ADD CONSTRAINT "SmsReceiptRecord_messageRecordId_fkey" FOREIGN KEY ("messageRecordId") REFERENCES "SmsMessageRecord"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsReceiptRecord" ADD CONSTRAINT "SmsReceiptRecord_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsUplinkMessage" ADD CONSTRAINT "SmsUplinkMessage_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "SmsUplinkMessage" ADD CONSTRAINT "SmsUplinkMessage_channelId_fkey" FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|