feat: harden CMPP delivery and platform workflows

This commit is contained in:
hectorzhao
2026-07-20 18:07:29 +08:00
parent 80fb5a8f53
commit f02c33cbb7
61 changed files with 1834 additions and 281 deletions
@@ -0,0 +1,2 @@
ALTER TABLE "SmsMessageRecord"
ADD COLUMN "cmppSubmitGroupMessageId" TEXT;
@@ -0,0 +1,26 @@
ALTER TABLE "SmsMessageRecord"
ADD COLUMN "receiptRawStatus" TEXT;
ALTER TABLE "SmsReceiptRecord"
ADD COLUMN "receiptKey" TEXT,
ADD COLUMN "errorMessage" TEXT;
UPDATE "SmsReceiptRecord"
SET "receiptKey" = MD5(
COALESCE("channelId", '') || E'\u0001' ||
"gatewayMessageId" || E'\u0001' ||
"receiptStatus" || E'\u0001' ||
"rawStatus"
) || MD5("id");
ALTER TABLE "SmsReceiptRecord"
ALTER COLUMN "receiptKey" SET NOT NULL;
CREATE UNIQUE INDEX "SmsReceiptRecord_receiptKey_key"
ON "SmsReceiptRecord"("receiptKey");
CREATE INDEX "SmsSubmitRecord_channelId_gatewayMessageId_idx"
ON "SmsSubmitRecord"("channelId", "gatewayMessageId");
CREATE INDEX "SmsReceiptRecord_channelId_gatewayMessageId_idx"
ON "SmsReceiptRecord"("channelId", "gatewayMessageId");
@@ -0,0 +1,9 @@
ALTER TABLE "DailyReconciliationReport"
ADD COLUMN "failedUnits" INTEGER NOT NULL DEFAULT 0;
ALTER TABLE "DailyProfitReport"
ADD COLUMN "failedUnits" INTEGER NOT NULL DEFAULT 0,
ADD COLUMN "refundCents" BIGINT NOT NULL DEFAULT 0;
ALTER TABLE "DailyQualityReport"
ADD COLUMN "failedUnits" INTEGER NOT NULL DEFAULT 0;
@@ -0,0 +1,11 @@
ALTER TABLE "SmsReceiptRecord"
ADD COLUMN "phoneNumber" TEXT;
UPDATE "SmsReceiptRecord" receipt
SET "phoneNumber" = message."phoneNumber"
FROM "SmsMessageRecord" message
WHERE receipt."messageRecordId" = message.id
AND receipt."phoneNumber" IS NULL;
CREATE INDEX "SmsReceiptRecord_channelId_gatewayMessageId_phoneNumber_idx"
ON "SmsReceiptRecord"("channelId", "gatewayMessageId", "phoneNumber");
+12
View File
@@ -1324,11 +1324,13 @@ model SmsMessageRecord {
submitId String?
gatewayMessageId String?
cmppSubmitSequenceId String?
cmppSubmitGroupMessageId String?
clientSrcId String?
applicationExtension String?
status String @default("queued")
submitStatus String?
receiptStatus String?
receiptRawStatus String?
errorCode String?
errorMessage String?
queuedAt DateTime @default(now())
@@ -1407,6 +1409,7 @@ model SmsSubmitRecord {
@@index([tenantId, createdAt])
@@index([messageRecordId])
@@index([gatewayMessageId])
@@index([channelId, gatewayMessageId])
}
model DailyReconciliationReport {
@@ -1418,6 +1421,7 @@ model DailyReconciliationReport {
applicationName String
sentUnits Int @default(0)
successUnits Int @default(0)
failedUnits Int @default(0)
generatedAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@ -1439,7 +1443,9 @@ model DailyProfitReport {
channelId String?
sentUnits Int @default(0)
successUnits Int @default(0)
failedUnits Int @default(0)
revenueCents BigInt @default(0)
refundCents BigInt @default(0)
costCents BigInt @default(0)
profitCents BigInt @default(0)
profitRateBps Int @default(0)
@@ -1467,6 +1473,7 @@ model DailyQualityReport {
drainageInfoId String?
sentUnits Int @default(0)
successUnits Int @default(0)
failedUnits Int @default(0)
successRateBps Int @default(0)
avgArrivalMs Int?
generatedAt DateTime @default(now())
@@ -1524,13 +1531,16 @@ model SmsReceiptRecord {
tenantId String?
batchTaskId String?
messageRecordId String?
receiptKey String @unique
channelId String?
messageId String
gatewayMessageId String
phoneNumber String?
sequenceId Int?
receiptStatus String
rawStatus String
errorCode String?
errorMessage String?
deliveredAt DateTime
createdAt DateTime @default(now())
@@ -1542,6 +1552,8 @@ model SmsReceiptRecord {
@@index([tenantId, createdAt])
@@index([messageId])
@@index([gatewayMessageId])
@@index([channelId, gatewayMessageId])
@@index([channelId, gatewayMessageId, phoneNumber])
}
model SmsUplinkMessage {