From bce3b734805bba14a29642fd3baeab1d1880c0eb Mon Sep 17 00:00:00 2001 From: hhs <386998068@qq.com> Date: Sat, 13 Jun 2026 15:17:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=A0=81=E5=B8=B8=E9=87=8F=20+=20WS=20=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 internal/errors/codes.go - 定义 10 个错误码常量(与接口文档一致) - 提供 SendWSError 工具函数 --- backend/internal/errors/codes.go | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 backend/internal/errors/codes.go 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(), + }) +}