Files
ttstd-infinite-canvas/backend/internal/kernel/error_codes.go
tanzui ea51df2b58 fix(projects): 短剧项目 - 修复同名创建重试 (#691)
Co-authored-by: tanzui <305375675@.com>
2026-10-06 09:24:11 +08:00

73 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package kernel
// 业务信封 code:成功为 0;失败默认等于 HTTP 状态。需要区分同一状态的不同原因时,用 status*100+n。
// 不使用与 HTTP 无关的 1001/2001 号段,避免和现有 42901 以及前端按 status/code 判断重试打架。
const (
CodeOK = 0
CodeInvalidArgument = 400
CodeUnauthorized = 401
CodeForbidden = 403
CodeNotFound = 404
CodeConflict = 409
CodeTooManyRequests = 429
CodeInternal = 500
CodeBadGateway = 502
CodeUnavailable = 503
CodeTimeout = 504
CodeQuotaExceeded = 40301
CodeIdempotencyConflict = 40901
CodeCanvasResourcesMissing = 40902
CodeRateLimited = 42901
)
// ErrorReason 是稳定机器可读原因,前端应判断 reason 而不是解析 msg。
type ErrorReason string
const (
ReasonInvalidArgument ErrorReason = "invalid_argument"
ReasonUnauthorized ErrorReason = "unauthorized"
ReasonForbidden ErrorReason = "forbidden"
ReasonNotFound ErrorReason = "not_found"
ReasonConflict ErrorReason = "conflict"
ReasonProjectNameConflict ErrorReason = "project_name_conflict"
ReasonCanvasResourcesMissing ErrorReason = "canvas_history_resources_missing"
ReasonFailedPrecondition ErrorReason = "failed_precondition"
ReasonQuotaExceeded ErrorReason = "quota_exceeded"
ReasonRateLimited ErrorReason = "rate_limited"
ReasonUnavailable ErrorReason = "unavailable"
ReasonTimeout ErrorReason = "timeout"
ReasonInternal ErrorReason = "internal"
ReasonBadGateway ErrorReason = "bad_gateway"
ReasonUpstreamDNSFailed ErrorReason = "upstream_dns_failed"
)
func ReasonForStatus(status int) ErrorReason {
switch status {
case CodeInvalidArgument:
return ReasonInvalidArgument
case CodeUnauthorized:
return ReasonUnauthorized
case CodeForbidden:
return ReasonForbidden
case CodeNotFound:
return ReasonNotFound
case CodeConflict:
return ReasonConflict
case CodeTooManyRequests:
return ReasonRateLimited
case CodeBadGateway:
return ReasonBadGateway
case CodeUnavailable:
return ReasonUnavailable
case CodeTimeout:
return ReasonTimeout
default:
if status >= 500 {
return ReasonInternal
}
return ReasonInvalidArgument
}
}