// Package message defines the App message tab inbox domain owned by activity-service. package message const ( // SectionUser is sourced from Tencent IM SDK and never persisted by this service. SectionUser = "user" // SectionSystem stores account, wallet, room and application notifications. SectionSystem = "system" // SectionActivity stores activity, reward and operational campaign notifications. SectionActivity = "activity" SourceTencentIMSDK = "tencent_im_sdk" SourceBackend = "backend" StatusVisible = "visible" StatusRecalled = "recalled" StatusHidden = "hidden" StatusExpired = "expired" FanoutStatusPending = "pending" FanoutStatusRunning = "running" FanoutStatusRetrying = "retrying" FanoutStatusFailed = "failed" FanoutStatusComplete = "completed" TargetScopeSingleUser = "single_user" TargetScopeUserIDs = "user_ids" TargetScopeRegion = "region" TargetScopeCountry = "country" TargetScopeAllActiveUsers = "all_active_users" ) // TabSection is the message tab summary returned to App clients. type TabSection struct { Section string Title string UnreadCount int64 Source string } // InboxMessage is the user-visible snapshot stored in user_inbox_messages. type InboxMessage struct { AppCode string MessageID string UserID int64 MessageType string Producer string ProducerEventID string ProducerEventType string AggregateType string AggregateID string TemplateID string TemplateVersion string Title string Summary string Body string IconURL string ImageURL string ActionType string ActionParam string Priority int32 Status string ReadAtMS int64 DeletedAtMS int64 SentAtMS int64 ExpireAtMS int64 MetadataJSON string CreatedAtMS int64 UpdatedAtMS int64 } // Read reports whether the user has marked the message as read. func (m InboxMessage) Read() bool { return m.ReadAtMS > 0 } // MessageTemplate is an active server-owned content template snapshot source. type MessageTemplate struct { AppCode string TemplateID string TemplateVersion string MessageType string Locale string Title string Summary string Body string IconURL string ImageURL string ActionType string ActionParam string Status string CreatedBy string CreatedAtMS int64 UpdatedAtMS int64 } // ListQuery is the stable cursor query for system/activity inbox lists. type ListQuery struct { UserID int64 Section string Limit int CursorSentAtMS int64 CursorMessageID string NowMS int64 } // CreateInput carries a validated single-user inbox creation command. type CreateInput struct { TargetUserID int64 Producer string ProducerEventID string ProducerEventType string MessageType string AggregateType string AggregateID string TemplateID string TemplateVersion string Title string Summary string Body string IconURL string ImageURL string ActionType string ActionParam string Priority int32 SentAtMS int64 ExpireAtMS int64 MetadataJSON string } // FanoutJob stores a background fanout command without executing user selection in the request path. type FanoutJob struct { AppCode string JobID string CommandID string MessageType string TargetScope string TargetFilterJSON string TemplateSnapshotJSON string Status string AttemptCount int32 CursorUserID int64 TotalCount int64 SuccessCount int64 FailureCount int64 BatchSize int32 NextRunAtMS int64 LockedBy string LockedUntilMS int64 ErrorMessage string CreatedBy string CreatedAtMS int64 UpdatedAtMS int64 } // CreateFanoutInput is the validated admin or producer command for fanout job creation. type CreateFanoutInput struct { CommandID string MessageType string TargetScope string TargetFilterJSON string TemplateSnapshotJSON string BatchSize int32 CreatedBy string }