mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 15:13:55 +08:00
fix:manager-api国际化优化
This commit is contained in:
@@ -213,4 +213,19 @@ public interface ErrorCode {
|
||||
int RAG_API_ERROR_API_KEY_NULL = 10172; // RAG配置中api_key为空,请完善配置
|
||||
int RAG_API_ERROR_API_KEY_INVALID = 10173; // RAG配置中api_key包含占位符,请替换为实际的API密钥
|
||||
int RAG_API_ERROR_URL_INVALID = 10174; // RAG配置中base_url格式不正确,请检查协议是否正确
|
||||
int RAG_DATASET_ID_NOT_NULL = 10176; // RAG配置中dataset_id不能为空
|
||||
int RAG_MODEL_ID_NOT_NULL = 10177; // RAG配置中model_id不能为空
|
||||
int RAG_DATASET_ID_AND_MODEL_ID_NOT_NULL = 10178; // RAG配置中dataset_id和model_id不能为空
|
||||
int RAG_FILE_NAME_NOT_NULL = 10179; // 文件名称不能为空
|
||||
int RAG_FILE_CONTENT_EMPTY = 10180; // 文件内容不能为空
|
||||
|
||||
// 设备相关错误码(补充)
|
||||
int MCA_NOT_NULL = 10175; // mac地址不能为空
|
||||
|
||||
// 音色克隆(补充)
|
||||
int VOICE_CLONE_NAME_NOT_NULL = 10181; // 音色克隆名称不能为空
|
||||
int VOICE_CLONE_AUDIO_NOT_FOUND = 10182; // 音色克隆音频不存在
|
||||
|
||||
// 智能体模板相关错误码(补充)
|
||||
int AGENT_TEMPLATE_NOT_FOUND = 10183; // 默认智能体未找到
|
||||
}
|
||||
|
||||
+2
-2
@@ -139,14 +139,14 @@ public class AgentChatHistoryController {
|
||||
// 从Redis获取agentId和sessionId
|
||||
String agentSessionInfo = (String) redisUtils.get(RedisKeys.getChatHistoryKey(uuid));
|
||||
if (StringUtils.isBlank(agentSessionInfo)) {
|
||||
throw new RenException("下载链接已过期或无效");
|
||||
throw new RenException(ErrorCode.DOWNLOAD_LINK_EXPIRED);
|
||||
}
|
||||
|
||||
try {
|
||||
// 解析agentId和sessionId
|
||||
String[] parts = agentSessionInfo.split(":");
|
||||
if (parts.length != 2) {
|
||||
throw new RenException("下载链接无效");
|
||||
throw new RenException(ErrorCode.DOWNLOAD_LINK_INVALID);
|
||||
}
|
||||
String agentId = parts[0];
|
||||
String sessionId = parts[1];
|
||||
|
||||
+3
-3
@@ -73,7 +73,7 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
// 查询默认智能体
|
||||
AgentTemplateEntity agent = agentTemplateService.getDefaultTemplate();
|
||||
if (agent == null) {
|
||||
throw new RenException("默认智能体未找到");
|
||||
throw new RenException(ErrorCode.AGENT_TEMPLATE_NOT_FOUND);
|
||||
}
|
||||
|
||||
// 构建模块配置
|
||||
@@ -111,13 +111,13 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
if (StringUtils.isNotBlank(cachedCode)) {
|
||||
throw new RenException(ErrorCode.OTA_DEVICE_NEED_BIND, cachedCode);
|
||||
}
|
||||
throw new RenException(ErrorCode.OTA_DEVICE_NOT_FOUND, "not found device");
|
||||
throw new RenException(ErrorCode.OTA_DEVICE_NOT_FOUND);
|
||||
}
|
||||
|
||||
// 获取智能体信息
|
||||
AgentEntity agent = agentService.getAgentById(device.getAgentId());
|
||||
if (agent == null) {
|
||||
throw new RenException("智能体未找到");
|
||||
throw new RenException(ErrorCode.AGENT_NOT_FOUND);
|
||||
}
|
||||
// 获取音色信息
|
||||
String voice = null;
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ public class DeviceController {
|
||||
public Result<String> registerDevice(@RequestBody DeviceRegisterDTO deviceRegisterDTO) {
|
||||
String macAddress = deviceRegisterDTO.getMacAddress();
|
||||
if (StringUtils.isBlank(macAddress)) {
|
||||
return new Result<String>().error(ErrorCode.NOT_NULL, "mac地址不能为空");
|
||||
return new Result<String>().error(ErrorCode.MCA_NOT_NULL);
|
||||
}
|
||||
// 生成六位验证码
|
||||
String code = String.valueOf(Math.random()).substring(2, 8);
|
||||
|
||||
+21
-24
@@ -356,7 +356,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
@Override
|
||||
public Map<String, Object> getRAGConfigByDatasetId(String datasetId) {
|
||||
if (StringUtils.isBlank(datasetId)) {
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "datasetId不能为空");
|
||||
throw new RenException(ErrorCode.RAG_DATASET_ID_NOT_NULL);
|
||||
}
|
||||
|
||||
// 根据datasetId查询知识库信息
|
||||
@@ -370,7 +370,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
String ragModelId = knowledgeBase.getRagModelId();
|
||||
if (StringUtils.isBlank(ragModelId)) {
|
||||
log.warn("知识库datasetId为{}未配置ragModelId", datasetId);
|
||||
throw new RenException(ErrorCode.RAG_CONFIG_NOT_FOUND, "知识库未配置RAG模型");
|
||||
throw new RenException(ErrorCode.RAG_CONFIG_NOT_FOUND);
|
||||
}
|
||||
|
||||
// 获取并返回RAG配置
|
||||
@@ -403,7 +403,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
*/
|
||||
private void validateRagConfig(Map<String, Object> config) {
|
||||
if (config == null) {
|
||||
throw new RenException(ErrorCode.RAG_CONFIG_NOT_FOUND, "RAG配置为空,请检查配置");
|
||||
throw new RenException(ErrorCode.RAG_CONFIG_NOT_FOUND);
|
||||
}
|
||||
|
||||
// 从配置中提取必要的参数
|
||||
@@ -510,8 +510,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
}
|
||||
} else {
|
||||
// 如果响应码不为0,说明API调用失败
|
||||
String errorMessage = "RAGFlow API调用失败,响应码: " + code + ", 消息: "
|
||||
+ (message != null ? message : "未知错误");
|
||||
String errorMessage = code + (message != null ? message : "null");
|
||||
log.error(errorMessage);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, errorMessage);
|
||||
}
|
||||
@@ -520,19 +519,19 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
log.debug("完整响应内容: {}", responseBody);
|
||||
} catch (IOException e) {
|
||||
// 构建详细的错误信息,包含异常类型和消息
|
||||
String baseErrorMessage = e.getClass().getSimpleName() + " - 解析RAGFlow API响应时发生IO异常";
|
||||
String baseErrorMessage = e.getClass().getSimpleName();
|
||||
String errorMessage = baseErrorMessage + (e.getMessage() != null ? ": " + e.getMessage() : "");
|
||||
log.error(errorMessage, e);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API响应解析失败: " + errorMessage);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, errorMessage);
|
||||
} catch (Exception e) {
|
||||
// 构建详细的错误信息,包含异常类型和消息
|
||||
String baseErrorMessage = e.getClass().getSimpleName() + " - 解析RAGFlow API响应失败";
|
||||
String baseErrorMessage = e.getClass().getSimpleName();
|
||||
String errorMessage = baseErrorMessage + (e.getMessage() != null ? ": " + e.getMessage() : "");
|
||||
log.error(errorMessage, e);
|
||||
// 如果解析失败,但响应体不为空,尝试直接使用响应体作为错误信息
|
||||
String finalErrorMessage = responseBody;
|
||||
if (e.getMessage() != null) {
|
||||
finalErrorMessage += ",解析错误: " + errorMessage;
|
||||
finalErrorMessage += errorMessage;
|
||||
}
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, finalErrorMessage);
|
||||
}
|
||||
@@ -540,7 +539,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
|
||||
if (StringUtils.isBlank(datasetId)) {
|
||||
log.error("无法从RAGFlow API响应中获取datasetId,响应内容: {}", responseBody);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API响应中未包含datasetId");
|
||||
throw new RenException(ErrorCode.RAG_DATASET_ID_NOT_NULL);
|
||||
}
|
||||
log.info("RAGFlow数据集创建成功,datasetId: {}", datasetId);
|
||||
|
||||
@@ -607,26 +606,25 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
String message = (String) responseMap.get("message");
|
||||
|
||||
if (code != null && code != 0) {
|
||||
String errorMessage = "RAGFlow API调用失败,响应码: " + code + ", 消息: "
|
||||
+ (message != null ? message : "未知错误");
|
||||
String errorMessage = code + (message != null ? message : "null");
|
||||
log.error(errorMessage);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, errorMessage);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
// 构建详细的错误信息,包含异常类型和消息
|
||||
String baseErrorMessage = e.getClass().getSimpleName() + " - 解析RAGFlow API响应时发生IO异常";
|
||||
String baseErrorMessage = e.getClass().getSimpleName();
|
||||
String errorMessage = baseErrorMessage + (e.getMessage() != null ? ": " + e.getMessage() : "");
|
||||
log.error(errorMessage, e);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API响应解析失败: " + errorMessage);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, errorMessage);
|
||||
} catch (Exception e) {
|
||||
// 构建详细的错误信息,包含异常类型和消息
|
||||
String baseErrorMessage = e.getClass().getSimpleName() + " - 解析RAGFlow API响应失败";
|
||||
String baseErrorMessage = e.getClass().getSimpleName();
|
||||
String errorMessage = baseErrorMessage + (e.getMessage() != null ? ": " + e.getMessage() : "");
|
||||
log.error(errorMessage, e);
|
||||
// 如果解析失败,但响应体不为空,尝试直接使用响应体作为错误信息
|
||||
String finalErrorMessage = responseBody;
|
||||
if (e.getMessage() != null) {
|
||||
finalErrorMessage += ",解析错误: " + errorMessage;
|
||||
finalErrorMessage += errorMessage;
|
||||
}
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, finalErrorMessage);
|
||||
}
|
||||
@@ -677,7 +675,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
log.debug("RAGFlow API响应内容: {}", response.getBody());
|
||||
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
String errorMessage = response.getStatusCode() + ", 响应内容: " + response.getBody();
|
||||
String errorMessage = response.getStatusCode() + response.getBody();
|
||||
log.error(errorMessage);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, errorMessage);
|
||||
}
|
||||
@@ -691,26 +689,25 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
String message = (String) responseMap.get("message");
|
||||
|
||||
if (code != null && code != 0) {
|
||||
String errorMessage = "RAGFlow API调用失败,响应码: " + code + ", 消息: "
|
||||
+ (message != null ? message : "未知错误");
|
||||
String errorMessage = code + (message != null ? message : "null");
|
||||
log.error(errorMessage);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, errorMessage);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
// 构建详细的错误信息,包含异常类型和消息
|
||||
String baseErrorMessage = e.getClass().getSimpleName() + " - 解析RAGFlow API响应时发生IO异常";
|
||||
String baseErrorMessage = e.getClass().getSimpleName();
|
||||
String errorMessage = baseErrorMessage + (e.getMessage() != null ? ": " + e.getMessage() : "");
|
||||
log.error(errorMessage, e);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API响应解析失败: " + errorMessage);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, errorMessage);
|
||||
} catch (Exception e) {
|
||||
// 构建详细的错误信息,包含异常类型和消息
|
||||
String baseErrorMessage = e.getClass().getSimpleName() + " - 解析RAGFlow API响应失败";
|
||||
String baseErrorMessage = e.getClass().getSimpleName();
|
||||
String errorMessage = baseErrorMessage + (e.getMessage() != null ? ": " + e.getMessage() : "");
|
||||
log.error(errorMessage, e);
|
||||
// 如果解析失败,但响应体不为空,尝试直接使用响应体作为错误信息
|
||||
String finalErrorMessage = responseBody;
|
||||
if (e.getMessage() != null) {
|
||||
finalErrorMessage += ",解析错误: " + errorMessage;
|
||||
finalErrorMessage += errorMessage;
|
||||
}
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, finalErrorMessage);
|
||||
}
|
||||
@@ -725,7 +722,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
|
||||
*/
|
||||
private Map<String, Object> getValidatedRAGConfig(String ragModelId) {
|
||||
if (StringUtils.isBlank(ragModelId)) {
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "ragModelId不能为空");
|
||||
throw new RenException(ErrorCode.RAG_MODEL_ID_NOT_NULL);
|
||||
}
|
||||
|
||||
Map<String, Object> ragConfig = getRAGConfig(ragModelId);
|
||||
|
||||
+44
-36
@@ -63,7 +63,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
// 构建请求URL - 根据RAGFlow API文档,获取文档列表的接口
|
||||
String datasetId = knowledgeFilesDTO != null ? knowledgeFilesDTO.getDatasetId() : null;
|
||||
if (StringUtils.isBlank(datasetId)) {
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "datasetId不能为空");
|
||||
throw new RenException(ErrorCode.RAG_DATASET_ID_NOT_NULL);
|
||||
}
|
||||
|
||||
// 获取RAG配置
|
||||
@@ -109,7 +109,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
log.error("RAGFlow API调用失败,状态码: {}", response.getStatusCode());
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败,HTTP状态码: " + response.getStatusCode());
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, response.getStatusCode().toString());
|
||||
}
|
||||
|
||||
String responseBody = response.getBody();
|
||||
@@ -133,7 +133,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("获取文档列表失败: {}", e.getMessage(), e);
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "未知错误";
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "null";
|
||||
if (e instanceof RenException) {
|
||||
throw (RenException) e;
|
||||
}
|
||||
@@ -229,7 +229,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("获取文档列表响应失败: {}", e.getMessage(), e);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "获取文档列表响应失败: " + e.getMessage());
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -442,7 +442,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
@Override
|
||||
public KnowledgeFilesDTO getByDocumentId(String documentId, String datasetId) {
|
||||
if (StringUtils.isBlank(documentId) || StringUtils.isBlank(datasetId)) {
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "documentId和datasetId不能为空");
|
||||
throw new RenException(ErrorCode.RAG_DATASET_ID_AND_MODEL_ID_NOT_NULL);
|
||||
}
|
||||
|
||||
log.info("=== 开始根据documentId获取文档 ===");
|
||||
@@ -475,8 +475,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
log.error("RAGFlow API调用失败,状态码: {}", response.getStatusCode());
|
||||
String responseBody = response.getBody();
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR,
|
||||
"RAGFlow API调用失败,HTTP状态码: " + response.getStatusCode() +
|
||||
", 响应内容: " + (responseBody != null ? responseBody : "无响应内容"));
|
||||
response.getStatusCode() + (responseBody != null ? responseBody : "null"));
|
||||
}
|
||||
|
||||
String responseBody = response.getBody();
|
||||
@@ -507,7 +506,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("根据documentId获取文档失败: {}", e.getMessage(), e);
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "未知错误";
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "null";
|
||||
if (e instanceof RenException) {
|
||||
throw (RenException) e;
|
||||
}
|
||||
@@ -521,7 +520,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
public PageData<KnowledgeFilesDTO> getPageListByStatus(String datasetId, Integer status, Integer page,
|
||||
Integer limit) {
|
||||
if (StringUtils.isBlank(datasetId)) {
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "datasetId不能为空");
|
||||
throw new RenException(ErrorCode.RAG_DATASET_ID_NOT_NULL);
|
||||
}
|
||||
|
||||
log.info("=== 开始根据状态查询文档列表 ===");
|
||||
@@ -568,7 +567,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
log.error("RAGFlow API调用失败,状态码: {}", response.getStatusCode());
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败,HTTP状态码: " + response.getStatusCode());
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, response.getStatusCode().toString());
|
||||
}
|
||||
|
||||
String responseBody = response.getBody();
|
||||
@@ -600,12 +599,12 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
return pageData;
|
||||
} else {
|
||||
log.error("RAGFlow API调用失败,响应码: {}", code);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败,响应码: " + code);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, code.toString());
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("根据状态查询文档列表失败: {}", e.getMessage(), e);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "查询文档列表失败: " + e.getMessage());
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, e.getMessage());
|
||||
} finally {
|
||||
log.info("=== 根据状态查询文档列表操作结束 ===");
|
||||
}
|
||||
@@ -635,12 +634,12 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
// 检查文件基本信息
|
||||
if (StringUtils.isBlank(fileName)) {
|
||||
log.error("文件名为空");
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "文件名不能为空");
|
||||
throw new RenException(ErrorCode.RAG_FILE_NAME_NOT_NULL);
|
||||
}
|
||||
|
||||
if (fileSize == 0) {
|
||||
log.error("文件大小为0");
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "文件内容为空");
|
||||
throw new RenException(ErrorCode.RAG_FILE_CONTENT_EMPTY);
|
||||
}
|
||||
|
||||
log.info("2. 开始流式上传到RAGFlow");
|
||||
@@ -676,7 +675,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
@Override
|
||||
public void deleteByDocumentId(String documentId, String datasetId) {
|
||||
if (StringUtils.isBlank(documentId) || StringUtils.isBlank(datasetId)) {
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "documentId和datasetId不能为空");
|
||||
throw new RenException(ErrorCode.RAG_DATASET_ID_AND_MODEL_ID_NOT_NULL);
|
||||
}
|
||||
|
||||
log.info("=== 开始根据documentId删除文档 ===");
|
||||
@@ -691,7 +690,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("删除文档失败: {}", e.getMessage(), e);
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "未知错误";
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "null";
|
||||
if (e instanceof RenException) {
|
||||
throw (RenException) e;
|
||||
}
|
||||
@@ -763,7 +762,22 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
// 验证base_url是否存在且非空
|
||||
if (StringUtils.isBlank(baseUrl)) {
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, "RAG配置缺少必要参数: base_url");
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR_URL_NULL);
|
||||
}
|
||||
|
||||
// 验证api_key是否存在且非空
|
||||
if (StringUtils.isBlank(apiKey)) {
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR_API_KEY_NULL);
|
||||
}
|
||||
|
||||
// 检查api_key是否包含占位符
|
||||
if (apiKey.contains("你")) {
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR_API_KEY_INVALID);
|
||||
}
|
||||
|
||||
// 验证base_url格式
|
||||
if (!baseUrl.startsWith("http://") && !baseUrl.startsWith("https://")) {
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR_URL_INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -876,9 +890,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
}
|
||||
} else {
|
||||
log.error("RAGFlow API调用失败,状态码: {}", response.getStatusCode());
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR,
|
||||
"RAGFlow API调用失败,HTTP状态码: " + response.getStatusCode() +
|
||||
", 响应内容: " + (responseBody != null ? responseBody : "无响应内容"));
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, response.getStatusCode().toString());
|
||||
}
|
||||
|
||||
if (StringUtils.isBlank(documentId)) {
|
||||
@@ -890,7 +902,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("RAGFlow API调用失败: {}", e.getMessage(), e);
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "未知错误";
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "null";
|
||||
if (e instanceof RenException) {
|
||||
throw (RenException) e;
|
||||
}
|
||||
@@ -1027,13 +1039,12 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
} else {
|
||||
log.error("RAGFlow API调用失败,状态码: {}", response.getStatusCode());
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR,
|
||||
"RAGFlow API调用失败,HTTP状态码: " + response.getStatusCode() +
|
||||
", 响应内容: " + (responseBody != null ? responseBody : "无响应内容"));
|
||||
response.getStatusCode() + (responseBody != null ? responseBody : "null"));
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("RAGFlow API调用失败: {}", e.getMessage(), e);
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "未知错误";
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "null";
|
||||
if (e instanceof RenException) {
|
||||
throw (RenException) e;
|
||||
}
|
||||
@@ -1082,7 +1093,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
@Override
|
||||
public boolean parseDocuments(String datasetId, List<String> documentIds) {
|
||||
if (StringUtils.isBlank(datasetId) || documentIds == null || documentIds.isEmpty()) {
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "datasetId和documentIds不能为空");
|
||||
throw new RenException(ErrorCode.RAG_DATASET_ID_AND_MODEL_ID_NOT_NULL);
|
||||
}
|
||||
|
||||
log.info("=== 开始解析文档(切块) ===");
|
||||
@@ -1122,8 +1133,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
log.error("RAGFlow API调用失败,状态码: {}", response.getStatusCode());
|
||||
String errorDetail = responseBody != null ? responseBody : "无响应内容";
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR,
|
||||
"RAGFlow API调用失败,HTTP状态码: " + response.getStatusCode() + ", 响应内容: " + errorDetail);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, response.getStatusCode() + errorDetail);
|
||||
}
|
||||
|
||||
// 解析响应
|
||||
@@ -1143,7 +1153,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("解析文档失败: {}", e.getMessage(), e);
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "未知错误";
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "null";
|
||||
if (e instanceof RenException) {
|
||||
throw (RenException) e;
|
||||
}
|
||||
@@ -1157,7 +1167,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
public Map<String, Object> listChunks(String datasetId, String documentId, String keywords,
|
||||
Integer page, Integer pageSize, String chunkId) {
|
||||
if (StringUtils.isBlank(datasetId) || StringUtils.isBlank(documentId)) {
|
||||
throw new RenException(ErrorCode.PARAMS_GET_ERROR, "datasetId和documentId不能为空");
|
||||
throw new RenException(ErrorCode.RAG_DATASET_ID_AND_MODEL_ID_NOT_NULL);
|
||||
}
|
||||
|
||||
log.info("=== 开始列出切片 ===");
|
||||
@@ -1220,8 +1230,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
log.error("RAGFlow API调用失败,状态码: {}", response.getStatusCode());
|
||||
String errorDetail = responseBody != null ? responseBody : "无响应内容";
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR,
|
||||
"RAGFlow API调用失败,HTTP状态码: " + response.getStatusCode() + ", 响应内容: " + errorDetail);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, response.getStatusCode() + errorDetail);
|
||||
}
|
||||
|
||||
// 解析响应
|
||||
@@ -1243,11 +1252,11 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
} catch (IOException e) {
|
||||
log.error("解析RAGFlow API响应失败: {}", e.getMessage(), e);
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "未知错误";
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "null";
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, errorMessage);
|
||||
} catch (Exception e) {
|
||||
log.error("列出切片失败: {}", e.getMessage(), e);
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "未知错误";
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "null";
|
||||
if (e instanceof RenException) {
|
||||
throw (RenException) e;
|
||||
}
|
||||
@@ -1646,8 +1655,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
||||
log.error("RAGFlow API调用失败,状态码: {}", response.getStatusCode());
|
||||
String errorDetail = responseBody != null ? responseBody : "无响应内容";
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR,
|
||||
"RAGFlow API调用失败,HTTP状态码: " + response.getStatusCode() + ", 响应内容: " + errorDetail);
|
||||
throw new RenException(ErrorCode.RAG_API_ERROR, response.getStatusCode() + errorDetail);
|
||||
}
|
||||
|
||||
// 解析响应
|
||||
@@ -1674,7 +1682,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("召回测试失败: {}", e.getMessage(), e);
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "未知错误";
|
||||
String errorMessage = e.getMessage() != null ? e.getMessage() : "null";
|
||||
if (e instanceof RenException) {
|
||||
throw (RenException) e;
|
||||
}
|
||||
|
||||
+5
-5
@@ -107,10 +107,10 @@ public class VoiceCloneController {
|
||||
String name = params.get("name");
|
||||
|
||||
if (id == null || id.isEmpty()) {
|
||||
return new Result<String>().error(ErrorCode.IDENTIFIER_NOT_NULL, "唯一标识不能为空");
|
||||
return new Result<String>().error(ErrorCode.IDENTIFIER_NOT_NULL);
|
||||
}
|
||||
if (name == null) {
|
||||
return new Result<String>().error(ErrorCode.NOT_NULL, "名称不能为空");
|
||||
if (name == null || name.isEmpty()) {
|
||||
return new Result<String>().error(ErrorCode.VOICE_CLONE_NAME_NOT_NULL);
|
||||
}
|
||||
// 检查权限
|
||||
checkPermission(id);
|
||||
@@ -119,7 +119,7 @@ public class VoiceCloneController {
|
||||
redisUtils.delete(RedisKeys.getTimbreNameById(id));
|
||||
return new Result<String>();
|
||||
} catch (Exception e) {
|
||||
return new Result<String>().error(ErrorCode.UPDATE_DATA_FAILED, "更新失败: " + e.getMessage());
|
||||
return new Result<String>().error(ErrorCode.UPDATE_DATA_FAILED, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ public class VoiceCloneController {
|
||||
checkPermission(id);
|
||||
byte[] audioData = voiceCloneService.getVoiceData(id);
|
||||
if (audioData == null) {
|
||||
return new Result<String>().error(ErrorCode.RESOURCE_NOT_FOUND, "音频不存在");
|
||||
return new Result<String>().error(ErrorCode.VOICE_CLONE_AUDIO_NOT_FOUND);
|
||||
}
|
||||
String uuid = UUID.randomUUID().toString();
|
||||
redisUtils.set(RedisKeys.getVoiceCloneAudioIdKey(uuid), id);
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ public class VoiceCloneServiceImpl extends BaseServiceImpl<VoiceCloneDao, VoiceC
|
||||
wrapper.eq("model_id", dto.getModelId());
|
||||
Long count = baseDao.selectCount(wrapper);
|
||||
if (count > 0) {
|
||||
throw new RenException(ErrorCode.VOICE_ID_ALREADY_EXISTS, "音色ID " + voiceId + " 已存在");
|
||||
throw new RenException(ErrorCode.VOICE_ID_ALREADY_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
10155=\u706B\u5C71\u5F15\u64CE\u7F3A\u5C11\u914D\u7F6E
|
||||
10156=\u54CD\u5E94\u683C\u5F0F\u9519\u8BEF\uFF0C\u7F3A\u5C11BaseResp\u5B57\u6BB5
|
||||
10157=\u8BF7\u6C42\u5931\u8D25
|
||||
10158=\u8BF7\u6C42\u5931\u8D25\uFF0C\u72B6\u6001\u7801{0}
|
||||
10158=\u514b\u9686\u97f3\u8272:
|
||||
10159=\u97F3\u8272ID\u5DF2\u5B58\u5728
|
||||
10160=\u706B\u5C71\u5F15\u64CE\u97F3\u8272ID\u683C\u5F0F\u9519\u8BEF\uFF0C\u5FC5\u987B\u4EE5S_\u5F00\u5934
|
||||
10161=Mac\u5730\u5740\u5DF2\u5B58\u5728
|
||||
@@ -176,4 +176,17 @@
|
||||
10167=\u0052\u0041\u0047\u8c03\u7528\u5931\u8d25\uFF0C{0}
|
||||
10168=\u4E0A\u4F20\u6587\u4EF6\u5931\u8D25
|
||||
10169=\u60A8\u6CA1\u6709\u6743\u9650\u64CD\u4F5C\u8BE5\u8BB0\u5F55
|
||||
10170=\u77E5\u8BC6\u5E93\u540D\u79F0\u91CD\u590D
|
||||
10170=\u77E5\u8BC6\u5E93\u540D\u79F0\u91CD\u590D
|
||||
10171=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684base_url\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10172=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684api_key\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10173=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684api_key\u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u8BF7\u66F4\u6362\u4E3A\u5728\u53D6\u7684API\u53C2\u6570
|
||||
10174=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684base_url\u683C\u5F0F\u9519\u8BEF\uFF0C\u5FC5\u987B\u4EE5http\u6216https\u5F00\u5934
|
||||
10175=mac\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10176=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684dataset_id\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10177=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684model_id\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10178=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684dataset_id\u548Cmodel_id\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10179=\u6587\u4ef6\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a
|
||||
10180=\u6587\u4ef6\u5185\u5bb9\u4e0d\u80fd\u4e3a\u7a7a
|
||||
10181=\u97f3\u8272\u514b\u9686\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a
|
||||
10182=\u97f3\u8272\u514b\u9686\u97f3\u9891\u4e0d\u5b58\u5728
|
||||
10183=\u9ed8\u8ba4\u667a\u80fd\u4f53\u672a\u627e\u5230
|
||||
@@ -181,3 +181,12 @@
|
||||
10172=RAG configuration api_key cannot be empty
|
||||
10173=RAG configuration api_key cannot contain placeholder, please replace with actual API key
|
||||
10174=RAG configuration base_url format error, must start with http or https
|
||||
10175=Mac address cannot be empty
|
||||
10176=RAG configuration dataset_id cannot be empty
|
||||
10177=RAG configuration model_id cannot be empty
|
||||
10178=RAG configuration dataset_id and model_id cannot be empty
|
||||
10179=File name cannot be empty
|
||||
10180=File content cannot be empty
|
||||
10181=Voice clone name cannot be empty
|
||||
10182=Voice clone audio not found
|
||||
10183=Default agent template not found
|
||||
@@ -164,7 +164,7 @@
|
||||
10155=\u706B\u5C71\u5F15\u64CE\u7F3A\u5C11\u914D\u7F6E
|
||||
10156=\u54CD\u5E94\u683C\u5F0F\u9519\u8BEF\uFF0C\u7F3A\u5C11BaseResp\u5B57\u6BB5
|
||||
10157=\u8BF7\u6C42\u5931\u8D25
|
||||
10158=\u514B\u9686\u8272\u97F3:
|
||||
10158=\u514b\u9686\u97f3\u8272:
|
||||
10159=\u97F3\u8272ID\u5DF2\u5B58\u5728
|
||||
10160=\u706B\u5C71\u5F15\u64CE\u97F3\u8272ID\u683C\u5F0F\u9519\u8BEF\uFF0C\u5FC5\u987B\u4EE5S_\u5F00\u5934
|
||||
10161=Mac\u5730\u5740\u5DF2\u5B58\u5728
|
||||
@@ -180,4 +180,13 @@
|
||||
10171=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684base_url\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10172=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684api_key\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10173=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684api_key\u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u8BF7\u66F4\u6362\u4E3A\u5728\u53D6\u7684API\u53C2\u6570
|
||||
10174=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684base_url\u683C\u5F0F\u9519\u8BEF\uFF0C\u5FC5\u987B\u4EE5http\u6216https\u5F00\u5934
|
||||
10174=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684base_url\u683C\u5F0F\u9519\u8BEF\uFF0C\u5FC5\u987B\u4EE5http\u6216https\u5F00\u5934
|
||||
10175=mac\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10176=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684dataset_id\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10177=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684model_id\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10178=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684dataset_id\u548Cmodel_id\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10179=\u6587\u4ef6\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a
|
||||
10180=\u6587\u4ef6\u5185\u5bb9\u4e0d\u80fd\u4e3a\u7a7a
|
||||
10181=\u97f3\u8272\u514b\u9686\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a
|
||||
10182=\u97f3\u8272\u514b\u9686\u97f3\u9891\u4e0d\u5b58\u5728
|
||||
10183=\u9ed8\u8ba4\u667a\u80fd\u4f53\u672a\u627e\u5230
|
||||
@@ -164,7 +164,7 @@
|
||||
10155=\u706B\u5C71\u5F15\u64CE\u7F3A\u5C11appid\u6216access_token
|
||||
10156=\u97FF\u61C9\u683C\u5F0F\u932F\u8AA4\uFF0C\u7F3A\u5C11BaseResp\u5B57\u6BB5
|
||||
10157=\u8ACB\u6C42\u5931\u6557
|
||||
10158=\u514B\u9686\u8A9E\u97F3:
|
||||
10158=\u514b\u9686\u97f3\u8272:
|
||||
10159=\u97F3\u8272ID\u5DF2\u5B58\u5728
|
||||
10160=\u706B\u5C71\u5F15\u64CE\u97F3\u8272ID\u683C\u5F0F\u932F\u8AA4\uFF0C\u5FC5\u9808\u4EE5S_\u958B\u982D
|
||||
10161=Mac\u5730\u5740\u5DF2\u5B58\u5728
|
||||
@@ -181,3 +181,12 @@
|
||||
10172=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684api_key\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10173=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684api_key\u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u8BF7\u66F4\u6362\u4E3A\u5728\u53D6\u7684API\u53C2\u6570
|
||||
10174=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684base_url\u683C\u5F0F\u9519\u8BEF\uFF0C\u5FC5\u987B\u4EE5http\u6216https\u5F00\u5934
|
||||
10175=mac\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10176=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684dataset_id\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10177=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684model_id\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10178=\u0052\u0041\u0047\u914D\u7F6E\u4F53\u7684dataset_id\u548Cmodel_id\u4E0D\u80FD\u4E3A\u7A7A
|
||||
10179=\u6587\u4ef6\u540d\u7a31\u4e0d\u80fd\u70ba\u7a7a
|
||||
10180=\u6587\u4ef6\u5185\u5bb9\u4e0d\u80fd\u70ba\u7a7a
|
||||
10181=\u97f3\u8272\u514b\u9686\u540d\u7a31\u4e0d\u80fd\u70ba\u7a7a
|
||||
10182=\u97f3\u8272\u514b\u9686\u97f3\u983b\u4e0d\u5b58\u5728
|
||||
10183=\u9ed8\u8ba4\u667a\u80fd\u4f53\u672a\u627e\u5230
|
||||
Reference in New Issue
Block a user