393 lines
11 KiB
Go
393 lines
11 KiB
Go
package model
|
|
|
|
// Enums defines string constants for all GoChat model enum fields.
|
|
// Pattern: Go string constants instead of Rails integer flags.
|
|
// Reference: Chatwoot uses integer enums; GoChat uses descriptive string values.
|
|
|
|
// --- User & Account Enums (M1) ---
|
|
|
|
type UserAvailability string
|
|
|
|
const (
|
|
UserAvailabilityOnline UserAvailability = "online"
|
|
UserAvailabilityOffline UserAvailability = "offline"
|
|
UserAvailabilityBusy UserAvailability = "busy"
|
|
)
|
|
|
|
type UserType string
|
|
|
|
const (
|
|
UserTypeUser UserType = "user"
|
|
UserTypeSuperAdmin UserType = "super_admin"
|
|
)
|
|
|
|
type AccountUserRole string
|
|
|
|
const (
|
|
AccountUserRoleAgent AccountUserRole = "agent"
|
|
AccountUserRoleAdministrator AccountUserRole = "administrator"
|
|
)
|
|
|
|
// --- Conversation & Message Enums (M3) ---
|
|
|
|
type ConversationStatus string
|
|
|
|
const (
|
|
ConversationStatusOpen ConversationStatus = "open"
|
|
ConversationStatusResolved ConversationStatus = "resolved"
|
|
ConversationStatusPending ConversationStatus = "pending"
|
|
ConversationStatusSnoozed ConversationStatus = "snoozed"
|
|
)
|
|
|
|
type ConversationPriority string
|
|
|
|
const (
|
|
ConversationPriorityUrgent ConversationPriority = "urgent"
|
|
ConversationPriorityHigh ConversationPriority = "high"
|
|
ConversationPriorityMedium ConversationPriority = "medium"
|
|
ConversationPriorityLow ConversationPriority = "low"
|
|
)
|
|
|
|
type MessageType string
|
|
|
|
const (
|
|
MessageTypeIncoming MessageType = "incoming"
|
|
MessageTypeOutgoing MessageType = "outgoing"
|
|
MessageTypeActivity MessageType = "activity"
|
|
MessageTypeTemplate MessageType = "template"
|
|
MessageTypePrivate MessageType = "private"
|
|
)
|
|
|
|
type MessageContentType string
|
|
|
|
const (
|
|
MessageContentTypeText MessageContentType = "text"
|
|
MessageContentTypeInputText MessageContentType = "input_text"
|
|
MessageContentTypeInputEmail MessageContentType = "input_email"
|
|
MessageContentTypeImage MessageContentType = "image"
|
|
MessageContentTypeAudio MessageContentType = "audio"
|
|
MessageContentTypeVideo MessageContentType = "video"
|
|
MessageContentTypeFile MessageContentType = "file"
|
|
MessageContentTypeLocation MessageContentType = "location"
|
|
MessageContentTypeEmoji MessageContentType = "emoji"
|
|
MessageContentTypeExtended MessageContentType = "extended"
|
|
MessageContentTypeQuote MessageContentType = "quote"
|
|
MessageContentTypeContact MessageContentType = "contact"
|
|
)
|
|
|
|
type SenderType string
|
|
|
|
const (
|
|
SenderTypeContact SenderType = "Contact"
|
|
SenderTypeUser SenderType = "User"
|
|
SenderTypeAgentBot SenderType = "AgentBot"
|
|
)
|
|
|
|
type MessageStatus string
|
|
|
|
const (
|
|
MessageStatusSent MessageStatus = "sent"
|
|
MessageStatusDelivered MessageStatus = "delivered"
|
|
MessageStatusRead MessageStatus = "read"
|
|
MessageStatusFailed MessageStatus = "failed"
|
|
)
|
|
|
|
// ConversationEventType defines domain-specific events for conversation lifecycle.
|
|
type ConversationEventType string
|
|
|
|
const (
|
|
ConversationEventCreated ConversationEventType = "created"
|
|
ConversationEventUpdated ConversationEventType = "updated"
|
|
ConversationEventStatusChanged ConversationEventType = "status_changed"
|
|
ConversationEventAssigned ConversationEventType = "assigned"
|
|
ConversationEventUnassigned ConversationEventType = "unassigned"
|
|
ConversationEventDeleted ConversationEventType = "deleted"
|
|
ConversationEventMuted ConversationEventType = "muted"
|
|
ConversationEventUnmuted ConversationEventType = "unmuted"
|
|
ConversationEventLabelsUpdated ConversationEventType = "labels_updated"
|
|
ConversationEventPriorityUpdated ConversationEventType = "priority_updated"
|
|
)
|
|
|
|
// MessageEventType defines events for message lifecycle.
|
|
type MessageEventType string
|
|
|
|
const (
|
|
MessageEventCreated MessageEventType = "created"
|
|
MessageEventUpdated MessageEventType = "updated"
|
|
MessageEventDeleted MessageEventType = "deleted"
|
|
MessageEventStatusUpdated MessageEventType = "status_updated"
|
|
)
|
|
|
|
// --- Channel Enums (M2) ---
|
|
|
|
type InboxChannelType string
|
|
|
|
const (
|
|
InboxChannelTypeWebWidget InboxChannelType = "Channel::WebWidget"
|
|
InboxChannelTypeTelegram InboxChannelType = "Channel::Telegram"
|
|
InboxChannelTypeFacebook InboxChannelType = "Channel::FacebookPage"
|
|
InboxChannelTypeWhatsApp InboxChannelType = "Channel::Whatsapp"
|
|
InboxChannelTypeEmail InboxChannelType = "Channel::Email"
|
|
InboxChannelTypeTwilioSMS InboxChannelType = "Channel::TwilioSms"
|
|
InboxChannelTypeLine InboxChannelType = "Channel::Line"
|
|
InboxChannelTypeSMS InboxChannelType = "Channel::Sms"
|
|
InboxChannelTypeInstagram InboxChannelType = "Channel::Instagram"
|
|
InboxChannelTypeTikTok InboxChannelType = "Channel::TikTok"
|
|
InboxChannelTypeTwitter InboxChannelType = "Channel::Twitter"
|
|
InboxChannelTypeMicrosoft InboxChannelType = "Channel::Microsoft"
|
|
InboxChannelTypeGoogle InboxChannelType = "Channel::Google"
|
|
InboxChannelTypeAPI InboxChannelType = "Channel::Api"
|
|
)
|
|
|
|
type AssignmentLogic string
|
|
|
|
const (
|
|
AssignmentLogicRoundRobin AssignmentLogic = "round_robin"
|
|
AssignmentLogicLeastBusy AssignmentLogic = "least_busy"
|
|
)
|
|
|
|
type ReplyTimeType string
|
|
|
|
const (
|
|
ReplyTimeInAFewMinutes ReplyTimeType = "in_a_few_minutes"
|
|
ReplyTimeInAFewHours ReplyTimeType = "in_a_few_hours"
|
|
ReplyTimeInADay ReplyTimeType = "in_a_day"
|
|
)
|
|
|
|
// --- Contact Enums (M4) ---
|
|
|
|
type ContactSource string
|
|
|
|
const (
|
|
ContactSourceChatwoot ContactSource = "chatwoot"
|
|
ContactSourceFacebook ContactSource = "facebook"
|
|
ContactSourceWhatsApp ContactSource = "whatsapp"
|
|
ContactSourceTelegram ContactSource = "telegram"
|
|
)
|
|
|
|
// --- Automation Enums (M6) ---
|
|
|
|
type AutomationEventType string
|
|
|
|
const (
|
|
AutomationEventMessageCreated AutomationEventType = "message_created"
|
|
AutomationEventConversationCreated AutomationEventType = "conversation_created"
|
|
AutomationEventConversationUpdated AutomationEventType = "conversation_updated"
|
|
)
|
|
|
|
type MacroVisibility string
|
|
|
|
const (
|
|
MacroVisibilityPersonal MacroVisibility = "personal"
|
|
MacroVisibilityTeam MacroVisibility = "team"
|
|
MacroVisibilityGlobal MacroVisibility = "global"
|
|
)
|
|
|
|
// --- Campaign Enums (M7) ---
|
|
|
|
type CampaignType string
|
|
|
|
const (
|
|
CampaignTypeOngoing CampaignType = "ongoing"
|
|
CampaignTypeOneOff CampaignType = "one_off"
|
|
)
|
|
|
|
// --- Notification Enums (M8) ---
|
|
|
|
type NotificationEventType string
|
|
|
|
const (
|
|
NotificationEventConversationCreated NotificationEventType = "conversation_created"
|
|
NotificationEventConversationAssigned NotificationEventType = "conversation_assigned"
|
|
NotificationEventMessageCreated NotificationEventType = "message_created"
|
|
NotificationEventConversationStatusChanged NotificationEventType = "conversation_status_changed"
|
|
NotificationEventAssigneeChanged NotificationEventType = "assignee_changed"
|
|
NotificationEventTeamChanged NotificationEventType = "team_changed"
|
|
)
|
|
|
|
type SubscriptionType string
|
|
|
|
const (
|
|
SubscriptionTypePush SubscriptionType = "push"
|
|
SubscriptionTypeEmail SubscriptionType = "email"
|
|
SubscriptionTypeWebPush SubscriptionType = "webpush"
|
|
)
|
|
|
|
// --- Knowledge Base Enums (M9) ---
|
|
|
|
type ArticleStatus string
|
|
|
|
const (
|
|
ArticleStatusDraft ArticleStatus = "draft"
|
|
ArticleStatusPublished ArticleStatus = "published"
|
|
ArticleStatusArchived ArticleStatus = "archived"
|
|
)
|
|
|
|
type PortalMemberRole string
|
|
|
|
const (
|
|
PortalMemberRoleReader PortalMemberRole = "reader"
|
|
PortalMemberRoleEditor PortalMemberRole = "editor"
|
|
PortalMemberRoleAdministrator PortalMemberRole = "administrator"
|
|
)
|
|
|
|
// --- SLA Enums (M11) ---
|
|
// Reference: Chatwoot enum sla_status: { active: 0, hit: 1, missed: 2, active_with_misses: 3 }
|
|
|
|
type SLAStatus string
|
|
|
|
const (
|
|
SLAStatusActive SLAStatus = "active"
|
|
SLAStatusHit SLAStatus = "hit"
|
|
SLAStatusMissed SLAStatus = "missed"
|
|
SLAStatusActiveWithMisses SLAStatus = "active_with_misses"
|
|
)
|
|
|
|
// SLAEventType represents the type of SLA threshold event.
|
|
// Reference: Chatwoot enum event_type: { frt: 0, nrt: 1, rt: 2 }
|
|
type SLAEventType string
|
|
|
|
const (
|
|
SLAEventFRT SLAEventType = "frt" // first response time threshold
|
|
SLAEventNRT SLAEventType = "nrt" // next response time threshold
|
|
SLAEventRT SLAEventType = "rt" // resolution time threshold
|
|
)
|
|
|
|
type AuditAction string
|
|
|
|
const (
|
|
AuditActionCreate AuditAction = "create"
|
|
AuditActionUpdate AuditAction = "update"
|
|
AuditActionDelete AuditAction = "delete"
|
|
)
|
|
|
|
type CallType string
|
|
|
|
const (
|
|
CallTypeInbound CallType = "inbound"
|
|
CallTypeOutbound CallType = "outbound"
|
|
)
|
|
|
|
type CallStatus string
|
|
|
|
const (
|
|
CallStatusRinging CallStatus = "ringing"
|
|
CallStatusOngoing CallStatus = "ongoing"
|
|
CallStatusCompleted CallStatus = "completed"
|
|
CallStatusFailed CallStatus = "failed"
|
|
)
|
|
|
|
// --- Copilot Enums (M10) ---
|
|
// NOTE: CopilotMessageType is defined in captain_models.go with user/assistant/assistant_thinking values.
|
|
// The enums below provide additional copilot-related constants.
|
|
|
|
type CopilotRole string
|
|
|
|
const (
|
|
CopilotRoleUser CopilotRole = "user"
|
|
CopilotRoleAssistant CopilotRole = "assistant"
|
|
CopilotRoleTool CopilotRole = "tool"
|
|
)
|
|
|
|
// CopilotMessageType is defined in captain_models.go (user/assistant/assistant_thinking).
|
|
// CopilotFeatureType defines the feature categories for copilot suggestions.
|
|
|
|
// --- Platform Enums (M12) ---
|
|
|
|
type DataImportStatus string
|
|
|
|
const (
|
|
DataImportStatusPending DataImportStatus = "pending"
|
|
DataImportStatusProcessing DataImportStatus = "processing"
|
|
DataImportStatusCompleted DataImportStatus = "completed"
|
|
DataImportStatusFailed DataImportStatus = "failed"
|
|
)
|
|
|
|
// --- Custom Attribute Enums (M4) ---
|
|
|
|
type AttributeModelType string
|
|
|
|
const (
|
|
AttributeModelConversation AttributeModelType = "conversation"
|
|
AttributeModelContact AttributeModelType = "contact"
|
|
)
|
|
|
|
type AttributeValueType string
|
|
|
|
const (
|
|
AttributeValueTypeText AttributeValueType = "text"
|
|
AttributeValueTypeNumber AttributeValueType = "number"
|
|
AttributeValueTypeDate AttributeValueType = "date"
|
|
AttributeValueTypeList AttributeValueType = "list"
|
|
AttributeValueTypeCheckbox AttributeValueType = "checkbox"
|
|
)
|
|
|
|
// --- Filter Enums (M4) ---
|
|
|
|
type FilterType string
|
|
|
|
const (
|
|
FilterTypeConversation FilterType = "conversation"
|
|
FilterTypeContact FilterType = "contact"
|
|
FilterTypeInbox FilterType = "inbox"
|
|
FilterTypeMessage FilterType = "message"
|
|
)
|
|
|
|
// --- Reporting Enums (M7) ---
|
|
|
|
type RollupType string
|
|
|
|
const (
|
|
RollupTypeDaily RollupType = "daily"
|
|
RollupTypeWeekly RollupType = "weekly"
|
|
RollupTypeMonthly RollupType = "monthly"
|
|
)
|
|
|
|
// --- Captain Enums (M10) ---
|
|
|
|
type CaptainDocumentStatus string
|
|
|
|
const (
|
|
CaptainDocumentStatusInProgress CaptainDocumentStatus = "in_progress"
|
|
CaptainDocumentStatusCompleted CaptainDocumentStatus = "completed"
|
|
CaptainDocumentStatusFailed CaptainDocumentStatus = "failed"
|
|
)
|
|
|
|
type HookType string
|
|
|
|
const (
|
|
HookTypeInboxOutgoing HookType = "inbox_outgoing"
|
|
HookTypeAccountOutgoing HookType = "account_outgoing"
|
|
// M11: Integration hook types (webhook/slack/shopify/linear/notion)
|
|
HookTypeWebhook HookType = "webhook"
|
|
HookTypeSlack HookType = "slack"
|
|
HookTypeShopify HookType = "shopify"
|
|
HookTypeLinear HookType = "linear"
|
|
HookTypeNotion HookType = "notion"
|
|
)
|
|
|
|
type HookStatus string
|
|
|
|
const (
|
|
HookStatusActive HookStatus = "active"
|
|
HookStatusDisabled HookStatus = "disabled"
|
|
HookStatusInactive HookStatus = "inactive"
|
|
)
|
|
|
|
// --- WhatsApp Provider ---
|
|
|
|
type WhatsAppProvider string
|
|
|
|
const (
|
|
WhatsAppProvider360Dialog WhatsAppProvider = "360dialog"
|
|
WhatsAppProviderWhatsAppCloud WhatsAppProvider = "whatsapp_cloud"
|
|
)
|
|
|
|
// --- Twilio Medium ---
|
|
|
|
type TwilioMedium string
|
|
|
|
const (
|
|
TwilioMediumSMS TwilioMedium = "sms"
|
|
TwilioMediumWhatsApp TwilioMedium = "whatsapp"
|
|
) |