diff --git a/backend/internal/errors/codes.go b/backend/internal/errors/codes.go new file mode 100644 index 0000000..739cfdb --- /dev/null +++ b/backend/internal/errors/codes.go @@ -0,0 +1,33 @@ +package errors + +import "github.com/hhs/camtalk/internal/models" + +// 错误码常量,与 docs/03-接口文档.md 保持一致。 +const ( + CodeInvalidMessage = "INVALID_MESSAGE" + CodeSessionNotFound = "SESSION_NOT_FOUND" + CodeRateLimited = "RATE_LIMITED" + CodeImageTooLarge = "IMAGE_TOO_LARGE" + CodeAudioTooShort = "AUDIO_TOO_SHORT" + CodeLLMTimeout = "LLM_TIMEOUT" + CodeLLMError = "LLM_ERROR" + CodeSTTError = "STT_ERROR" + CodeTTSError = "TTS_ERROR" + CodeInternalError = "INTERNAL_ERROR" +) + +// Sender 定义发送 WS 错误消息的接口,便于测试 mock。 +type Sender interface { + SendError(code, requestID, message string) +} + +// SendWSError 向客户端发送 error 消息。 +// sender 是一个具有 sendJSON 方法的对象,这里用接口抽象。 +func SendWSError(sender interface{ SendJSON(v any) error }, code, requestID string, err error) { + _ = sender.SendJSON(models.WsError{ + Type: "error", + Code: code, + RequestID: requestID, + Message: err.Error(), + }) +}