feat: harden platform workflows and UI governance

This commit is contained in:
hectorzhao
2026-07-22 14:14:55 +08:00
parent ef957f7daa
commit 0f223f7f91
80 changed files with 4958 additions and 764 deletions
@@ -0,0 +1,69 @@
-- Historical receipts created before channel-aware matching could be attached to
-- the right message but retain the wrong channel when two channels shared the
-- same supplier account. Only repair rows that have exactly one submit record
-- for the same message, upstream message id and destination phone number.
WITH unique_receipt_submit AS (
SELECT
receipt.id AS receipt_id,
MIN(submit."channelId") AS correct_channel_id
FROM "SmsReceiptRecord" receipt
JOIN "SmsMessageRecord" message
ON message.id = receipt."messageRecordId"
JOIN "SmsSubmitRecord" submit
ON submit."messageRecordId" = message.id
AND submit."gatewayMessageId" = receipt."gatewayMessageId"
WHERE receipt."receiptStatus" = 'delivered'
AND receipt."phoneNumber" = message."phoneNumber"
GROUP BY receipt.id
HAVING COUNT(submit.id) = 1
)
UPDATE "SmsReceiptRecord" receipt
SET "channelId" = matched.correct_channel_id
FROM unique_receipt_submit matched
WHERE receipt.id = matched.receipt_id
AND receipt."channelId" IS DISTINCT FROM matched.correct_channel_id;
-- Aggregate the corrected successful receipt onto the message master record.
-- DISTINCT ON chooses the first successful receipt for segmented messages while
-- preserving the original submit/gateway identity of the current attempt.
WITH delivered_match AS (
SELECT DISTINCT ON (message.id)
message.id AS message_record_id,
submit."channelId" AS channel_id,
receipt."gatewayMessageId" AS gateway_message_id,
receipt."rawStatus" AS raw_status,
receipt."errorCode" AS error_code,
receipt."errorMessage" AS error_message,
receipt."deliveredAt" AS delivered_at
FROM "SmsMessageRecord" message
JOIN "SmsReceiptRecord" receipt
ON receipt."messageRecordId" = message.id
AND receipt."receiptStatus" = 'delivered'
AND receipt."phoneNumber" = message."phoneNumber"
JOIN "SmsSubmitRecord" submit
ON submit."messageRecordId" = message.id
AND submit."gatewayMessageId" = receipt."gatewayMessageId"
AND submit."channelId" = receipt."channelId"
WHERE message."gatewayMessageId" = receipt."gatewayMessageId"
ORDER BY message.id, receipt."deliveredAt" ASC, receipt.id ASC
)
UPDATE "SmsMessageRecord" message
SET
status = 'delivered',
"receiptStatus" = 'delivered',
"receiptRawStatus" = matched.raw_status,
"channelId" = matched.channel_id,
"gatewayMessageId" = matched.gateway_message_id,
"errorCode" = matched.error_code,
"errorMessage" = matched.error_message,
"deliveredAt" = matched.delivered_at,
"timeoutAt" = NULL,
"updatedAt" = CURRENT_TIMESTAMP
FROM delivered_match matched
WHERE message.id = matched.message_record_id
AND (
message.status IS DISTINCT FROM 'delivered'
OR message."receiptStatus" IS DISTINCT FROM 'delivered'
OR message."deliveredAt" IS DISTINCT FROM matched.delivered_at
OR message."channelId" IS DISTINCT FROM matched.channel_id
);