feat(copilot): finish configuration center
This commit is contained in:
@@ -11,27 +11,33 @@ type ErrorCode string
|
||||
|
||||
const (
|
||||
// General errors
|
||||
ErrInternal ErrorCode = "INTERNAL_ERROR"
|
||||
ErrNotFound ErrorCode = "NOT_FOUND"
|
||||
ErrBadRequest ErrorCode = "BAD_REQUEST"
|
||||
ErrUnauthorized ErrorCode = "UNAUTHORIZED"
|
||||
ErrForbidden ErrorCode = "FORBIDDEN"
|
||||
ErrConflict ErrorCode = "CONFLICT"
|
||||
ErrValidation ErrorCode = "VALIDATION_ERROR"
|
||||
ErrRateLimit ErrorCode = "RATE_LIMITED"
|
||||
ErrServiceUnavail ErrorCode = "SERVICE_UNAVAILABLE"
|
||||
ErrInternal ErrorCode = "INTERNAL_ERROR"
|
||||
ErrNotFound ErrorCode = "NOT_FOUND"
|
||||
ErrBadRequest ErrorCode = "BAD_REQUEST"
|
||||
ErrUnauthorized ErrorCode = "UNAUTHORIZED"
|
||||
ErrForbidden ErrorCode = "FORBIDDEN"
|
||||
ErrConflict ErrorCode = "CONFLICT"
|
||||
ErrValidation ErrorCode = "VALIDATION_ERROR"
|
||||
ErrRateLimit ErrorCode = "RATE_LIMITED"
|
||||
ErrServiceUnavail ErrorCode = "SERVICE_UNAVAILABLE"
|
||||
ErrPaymentRequired ErrorCode = "PAYMENT_REQUIRED"
|
||||
|
||||
// Business-specific errors (ref: Chatwoot error patterns)
|
||||
ErrAccountNotFound ErrorCode = "ACCOUNT_NOT_FOUND"
|
||||
ErrInboxNotFound ErrorCode = "INBOX_NOT_FOUND"
|
||||
ErrChannelInvalid ErrorCode = "CHANNEL_INVALID"
|
||||
ErrContactNotFound ErrorCode = "CONTACT_NOT_FOUND"
|
||||
ErrConversationNotFound ErrorCode = "CONVERSATION_NOT_FOUND"
|
||||
ErrMessageNotFound ErrorCode = "MESSAGE_NOT_FOUND"
|
||||
ErrUserNotFound ErrorCode = "USER_NOT_FOUND"
|
||||
ErrDuplicateRecord ErrorCode = "DUPLICATE_RECORD"
|
||||
ErrChannelNotEnabled ErrorCode = "CHANNEL_NOT_ENABLED"
|
||||
ErrAccountNotFound ErrorCode = "ACCOUNT_NOT_FOUND"
|
||||
ErrInboxNotFound ErrorCode = "INBOX_NOT_FOUND"
|
||||
ErrChannelInvalid ErrorCode = "CHANNEL_INVALID"
|
||||
ErrContactNotFound ErrorCode = "CONTACT_NOT_FOUND"
|
||||
ErrConversationNotFound ErrorCode = "CONVERSATION_NOT_FOUND"
|
||||
ErrMessageNotFound ErrorCode = "MESSAGE_NOT_FOUND"
|
||||
ErrUserNotFound ErrorCode = "USER_NOT_FOUND"
|
||||
ErrDuplicateRecord ErrorCode = "DUPLICATE_RECORD"
|
||||
ErrChannelNotEnabled ErrorCode = "CHANNEL_NOT_ENABLED"
|
||||
ErrCopilotNotConfigured ErrorCode = "COPILOT_NOT_CONFIGURED"
|
||||
ErrCopilotProviderAuth ErrorCode = "COPILOT_PROVIDER_AUTHENTICATION_FAILED"
|
||||
ErrCopilotProviderRateLimited ErrorCode = "COPILOT_PROVIDER_RATE_LIMITED"
|
||||
ErrCopilotProviderUnreachable ErrorCode = "COPILOT_PROVIDER_UNREACHABLE"
|
||||
ErrCopilotProviderTimeout ErrorCode = "COPILOT_PROVIDER_TIMEOUT"
|
||||
ErrCopilotModelNotFound ErrorCode = "COPILOT_MODEL_NOT_FOUND"
|
||||
|
||||
// Knowledge Base / Help Center errors (M4)
|
||||
ErrPortalNotFound ErrorCode = "PORTAL_NOT_FOUND"
|
||||
@@ -63,9 +69,9 @@ func (e *AppError) Error() string {
|
||||
// NewAppError creates a new AppError
|
||||
func NewAppError(code ErrorCode, message string, status int) *AppError {
|
||||
return &AppError{
|
||||
Code: code,
|
||||
Code: code,
|
||||
Message: message,
|
||||
Status: status,
|
||||
Status: status,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,9 +128,12 @@ func ErrorToHTTPStatus(code ErrorCode) int {
|
||||
return http.StatusForbidden
|
||||
case ErrConflict, ErrDuplicateRecord, ErrChannelInvalid:
|
||||
return http.StatusConflict
|
||||
case ErrRateLimit:
|
||||
case ErrRateLimit, ErrCopilotProviderRateLimited:
|
||||
return http.StatusTooManyRequests
|
||||
case ErrServiceUnavail:
|
||||
case ErrCopilotProviderTimeout:
|
||||
return http.StatusGatewayTimeout
|
||||
case ErrServiceUnavail, ErrCopilotNotConfigured, ErrCopilotProviderAuth,
|
||||
ErrCopilotProviderUnreachable, ErrCopilotModelNotFound:
|
||||
return http.StatusServiceUnavailable
|
||||
default:
|
||||
return http.StatusInternalServerError
|
||||
|
||||
Reference in New Issue
Block a user