feat: inherit channel report requirements

This commit is contained in:
hectorzhao
2026-07-12 16:14:54 +08:00
parent 053bcca990
commit 87ae4a2063
14 changed files with 612 additions and 65 deletions
@@ -0,0 +1,33 @@
ALTER TABLE "ChannelReportField"
ADD COLUMN "drainageFieldId" TEXT,
ADD COLUMN "reportType" TEXT NOT NULL DEFAULT 'both';
CREATE INDEX "ChannelReportField_drainageFieldId_reportType_idx"
ON "ChannelReportField"("drainageFieldId", "reportType");
ALTER TABLE "ChannelReportField"
ADD CONSTRAINT "ChannelReportField_drainageFieldId_fkey"
FOREIGN KEY ("drainageFieldId") REFERENCES "DrainageField"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
CREATE TABLE "DrainageReportMaterial" (
"id" TEXT NOT NULL,
"signatureId" TEXT NOT NULL,
"drainageItemId" 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 "DrainageReportMaterial_pkey" PRIMARY KEY ("id")
);
CREATE UNIQUE INDEX "DrainageReportMaterial_signatureId_drainageItemId_channelId_fieldCode_key"
ON "DrainageReportMaterial"("signatureId", "drainageItemId", "channelId", "fieldCode");
CREATE INDEX "DrainageReportMaterial_channelId_fieldCode_idx"
ON "DrainageReportMaterial"("channelId", "fieldCode");
ALTER TABLE "DrainageReportMaterial" ADD CONSTRAINT "DrainageReportMaterial_signatureId_fkey"
FOREIGN KEY ("signatureId") REFERENCES "SmsSignature"("id") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "DrainageReportMaterial" ADD CONSTRAINT "DrainageReportMaterial_channelId_fkey"
FOREIGN KEY ("channelId") REFERENCES "SmsChannel"("id") ON DELETE CASCADE ON UPDATE CASCADE;
+26
View File
@@ -235,6 +235,8 @@ model DrainageField {
description String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
channelReportFields ChannelReportField[]
}
model BillingPlan {
@@ -410,6 +412,7 @@ model SmsSignature {
materials SignatureMaterial[]
templates SmsTemplate[]
reportMaterials SignatureReportMaterial[]
drainageReportMaterials DrainageReportMaterial[]
reportTasks ChannelSignatureReportTask[]
messageRecords SmsMessageRecord[]
@@ -512,6 +515,7 @@ model SmsChannel {
routeRules ChannelRouteRule[]
healthMetrics ChannelHealthMetric[]
reportFields ChannelReportField[]
drainageReportMaterials DrainageReportMaterial[]
reportTasks ChannelSignatureReportTask[]
reportRecords ChannelSignatureReportRecord[]
messageRecords SmsMessageRecord[]
@@ -658,6 +662,8 @@ model ChannelHealthMetric {
model ChannelReportField {
id String @id @default(cuid())
channelId String
drainageFieldId String?
reportType String @default("both")
code String
name String
fieldType String
@@ -669,8 +675,10 @@ model ChannelReportField {
updatedAt DateTime @updatedAt
channel SmsChannel @relation(fields: [channelId], references: [id], onDelete: Cascade)
drainageField DrainageField? @relation(fields: [drainageFieldId], references: [id])
@@unique([channelId, code])
@@index([drainageFieldId, reportType])
}
model SignatureReportMaterial {
@@ -689,6 +697,24 @@ model SignatureReportMaterial {
@@index([channelId])
}
model DrainageReportMaterial {
id String @id @default(cuid())
signatureId String
drainageItemId String
channelId String
fieldCode String
fieldValue String?
fileObjectId String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
signature SmsSignature @relation(fields: [signatureId], references: [id], onDelete: Cascade)
channel SmsChannel @relation(fields: [channelId], references: [id], onDelete: Cascade)
@@unique([signatureId, drainageItemId, channelId, fieldCode])
@@index([channelId, fieldCode])
}
model ChannelSignatureReportTask {
id String @id @default(cuid())
tenantId String