package protocol // 错误码(WS error 帧与 REST 错误体共用)。 const ( ErrQuotaExceeded = "QUOTA_EXCEEDED" // 试用 + 余额均已用尽 ErrUnauthorized = "UNAUTHORIZED" // JWT 失效 / 被踢出 ErrASRUnavailable = "ASR_UNAVAILABLE" // 上游 ASR 故障(重试/切备用后仍失败) ErrSessionLimit = "SESSION_LIMIT" // 单会话超长,已自动截断定稿 ErrRateLimited = "RATE_LIMITED" // 设备 30 分钟滑动窗口超限 ErrFeedbackRateLimited = "FEEDBACK_RATE_LIMITED" // 反馈每日条数超限 ErrBadRequest = "BAD_REQUEST" ErrInternal = "INTERNAL" ) // ErrMessage 错误码对应的用户可读文案(客户端可直接展示,遵循文案规范:短句、无句号)。 var ErrMessage = map[string]string{ ErrQuotaExceeded: "今日试用已用完,去购买时长", ErrUnauthorized: "登录已失效,请重新登录", ErrASRUnavailable: "识别服务暂不可用,稍后再试", ErrSessionLimit: "单次最长 3 分钟,松开后可继续", ErrRateLimited: "操作过于频繁,稍后再试", ErrFeedbackRateLimited: "今天反馈次数已达上限", } // APIError REST 统一错误体。 type APIError struct { Code string `json:"code"` Message string `json:"message"` } func NewAPIError(code string) APIError { return APIError{Code: code, Message: ErrMessage[code]} }