|
|
|
@ -0,0 +1,123 @@
|
|
|
|
|
package com.dsideal.aiSupport.Util.KeLing.Kit;
|
|
|
|
|
|
|
|
|
|
import lombok.Getter;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 可灵AI API错误码枚举
|
|
|
|
|
*/
|
|
|
|
|
@Getter
|
|
|
|
|
public enum KlErrorCode {
|
|
|
|
|
|
|
|
|
|
SUCCESS(0, "请求成功", "请求成功"),
|
|
|
|
|
|
|
|
|
|
// 身份验证错误 (401)
|
|
|
|
|
AUTH_FAILED(1000, "身份验证失败", "检查Authorization是否正确"),
|
|
|
|
|
AUTH_EMPTY(1001, "Authorization为空", "在RequestHeader中填写正确的Authorization"),
|
|
|
|
|
AUTH_INVALID(1002, "Authorization值非法", "在RequestHeader中填写正确的Authorization"),
|
|
|
|
|
AUTH_NOT_EFFECTIVE(1003, "Authorization未到有效时间", "检查token的开始生效时间,等待生效或重新签发"),
|
|
|
|
|
AUTH_EXPIRED(1004, "Authorization已失效", "检查token的有效期,重新签发"),
|
|
|
|
|
|
|
|
|
|
// 账户异常 (429)
|
|
|
|
|
ACCOUNT_EXCEPTION(1100, "账户异常", "检查账户配置信息"),
|
|
|
|
|
ACCOUNT_ARREARS(1101, "账户欠费 (后付费场景)", "进行账户充值,确保余额充足"),
|
|
|
|
|
RESOURCE_EXHAUSTED(1102, "资源包已用完/已过期(预付费场景)", "购买额外的资源包,或开通后付费服务(如有)"),
|
|
|
|
|
|
|
|
|
|
// 权限错误 (403)
|
|
|
|
|
NO_PERMISSION(1103, "请求的资源无权限,如接口/模型", "检查账户权限"),
|
|
|
|
|
|
|
|
|
|
// 请求参数非法 (400/404)
|
|
|
|
|
PARAM_INVALID(1200, "请求参数非法", "检查请求参数是否正确"),
|
|
|
|
|
PARAM_ERROR(1201, "参数非法,如key写错或value非法", "参考返回体中message字段的具体信息,修改请求参数"),
|
|
|
|
|
METHOD_INVALID(1202, "请求的method无效", "查看接口文档,使用正确的requestmethod"),
|
|
|
|
|
RESOURCE_NOT_EXIST(1203, "请求的资源不存在,如模型", "参考返回体中message字段的具体信息,修改请求参数"),
|
|
|
|
|
|
|
|
|
|
// 触发策略 (400/429)
|
|
|
|
|
POLICY_TRIGGERED(1300, "触发平台策略", "检查是否触发平台策略"),
|
|
|
|
|
CONTENT_SECURITY(1301, "触发平台的内容安全策略", "检查输入内容,修改后重新发起请求"),
|
|
|
|
|
RATE_LIMIT(1302, "API请求过快,超过平台速率限制", "降低请求频率、稍后重试,或联系客服增加限额"),
|
|
|
|
|
CONCURRENT_LIMIT(1303, "并发或QPS超出预付费资源包限制", "降低请求频率、稍后重试,或联系客服增加限额"),
|
|
|
|
|
IP_WHITELIST(1304, "触发平台的IP白名单策略", "联系客服"),
|
|
|
|
|
|
|
|
|
|
// 内部错误 (500/503/504)
|
|
|
|
|
INTERNAL_ERROR(5000, "服务器内部错误", "稍后重试,或联系客服"),
|
|
|
|
|
SERVICE_UNAVAILABLE(5001, "服务器暂时不可用,通常是在维护", "稍后重试,或联系客服"),
|
|
|
|
|
INTERNAL_TIMEOUT(5002, "服务器内部超时,通常是发生积压", "稍后重试,或联系客服");
|
|
|
|
|
|
|
|
|
|
private final int code;
|
|
|
|
|
private final String message;
|
|
|
|
|
private final String solution;
|
|
|
|
|
|
|
|
|
|
KlErrorCode(int code, String message, String solution) {
|
|
|
|
|
this.code = code;
|
|
|
|
|
this.message = message;
|
|
|
|
|
this.solution = solution;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据错误码获取枚举实例
|
|
|
|
|
* @param code 错误码
|
|
|
|
|
* @return 对应的枚举实例,如果不存在则返回null
|
|
|
|
|
*/
|
|
|
|
|
public static KlErrorCode getByCode(int code) {
|
|
|
|
|
for (KlErrorCode errorCode : values()) {
|
|
|
|
|
if (errorCode.getCode() == code) {
|
|
|
|
|
return errorCode;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取错误消息
|
|
|
|
|
* @param code 错误码
|
|
|
|
|
* @return 错误消息,如果错误码不存在则返回"未知错误"
|
|
|
|
|
*/
|
|
|
|
|
public static String getMessageByCode(int code) {
|
|
|
|
|
KlErrorCode errorCode = getByCode(code);
|
|
|
|
|
return errorCode != null ? errorCode.getMessage() : "未知错误";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取解决方案
|
|
|
|
|
* @param code 错误码
|
|
|
|
|
* @return 解决方案,如果错误码不存在则返回"请联系客服"
|
|
|
|
|
*/
|
|
|
|
|
public static String getSolutionByCode(int code) {
|
|
|
|
|
KlErrorCode errorCode = getByCode(code);
|
|
|
|
|
return errorCode != null ? errorCode.getSolution() : "请联系客服";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检查是否成功
|
|
|
|
|
* @param code 错误码
|
|
|
|
|
* @return 是否成功
|
|
|
|
|
*/
|
|
|
|
|
public static boolean isSuccess(int code) {
|
|
|
|
|
return code == SUCCESS.getCode();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检查是否需要重试
|
|
|
|
|
* @param code 错误码
|
|
|
|
|
* @return 是否需要重试
|
|
|
|
|
*/
|
|
|
|
|
public static boolean isRetryable(int code) {
|
|
|
|
|
return code == RATE_LIMIT.getCode() ||
|
|
|
|
|
code == CONCURRENT_LIMIT.getCode() ||
|
|
|
|
|
code == INTERNAL_ERROR.getCode() ||
|
|
|
|
|
code == SERVICE_UNAVAILABLE.getCode() ||
|
|
|
|
|
code == INTERNAL_TIMEOUT.getCode();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检查是否是账户问题
|
|
|
|
|
* @param code 错误码
|
|
|
|
|
* @return 是否是账户问题
|
|
|
|
|
*/
|
|
|
|
|
public static boolean isAccountIssue(int code) {
|
|
|
|
|
return code == ACCOUNT_EXCEPTION.getCode() ||
|
|
|
|
|
code == ACCOUNT_ARREARS.getCode() ||
|
|
|
|
|
code == RESOURCE_EXHAUSTED.getCode() ||
|
|
|
|
|
code == NO_PERMISSION.getCode();
|
|
|
|
|
}
|
|
|
|
|
}
|