diff --git a/main/manager-api/src/main/java/xiaozhi/common/exception/ErrorCode.java b/main/manager-api/src/main/java/xiaozhi/common/exception/ErrorCode.java index 659e135a..1896ff11 100644 --- a/main/manager-api/src/main/java/xiaozhi/common/exception/ErrorCode.java +++ b/main/manager-api/src/main/java/xiaozhi/common/exception/ErrorCode.java @@ -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; // 默认智能体未找到 } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentChatHistoryController.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentChatHistoryController.java index 53c85d72..49096d43 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentChatHistoryController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentChatHistoryController.java @@ -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]; diff --git a/main/manager-api/src/main/java/xiaozhi/modules/config/service/impl/ConfigServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/config/service/impl/ConfigServiceImpl.java index 7883b8c1..3ab3d977 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/config/service/impl/ConfigServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/config/service/impl/ConfigServiceImpl.java @@ -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; diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/controller/DeviceController.java b/main/manager-api/src/main/java/xiaozhi/modules/device/controller/DeviceController.java index a3f9d236..ff6069bf 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/device/controller/DeviceController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/controller/DeviceController.java @@ -69,7 +69,7 @@ public class DeviceController { public Result registerDevice(@RequestBody DeviceRegisterDTO deviceRegisterDTO) { String macAddress = deviceRegisterDTO.getMacAddress(); if (StringUtils.isBlank(macAddress)) { - return new Result().error(ErrorCode.NOT_NULL, "mac地址不能为空"); + return new Result().error(ErrorCode.MCA_NOT_NULL); } // 生成六位验证码 String code = String.valueOf(Math.random()).substring(2, 8); diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeBaseServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeBaseServiceImpl.java index c61df49b..ddde7195 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeBaseServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeBaseServiceImpl.java @@ -356,7 +356,7 @@ public class KnowledgeBaseServiceImpl extends BaseServiceImpl 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 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 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 ragConfig = getRAGConfig(ragModelId); diff --git a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeFilesServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeFilesServiceImpl.java index edf6238e..069d51cd 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeFilesServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/knowledge/service/impl/KnowledgeFilesServiceImpl.java @@ -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 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 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 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; } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/controller/VoiceCloneController.java b/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/controller/VoiceCloneController.java index b7de9332..a85dd34a 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/controller/VoiceCloneController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/controller/VoiceCloneController.java @@ -107,10 +107,10 @@ public class VoiceCloneController { String name = params.get("name"); if (id == null || id.isEmpty()) { - return new Result().error(ErrorCode.IDENTIFIER_NOT_NULL, "唯一标识不能为空"); + return new Result().error(ErrorCode.IDENTIFIER_NOT_NULL); } - if (name == null) { - return new Result().error(ErrorCode.NOT_NULL, "名称不能为空"); + if (name == null || name.isEmpty()) { + return new Result().error(ErrorCode.VOICE_CLONE_NAME_NOT_NULL); } // 检查权限 checkPermission(id); @@ -119,7 +119,7 @@ public class VoiceCloneController { redisUtils.delete(RedisKeys.getTimbreNameById(id)); return new Result(); } catch (Exception e) { - return new Result().error(ErrorCode.UPDATE_DATA_FAILED, "更新失败: " + e.getMessage()); + return new Result().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().error(ErrorCode.RESOURCE_NOT_FOUND, "音频不存在"); + return new Result().error(ErrorCode.VOICE_CLONE_AUDIO_NOT_FOUND); } String uuid = UUID.randomUUID().toString(); redisUtils.set(RedisKeys.getVoiceCloneAudioIdKey(uuid), id); diff --git a/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/service/impl/VoiceCloneServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/service/impl/VoiceCloneServiceImpl.java index bc13d2aa..cdfb5cf1 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/service/impl/VoiceCloneServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/voiceclone/service/impl/VoiceCloneServiceImpl.java @@ -100,7 +100,7 @@ public class VoiceCloneServiceImpl extends BaseServiceImpl 0) { - throw new RenException(ErrorCode.VOICE_ID_ALREADY_EXISTS, "音色ID " + voiceId + " 已存在"); + throw new RenException(ErrorCode.VOICE_ID_ALREADY_EXISTS); } } diff --git a/main/manager-api/src/main/resources/i18n/messages.properties b/main/manager-api/src/main/resources/i18n/messages.properties index ebde5cdf..6cdd8d1e 100644 --- a/main/manager-api/src/main/resources/i18n/messages.properties +++ b/main/manager-api/src/main/resources/i18n/messages.properties @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/main/manager-api/src/main/resources/i18n/messages_en_US.properties b/main/manager-api/src/main/resources/i18n/messages_en_US.properties index 5774b8f6..75510d37 100644 --- a/main/manager-api/src/main/resources/i18n/messages_en_US.properties +++ b/main/manager-api/src/main/resources/i18n/messages_en_US.properties @@ -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 \ No newline at end of file diff --git a/main/manager-api/src/main/resources/i18n/messages_zh_CN.properties b/main/manager-api/src/main/resources/i18n/messages_zh_CN.properties index 573d6142..6cdd8d1e 100644 --- a/main/manager-api/src/main/resources/i18n/messages_zh_CN.properties +++ b/main/manager-api/src/main/resources/i18n/messages_zh_CN.properties @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/main/manager-api/src/main/resources/i18n/messages_zh_TW.properties b/main/manager-api/src/main/resources/i18n/messages_zh_TW.properties index c57f9e2c..6a7d7d72 100644 --- a/main/manager-api/src/main/resources/i18n/messages_zh_TW.properties +++ b/main/manager-api/src/main/resources/i18n/messages_zh_TW.properties @@ -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 \ No newline at end of file