feat: harden sessions and track downstream acknowledgements
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
ALTER TABLE "SmsApplication"
|
||||
ADD COLUMN "downstreamReceiptRetryEnabled" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "downstreamUplinkRetryEnabled" BOOLEAN NOT NULL DEFAULT true;
|
||||
|
||||
ALTER TABLE "CmppDownstreamDelivery"
|
||||
ADD COLUMN "retryEnabled" BOOLEAN NOT NULL DEFAULT true,
|
||||
ADD COLUMN "sentAt" TIMESTAMP(3),
|
||||
ADD COLUMN "acknowledgedAt" TIMESTAMP(3),
|
||||
ADD COLUMN "ackDeadlineAt" TIMESTAMP(3),
|
||||
ADD COLUMN "ackResult" INTEGER,
|
||||
ADD COLUMN "ackSequenceId" TEXT,
|
||||
ADD COLUMN "ackMessageId" TEXT,
|
||||
ADD COLUMN "connectionId" TEXT;
|
||||
|
||||
UPDATE "CmppDownstreamDelivery"
|
||||
SET
|
||||
"status" = 'unconfirmed',
|
||||
"sentAt" = "deliveredAt",
|
||||
"deliveredAt" = NULL,
|
||||
"lastError" = '历史记录仅确认 Gateway 已写出,未留存 CMPP_DELIVER_RESP'
|
||||
WHERE "status" = 'delivered';
|
||||
|
||||
UPDATE "CmppDownstreamDelivery"
|
||||
SET "retryEnabled" = CASE
|
||||
WHEN "deliveryType" = 'uplink' THEN app."downstreamUplinkRetryEnabled"
|
||||
ELSE app."downstreamReceiptRetryEnabled"
|
||||
END
|
||||
FROM "SmsApplication" app
|
||||
WHERE app.id = "CmppDownstreamDelivery"."applicationId";
|
||||
|
||||
CREATE INDEX "CmppDownstreamDelivery_status_ackDeadlineAt_idx"
|
||||
ON "CmppDownstreamDelivery"("status", "ackDeadlineAt");
|
||||
@@ -360,6 +360,8 @@ model SmsApplication {
|
||||
queuePriority String @default("normal")
|
||||
maxPhonesPerTask Int @default(1000000)
|
||||
templateMismatchMode String @default("reject")
|
||||
downstreamReceiptRetryEnabled Boolean @default(true)
|
||||
downstreamUplinkRetryEnabled Boolean @default(true)
|
||||
status String @default("active")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -1188,8 +1190,16 @@ model CmppDownstreamDelivery {
|
||||
deliveryType String
|
||||
status String @default("pending")
|
||||
payload Json
|
||||
retryEnabled Boolean @default(true)
|
||||
retryCount Int @default(0)
|
||||
nextRetryAt DateTime?
|
||||
sentAt DateTime?
|
||||
acknowledgedAt DateTime?
|
||||
ackDeadlineAt DateTime?
|
||||
ackResult Int?
|
||||
ackSequenceId String?
|
||||
ackMessageId String?
|
||||
connectionId String?
|
||||
deliveredAt DateTime?
|
||||
lastError String?
|
||||
createdAt DateTime @default(now())
|
||||
@@ -1204,6 +1214,7 @@ model CmppDownstreamDelivery {
|
||||
@@index([messageId])
|
||||
@@index([messageRecordId])
|
||||
@@index([deliveryType, status])
|
||||
@@index([status, ackDeadlineAt])
|
||||
}
|
||||
|
||||
model GatewaySubmitDeadLetter {
|
||||
|
||||
Reference in New Issue
Block a user