feat(copilot): finish configuration center

This commit is contained in:
2026-07-13 14:57:28 +08:00
parent 0a69d80f7c
commit 8b9eedc0e2
60 changed files with 3040 additions and 1042 deletions
+31 -22
View File
@@ -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