feat: add protocol interaction observability

This commit is contained in:
hectorzhao
2026-07-24 10:47:47 +08:00
parent 4f4fa5fcb7
commit 0bfeb0839e
17 changed files with 740 additions and 42 deletions
@@ -0,0 +1,34 @@
CREATE TABLE "ProtocolInteractionLog" (
"id" TEXT NOT NULL,
"protocol" TEXT NOT NULL,
"direction" TEXT NOT NULL,
"eventType" TEXT NOT NULL,
"status" TEXT NOT NULL,
"tenantId" TEXT,
"applicationId" TEXT,
"channelId" TEXT,
"account" TEXT,
"messageId" TEXT,
"gatewayMessageId" TEXT,
"traceId" TEXT,
"requestId" TEXT,
"phoneMasked" TEXT,
"resultCode" TEXT,
"durationMs" INTEGER,
"payloadBytes" INTEGER,
"retryCount" INTEGER,
"detail" JSONB,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ProtocolInteractionLog_pkey" PRIMARY KEY ("id")
);
CREATE INDEX "ProtocolInteractionLog_createdAt_idx" ON "ProtocolInteractionLog"("createdAt");
CREATE INDEX "ProtocolInteractionLog_protocol_direction_createdAt_idx" ON "ProtocolInteractionLog"("protocol", "direction", "createdAt");
CREATE INDEX "ProtocolInteractionLog_eventType_createdAt_idx" ON "ProtocolInteractionLog"("eventType", "createdAt");
CREATE INDEX "ProtocolInteractionLog_status_createdAt_idx" ON "ProtocolInteractionLog"("status", "createdAt");
CREATE INDEX "ProtocolInteractionLog_channelId_createdAt_idx" ON "ProtocolInteractionLog"("channelId", "createdAt");
CREATE INDEX "ProtocolInteractionLog_applicationId_createdAt_idx" ON "ProtocolInteractionLog"("applicationId", "createdAt");
CREATE INDEX "ProtocolInteractionLog_messageId_idx" ON "ProtocolInteractionLog"("messageId");
CREATE INDEX "ProtocolInteractionLog_gatewayMessageId_idx" ON "ProtocolInteractionLog"("gatewayMessageId");
CREATE INDEX "ProtocolInteractionLog_requestId_idx" ON "ProtocolInteractionLog"("requestId");
+33
View File
@@ -182,6 +182,39 @@ model OperationLogArchive {
@@index([archiveMonth])
}
model ProtocolInteractionLog {
id String @id @default(cuid())
protocol String
direction String
eventType String
status String
tenantId String?
applicationId String?
channelId String?
account String?
messageId String?
gatewayMessageId String?
traceId String?
requestId String?
phoneMasked String?
resultCode String?
durationMs Int?
payloadBytes Int?
retryCount Int?
detail Json?
createdAt DateTime @default(now())
@@index([createdAt])
@@index([protocol, direction, createdAt])
@@index([eventType, createdAt])
@@index([status, createdAt])
@@index([channelId, createdAt])
@@index([applicationId, createdAt])
@@index([messageId])
@@index([gatewayMessageId])
@@index([requestId])
}
model FileObject {
id String @id @default(cuid())
tenantId String?