HH-469: close WebSocket fanout contract gaps (#109)

* HH-469: close websocket fanout contract gaps

* fix: unify message sender contracts

---------

Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
Rogee
2026-08-23 00:22:01 +08:00
committed by GitHub
co-authored by rogee
parent f91dc6ca1a
commit ef8931099c
14 changed files with 377 additions and 114 deletions
+4 -2
View File
@@ -153,6 +153,7 @@ type smokeSeedSummary struct {
ConversationID uint `json:"conversation_id"`
ConversationDisplayID uint `json:"conversation_display_id"`
ConversationUID string `json:"conversation_uuid"`
WidgetToken string `json:"widget_token"`
CsatMessageID uint `json:"csat_message_id"`
SlaPolicyID uint `json:"sla_policy_id"`
CustomRoleID uint `json:"custom_role_id"`
@@ -266,7 +267,8 @@ func seedSmokeDataInTransaction(ctx context.Context, db *gorm.DB) (*smokeSeedSum
return nil, fmt.Errorf("update contact company: %w", err)
}
contactInbox := &model.ContactInbox{}
if err := db.WithContext(ctx).Where("contact_id = ? AND inbox_id = ?", contact.ID, inbox.ID).FirstOrCreate(contactInbox, model.ContactInbox{ContactID: contact.ID, InboxID: inbox.ID, SourceID: "gochat-smoke-source", PubsubToken: "gochat-smoke-contact-pubsub"}).Error; err != nil {
widgetToken := fmt.Sprintf("gochat-smoke-contact-pubsub-%d-%d", account.ID, inbox.ID)
if err := db.WithContext(ctx).Where("contact_id = ? AND inbox_id = ?", contact.ID, inbox.ID).FirstOrCreate(contactInbox, model.ContactInbox{ContactID: contact.ID, InboxID: inbox.ID, SourceID: "gochat-smoke-source", PubsubToken: widgetToken}).Error; err != nil {
return nil, fmt.Errorf("seed contact inbox: %w", err)
}
@@ -333,7 +335,7 @@ func seedSmokeDataInTransaction(ctx context.Context, db *gorm.DB) (*smokeSeedSum
if conversation.DisplayID != nil {
conversationDisplayID = *conversation.DisplayID
}
return &smokeSeedSummary{AdminID: admin.ID, AdminEmail: adminEmail, AdminPassword: adminPassword, AccountID: account.ID, InboxID: inbox.ID, VoiceInboxID: voiceInbox.ID, ContactID: contact.ID, CompanyID: company.ID, PortalID: portal.ID, ArticleID: article.ID, ConversationID: conversation.ID, ConversationDisplayID: conversationDisplayID, ConversationUID: conversation.UUID, CsatMessageID: csatMessage.ID, SlaPolicyID: sla.ID, CustomRoleID: customRole.ID, CapacityPolicyID: capacity.ID, CaptainAssistantID: assistant.ID, CaptainMessageID: captainMessage.ID, AgentBotID: agentBot.ID}, nil
return &smokeSeedSummary{AdminID: admin.ID, AdminEmail: adminEmail, AdminPassword: adminPassword, AccountID: account.ID, InboxID: inbox.ID, VoiceInboxID: voiceInbox.ID, ContactID: contact.ID, CompanyID: company.ID, PortalID: portal.ID, ArticleID: article.ID, ConversationID: conversation.ID, ConversationDisplayID: conversationDisplayID, ConversationUID: conversation.UUID, WidgetToken: contactInbox.PubsubToken, CsatMessageID: csatMessage.ID, SlaPolicyID: sla.ID, CustomRoleID: customRole.ID, CapacityPolicyID: capacity.ID, CaptainAssistantID: assistant.ID, CaptainMessageID: captainMessage.ID, AgentBotID: agentBot.ID}, nil
}
func seedSmokeCaptain(ctx context.Context, db *gorm.DB, accountID, inboxID uint) (*model.CaptainAssistant, error) {