update:优化接口错误信息

This commit is contained in:
hrz
2025-11-06 14:29:56 +08:00
parent 65f7e794bc
commit eaf4f4b08e
8 changed files with 260 additions and 264 deletions
@@ -205,8 +205,7 @@ public interface ErrorCode {
int RAG_CONFIG_NOT_FOUND = 10164; // RAG配置未找到
int RAG_CONFIG_TYPE_ERROR = 10165; // RAG配置类型错误
int RAG_DEFAULT_CONFIG_NOT_FOUND = 10166; // 默认RAG配置未找到
int RAG_CONFIG_MISSING_PARAMS = 10167; // RAG配置缺少必要参数
int RAG_API_ERROR = 10167; // RAG配置缺少必要参数
int UPLOAD_FILE_ERROR = 10168; // 上传文件失败
int NO_PERMISSION = 10169; // 没有权限
int RAG_API_ERROR = 10170; // RAG API接口错误
}
@@ -217,7 +217,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
apiDeleteSuccess = true;
} catch (Exception e) {
log.error("删除RAGFlow数据集失败: {}", e.getMessage());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "删除RAGFlow数据集失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "删除RAGFlow数据集失败: " + e.getMessage());
}
} else {
log.warn("datasetId或ragModelId为空,跳过RAGFlow删除");
@@ -356,7 +356,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
// 验证base_url是否存在且非空
if (StringUtils.isBlank(baseUrl)) {
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
}
@@ -400,7 +400,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
if (!response.getStatusCode().is2xxSuccessful()) {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), response.getBody());
throw new RenException(ErrorCode.RAG_API_ERROR, response.getStatusCode());
throw new RenException(ErrorCode.RAG_API_ERROR, response.getStatusCode().toString());
}
// 解析响应体,提取datasetId
@@ -431,39 +431,39 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
} else {
// 如果响应码不为0,说明API调用失败
log.error("RAGFlow API调用失败,响应码: {}, 响应内容: {}", code, responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API调用失败,响应码: " + code);
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败,响应码: " + code);
}
log.info("从RAGFlow API响应中解析出datasetId: {}", datasetId);
log.debug("完整响应内容: {}", responseBody);
} catch (Exception e) {
log.error("解析RAGFlow API响应失败: {}, 响应内容: {}", e.getMessage(), responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析RAGFlow响应失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析RAGFlow响应失败: " + e.getMessage());
}
}
if (StringUtils.isBlank(datasetId)) {
log.error("无法从RAGFlow API响应中获取datasetId,响应内容: {}", responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API响应中未包含datasetId");
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API响应中未包含datasetId");
}
log.info("RAGFlow数据集创建成功,datasetId: {}", datasetId);
} catch (HttpClientErrorException e) {
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"创建RAGFlow数据集失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"创建RAGFlow数据集失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "创建RAGFlow数据集失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "创建RAGFlow数据集失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("RAGFlow API调用失败 - 未知错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "创建RAGFlow数据集失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "创建RAGFlow数据集失败: " + e.getMessage());
}
return datasetId;
}
@@ -509,7 +509,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
if (!response.getStatusCode().is2xxSuccessful()) {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), response.getBody());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
log.info("RAGFlow数据集更新成功,datasetId: {}", datasetId);
@@ -517,19 +517,19 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
} catch (HttpClientErrorException e) {
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"更新RAGFlow数据集失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"更新RAGFlow数据集失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "更新RAGFlow数据集失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "更新RAGFlow数据集失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("RAGFlow API调用失败 - 未知错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "更新RAGFlow数据集失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "更新RAGFlow数据集失败: " + e.getMessage());
}
}
@@ -570,26 +570,26 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
if (!response.getStatusCode().is2xxSuccessful()) {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), response.getBody());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
log.info("RAGFlow数据集删除成功,datasetId: {}", datasetId);
} catch (HttpClientErrorException e) {
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"删除RAGFlow数据集失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"删除RAGFlow数据集失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "删除RAGFlow数据集失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "删除RAGFlow数据集失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("RAGFlow API调用失败 - 未知错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "删除RAGFlow数据集失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "删除RAGFlow数据集失败: " + e.getMessage());
}
}
@@ -623,19 +623,19 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl<KnowledgeBaseDao,
String apiKey = (String) ragConfig.get("api_key");
if (StringUtils.isBlank(baseUrl)) {
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAG配置中base_url为空,请完善配置");
throw new RenException(ErrorCode.RAG_API_ERROR, "RAG配置中base_url为空,请完善配置");
}
if (StringUtils.isBlank(apiKey)) {
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAG配置中api_key为空,请完善配置");
throw new RenException(ErrorCode.RAG_API_ERROR, "RAG配置中api_key为空,请完善配置");
}
if (apiKey.contains("")) {
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAG配置中api_key包含占位符'你',请替换为实际的API密钥");
throw new RenException(ErrorCode.RAG_API_ERROR, "RAG配置中api_key包含占位符'你',请替换为实际的API密钥");
}
if (!baseUrl.startsWith("http://") && !baseUrl.startsWith("https://")) {
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAG配置中base_url格式不正确,必须以http://或https://开头");
throw new RenException(ErrorCode.RAG_API_ERROR, "RAG配置中base_url格式不正确,必须以http://或https://开头");
}
}
@@ -112,7 +112,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
if (!response.getStatusCode().is2xxSuccessful()) {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), response.getBody());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
String responseBody = response.getBody();
@@ -127,26 +127,26 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
return parseDocumentListResponse(dataObj, page, limit);
} else {
log.error("RAGFlow API调用失败,响应码: {}, 响应内容: {}", code, responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API调用失败,响应码: " + code);
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败,响应码: " + code);
}
} catch (IOException e) {
log.error("解析RAGFlow API响应失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析RAGFlow响应失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析RAGFlow响应失败: " + e.getMessage());
} catch (HttpClientErrorException e) {
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "获取RAGFlow文档列表失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "获取RAGFlow文档列表失败: " + e.getMessage());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "获取RAGFlow文档列表失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "获取RAGFlow文档列表失败: " + e.getMessage());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "获取RAGFlow文档列表失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "获取RAGFlow文档列表失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("获取文档列表失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "获取文档列表失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "获取文档列表失败: " + e.getMessage());
} finally {
log.info("=== 获取文档列表操作结束 ===");
}
@@ -235,7 +235,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
} catch (Exception e) {
log.error("获取文档列表响应失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "获取文档列表响应失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "获取文档列表响应失败: " + e.getMessage());
}
}
@@ -381,7 +381,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
if (!response.getStatusCode().is2xxSuccessful()) {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), response.getBody());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
String responseBody = response.getBody();
@@ -403,12 +403,12 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
throw new RenException(ErrorCode.Knowledge_Base_RECORD_NOT_EXISTS);
} else {
log.error("RAGFlow API调用失败,响应码: {}, 响应内容: {}", code, responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API调用失败,响应码: " + code);
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败,响应码: " + code);
}
} catch (IOException e) {
log.error("解析RAGFlow API响应失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"解析RAGFlow响应失败: " + e.getMessage());
} catch (HttpClientErrorException e) {
if (e.getStatusCode() == HttpStatus.NOT_FOUND) {
@@ -417,17 +417,17 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
}
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "获取RAGFlow文档失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "获取RAGFlow文档失败: " + e.getMessage());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "获取RAGFlow文档失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "获取RAGFlow文档失败: " + e.getMessage());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "获取RAGFlow文档失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "获取RAGFlow文档失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("根据documentId获取文档失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "获取文档失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "获取文档失败: " + e.getMessage());
} finally {
log.info("=== 根据documentId获取文档操作结束 ===");
}
@@ -513,7 +513,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
} catch (Exception e) {
log.error("删除文档失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "删除文档失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "删除文档失败: " + e.getMessage());
} finally {
log.info("=== 根据documentId删除文档操作结束 ===");
}
@@ -633,7 +633,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
// 验证base_url是否存在且非空
if (StringUtils.isBlank(baseUrl)) {
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
}
@@ -731,23 +731,23 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
} else {
// 如果响应码不为0,说明API调用失败
log.error("RAGFlow API调用失败,响应码: {}, 响应内容: {}", code, responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API调用失败,响应码: " + code);
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败,响应码: " + code);
}
log.info("从RAGFlow API响应中解析出documentId: {}", documentId);
log.debug("完整响应内容: {}", responseBody);
} catch (Exception e) {
log.error("解析RAGFlow API响应失败: {}, 响应内容: {}", e.getMessage(), responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析RAGFlow响应失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析RAGFlow响应失败: " + e.getMessage());
}
} else {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
if (StringUtils.isBlank(documentId)) {
log.error("无法从RAGFlow API响应中获取documentId,响应内容: {}", responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API响应中未包含documentId");
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API响应中未包含documentId");
}
log.info("RAGFlow文档上传成功,documentId: {},文档已开始自动解析切片", documentId);
return documentId;
@@ -755,19 +755,19 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
} catch (HttpClientErrorException e) {
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"上传RAGFlow文档失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"上传RAGFlow文档失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "上传RAGFlow文档失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "上传RAGFlow文档失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("RAGFlow API调用失败 - 未知错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "上传RAGFlow文档失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "上传RAGFlow文档失败: " + e.getMessage());
}
}
@@ -885,7 +885,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
} else {
String message = (String) responseMap.get("message");
log.error("RAGFlow API调用失败,响应码: {}, 消息: {}", code, message);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API调用失败: " + message);
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败: " + message);
}
} catch (Exception e) {
log.warn("解析RAGFlow响应失败,但HTTP状态码成功,视为删除成功: {}", e.getMessage());
@@ -898,25 +898,25 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
}
} else {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
} catch (HttpClientErrorException e) {
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"删除RAGFlow文档失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS,
throw new RenException(ErrorCode.RAG_API_ERROR,
"删除RAGFlow文档失败: " + e.getMessage() + ", 响应: " + e.getResponseBodyAsString());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "删除RAGFlow文档失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "删除RAGFlow文档失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("RAGFlow API调用失败 - 未知错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "删除RAGFlow文档失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "删除RAGFlow文档失败: " + e.getMessage());
}
}
@@ -997,7 +997,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
if (!response.getStatusCode().is2xxSuccessful()) {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), response.getBody());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
String responseBody = response.getBody();
@@ -1018,21 +1018,21 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
} catch (IOException e) {
log.error("解析RAGFlow API响应失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析RAGFlow响应失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析RAGFlow响应失败: " + e.getMessage());
} catch (HttpClientErrorException e) {
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析RAGFlow文档失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析RAGFlow文档失败: " + e.getMessage());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析RAGFlow文档失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析RAGFlow文档失败: " + e.getMessage());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析RAGFlow文档失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析RAGFlow文档失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("解析文档失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析文档失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析文档失败: " + e.getMessage());
} finally {
log.info("=== 解析文档操作结束 ===");
}
@@ -1101,7 +1101,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
if (!response.getStatusCode().is2xxSuccessful()) {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), response.getBody());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "列出切片失败");
throw new RenException(ErrorCode.RAG_API_ERROR, "列出切片失败");
}
String responseBody = response.getBody();
@@ -1119,26 +1119,26 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
} else {
String message = (String) responseMap.get("message");
log.error("RAGFlow API调用失败,响应码: {}, 消息: {}, 响应内容: {}", code, message, responseBody);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API调用失败: " + message);
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败: " + message);
}
} catch (IOException e) {
log.error("解析RAGFlow API响应失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析RAGFlow响应失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析RAGFlow响应失败: " + e.getMessage());
} catch (HttpClientErrorException e) {
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "列出切片失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "列出切片失败: " + e.getMessage());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "列出切片失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "列出切片失败: " + e.getMessage());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "列出切片失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "列出切片失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("列出切片失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "列出切片失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "列出切片失败: " + e.getMessage());
} finally {
log.info("=== 列出切片操作结束 ===");
}
@@ -1529,7 +1529,7 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
if (!response.getStatusCode().is2xxSuccessful()) {
log.error("RAGFlow API调用失败,状态码: {}, 响应内容: {}", response.getStatusCode(), response.getBody());
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS);
throw new RenException(ErrorCode.RAG_API_ERROR);
}
String responseBody = response.getBody();
@@ -1547,31 +1547,31 @@ public class KnowledgeFilesServiceImpl implements KnowledgeFilesService {
return result;
} else {
log.error("RAGFlow API响应格式错误,data字段不是Map类型: {}", dataObj);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API响应格式错误");
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API响应格式错误");
}
} else {
String message = (String) responseMap.get("message");
log.error("RAGFlow API调用失败,响应码: {}, 错误信息: {}", code, message);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "RAGFlow API调用失败: " + message);
throw new RenException(ErrorCode.RAG_API_ERROR, "RAGFlow API调用失败: " + message);
}
} catch (IOException e) {
log.error("解析RAGFlow API响应失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "解析RAGFlow响应失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "解析RAGFlow响应失败: " + e.getMessage());
} catch (HttpClientErrorException e) {
log.error("RAGFlow API调用失败 - HTTP错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "召回测试失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "召回测试失败: " + e.getMessage());
} catch (HttpServerErrorException e) {
log.error("RAGFlow API调用失败 - 服务器错误: {}, 状态码: {}, 响应内容: {}",
e.getMessage(), e.getStatusCode(), e.getResponseBodyAsString(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "召回测试失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "召回测试失败: " + e.getMessage());
} catch (ResourceAccessException e) {
log.error("RAGFlow API调用失败 - 网络连接错误: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "召回测试失败: 网络连接错误 - " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "召回测试失败: 网络连接错误 - " + e.getMessage());
} catch (Exception e) {
log.error("召回测试失败: {}", e.getMessage(), e);
throw new RenException(ErrorCode.RAG_CONFIG_MISSING_PARAMS, "召回测试失败: " + e.getMessage());
throw new RenException(ErrorCode.RAG_API_ERROR, "召回测试失败: " + e.getMessage());
} finally {
log.info("=== 召回测试操作结束 ===");
}
@@ -1,179 +1,178 @@
#\u7B80\u4F53\u4E2D\u6587
500=\u670D\u52A1\u5668\u5185\u90E8\u5F02\u5E38
401=\u672A\u6388\u6743
403=\u62D2\u7EDD\u8BBF\u95EE\uFF0C\u6CA1\u6709\u6743\u9650
#简体中文
500=服务器内部异常
401=未授权
403=拒绝访问,没有权限
10001={0}\u4E0D\u80FD\u4E3A\u7A7A
10002=\u6570\u636E\u5E93\u4E2D\u5DF2\u5B58\u5728\u8BE5\u8BB0\u5F55
10003=\u83B7\u53D6\u53C2\u6570\u5931\u8D25
10004=\u8D26\u53F7\u6216\u5BC6\u7801\u9519\u8BEF
10005=\u8D26\u53F7\u5DF2\u88AB\u505C\u7528
10006=\u552F\u4E00\u6807\u8BC6\u4E0D\u80FD\u4E3A\u7A7A
10007=\u9A8C\u8BC1\u7801\u4E0D\u6B63\u786E
10008=\u5148\u5220\u9664\u5B50\u83DC\u5355\u6216\u6309\u94AE
10009=\u539F\u5BC6\u7801\u4E0D\u6B63\u786E
10010=\u8D26\u53F7\u6216\u5BC6\u7801\u4E0D\u6B63\u786E,\u60A8\u8FD8\u6709\u53EF\u4EE5\u5C1D\u8BD5{0}\u6B21
10001={0}不能为空
10002=数据库中已存在该记录
10003=获取参数失败
10004=账号或密码错误
10005=账号已被停用
10006=唯一标识不能为空
10007=验证码不正确
10008=先删除子菜单或按钮
10009=原密码不正确
10010=账号或密码不正确,您还有可以尝试{0}次
10011=\u4E0A\u7EA7\u90E8\u95E8\u9009\u62E9\u9519\u8BEF
10012=\u4E0A\u7EA7\u83DC\u5355\u4E0D\u80FD\u4E3A\u81EA\u8EAB
10013=\u6570\u636E\u6743\u9650\u63A5\u53E3\uFF0C\u53EA\u80FD\u662FMap\u7C7B\u578B\u53C2\u6570
10014=\u8BF7\u5148\u5220\u9664\u4E0B\u7EA7\u90E8\u95E8
10015=\u8BF7\u5148\u5220\u9664\u90E8\u95E8\u4E0B\u7684\u7528\u6237
10016=\u90E8\u7F72\u5931\u8D25\uFF0C\u6CA1\u6709\u6D41\u7A0B
10017=\u6A21\u578B\u56FE\u4E0D\u6B63\u786E\uFF0C\u8BF7\u68C0\u67E5
10018=\u5BFC\u51FA\u5931\u8D25\uFF0C\u6A21\u578BID\u4E3A{0}
10011=上级部门选择错误
10012=上级菜单不能为自身
10013=数据权限接口,只能是Map类型参数
10014=请先删除下级部门
10015=请先删除部门下的用户
10016=部署失败,没有流程
10017=模型图不正确,请检查
10018=导出失败,模型ID为{0}
10019=\u8BF7\u4E0A\u4F20\u6587\u4EF6
10020=token\u4E0D\u80FD\u4E3A\u7A7A
10021=token\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55
10022=\u8D26\u53F7\u5DF2\u88AB\u9501\u5B9A
10023=\u8BF7\u4E0A\u4F20zip\u3001bar\u3001bpmn\u3001bpmn20.xml\u683C\u5F0F\u6587\u4EF6
10019=请上传文件
10020=token不能为空
10021=token失效,请重新登录
10022=账号已被锁定
10023=请上传zip、bar、bpmn、bpmn20.xml格式文件
10024=\u4E0A\u4F20\u6587\u4EF6\u5931\u8D25{0}
10025=\u53D1\u9001\u77ED\u4FE1\u5931\u8D25{0}
10026=\u90AE\u4EF6\u6A21\u677F\u4E0D\u5B58\u5728
10024=上传文件失败{0}
10025=发送短信失败{0}
10026=邮件模板不存在
10027=Redis\u670D\u52A1\u5F02\u5E38
10028=\u5B9A\u65F6\u4EFB\u52A1\u5931\u8D25
10029=\u4E0D\u80FD\u5305\u542B\u975E\u6CD5\u5B57\u7B26
10030=\u5BC6\u7801\u957F\u5EA6\u4E0D\u8DB3{0}\u4F4D
10031=\u5BC6\u7801\u5FC5\u987B\u540C\u65F6\u5305\u542B\u6570\u5B57\u3001\u5927\u5C0F\u5199\u5B57\u6BCD\u548C\u7279\u6B8A\u5B57\u7B26\u7EC4\u6210
10032=\u5220\u9664\u672C\u6570\u636E\u5F02\u5E38
10033=\u8BBE\u5907\u9A8C\u8BC1\u7801\u9519\u8BEF
10027=Redis服务异常
10028=定时任务失败
10029=不能包含非法字符
10030=密码长度不足{0}位
10031=密码必须同时包含数字、大小写字母和特殊字符组成
10032=删除本数据异常
10033=设备验证码错误
10034=\u53C2\u6570\u503C\u4E0D\u80FD\u4E3A\u7A7A
10035=\u53C2\u6570\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
10036=\u4E0D\u652F\u6301\u7684\u53C2\u6570\u7C7B\u578B
10037=\u53C2\u6570\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6570\u5B57
10038=\u53C2\u6570\u503C\u5FC5\u987B\u662Ftrue\u6216false
10039=\u53C2\u6570\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684JSON\u6570\u7EC4\u683C\u5F0F
10040=\u53C2\u6570\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684JSON\u683C\u5F0F
10034=参数值不能为空
10035=参数类型不能为空
10036=不支持的参数类型
10037=参数值必须是有效的数字
10038=参数值必须是true或false
10039=参数值必须是有效的JSON数组格式
10040=参数值必须是有效的JSON格式
10041=\u8BBE\u5907\u672A\u627E\u5230
10041=设备未找到
10042={0}
10043=\u5220\u9664\u6570\u636E\u5931\u8D25
10044=\u7528\u6237\u672A\u767B\u5F55
10045=WebSocket\u8FDE\u63A5\u5931\u8D25\u6216\u8FDE\u63A5\u8D85\u65F6
10046=\u4FDD\u5B58\u58F0\u7EB9\u9519\u8BEF\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
10047=\u6BCF\u65E5\u53D1\u9001\u6B21\u6570\u5DF2\u8FBE\u4E0A\u9650
10048=\u65E7\u5BC6\u7801\u8F93\u5165\u9519\u8BEF
10049=\u8BBE\u7F6E\u7684LLM\u4E0D\u662Fopenai\u548Collama
10050=token\u751F\u6210\u5931\u8D25
10051=\u8D44\u6E90\u4E0D\u5B58\u5728
10052=\u9ED8\u8BA4\u667A\u80FD\u4F53\u672A\u627E\u5230
10053=\u667A\u80FD\u4F53\u672A\u627E\u5230
10054=\u58F0\u7EB9\u63A5\u53E3\u672A\u914D\u7F6E\uFF0C\u8BF7\u5148\u5728\u53C2\u6570\u914D\u7F6E\u4E2D\u914D\u7F6E\u58F0\u7EB9\u63A5\u53E3\u5730\u5740(server.voice_print)
10055=\u77ED\u4FE1\u53D1\u9001\u5931\u8D25
10056=\u77ED\u4FE1\u8FDE\u63A5\u5EFA\u7ACB\u5931\u8D25
10057=\u667A\u80FD\u4F53\u7684\u58F0\u7EB9\u521B\u5EFA\u5931\u8D25
10058=\u667A\u80FD\u4F53\u7684\u5BF9\u5E94\u58F0\u7EB9\u66F4\u65B0\u5931\u8D25
10059=\u667A\u80FD\u4F53\u7684\u5BF9\u5E94\u58F0\u7EB9\u5220\u9664\u5931\u8D25
10060=\u53D1\u9001\u592A\u9891\u7E41\uFF0C\u8BF7{0}\u79D2\u540E\u518D\u8BD5
10061=\u6FC0\u6D3B\u7801\u4E0D\u80FD\u4E3A\u7A7A
10062=\u6FC0\u6D3B\u7801\u9519\u8BEF
10063=\u8BBE\u5907\u5DF2\u6FC0\u6D3B
10064=\u8BE5\u6A21\u578B\u4E3A\u9ED8\u8BA4\u6A21\u578B\uFF0C\u8BF7\u5148\u8BBE\u7F6E\u5176\u4ED6\u6A21\u578B\u4E3A\u9ED8\u8BA4\u6A21\u578B
10065=\u65B0\u589E\u6570\u636E\u5931\u8D25
10066=\u4FEE\u6539\u6570\u636E\u5931\u8D25
10067=\u56FE\u5F62\u9A8C\u8BC1\u7801\u9519\u8BEF
10068=\u6CA1\u6709\u5F00\u542F\u624B\u673A\u6CE8\u518C\uFF0C\u6CA1\u6CD5\u4F7F\u7528\u77ED\u4FE1\u9A8C\u8BC1\u7801\u529F\u80FD
10069=\u7528\u6237\u540D\u4E0D\u662F\u624B\u673A\u53F7\u7801\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165
10070=\u6B64\u624B\u673A\u53F7\u7801\u5DF2\u7ECF\u6CE8\u518C\u8FC7
10071=\u8F93\u5165\u7684\u624B\u673A\u53F7\u7801\u672A\u6CE8\u518C
10072=\u5F53\u524D\u4E0D\u5141\u8BB8\u666E\u901A\u7528\u6237\u6CE8\u518C
10073=\u6CA1\u6709\u5F00\u542F\u624B\u673A\u6CE8\u518C\uFF0C\u6CA1\u6CD5\u4F7F\u7528\u627E\u56DE\u5BC6\u7801\u529F\u80FD
10074=\u8F93\u5165\u7684\u624B\u673A\u53F7\u7801\u683C\u5F0F\u4E0D\u6B63\u786E
10075=\u8F93\u5165\u7684\u624B\u673A\u9A8C\u8BC1\u7801\u9519\u8BEF
10076=\u5B57\u5178\u7C7B\u578B\u4E0D\u5B58\u5728
10077=\u5B57\u5178\u7C7B\u578B\u7F16\u7801\u91CD\u590D
10078=\u8BFB\u53D6\u8D44\u6E90\u5931\u8D25
10079=LLM\u5927\u6A21\u578B\u548CIntent\u610F\u56FE\u8BC6\u522B\uFF0C\u9009\u62E9\u53C2\u6570\u4E0D\u5339\u914D
10080=\u6B64\u58F0\u97F3\u58F0\u7EB9\u5BF9\u5E94\u7684\u4EBA\uFF08{0}\uFF09\u5DF2\u7ECF\u6CE8\u518C\uFF0C\u8BF7\u9009\u62E9\u5176\u4ED6\u58F0\u97F3\u6CE8\u518C
10081=\u5220\u9664\u58F0\u7EB9\u51FA\u73B0\u9519\u8BEF
10082=\u6B64\u6B21\u4FEE\u6539\u4E0D\u5141\u8BB8\uFF0C\u6B64\u58F0\u97F3\u5DF2\u7ECF\u6CE8\u518C\u4E3A\u58F0\u7EB9\u4E86\uFF08{0}\uFF09
10083=\u4FEE\u6539\u58F0\u7EB9\u9519\u8BEF\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
10084=\u58F0\u7EB9\u63A5\u53E3\u5730\u5740\u5B58\u5728\u9519\u8BEF\uFF0C\u8BF7\u8FDB\u5165\u53C2\u6570\u7BA1\u7406\u4FEE\u6539\u58F0\u7EB9\u63A5\u53E3\u5730\u5740
10085=\u97F3\u9891\u6570\u636E\u4E0D\u5C5E\u4E8E\u8FD9\u4E2A\u667A\u80FD\u4F53
10086=\u97F3\u9891\u6570\u636E\u662F\u7A7A\u7684\u8BF7\u68C0\u67E5\u4E0A\u4F20\u6570\u636E
10087=\u58F0\u7EB9\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u6C42\u4E0D\u6210\u529F
10088=\u58F0\u7EB9\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u6C42\u5904\u7406\u5931\u8D25
10089=\u58F0\u7EB9\u6CE8\u9500\u5931\u8D25\uFF0C\u8BF7\u6C42\u4E0D\u6210\u529F
10090=\u58F0\u7EB9\u6CE8\u9500\u5931\u8D25\uFF0C\u8BF7\u6C42\u5904\u7406\u5931\u8D25
10091=\u4F9B\u5E94\u5668\u4E0D\u5B58\u5728
10092=\u8BBE\u7F6E\u7684LLM\u4E0D\u5B58\u5728
10093=\u8BE5\u6A21\u578B\u914D\u7F6E\u5DF2\u88AB\u667A\u80FD\u4F53{0}\u5F15\u7528\uFF0C\u65E0\u6CD5\u5220\u9664
10094=\u8BE5LLM\u6A21\u578B\u5DF2\u88AB\u610F\u56FE\u8BC6\u522B\u914D\u7F6E\u5F15\u7528\uFF0C\u65E0\u6CD5\u5220\u9664
10095=\u65E0\u6548\u670D\u52A1\u7AEF\u64CD\u4F5C
10096=\u672A\u914D\u7F6E\u670D\u52A1\u7AEFWebSocket\u5730\u5740
10097=\u76EE\u6807WebSocket\u5730\u5740\u4E0D\u5B58\u5728
10098=WebSocket\u5730\u5740\u5217\u8868\u4E0D\u80FD\u4E3A\u7A7A
10099=WebSocket\u5730\u5740\u4E0D\u80FD\u4F7F\u7528localhost\u6216127.0.0.1
10100=WebSocket\u5730\u5740\u683C\u5F0F\u4E0D\u6B63\u786E
10101=WebSocket\u8FDE\u63A5\u6D4B\u8BD5\u5931\u8D25
10102=OTA\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A
10103=OTA\u5730\u5740\u4E0D\u80FD\u4F7F\u7528localhost\u6216127.0.0.1
10104=OTA\u5730\u5740\u5FC5\u987B\u4EE5http\u6216https\u5F00\u5934
10105=OTA\u5730\u5740\u5FC5\u987B\u4EE5/ota/\u7ED3\u5C3E
10106=OTA\u63A5\u53E3\u8BBF\u95EE\u5931\u8D25
10107=OTA\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u683C\u5F0F\u4E0D\u6B63\u786E
10108=OTA\u63A5\u53E3\u9A8C\u8BC1\u5931\u8D25
10109=MCP\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A
10110=MCP\u5730\u5740\u4E0D\u80FD\u4F7F\u7528localhost\u6216127.0.0.1
10111=\u4E0D\u662F\u6B63\u786E\u7684MCP\u5730\u5740
10112=MCP\u63A5\u53E3\u8BBF\u95EE\u5931\u8D25
10113=MCP\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u683C\u5F0F\u4E0D\u6B63\u786E
10114=MCP\u63A5\u53E3\u9A8C\u8BC1\u5931\u8D25
10115=\u58F0\u7EB9\u63A5\u53E3\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A
10116=\u58F0\u7EB9\u63A5\u53E3\u5730\u5740\u4E0D\u80FD\u4F7F\u7528localhost\u6216127.0.0.1
10117=\u4E0D\u662F\u6B63\u786E\u7684\u58F0\u7EB9\u63A5\u53E3\u5730\u5740
10118=\u58F0\u7EB9\u63A5\u53E3\u5730\u5740\u5FC5\u987B\u4EE5http\u6216https\u5F00\u5934
10119=\u58F0\u7EB9\u63A5\u53E3\u8BBF\u95EE\u5931\u8D25
10120=\u58F0\u7EB9\u63A5\u53E3\u8FD4\u56DE\u5185\u5BB9\u683C\u5F0F\u4E0D\u6B63\u786E
10121=\u58F0\u7EB9\u63A5\u53E3\u9A8C\u8BC1\u5931\u8D25
10122=mqtt\u5BC6\u94A5\u4E0D\u80FD\u4E3A\u7A7A
10123=\u60A8\u7684mqtt\u5BC6\u94A5\u957F\u5EA6\u4E0D\u5B89\u5168\uFF0C\u5B57\u7B26\u6570\u9700\u8981\u81F3\u5C118\u4E2A\u5B57\u7B26\u4E14\u5FC5\u987B\u540C\u65F6\u5305\u542B\u5927\u5C0F\u5199\u5B57\u6BCD
10124=\u60A8\u7684mqtt\u5BC6\u94A5\u957F\u5EA6\u4E0D\u5B89\u5168\uFF0Cmqtt\u5BC6\u94A5\u5FC5\u987B\u540C\u65F6\u5305\u542B\u5927\u5C0F\u5199\u5B57\u6BCD
10125=\u60A8\u7684mqtt\u5BC6\u94A5\u5305\u542B\u5F31\u5BC6\u7801
10128=\u5B57\u5178\u6807\u7B7E\u91CD\u590D
10129=SM2\u5BC6\u94A5\u672A\u914D\u7F6E
10130=SM2\u89E3\u5BC6\u5931\u8D25
10131=modelType\u548CprovideCode\u4E0D\u80FD\u4E3A\u7A7A
10132=\u6CA1\u6709\u6743\u9650\u67E5\u770B\u8BE5\u667A\u80FD\u4F53\u7684\u804A\u5929\u8BB0\u5F55
10133=\u4F1A\u8BDDID\u4E0D\u80FD\u4E3A\u7A7A
10134=\u667A\u80FD\u4F53ID\u4E0D\u80FD\u4E3A\u7A7A
10135=\u804A\u5929\u8BB0\u5F55\u4E0B\u8F7D\u5931\u8D25
10136=\u4E0B\u8F7D\u94FE\u63A5\u5DF2\u8FC7\u671F\u6216\u65E0\u6548
10137=\u4E0B\u8F7D\u94FE\u63A5\u65E0\u6548
10138=\u7528\u6237
10139=\u667A\u4F53
10140=\u97F3\u9891\u6587\u4EF6\u4E0D\u80FD\u4E3A\u7A7A
10141=\u53EA\u652F\u6301\u97F3\u9891\u6587\u4EF6
10142=\u97F3\u9891\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC710MB
10143=\u4E0A\u4F20\u5931\u8D25
10144=\u58F0\u97F3\u514B\u9686\u8BB0\u5F55\u4E0D\u5B58\u5728
10145=\u97F3\u8272\u8D44\u6E90\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A
10146=\u5E73\u53F0\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
10147=\u97F3\u8272ID\u4E0D\u80FD\u4E3A\u7A7A
10148=\u5F52\u5C5E\u8D26\u53F7\u4E0D\u80FD\u4E3A\u7A7A
10149=\u5220\u9664\u7684\u97F3\u8272\u8D44\u6E90ID\u4E0D\u80FD\u4E3A\u7A7A
10150=\u60A8\u6CA1\u6709\u6743\u9650\u64CD\u4F5C\u8BE5\u8BB0\u5F55
10151=\u8BF7\u5148\u4E0A\u4F20\u97F3\u9891\u6587\u4EF6
10152=\u6A21\u578B\u914D\u7F6E\u672A\u627E\u5230
10153=\u6A21\u578B\u7C7B\u578B\u672A\u627E\u5230
10154=\u8BAD\u7EC3\u5931\u8D25
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}
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
10162=\u6A21\u578B\u4F9B\u5E94\u5668\u4E0D\u5B58\u5728
10163=\u77E5\u8BC6\u5E93\u8BB0\u5F55\u4E0D\u5B58\u5728
10164=RAG\u914D\u7F6E\u672A\u627E\u5230
10165=RAG\u914D\u7F6E\u7C7B\u578B\u9519\u8BEF
10166=\u9ED8\u8BA4RAG\u914D\u7F6E\u672A\u627E\u5230
10167=RAG\u914D\u7F6E\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570
10168=\u4E0A\u4F20\u6587\u4EF6\u5931\u8D25
10169=\u60A8\u6CA1\u6709\u6743\u9650\u64CD\u4F5C\u8BE5\u8BB0\u5F55
10170=RAG \u63A5\u53E3\u9519\u8BEF\u63A5\u53E3\u9519\u8BEF:{0}
10043=删除数据失败
10044=用户未登录
10045=WebSocket连接失败或连接超时
10046=保存声纹错误,请联系管理员
10047=每日发送次数已达上限
10048=旧密码输入错误
10049=设置的LLM不是openai和ollama
10050=token生成失败
10051=资源不存在
10052=默认智能体未找到
10053=智能体未找到
10054=声纹接口未配置,请先在参数配置中配置声纹接口地址(server.voice_print)
10055=短信发送失败
10056=短信连接建立失败
10057=智能体的声纹创建失败
10058=智能体的对应声纹更新失败
10059=智能体的对应声纹删除失败
10060=发送太频繁,请{0}秒后再试
10061=激活码不能为空
10062=激活码错误
10063=设备已激活
10064=该模型为默认模型,请先设置其他模型为默认模型
10065=新增数据失败
10066=修改数据失败
10067=图形验证码错误
10068=没有开启手机注册,没法使用短信验证码功能
10069=用户名不是手机号码,请重新输入
10070=此手机号码已经注册过
10071=输入的手机号码未注册
10072=当前不允许普通用户注册
10073=没有开启手机注册,没法使用找回密码功能
10074=输入的手机号码格式不正确
10075=输入的手机验证码错误
10076=字典类型不存在
10077=字典类型编码重复
10078=读取资源失败
10079=LLM大模型和Intent意图识别,选择参数不匹配
10080=此声音声纹对应的人({0})已经注册,请选择其他声音注册
10081=删除声纹出现错误
10082=此次修改不允许,此声音已经注册为声纹了({0})
10083=修改声纹错误,请联系管理员
10084=声纹接口地址存在错误,请进入参数管理修改声纹接口地址
10085=音频数据不属于这个智能体
10086=音频数据是空的请检查上传数据
10087=声纹保存失败,请求不成功
10088=声纹保存失败,请求处理失败
10089=声纹注销失败,请求不成功
10090=声纹注销失败,请求处理失败
10091=供应器不存在
10092=设置的LLM不存在
10093=该模型配置已被智能体{0}引用,无法删除
10094=该LLM模型已被意图识别配置引用,无法删除
10095=无效服务端操作
10096=未配置服务端WebSocket地址
10097=目标WebSocket地址不存在
10098=WebSocket地址列表不能为空
10099=WebSocket地址不能使用localhost127.0.0.1
10100=WebSocket地址格式不正确
10101=WebSocket连接测试失败
10102=OTA地址不能为空
10103=OTA地址不能使用localhost127.0.0.1
10104=OTA地址必须以http或https开头
10105=OTA地址必须以/ota/结尾
10106=OTA接口访问失败
10107=OTA接口返回内容格式不正确
10108=OTA接口验证失败
10109=MCP地址不能为空
10110=MCP地址不能使用localhost127.0.0.1
10111=不是正确的MCP地址
10112=MCP接口访问失败
10113=MCP接口返回内容格式不正确
10114=MCP接口验证失败
10115=声纹接口地址不能为空
10116=声纹接口地址不能使用localhost127.0.0.1
10117=不是正确的声纹接口地址
10118=声纹接口地址必须以http或https开头
10119=声纹接口访问失败
10120=声纹接口返回内容格式不正确
10121=声纹接口验证失败
10122=mqtt密钥不能为空
10123=您的mqtt密钥长度不安全,字符数需要至少8个字符且必须同时包含大小写字母
10124=您的mqtt密钥长度不安全,mqtt密钥必须同时包含大小写字母
10125=您的mqtt密钥包含弱密码
10128=字典标签重复
10129=SM2密钥未配置
10130=SM2解密失败
10131=modelTypeprovideCode不能为空
10132=没有权限查看该智能体的聊天记录
10133=会话ID不能为空
10134=智能体ID不能为空
10135=聊天记录下载失败
10136=下载链接已过期或无效
10137=下载链接无效
10138=用户
10139=智体
10140=音频文件不能为空
10141=只支持音频文件
10142=音频文件大小不能超过10MB
10143=上传失败
10144=声音克隆记录不存在
10145=音色资源信息不能为空
10146=平台名称不能为空
10147=音色ID不能为空
10148=归属账号不能为空
10149=删除的音色资源ID不能为空
10150=您没有权限操作该记录
10151=请先上传音频文件
10152=模型配置未找到
10153=模型类型未找到
10154=训练失败
10155=火山引擎缺少配置
10156=响应格式错误,缺少BaseResp字段
10157=请求失败
10158=请求失败,状态码{0}
10159=音色ID已存在
10160=火山引擎音色ID格式错误,必须以S_开头
10161=Mac地址已存在
10162=模型供应器不存在
10163=知识库记录不存在
10164=RAG配置未找到
10165=RAG配置类型错误
10166=默认RAG配置未找到
10167=RAG接口错误,{0}
10168=上传文件失败
10169=您没有权限操作该记录
@@ -173,7 +173,6 @@
10164=RAG configuration not found
10165=RAG configuration type error
10166=Default RAG configuration not found
10167=RAG configuration missing required parameters
10167=RAG API interface error: {0}
10168=Upload file failed
10169=No permission to operate this knowledge base
10170=RAG API interface error: {0}
10169=No permission to operate this knowledge base
@@ -173,7 +173,6 @@
10164=RAG\u914D\u7F6E\u672A\u627E\u5230
10165=RAG\u914D\u7F6E\u7C7B\u578B\u9519\u8BEF
10166=\u9ED8\u8BA4RAG\u914D\u7F6E\u672A\u627E\u5230
10167=RAG\u914D\u7F6E\u7F3A\u5C11\u5FC5\u8981\u53C2\u6570
10167=RAG\u63A5\u53E3\u9519\u8BEF\uFF0C{0}
10168=\u4E0A\u4F20\u6587\u4EF6\u5931\u8D25
10169=\u60A8\u6CA1\u6709\u6743\u9650\u64CD\u4F5C\u8BE5\u8BB0\u5F55
10170=RAG API\u63A5\u53E3\u9519\u8BEF:{0}
10169=\u60A8\u6CA1\u6709\u6743\u9650\u64CD\u4F5C\u8BE5\u8BB0\u5F55
@@ -173,7 +173,6 @@
10164=RAG\u914D\u7F6E\u672A\u627E\u5230
10165=RAG\u914D\u7F6E\u985E\u578B\u932F\u8AA4
10166=\u9810\u8A2DRAG\u914D\u7F6E\u672A\u627E\u5230
10167=RAG\u914D\u7F6E\u7F3A\u5C11\u5FC5\u8981\u53C3\u6578
10167=RAG\u63A5\u53E3\u932F\u8AA4\uFF0C{0}
10168=\u4E0A\u50B3\u6587\u4EF6\u5931\u6557
10169=\u60A8\u6C92\u6709\u6B0A\u9650\u64CD\u4F5C\u8A72\u8A18\u9304
10170=RAG \u63A5\u53E3\u932F\u8AA4\u63A5\u53E3\u9519\u8BEF:{0}
@@ -26,22 +26,23 @@
element-loading-background="rgba(255, 255, 255, 0.7)" :header-cell-class-name="headerCellClassName"
@selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"></el-table-column>
<el-table-column :label="$t('knowledgeFileUpload.documentName')" prop="name" align="center">
<el-table-column :label="$t('knowledgeFileUpload.documentName')" prop="name" align="left">
<template slot-scope="scope">
<span class="document-name">{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('knowledgeFileUpload.uploadTime')" prop="createdAt" align="center">
<el-table-column :label="$t('knowledgeFileUpload.uploadTime')" prop="createdAt" align="center"
width="300">
<template slot-scope="scope">
<span>{{ formatDate(scope.row.createdAt) }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('knowledgeFileUpload.sliceCount')" align="center">
<el-table-column :label="$t('knowledgeFileUpload.sliceCount')" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.sliceCount || 0 }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('knowledgeFileUpload.operation')" align="center">
<el-table-column :label="$t('knowledgeFileUpload.operation')" align="center" width="200">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="handleParse(scope.row)"
:disabled="scope.row.status === 1" v-if="!scope.row.sliceCount || scope.row.sliceCount <= 0">
@@ -150,7 +151,7 @@
<div v-for="(slice, index) in sliceList" :key="index" class="slice-card">
<div class="slice-header-info">
<p><strong>{{ $t('knowledgeFileUpload.slice') }} {{ (sliceCurrentPage - 1) * slicePageSize + index + 1
}}</strong></p>
}}</strong></p>
</div>
<div class="slice-card-content">
<div class="content-text">{{ slice.content }}</div>
@@ -1386,8 +1387,8 @@ export default {
.document-uploader {
:deep(.el-upload-dragger) {
width: 600px;
height: 300px;
min-height: 300px;
height: 200px;
min-height: 200px;
border: 2px dashed #c0c4cc;
border-radius: 16px;
cursor: pointer;