From f742bd7cde8b4c0eb353ceb371215f016c87a469 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Tue, 15 Oct 2024 20:17:39 +0800 Subject: [PATCH 01/14] new llm api --- .../server/controller/ChatbotController.java | 57 ++--- .../controller/LLMConfigController.java | 90 ++++++++ .../converter/AuthPlatformConverter.java | 2 +- .../server/model/req/AuthPlatformReq.java | 6 + .../server/model/req/ChatbotThreadReq.java | 28 +++ .../server/model/vo/AuthPlatformVO.java | 10 +- .../model/vo/PlatformAuthCredentialVO.java | 2 + .../server/service/ChatbotService.java | 14 -- .../server/service/LLMConfigService.java | 39 ++++ .../service/impl/ChatbotServiceImpl.java | 121 ---------- .../service/impl/LLMConfigServiceImpl.java | 210 ++++++++++++++++++ .../controller/ChatbotControllerTest.java | 71 +----- 12 files changed, 402 insertions(+), 248 deletions(-) create mode 100644 bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java create mode 100644 bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ChatbotThreadReq.java create mode 100644 bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java create mode 100644 bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java index 6d42d7e51..999e528b4 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java @@ -18,15 +18,10 @@ */ package org.apache.bigtop.manager.server.controller; -import org.apache.bigtop.manager.server.model.converter.AuthPlatformConverter; -import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO; -import org.apache.bigtop.manager.server.model.req.AuthPlatformReq; import org.apache.bigtop.manager.server.model.req.ChatbotMessageReq; -import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO; +import org.apache.bigtop.manager.server.model.req.ChatbotThreadReq; import org.apache.bigtop.manager.server.model.vo.ChatMessageVO; import org.apache.bigtop.manager.server.model.vo.ChatThreadVO; -import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO; -import org.apache.bigtop.manager.server.model.vo.PlatformVO; import org.apache.bigtop.manager.server.service.ChatbotService; import org.apache.bigtop.manager.server.utils.ResponseEntity; @@ -34,9 +29,9 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @@ -48,47 +43,23 @@ @Tag(name = "Chatbot Controller") @RestController -@RequestMapping("/chatbot/") +@RequestMapping("/llm/chatbot/") public class ChatbotController { @Resource private ChatbotService chatbotService; - @Operation(summary = "get platforms", description = "Get all platforms") - @GetMapping("/platforms") - public ResponseEntity> platforms() { - return ResponseEntity.success(chatbotService.platforms()); - } - - @Operation(summary = "platform credentials", description = "Get platform auth credentials") - @GetMapping("/platforms/{platformId}/auth-credentials") - public ResponseEntity> platformsAuthCredential(@PathVariable Long platformId) { - return ResponseEntity.success(chatbotService.platformsAuthCredentials(platformId)); - } - - @Operation(summary = "get auth platforms", description = "Get authorized platforms") - @GetMapping("/auth-platforms") - public ResponseEntity> authorizedPlatforms() { - return ResponseEntity.success(chatbotService.authorizedPlatforms()); - } - - @Operation(summary = "auth platform", description = "Add authorized platforms") - @PostMapping("/auth-platforms") - public ResponseEntity addAuthorizedPlatform(@RequestBody AuthPlatformReq authPlatformReq) { - AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromReq2DTO(authPlatformReq); - return ResponseEntity.success(chatbotService.addAuthorizedPlatform(authPlatformDTO)); - } - - @Operation(summary = "delete auth platform", description = "Delete authorized platforms") - @DeleteMapping("/auth-platforms/{authId}") - public ResponseEntity deleteAuthorizedPlatform(@PathVariable Long authId) { - return ResponseEntity.success(chatbotService.deleteAuthorizedPlatform(authId)); - } - @Operation(summary = "new thread", description = "Create a chat threads") @PostMapping("/auth-platforms/{authId}/threads") - public ResponseEntity createChatThreads(@PathVariable Long authId, @RequestParam String model) { - return ResponseEntity.success(chatbotService.createChatThreads(authId, model)); + public ResponseEntity createChatThreads(@PathVariable Long authId) { + return ResponseEntity.success(chatbotService.createChatThreads(authId, "")); + } + + @Operation(summary = "update thread", description = "Update a chat threads") + @PutMapping("/auth-platforms/{authId}/threads") + public ResponseEntity updateChatThreads( + @PathVariable Long authId, @RequestBody ChatbotThreadReq chatbotThreadReq) { + return ResponseEntity.success(chatbotService.createChatThreads(authId, "")); } @Operation(summary = "delete thread", description = "Delete a chat threads") @@ -99,8 +70,8 @@ public ResponseEntity deleteChatThreads(@PathVariable Long authId, @Pat @Operation(summary = "get threads", description = "Get all threads of a auth platform") @GetMapping("/auth-platforms/{authId}/threads") - public ResponseEntity> getAllChatThreads(@PathVariable Long authId, @RequestParam String model) { - return ResponseEntity.success(chatbotService.getAllChatThreads(authId, model)); + public ResponseEntity> getAllChatThreads(@PathVariable Long authId) { + return ResponseEntity.success(chatbotService.getAllChatThreads(authId, "")); } @Operation(summary = "talk", description = "Talk with Chatbot") diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java new file mode 100644 index 000000000..b7bafdb12 --- /dev/null +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.server.controller; + +import org.apache.bigtop.manager.server.model.converter.AuthPlatformConverter; +import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO; +import org.apache.bigtop.manager.server.model.req.AuthPlatformReq; +import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO; +import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO; +import org.apache.bigtop.manager.server.model.vo.PlatformVO; +import org.apache.bigtop.manager.server.service.LLMConfigService; +import org.apache.bigtop.manager.server.utils.ResponseEntity; + +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; + +import jakarta.annotation.Resource; +import java.util.List; + +@Tag(name = "LLM Config Controller") +@RestController +@RequestMapping("/llm/config/") +public class LLMConfigController { + + @Resource + private LLMConfigService llmConfigService; + + @Operation(summary = "get platforms", description = "Get all platforms") + @GetMapping("/platforms") + public ResponseEntity> platforms() { + return ResponseEntity.success(llmConfigService.platforms()); + } + + @Operation(summary = "platform credentials", description = "Get platform auth credentials") + @GetMapping("/platforms/{platformId}/auth-credentials") + public ResponseEntity> platformsAuthCredential(@PathVariable Long platformId) { + return ResponseEntity.success(llmConfigService.platformsAuthCredentials(platformId)); + } + + @Operation(summary = "get auth platforms", description = "Get authorized platforms") + @GetMapping("/auth-platforms") + public ResponseEntity> authorizedPlatforms() { + return ResponseEntity.success(llmConfigService.authorizedPlatforms()); + } + + @Operation(summary = "add auth platform", description = "Add authorized platforms") + @PostMapping("/auth-platforms") + public ResponseEntity addAuthorizedPlatform(@RequestBody AuthPlatformReq authPlatformReq) { + AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromReq2DTO(authPlatformReq); + return ResponseEntity.success(llmConfigService.addAuthorizedPlatform(authPlatformDTO)); + } + + @Operation(summary = "update auth platform", description = "Update authorized platforms") + @PutMapping("/auth-platforms") + public ResponseEntity updateAuthorizedPlatform(@RequestBody AuthPlatformReq authPlatformReq) { + AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromReq2DTO(authPlatformReq); + return ResponseEntity.success(llmConfigService.addAuthorizedPlatform(authPlatformDTO)); + } + + @Operation(summary = "delete auth platform", description = "Delete authorized platforms") + @DeleteMapping("/auth-platforms/{authId}") + public ResponseEntity deleteAuthorizedPlatform(@PathVariable Long authId) { + return ResponseEntity.success(llmConfigService.deleteAuthorizedPlatform(authId)); + } +} diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java index 7fb9ff402..ad3160eef 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java @@ -43,7 +43,7 @@ public interface AuthPlatformConverter { AuthPlatformConverter INSTANCE = Mappers.getMapper(AuthPlatformConverter.class); - @Mapping(target = "supportModels", expression = "java(platformPO.getSupportModels())") + @Mapping(target = "model", expression = "java(platformPO.getSupportModels())") @Mapping(target = "platformName", expression = "java(platformPO.getName())") AuthPlatformVO fromPO2VO(AuthPlatformPO authPlatformPO, @Context PlatformPO platformPO); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java index 77047bf02..20ce97aca 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java @@ -32,4 +32,10 @@ public class AuthPlatformReq { @NotEmpty private List authCredentials; + + private String name; + + private String model; + + private String notes; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ChatbotThreadReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ChatbotThreadReq.java new file mode 100644 index 000000000..c45bee4a3 --- /dev/null +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ChatbotThreadReq.java @@ -0,0 +1,28 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.server.model.req; + +import lombok.Data; + +@Data +public class ChatbotThreadReq { + private Long id; + + private String name; +} diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java index a1a4c36ba..80d1478b1 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java @@ -28,12 +28,18 @@ public class AuthPlatformVO { private String platformName; - private String supportModels; + private String name; + + private String model; + + private String notes; + + private Integer status; public AuthPlatformVO(long platformId, String name, String models) { this.platformId = platformId; this.platformName = name; - this.supportModels = models; + this.model = models; } public AuthPlatformVO() {} diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthCredentialVO.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthCredentialVO.java index 7107422e1..a3ad651f9 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthCredentialVO.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthCredentialVO.java @@ -26,6 +26,8 @@ public class PlatformAuthCredentialVO { private String displayName; + private String description; + public PlatformAuthCredentialVO(String name, String displayName) { this.name = name; this.displayName = displayName; diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/ChatbotService.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/ChatbotService.java index 8d65c97d0..360f7e323 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/ChatbotService.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/ChatbotService.java @@ -18,12 +18,8 @@ */ package org.apache.bigtop.manager.server.service; -import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO; -import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO; import org.apache.bigtop.manager.server.model.vo.ChatMessageVO; import org.apache.bigtop.manager.server.model.vo.ChatThreadVO; -import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO; -import org.apache.bigtop.manager.server.model.vo.PlatformVO; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @@ -31,16 +27,6 @@ public interface ChatbotService { - List platforms(); - - List platformsAuthCredentials(Long platformId); - - List authorizedPlatforms(); - - AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO); - - boolean deleteAuthorizedPlatform(Long authId); - ChatThreadVO createChatThreads(Long authId, String model); boolean deleteChatThreads(Long authId, Long threadId); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java new file mode 100644 index 000000000..e41eb556a --- /dev/null +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.server.service; + +import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO; +import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO; +import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO; +import org.apache.bigtop.manager.server.model.vo.PlatformVO; + +import java.util.List; + +public interface LLMConfigService { + + List platforms(); + + List platformsAuthCredentials(Long platformId); + + List authorizedPlatforms(); + + AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO); + + boolean deleteAuthorizedPlatform(Long authId); +} diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java index 7cbbbc131..962367bb4 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java @@ -39,18 +39,12 @@ import org.apache.bigtop.manager.server.model.converter.AuthPlatformConverter; import org.apache.bigtop.manager.server.model.converter.ChatMessageConverter; import org.apache.bigtop.manager.server.model.converter.ChatThreadConverter; -import org.apache.bigtop.manager.server.model.converter.PlatformConverter; import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO; import org.apache.bigtop.manager.server.model.dto.ChatThreadDTO; -import org.apache.bigtop.manager.server.model.dto.PlatformDTO; -import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO; import org.apache.bigtop.manager.server.model.vo.ChatMessageVO; import org.apache.bigtop.manager.server.model.vo.ChatThreadVO; -import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO; -import org.apache.bigtop.manager.server.model.vo.PlatformVO; import org.apache.bigtop.manager.server.service.ChatbotService; -import org.jetbrains.annotations.NotNull; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @@ -60,7 +54,6 @@ import jakarta.annotation.Resource; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -114,120 +107,6 @@ private AIAssistant buildAIAssistant( .create(getPlatformType(platformName), getAIAssistantConfig(model, credentials, configs), threadId); } - private Boolean testAuthorization(String platformName, String model, Map credentials) { - AIAssistant aiAssistant = getAIAssistantFactory() - .create(getPlatformType(platformName), getAIAssistantConfig(model, credentials, null)); - try { - return aiAssistant.test(); - } catch (Exception e) { - throw new ApiException(ApiExceptionEnum.CREDIT_INCORRECT, e.getMessage()); - } - } - - @Override - public List platforms() { - List platformPOs = platformDao.findAll(); - return PlatformConverter.INSTANCE.fromPO2VO(platformPOs); - } - - @Override - public List platformsAuthCredentials(Long platformId) { - PlatformPO platformPO = platformDao.findById(platformId); - if (platformPO == null) { - throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); - } - List platformAuthCredentialVOs = new ArrayList<>(); - PlatformDTO platformDTO = PlatformConverter.INSTANCE.fromPO2DTO(platformPO); - for (String key : platformDTO.getAuthCredentials().keySet()) { - PlatformAuthCredentialVO platformAuthCredentialVO = new PlatformAuthCredentialVO( - key, platformDTO.getAuthCredentials().get(key)); - platformAuthCredentialVOs.add(platformAuthCredentialVO); - } - return platformAuthCredentialVOs; - } - - @Override - public List authorizedPlatforms() { - List authorizedPlatforms = new ArrayList<>(); - List authPlatformPOList = authPlatformDao.findAll(); - for (AuthPlatformPO authPlatformPO : authPlatformPOList) { - if (authPlatformPO.getIsDeleted()) { - continue; - } - - PlatformPO platformPO = platformDao.findById(authPlatformPO.getPlatformId()); - authorizedPlatforms.add(AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO)); - } - - return authorizedPlatforms; - } - - @Override - public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { - PlatformPO platformPO = platformDao.findById(authPlatformDTO.getPlatformId()); - if (platformPO == null) { - throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); - } - Map credentialSet = - getStringMap(authPlatformDTO, PlatformConverter.INSTANCE.fromPO2DTO(platformPO)); - List models = List.of(platformPO.getSupportModels().split(",")); - if (models.isEmpty()) { - throw new ApiException(ApiExceptionEnum.MODEL_NOT_SUPPORTED); - } - - if (!testAuthorization(platformPO.getName(), models.get(0), credentialSet)) { - throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); - } - - authPlatformDTO.setAuthCredentials(credentialSet); - AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); - authPlatformDao.save(authPlatformPO); - AuthPlatformVO authPlatformVO = AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO); - authPlatformVO.setSupportModels(platformPO.getSupportModels()); - authPlatformVO.setPlatformName(platformPO.getName()); - return authPlatformVO; - } - - private static @NotNull Map getStringMap(AuthPlatformDTO authPlatformDTO, PlatformDTO platformDTO) { - if (platformDTO == null) { - throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); - } - Map credentialNeed = platformDTO.getAuthCredentials(); - Map credentialGet = authPlatformDTO.getAuthCredentials(); - Map credentialSet = new HashMap<>(); - for (String key : credentialNeed.keySet()) { - if (!credentialGet.containsKey(key)) { - throw new ApiException(ApiExceptionEnum.CREDIT_INCORRECT); - } - credentialSet.put(key, credentialGet.get(key)); - } - return credentialSet; - } - - @Override - public boolean deleteAuthorizedPlatform(Long authId) { - AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); - if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { - throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); - } - - authPlatformPO.setIsDeleted(true); - authPlatformDao.partialUpdateById(authPlatformPO); - - List chatThreadPOS = chatThreadDao.findAllByAuthId(authPlatformPO.getId()); - for (ChatThreadPO chatThreadPO : chatThreadPOS) { - chatThreadPO.setIsDeleted(true); - chatThreadDao.partialUpdateById(chatThreadPO); - List chatMessagePOS = chatMessageDao.findAllByThreadId(chatThreadPO.getId()); - for (ChatMessagePO chatMessagePO : chatMessagePOS) { - chatMessagePO.setIsDeleted(true); - chatMessageDao.partialUpdateById(chatMessagePO); - } - } - - return true; - } - @Override public ChatThreadVO createChatThreads(Long authId, String model) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java new file mode 100644 index 000000000..0fb54ce25 --- /dev/null +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java @@ -0,0 +1,210 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.server.service.impl; + +import org.apache.bigtop.manager.ai.assistant.GeneralAssistantFactory; +import org.apache.bigtop.manager.ai.assistant.provider.AIAssistantConfig; +import org.apache.bigtop.manager.ai.assistant.store.PersistentChatMemoryStore; +import org.apache.bigtop.manager.ai.core.enums.PlatformType; +import org.apache.bigtop.manager.ai.core.factory.AIAssistant; +import org.apache.bigtop.manager.ai.core.factory.AIAssistantFactory; +import org.apache.bigtop.manager.dao.po.AuthPlatformPO; +import org.apache.bigtop.manager.dao.po.ChatMessagePO; +import org.apache.bigtop.manager.dao.po.ChatThreadPO; +import org.apache.bigtop.manager.dao.po.PlatformPO; +import org.apache.bigtop.manager.dao.repository.AuthPlatformDao; +import org.apache.bigtop.manager.dao.repository.ChatMessageDao; +import org.apache.bigtop.manager.dao.repository.ChatThreadDao; +import org.apache.bigtop.manager.dao.repository.PlatformDao; +import org.apache.bigtop.manager.server.enums.ApiExceptionEnum; +import org.apache.bigtop.manager.server.exception.ApiException; +import org.apache.bigtop.manager.server.model.converter.AuthPlatformConverter; +import org.apache.bigtop.manager.server.model.converter.PlatformConverter; +import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO; +import org.apache.bigtop.manager.server.model.dto.PlatformDTO; +import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO; +import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO; +import org.apache.bigtop.manager.server.model.vo.PlatformVO; +import org.apache.bigtop.manager.server.service.LLMConfigService; + +import org.jetbrains.annotations.NotNull; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.stereotype.Service; + +import lombok.extern.slf4j.Slf4j; + +import jakarta.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j +public class LLMConfigServiceImpl implements LLMConfigService { + @Resource + private PlatformDao platformDao; + + @Resource + private AuthPlatformDao authPlatformDao; + + @Resource + private ChatThreadDao chatThreadDao; + + @Resource + private ChatMessageDao chatMessageDao; + + private AIAssistantFactory aiAssistantFactory; + + public AIAssistantFactory getAIAssistantFactory() { + if (aiAssistantFactory == null) { + aiAssistantFactory = + new GeneralAssistantFactory(new PersistentChatMemoryStore(chatThreadDao, chatMessageDao)); + } + return aiAssistantFactory; + } + + private AIAssistantConfig getAIAssistantConfig( + String model, Map credentials, Map configs) { + return AIAssistantConfig.builder() + .setModel(model) + .setLanguage(LocaleContextHolder.getLocale().toString()) + .addCredentials(credentials) + .addConfigs(configs) + .build(); + } + + private PlatformType getPlatformType(String platformName) { + return PlatformType.getPlatformType(platformName.toLowerCase()); + } + + private Boolean testAuthorization(String platformName, String model, Map credentials) { + AIAssistant aiAssistant = getAIAssistantFactory() + .create(getPlatformType(platformName), getAIAssistantConfig(model, credentials, null)); + try { + return aiAssistant.test(); + } catch (Exception e) { + throw new ApiException(ApiExceptionEnum.CREDIT_INCORRECT, e.getMessage()); + } + } + + @Override + public List platforms() { + List platformPOs = platformDao.findAll(); + return PlatformConverter.INSTANCE.fromPO2VO(platformPOs); + } + + @Override + public List platformsAuthCredentials(Long platformId) { + PlatformPO platformPO = platformDao.findById(platformId); + if (platformPO == null) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); + } + List platformAuthCredentialVOs = new ArrayList<>(); + PlatformDTO platformDTO = PlatformConverter.INSTANCE.fromPO2DTO(platformPO); + for (String key : platformDTO.getAuthCredentials().keySet()) { + PlatformAuthCredentialVO platformAuthCredentialVO = new PlatformAuthCredentialVO( + key, platformDTO.getAuthCredentials().get(key)); + platformAuthCredentialVOs.add(platformAuthCredentialVO); + } + return platformAuthCredentialVOs; + } + + @Override + public List authorizedPlatforms() { + List authorizedPlatforms = new ArrayList<>(); + List authPlatformPOList = authPlatformDao.findAll(); + for (AuthPlatformPO authPlatformPO : authPlatformPOList) { + if (authPlatformPO.getIsDeleted()) { + continue; + } + + PlatformPO platformPO = platformDao.findById(authPlatformPO.getPlatformId()); + authorizedPlatforms.add(AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO)); + } + + return authorizedPlatforms; + } + + @Override + public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { + PlatformPO platformPO = platformDao.findById(authPlatformDTO.getPlatformId()); + if (platformPO == null) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); + } + Map credentialSet = + getStringMap(authPlatformDTO, PlatformConverter.INSTANCE.fromPO2DTO(platformPO)); + List models = List.of(platformPO.getSupportModels().split(",")); + if (models.isEmpty()) { + throw new ApiException(ApiExceptionEnum.MODEL_NOT_SUPPORTED); + } + + if (!testAuthorization(platformPO.getName(), models.get(0), credentialSet)) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); + } + + authPlatformDTO.setAuthCredentials(credentialSet); + AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); + authPlatformDao.save(authPlatformPO); + AuthPlatformVO authPlatformVO = AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO); + authPlatformVO.setModel(platformPO.getSupportModels()); + authPlatformVO.setPlatformName(platformPO.getName()); + return authPlatformVO; + } + + private static @NotNull Map getStringMap(AuthPlatformDTO authPlatformDTO, PlatformDTO platformDTO) { + if (platformDTO == null) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); + } + Map credentialNeed = platformDTO.getAuthCredentials(); + Map credentialGet = authPlatformDTO.getAuthCredentials(); + Map credentialSet = new HashMap<>(); + for (String key : credentialNeed.keySet()) { + if (!credentialGet.containsKey(key)) { + throw new ApiException(ApiExceptionEnum.CREDIT_INCORRECT); + } + credentialSet.put(key, credentialGet.get(key)); + } + return credentialSet; + } + + @Override + public boolean deleteAuthorizedPlatform(Long authId) { + AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); + if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); + } + + authPlatformPO.setIsDeleted(true); + authPlatformDao.partialUpdateById(authPlatformPO); + + List chatThreadPOS = chatThreadDao.findAllByAuthId(authPlatformPO.getId()); + for (ChatThreadPO chatThreadPO : chatThreadPOS) { + chatThreadPO.setIsDeleted(true); + chatThreadDao.partialUpdateById(chatThreadPO); + List chatMessagePOS = chatMessageDao.findAllByThreadId(chatThreadPO.getId()); + for (ChatMessagePO chatMessagePO : chatMessagePOS) { + chatMessagePO.setIsDeleted(true); + chatMessageDao.partialUpdateById(chatMessagePO); + } + } + + return true; + } +} diff --git a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java index 766053fdc..18936d575 100644 --- a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java +++ b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java @@ -18,14 +18,9 @@ */ package org.apache.bigtop.manager.server.controller; -import org.apache.bigtop.manager.server.model.dto.AuthPlatformDTO; -import org.apache.bigtop.manager.server.model.req.AuthPlatformReq; import org.apache.bigtop.manager.server.model.req.ChatbotMessageReq; -import org.apache.bigtop.manager.server.model.vo.AuthPlatformVO; import org.apache.bigtop.manager.server.model.vo.ChatMessageVO; import org.apache.bigtop.manager.server.model.vo.ChatThreadVO; -import org.apache.bigtop.manager.server.model.vo.PlatformAuthCredentialVO; -import org.apache.bigtop.manager.server.model.vo.PlatformVO; import org.apache.bigtop.manager.server.service.ChatbotService; import org.apache.bigtop.manager.server.utils.MessageSourceUtils; import org.apache.bigtop.manager.server.utils.ResponseEntity; @@ -72,73 +67,15 @@ void tearDown() { mockedMessageSourceUtils.close(); } - @Test - void getAllPlatforms() { - List platforms = new ArrayList<>(); - when(chatbotService.platforms()).thenReturn(platforms); - - ResponseEntity> response = chatbotController.platforms(); - - assertTrue(response.isSuccess()); - assertEquals(platforms, response.getData()); - } - - @Test - void getAuthorizedPlatforms() { - List authorizedPlatforms = new ArrayList<>(); - when(chatbotService.authorizedPlatforms()).thenReturn(authorizedPlatforms); - - ResponseEntity> response = chatbotController.authorizedPlatforms(); - - assertTrue(response.isSuccess()); - assertEquals(authorizedPlatforms, response.getData()); - } - - @Test - void platformsAuthCredential() { - Long platformId = 1L; - List credentials = new ArrayList<>(); - when(chatbotService.platformsAuthCredentials(platformId)).thenReturn(credentials); - - ResponseEntity> response = chatbotController.platformsAuthCredential(platformId); - - assertTrue(response.isSuccess()); - assertEquals(credentials, response.getData()); - } - - @Test - void addAuthorizedPlatform() { - AuthPlatformReq authPlatformReq = new AuthPlatformReq(); - AuthPlatformVO authorizedVO = new AuthPlatformVO(); - - when(chatbotService.addAuthorizedPlatform(any(AuthPlatformDTO.class))).thenReturn(authorizedVO); - - ResponseEntity response = chatbotController.addAuthorizedPlatform(authPlatformReq); - - assertTrue(response.isSuccess()); - assertEquals(authorizedVO, response.getData()); - } - - @Test - void deleteAuthorizedPlatform() { - Long platformId = 1L; - when(chatbotService.deleteAuthorizedPlatform(platformId)).thenReturn(true); - - ResponseEntity response = chatbotController.deleteAuthorizedPlatform(platformId); - - assertTrue(response.isSuccess()); - assertEquals(true, response.getData()); - } - @Test void createChatThreads() { Long platformId = 1L; - String model = "model1"; + String model = ""; ChatThreadVO chatThread = new ChatThreadVO(); when(chatbotService.createChatThreads(eq(platformId), eq(model))).thenReturn(chatThread); - ResponseEntity response = chatbotController.createChatThreads(platformId, model); + ResponseEntity response = chatbotController.createChatThreads(platformId); assertTrue(response.isSuccess()); assertEquals(chatThread, response.getData()); @@ -160,12 +97,12 @@ void deleteChatThreads() { @Test void getAllChatThreads() { Long platformId = 1L; - String model = "model1"; + String model = ""; List chatThreads = new ArrayList<>(); when(chatbotService.getAllChatThreads(eq(platformId), eq(model))).thenReturn(chatThreads); - ResponseEntity> response = chatbotController.getAllChatThreads(platformId, model); + ResponseEntity> response = chatbotController.getAllChatThreads(platformId); assertTrue(response.isSuccess()); assertEquals(chatThreads, response.getData()); From cafc1f451c49f8b3fd35be561cfb5039af13ce34 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Tue, 15 Oct 2024 23:22:05 +0800 Subject: [PATCH 02/14] add test api --- .../controller/LLMConfigController.java | 15 ++++- .../server/model/dto/AuthPlatformDTO.java | 8 +++ .../server/model/req/AuthPlatformReq.java | 2 + .../server/service/LLMConfigService.java | 4 ++ .../service/impl/LLMConfigServiceImpl.java | 58 +++++++++++++++---- 5 files changed, 72 insertions(+), 15 deletions(-) diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java index b7bafdb12..693cd5f1d 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java @@ -68,6 +68,13 @@ public ResponseEntity> authorizedPlatforms() { return ResponseEntity.success(llmConfigService.authorizedPlatforms()); } + @Operation(summary = "test auth platform", description = "Test authorized platforms") + @PostMapping("/auth-platforms/test") + public ResponseEntity testAuthorizedPlatform(@RequestBody AuthPlatformReq authPlatformReq) { + AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromReq2DTO(authPlatformReq); + return ResponseEntity.success(llmConfigService.testAuthorizedPlatform(authPlatformDTO)); + } + @Operation(summary = "add auth platform", description = "Add authorized platforms") @PostMapping("/auth-platforms") public ResponseEntity addAuthorizedPlatform(@RequestBody AuthPlatformReq authPlatformReq) { @@ -76,10 +83,12 @@ public ResponseEntity addAuthorizedPlatform(@RequestBody AuthPla } @Operation(summary = "update auth platform", description = "Update authorized platforms") - @PutMapping("/auth-platforms") - public ResponseEntity updateAuthorizedPlatform(@RequestBody AuthPlatformReq authPlatformReq) { + @PutMapping("/auth-platforms/{authId}") + public ResponseEntity updateAuthorizedPlatform( + @PathVariable Long authId, @RequestBody AuthPlatformReq authPlatformReq) { AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromReq2DTO(authPlatformReq); - return ResponseEntity.success(llmConfigService.addAuthorizedPlatform(authPlatformDTO)); + authPlatformDTO.setId(authId); + return ResponseEntity.success(llmConfigService.updateAuthorizedPlatform(authPlatformDTO)); } @Operation(summary = "delete auth platform", description = "Delete authorized platforms") diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java index 4706385de..ac80730ba 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java @@ -29,4 +29,12 @@ public class AuthPlatformDTO { private Long platformId; private Map authCredentials; + + private String name; + + private String model; + + private String notes; + + private boolean isTest; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java index 20ce97aca..fcdd37e1d 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java @@ -38,4 +38,6 @@ public class AuthPlatformReq { private String model; private String notes; + + private boolean isTest; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java index e41eb556a..c6fcd5420 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java @@ -36,4 +36,8 @@ public interface LLMConfigService { AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO); boolean deleteAuthorizedPlatform(Long authId); + + boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO); + + AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO); } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java index 0fb54ce25..5798c659e 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java @@ -148,24 +148,15 @@ public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { if (platformPO == null) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); } + Map credentialSet = getStringMap(authPlatformDTO, PlatformConverter.INSTANCE.fromPO2DTO(platformPO)); - List models = List.of(platformPO.getSupportModels().split(",")); - if (models.isEmpty()) { - throw new ApiException(ApiExceptionEnum.MODEL_NOT_SUPPORTED); - } - - if (!testAuthorization(platformPO.getName(), models.get(0), credentialSet)) { - throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); - } authPlatformDTO.setAuthCredentials(credentialSet); AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); + // TODO: set status authPlatformDao.save(authPlatformPO); - AuthPlatformVO authPlatformVO = AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO); - authPlatformVO.setModel(platformPO.getSupportModels()); - authPlatformVO.setPlatformName(platformPO.getName()); - return authPlatformVO; + return AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO); } private static @NotNull Map getStringMap(AuthPlatformDTO authPlatformDTO, PlatformDTO platformDTO) { @@ -207,4 +198,47 @@ public boolean deleteAuthorizedPlatform(Long authId) { return true; } + + @Override + public boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { + PlatformPO platformPO = platformDao.findById(authPlatformDTO.getPlatformId()); + if (platformPO == null) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); + } + + List supportModels = List.of(platformPO.getSupportModels().split(",")); + if (supportModels.isEmpty() || !supportModels.contains(authPlatformDTO.getModel())) { + throw new ApiException(ApiExceptionEnum.MODEL_NOT_SUPPORTED); + } + + if (authPlatformDTO.getId() != null) { + AuthPlatformPO authPlatformPO = authPlatformDao.findById(authPlatformDTO.getId()); + if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); + } + AuthPlatformDTO existAuthPlatformDTO = AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformPO); + authPlatformDTO.setAuthCredentials(existAuthPlatformDTO.getAuthCredentials()); + authPlatformDTO.setModel(existAuthPlatformDTO.getModel()); + } + + Map credentialSet = + getStringMap(authPlatformDTO, PlatformConverter.INSTANCE.fromPO2DTO(platformPO)); + if (!testAuthorization(platformPO.getName(), authPlatformDTO.getModel(), credentialSet)) { + throw new ApiException(ApiExceptionEnum.CREDIT_INCORRECT); + } + + if (authPlatformDTO.getId() != null) { + // TODO + AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); + authPlatformDao.partialUpdateById(authPlatformPO); + } + + return true; + } + + @Override + public AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { + // TODO + return null; + } } From 2da15a0525c8dfe41e3413744e159910eb538402 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Wed, 16 Oct 2024 00:15:05 +0800 Subject: [PATCH 03/14] add status --- .../bigtop/manager/dao/po/AuthPlatformPO.java | 13 +++- .../server/enums/AuthPlatformStatus.java | 65 +++++++++++++++++++ .../service/impl/ChatbotServiceImpl.java | 5 +- .../service/impl/LLMConfigServiceImpl.java | 50 +++++++++++--- 4 files changed, 121 insertions(+), 12 deletions(-) create mode 100644 bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java diff --git a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java index 8f22e4ab8..67e92c382 100644 --- a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java +++ b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java @@ -41,6 +41,15 @@ public class AuthPlatformPO extends BasePO implements Serializable { @Column(name = "platform_id", nullable = false) private Long platformId; - @Column(name = "is_deleted") - private Boolean isDeleted; + @Column(name = "status") + private Integer status; + + @Column(name = "name") + private String name; + + @Column(name = "model") + private String model; + + @Column(name = "notes") + private String notes; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java new file mode 100644 index 000000000..c212f6f0c --- /dev/null +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.server.enums; + +import lombok.Getter; + +@Getter +public enum AuthPlatformStatus { + DELETED(-1), + NORMAL(0), + ACTIVE(1), + INACTIVE(2), + ; + + private final Integer code; + + AuthPlatformStatus(Integer code) { + this.code = code; + } + + public static AuthPlatformStatus fromCode(Integer code) { + for (AuthPlatformStatus status : AuthPlatformStatus.values()) { + if (status.code.equals(code)) { + return status; + } + } + return NORMAL; + } + + public static boolean isNormal(int code) { + return NORMAL.code.equals(code); + } + + public static boolean isActive(int code) { + return ACTIVE.code.equals(code); + } + + public static boolean isAvailable(int code) { + return isNormal(code) || isActive(code); + } + + public static boolean isDeleted(int code) { + return DELETED.code.equals(code); + } + + public static boolean needSwitch(int oldStatus, int newStatus) { + return isNormal(oldStatus) && isActive(newStatus); + } +} diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java index 962367bb4..20eb95db7 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java @@ -34,6 +34,7 @@ import org.apache.bigtop.manager.dao.repository.ChatThreadDao; import org.apache.bigtop.manager.dao.repository.PlatformDao; import org.apache.bigtop.manager.server.enums.ApiExceptionEnum; +import org.apache.bigtop.manager.server.enums.AuthPlatformStatus; import org.apache.bigtop.manager.server.exception.ApiException; import org.apache.bigtop.manager.server.holder.SessionUserHolder; import org.apache.bigtop.manager.server.model.converter.AuthPlatformConverter; @@ -110,7 +111,7 @@ private AIAssistant buildAIAssistant( @Override public ChatThreadVO createChatThreads(Long authId, String model) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); - if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { + if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformPO); @@ -175,7 +176,7 @@ public SseEmitter talk(Long authId, Long threadId, String message) { throw new ApiException(ApiExceptionEnum.CHAT_THREAD_NOT_FOUND); } AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); - if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { + if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformPO); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java index 5798c659e..d7ecea01f 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java @@ -33,6 +33,7 @@ import org.apache.bigtop.manager.dao.repository.ChatThreadDao; import org.apache.bigtop.manager.dao.repository.PlatformDao; import org.apache.bigtop.manager.server.enums.ApiExceptionEnum; +import org.apache.bigtop.manager.server.enums.AuthPlatformStatus; import org.apache.bigtop.manager.server.exception.ApiException; import org.apache.bigtop.manager.server.model.converter.AuthPlatformConverter; import org.apache.bigtop.manager.server.model.converter.PlatformConverter; @@ -131,7 +132,7 @@ public List authorizedPlatforms() { List authorizedPlatforms = new ArrayList<>(); List authPlatformPOList = authPlatformDao.findAll(); for (AuthPlatformPO authPlatformPO : authPlatformPOList) { - if (authPlatformPO.getIsDeleted()) { + if (AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { continue; } @@ -154,7 +155,11 @@ public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { authPlatformDTO.setAuthCredentials(credentialSet); AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); - // TODO: set status + if (authPlatformDTO.isTest()) { + authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); + } else { + authPlatformPO.setStatus(AuthPlatformStatus.INACTIVE.getCode()); + } authPlatformDao.save(authPlatformPO); return AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO); } @@ -178,11 +183,11 @@ public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { @Override public boolean deleteAuthorizedPlatform(Long authId) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); - if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { + if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } - authPlatformPO.setIsDeleted(true); + authPlatformPO.setStatus(AuthPlatformStatus.DELETED.getCode()); authPlatformDao.partialUpdateById(authPlatformPO); List chatThreadPOS = chatThreadDao.findAllByAuthId(authPlatformPO.getId()); @@ -213,7 +218,7 @@ public boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { if (authPlatformDTO.getId() != null) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authPlatformDTO.getId()); - if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { + if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } AuthPlatformDTO existAuthPlatformDTO = AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformPO); @@ -228,8 +233,8 @@ public boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { } if (authPlatformDTO.getId() != null) { - // TODO AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); + authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); authPlatformDao.partialUpdateById(authPlatformPO); } @@ -238,7 +243,36 @@ public boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { @Override public AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { - // TODO - return null; + AuthPlatformPO authPlatformPO = authPlatformDao.findById(authPlatformDTO.getId()); + if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); + } + + AuthPlatformPO newAuthPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); + + if (AuthPlatformStatus.needSwitch(authPlatformPO.getStatus(), newAuthPlatformPO.getStatus())) { + switchPlatform(newAuthPlatformPO.getId()); + newAuthPlatformPO.setStatus(AuthPlatformStatus.ACTIVE.getCode()); + } + + authPlatformDao.partialUpdateById(newAuthPlatformPO); + + return AuthPlatformConverter.INSTANCE.fromPO2VO( + newAuthPlatformPO, platformDao.findById(newAuthPlatformPO.getPlatformId())); + } + + private void switchPlatform(Long id) { + List authPlatformPOS = authPlatformDao.findAll(); + for (AuthPlatformPO authPlatformPO : authPlatformPOS) { + if (!AuthPlatformStatus.isAvailable(authPlatformPO.getStatus())) { + continue; + } + if (authPlatformPO.getId().equals(id)) { + authPlatformPO.setStatus(AuthPlatformStatus.ACTIVE.getCode()); + } else { + authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); + } + } + authPlatformDao.partialUpdateByIds(authPlatformPOS); } } From c634549e77b0f7a2ae7f0d227e8319e909b67a59 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Wed, 16 Oct 2024 09:13:12 +0800 Subject: [PATCH 04/14] update ddl --- .../src/main/resources/ddl/MySQL-DDL-CREATE.sql | 5 ++++- .../src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql index 1937ae475..0769ff352 100644 --- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql @@ -328,7 +328,10 @@ CREATE TABLE `llm_auth_platform` `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `platform_id` BIGINT(20) UNSIGNED NOT NULL, `credentials` TEXT NOT NULL, - `is_deleted` TINYINT(1) DEFAULT 0 NULL, + `status` SMALLINT DEFAULT 0 COMMENT '-1-Deleted, 0-Normal, 1-Active, 2-Inactive', + `model` VARCHAR(255) NOT NULL, + `name` VARCHAR(255) NOT NULL, + `notes` VARCHAR(255) NOT NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `create_by` BIGINT DEFAULT NULL, diff --git a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql index 2493c8517..55e3c6862 100644 --- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql @@ -338,14 +338,17 @@ CREATE TABLE llm_auth_platform id BIGINT CHECK (id > 0) NOT NULL GENERATED ALWAYS AS IDENTITY, platform_id BIGINT CHECK (platform_id > 0) NOT NULL, credentials TEXT NOT NULL, - is_deleted BOOLEAN DEFAULT FALSE, + status SMALLINT DEFAULT 0, + model VARCHAR(255) NOT NULL, + name VARCHAR(255) NOT NULL, + notes VARCHAR(255) NOT NULL, create_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP /* ON UPDATE CURRENT_TIMESTAMP */, create_by BIGINT DEFAULT NULL, update_by BIGINT DEFAULT NULL, PRIMARY KEY (id) ); - +COMMENT ON COLUMN "llm_auth_platform".status IS '-1-Deleted, 0-Normal, 1-Active, 2-Inactive'; CREATE INDEX idx_authorized_platform_id ON llm_auth_platform (platform_id); CREATE TABLE llm_chat_thread From 8849c244d7b777a0747d48b890c459dca300893f Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Wed, 16 Oct 2024 10:49:35 +0800 Subject: [PATCH 05/14] fix --- .../controller/LLMConfigController.java | 4 ++ .../server/enums/AuthPlatformStatus.java | 2 +- .../converter/AuthPlatformConverter.java | 19 +++++++- .../server/model/dto/AuthPlatformDTO.java | 4 +- .../server/model/req/AuthPlatformReq.java | 4 ++ .../server/service/LLMConfigService.java | 2 + .../service/impl/LLMConfigServiceImpl.java | 45 ++++++++++++++----- 7 files changed, 67 insertions(+), 13 deletions(-) diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java index 693cd5f1d..30c3de69e 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java @@ -88,6 +88,10 @@ public ResponseEntity updateAuthorizedPlatform( @PathVariable Long authId, @RequestBody AuthPlatformReq authPlatformReq) { AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromReq2DTO(authPlatformReq); authPlatformDTO.setId(authId); + + if (authPlatformDTO.getIsActive() != null) { + return ResponseEntity.success(llmConfigService.switchAuthPlatform(authPlatformDTO)); + } return ResponseEntity.success(llmConfigService.updateAuthorizedPlatform(authPlatformDTO)); } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java index c212f6f0c..ac2393fae 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java @@ -25,7 +25,7 @@ public enum AuthPlatformStatus { DELETED(-1), NORMAL(0), ACTIVE(1), - INACTIVE(2), + UNAVAILABLE(2), ; private final Integer code; diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java index ad3160eef..ef37ad747 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java @@ -43,7 +43,6 @@ public interface AuthPlatformConverter { AuthPlatformConverter INSTANCE = Mappers.getMapper(AuthPlatformConverter.class); - @Mapping(target = "model", expression = "java(platformPO.getSupportModels())") @Mapping(target = "platformName", expression = "java(platformPO.getName())") AuthPlatformVO fromPO2VO(AuthPlatformPO authPlatformPO, @Context PlatformPO platformPO); @@ -60,7 +59,25 @@ default Map mapAuthCredentials(List authCrede @AfterMapping default void afterMapping(@MappingTarget AuthPlatformDTO authPlatformDTO, AuthPlatformReq authPlatformReq) { authPlatformDTO.setAuthCredentials(mapAuthCredentials(authPlatformReq.getAuthCredentials())); + if (authPlatformReq.isActive()) { + authPlatformDTO.setIsActive(true); + } else if (authPlatformReq.isInactive()) { + authPlatformDTO.setIsActive(false); + } else { + authPlatformDTO.setIsActive(null); + } } + // + // @AfterMapping + // default void setStatus(AuthPlatformDTO authPlatformDTO,@MappingTarget AuthPlatformPO authPlatformPO) { + // if (authPlatformDTO.isActive()) { + // authPlatformPO.setStatus(AuthPlatformStatus.ACTIVE.getCode()); + // } else if (!authPlatformDTO.isTest()) { + // authPlatformPO.setStatus(AuthPlatformStatus.INACTIVE.getCode()); + // } else { + // authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); + // } + // } @Mapping(source = "authCredentials", target = "credentials", qualifiedByName = "map2String") AuthPlatformPO fromDTO2PO(AuthPlatformDTO authPlatformDTO); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java index ac80730ba..c55b2d063 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java @@ -36,5 +36,7 @@ public class AuthPlatformDTO { private String notes; - private boolean isTest; + private Boolean isTested; + + private Boolean isActive; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java index fcdd37e1d..ba6b51b2e 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java @@ -40,4 +40,8 @@ public class AuthPlatformReq { private String notes; private boolean isTest; + + private boolean active; + + private boolean inactive; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java index c6fcd5420..178d747bd 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java @@ -40,4 +40,6 @@ public interface LLMConfigService { boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO); AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO); + + AuthPlatformVO switchAuthPlatform(AuthPlatformDTO authPlatformDTO); } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java index d7ecea01f..dbfee346e 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java @@ -155,11 +155,12 @@ public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { authPlatformDTO.setAuthCredentials(credentialSet); AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); - if (authPlatformDTO.isTest()) { + if (authPlatformDTO.getIsTested()) { authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); } else { - authPlatformPO.setStatus(AuthPlatformStatus.INACTIVE.getCode()); + authPlatformPO.setStatus(AuthPlatformStatus.UNAVAILABLE.getCode()); } + log.info("authPlatformPO: {}", authPlatformPO); authPlatformDao.save(authPlatformPO); return AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO); } @@ -248,20 +249,44 @@ public AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } - AuthPlatformPO newAuthPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); - - if (AuthPlatformStatus.needSwitch(authPlatformPO.getStatus(), newAuthPlatformPO.getStatus())) { - switchPlatform(newAuthPlatformPO.getId()); - newAuthPlatformPO.setStatus(AuthPlatformStatus.ACTIVE.getCode()); + authPlatformPO.setName(authPlatformDTO.getName()); + authPlatformPO.setNotes(authPlatformDTO.getNotes()); + if (!authPlatformPO.getModel().equals(authPlatformDTO.getModel())) { + authPlatformPO.setStatus(AuthPlatformStatus.UNAVAILABLE.getCode()); } + authPlatformPO.setModel(authPlatformDTO.getModel()); + + // AuthPlatformPO newAuthPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); + // if (AuthPlatformStatus.needSwitch(authPlatformPO.getStatus(), newAuthPlatformPO.getStatus())) { + // switchPlatform(newAuthPlatformPO.getId()); + // newAuthPlatformPO.setStatus(AuthPlatformStatus.ACTIVE.getCode()); + // } + + authPlatformDao.partialUpdateById(authPlatformPO); - authPlatformDao.partialUpdateById(newAuthPlatformPO); + return AuthPlatformConverter.INSTANCE.fromPO2VO( + authPlatformPO, platformDao.findById(authPlatformPO.getPlatformId())); + } + @Override + public AuthPlatformVO switchAuthPlatform(AuthPlatformDTO authPlatformDTO) { + AuthPlatformPO authPlatformPO = authPlatformDao.findById(authPlatformDTO.getId()); + if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); + } + + if (authPlatformDTO.getIsActive() && AuthPlatformStatus.isAvailable(authPlatformPO.getStatus())) { + switchActivePlatform(authPlatformPO.getId()); + } else if (!authPlatformDTO.getIsActive() && AuthPlatformStatus.isActive(authPlatformPO.getStatus())) { + authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); + authPlatformDao.partialUpdateById(authPlatformPO); + } return AuthPlatformConverter.INSTANCE.fromPO2VO( - newAuthPlatformPO, platformDao.findById(newAuthPlatformPO.getPlatformId())); + authPlatformDao.findById(authPlatformDTO.getId()), + platformDao.findById(authPlatformPO.getPlatformId())); } - private void switchPlatform(Long id) { + private void switchActivePlatform(Long id) { List authPlatformPOS = authPlatformDao.findAll(); for (AuthPlatformPO authPlatformPO : authPlatformPOS) { if (!AuthPlatformStatus.isAvailable(authPlatformPO.getStatus())) { From f9bee5373cf8867dd5730706202485feade312f0 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Wed, 16 Oct 2024 12:10:15 +0800 Subject: [PATCH 06/14] finish llm config --- .../server/enums/AuthPlatformStatus.java | 4 ---- .../converter/AuthPlatformConverter.java | 17 +++++--------- .../service/impl/LLMConfigServiceImpl.java | 23 ++++++++++--------- 3 files changed, 18 insertions(+), 26 deletions(-) diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java index ac2393fae..78cf99e5f 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java @@ -58,8 +58,4 @@ public static boolean isAvailable(int code) { public static boolean isDeleted(int code) { return DELETED.code.equals(code); } - - public static boolean needSwitch(int oldStatus, int newStatus) { - return isNormal(oldStatus) && isActive(newStatus); - } } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java index ef37ad747..19c0818fb 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java @@ -66,18 +66,13 @@ default void afterMapping(@MappingTarget AuthPlatformDTO authPlatformDTO, AuthPl } else { authPlatformDTO.setIsActive(null); } + + if (authPlatformReq.isTest()) { + authPlatformDTO.setIsTested(true); + } else { + authPlatformDTO.setIsTested(false); + } } - // - // @AfterMapping - // default void setStatus(AuthPlatformDTO authPlatformDTO,@MappingTarget AuthPlatformPO authPlatformPO) { - // if (authPlatformDTO.isActive()) { - // authPlatformPO.setStatus(AuthPlatformStatus.ACTIVE.getCode()); - // } else if (!authPlatformDTO.isTest()) { - // authPlatformPO.setStatus(AuthPlatformStatus.INACTIVE.getCode()); - // } else { - // authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); - // } - // } @Mapping(source = "authCredentials", target = "credentials", qualifiedByName = "map2String") AuthPlatformPO fromDTO2PO(AuthPlatformDTO authPlatformDTO); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java index dbfee346e..7ed3cceb3 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java @@ -96,8 +96,12 @@ private PlatformType getPlatformType(String platformName) { } private Boolean testAuthorization(String platformName, String model, Map credentials) { - AIAssistant aiAssistant = getAIAssistantFactory() - .create(getPlatformType(platformName), getAIAssistantConfig(model, credentials, null)); + AIAssistantConfig aiAssistantConfig = AIAssistantConfig.builder() + .setModel(model) + .setLanguage(LocaleContextHolder.getLocale().toString()) + .addCredentials(credentials) + .build(); + AIAssistant aiAssistant = getAIAssistantFactory().create(getPlatformType(platformName), aiAssistantConfig); try { return aiAssistant.test(); } catch (Exception e) { @@ -160,7 +164,7 @@ public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { } else { authPlatformPO.setStatus(AuthPlatformStatus.UNAVAILABLE.getCode()); } - log.info("authPlatformPO: {}", authPlatformPO); + authPlatformDao.save(authPlatformPO); return AuthPlatformConverter.INSTANCE.fromPO2VO(authPlatformPO, platformPO); } @@ -207,11 +211,15 @@ public boolean deleteAuthorizedPlatform(Long authId) { @Override public boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { + if (authPlatformDTO.getId() != null) { + authPlatformDTO = + AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformDao.findById(authPlatformDTO.getId())); + } + PlatformPO platformPO = platformDao.findById(authPlatformDTO.getPlatformId()); if (platformPO == null) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_FOUND); } - List supportModels = List.of(platformPO.getSupportModels().split(",")); if (supportModels.isEmpty() || !supportModels.contains(authPlatformDTO.getModel())) { throw new ApiException(ApiExceptionEnum.MODEL_NOT_SUPPORTED); @@ -255,13 +263,6 @@ public AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) authPlatformPO.setStatus(AuthPlatformStatus.UNAVAILABLE.getCode()); } authPlatformPO.setModel(authPlatformDTO.getModel()); - - // AuthPlatformPO newAuthPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); - // if (AuthPlatformStatus.needSwitch(authPlatformPO.getStatus(), newAuthPlatformPO.getStatus())) { - // switchPlatform(newAuthPlatformPO.getId()); - // newAuthPlatformPO.setStatus(AuthPlatformStatus.ACTIVE.getCode()); - // } - authPlatformDao.partialUpdateById(authPlatformPO); return AuthPlatformConverter.INSTANCE.fromPO2VO( From 10e7000fe7ddd87035bb2d122a562752afa99596 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Thu, 17 Oct 2024 22:21:39 +0800 Subject: [PATCH 07/14] fix typo --- .../manager/server/model/converter/AuthPlatformConverter.java | 2 +- .../apache/bigtop/manager/server/model/req/AuthPlatformReq.java | 2 +- .../src/main/resources/ddl/MySQL-DDL-CREATE.sql | 2 +- .../src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java index 19c0818fb..687829adf 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java @@ -67,7 +67,7 @@ default void afterMapping(@MappingTarget AuthPlatformDTO authPlatformDTO, AuthPl authPlatformDTO.setIsActive(null); } - if (authPlatformReq.isTest()) { + if (authPlatformReq.isTested()) { authPlatformDTO.setIsTested(true); } else { authPlatformDTO.setIsTested(false); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java index ba6b51b2e..bec9fcc18 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java @@ -39,7 +39,7 @@ public class AuthPlatformReq { private String notes; - private boolean isTest; + private boolean isTested; private boolean active; diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql index 0769ff352..243a030a9 100644 --- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql @@ -328,7 +328,7 @@ CREATE TABLE `llm_auth_platform` `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `platform_id` BIGINT(20) UNSIGNED NOT NULL, `credentials` TEXT NOT NULL, - `status` SMALLINT DEFAULT 0 COMMENT '-1-Deleted, 0-Normal, 1-Active, 2-Inactive', + `status` SMALLINT DEFAULT 0 COMMENT '-1-Deleted, 0-Normal, 1-Active, 2-Unavailable', `model` VARCHAR(255) NOT NULL, `name` VARCHAR(255) NOT NULL, `notes` VARCHAR(255) NOT NULL, diff --git a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql index 55e3c6862..077cf032c 100644 --- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql @@ -348,7 +348,7 @@ CREATE TABLE llm_auth_platform update_by BIGINT DEFAULT NULL, PRIMARY KEY (id) ); -COMMENT ON COLUMN "llm_auth_platform".status IS '-1-Deleted, 0-Normal, 1-Active, 2-Inactive'; +COMMENT ON COLUMN "llm_auth_platform".status IS '-1-Deleted, 0-Normal, 1-Active, 2-Unavailable'; CREATE INDEX idx_authorized_platform_id ON llm_auth_platform (platform_id); CREATE TABLE llm_chat_thread From f8a5fcd7206e40032704ae80112451302045f4d0 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Fri, 18 Oct 2024 08:57:43 +0800 Subject: [PATCH 08/14] rename var --- .../manager/server/model/converter/AuthPlatformConverter.java | 2 +- .../apache/bigtop/manager/server/model/req/AuthPlatformReq.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java index 687829adf..85be6b6d3 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java @@ -61,7 +61,7 @@ default void afterMapping(@MappingTarget AuthPlatformDTO authPlatformDTO, AuthPl authPlatformDTO.setAuthCredentials(mapAuthCredentials(authPlatformReq.getAuthCredentials())); if (authPlatformReq.isActive()) { authPlatformDTO.setIsActive(true); - } else if (authPlatformReq.isInactive()) { + } else if (authPlatformReq.isStop()) { authPlatformDTO.setIsActive(false); } else { authPlatformDTO.setIsActive(null); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java index bec9fcc18..4528fb757 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java @@ -43,5 +43,5 @@ public class AuthPlatformReq { private boolean active; - private boolean inactive; + private boolean stop; } From a7dd747170f080ccce2fe1bb31a066cb3b981d48 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Sat, 19 Oct 2024 22:41:47 +0800 Subject: [PATCH 09/14] restore is_deleted --- .../apache/bigtop/manager/dao/po/AuthPlatformPO.java | 3 +++ .../manager/server/enums/AuthPlatformStatus.java | 5 ----- .../server/model/vo/PlatformAuthCredentialVO.java | 2 -- .../server/service/impl/ChatbotServiceImpl.java | 5 ++--- .../server/service/impl/LLMConfigServiceImpl.java | 12 ++++++------ .../src/main/resources/ddl/MySQL-DDL-CREATE.sql | 3 ++- .../src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql | 3 ++- 7 files changed, 15 insertions(+), 18 deletions(-) diff --git a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java index 67e92c382..7179a6a29 100644 --- a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java +++ b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java @@ -41,6 +41,9 @@ public class AuthPlatformPO extends BasePO implements Serializable { @Column(name = "platform_id", nullable = false) private Long platformId; + @Column(name = "is_deleted") + private Boolean isDeleted; + @Column(name = "status") private Integer status; diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java index 78cf99e5f..9227f3641 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java @@ -22,7 +22,6 @@ @Getter public enum AuthPlatformStatus { - DELETED(-1), NORMAL(0), ACTIVE(1), UNAVAILABLE(2), @@ -54,8 +53,4 @@ public static boolean isActive(int code) { public static boolean isAvailable(int code) { return isNormal(code) || isActive(code); } - - public static boolean isDeleted(int code) { - return DELETED.code.equals(code); - } } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthCredentialVO.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthCredentialVO.java index a3ad651f9..7107422e1 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthCredentialVO.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/PlatformAuthCredentialVO.java @@ -26,8 +26,6 @@ public class PlatformAuthCredentialVO { private String displayName; - private String description; - public PlatformAuthCredentialVO(String name, String displayName) { this.name = name; this.displayName = displayName; diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java index 20eb95db7..962367bb4 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/ChatbotServiceImpl.java @@ -34,7 +34,6 @@ import org.apache.bigtop.manager.dao.repository.ChatThreadDao; import org.apache.bigtop.manager.dao.repository.PlatformDao; import org.apache.bigtop.manager.server.enums.ApiExceptionEnum; -import org.apache.bigtop.manager.server.enums.AuthPlatformStatus; import org.apache.bigtop.manager.server.exception.ApiException; import org.apache.bigtop.manager.server.holder.SessionUserHolder; import org.apache.bigtop.manager.server.model.converter.AuthPlatformConverter; @@ -111,7 +110,7 @@ private AIAssistant buildAIAssistant( @Override public ChatThreadVO createChatThreads(Long authId, String model) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); - if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { + if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformPO); @@ -176,7 +175,7 @@ public SseEmitter talk(Long authId, Long threadId, String message) { throw new ApiException(ApiExceptionEnum.CHAT_THREAD_NOT_FOUND); } AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); - if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { + if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformPO); diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java index 7ed3cceb3..da78f685e 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java @@ -136,7 +136,7 @@ public List authorizedPlatforms() { List authorizedPlatforms = new ArrayList<>(); List authPlatformPOList = authPlatformDao.findAll(); for (AuthPlatformPO authPlatformPO : authPlatformPOList) { - if (AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { + if (authPlatformPO.getIsDeleted()) { continue; } @@ -188,11 +188,11 @@ public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { @Override public boolean deleteAuthorizedPlatform(Long authId) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); - if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { + if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } - authPlatformPO.setStatus(AuthPlatformStatus.DELETED.getCode()); + authPlatformPO.setIsDeleted(true); authPlatformDao.partialUpdateById(authPlatformPO); List chatThreadPOS = chatThreadDao.findAllByAuthId(authPlatformPO.getId()); @@ -227,7 +227,7 @@ public boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { if (authPlatformDTO.getId() != null) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authPlatformDTO.getId()); - if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { + if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } AuthPlatformDTO existAuthPlatformDTO = AuthPlatformConverter.INSTANCE.fromPO2DTO(authPlatformPO); @@ -253,7 +253,7 @@ public boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { @Override public AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authPlatformDTO.getId()); - if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { + if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } @@ -272,7 +272,7 @@ public AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) @Override public AuthPlatformVO switchAuthPlatform(AuthPlatformDTO authPlatformDTO) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authPlatformDTO.getId()); - if (authPlatformPO == null || AuthPlatformStatus.isDeleted(authPlatformPO.getStatus())) { + if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql index 243a030a9..f93614ed3 100644 --- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql @@ -328,7 +328,8 @@ CREATE TABLE `llm_auth_platform` `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `platform_id` BIGINT(20) UNSIGNED NOT NULL, `credentials` TEXT NOT NULL, - `status` SMALLINT DEFAULT 0 COMMENT '-1-Deleted, 0-Normal, 1-Active, 2-Unavailable', + `is_deleted` TINYINT(1) DEFAULT 0 NULL, + `status` SMALLINT DEFAULT 0 COMMENT '0-Normal, 1-Active, 2-Unavailable', `model` VARCHAR(255) NOT NULL, `name` VARCHAR(255) NOT NULL, `notes` VARCHAR(255) NOT NULL, diff --git a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql index 077cf032c..d35455bf2 100644 --- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql @@ -338,6 +338,7 @@ CREATE TABLE llm_auth_platform id BIGINT CHECK (id > 0) NOT NULL GENERATED ALWAYS AS IDENTITY, platform_id BIGINT CHECK (platform_id > 0) NOT NULL, credentials TEXT NOT NULL, + is_deleted BOOLEAN DEFAULT FALSE, status SMALLINT DEFAULT 0, model VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, @@ -348,7 +349,7 @@ CREATE TABLE llm_auth_platform update_by BIGINT DEFAULT NULL, PRIMARY KEY (id) ); -COMMENT ON COLUMN "llm_auth_platform".status IS '-1-Deleted, 0-Normal, 1-Active, 2-Unavailable'; +COMMENT ON COLUMN "llm_auth_platform".status IS '0-Normal, 1-Active, 2-Unavailable'; CREATE INDEX idx_authorized_platform_id ON llm_auth_platform (platform_id); CREATE TABLE llm_chat_thread From 4837034f27bb65c0d27a69e290f7e6c1fbffe1ef Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Sat, 19 Oct 2024 23:43:36 +0800 Subject: [PATCH 10/14] add enable and disabel --- .../bigtop/manager/dao/po/AuthPlatformPO.java | 4 +- .../controller/LLMConfigController.java | 16 +++-- .../server/enums/AuthPlatformStatus.java | 12 ++-- .../converter/AuthPlatformConverter.java | 13 ---- .../server/model/dto/AuthPlatformDTO.java | 4 +- .../server/model/req/AuthPlatformReq.java | 6 +- .../server/model/vo/AuthPlatformVO.java | 8 +-- .../server/service/LLMConfigService.java | 4 +- .../service/impl/LLMConfigServiceImpl.java | 65 ++++++++++++------- .../main/resources/ddl/MySQL-DDL-CREATE.sql | 4 +- .../resources/ddl/PostgreSQL-DDL-CREATE.sql | 4 +- 11 files changed, 70 insertions(+), 70 deletions(-) diff --git a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java index 7179a6a29..36432c20d 100644 --- a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java +++ b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/AuthPlatformPO.java @@ -53,6 +53,6 @@ public class AuthPlatformPO extends BasePO implements Serializable { @Column(name = "model") private String model; - @Column(name = "notes") - private String notes; + @Column(name = "desc") + private String desc; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java index 30c3de69e..d55de03ff 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java @@ -88,10 +88,6 @@ public ResponseEntity updateAuthorizedPlatform( @PathVariable Long authId, @RequestBody AuthPlatformReq authPlatformReq) { AuthPlatformDTO authPlatformDTO = AuthPlatformConverter.INSTANCE.fromReq2DTO(authPlatformReq); authPlatformDTO.setId(authId); - - if (authPlatformDTO.getIsActive() != null) { - return ResponseEntity.success(llmConfigService.switchAuthPlatform(authPlatformDTO)); - } return ResponseEntity.success(llmConfigService.updateAuthorizedPlatform(authPlatformDTO)); } @@ -100,4 +96,16 @@ public ResponseEntity updateAuthorizedPlatform( public ResponseEntity deleteAuthorizedPlatform(@PathVariable Long authId) { return ResponseEntity.success(llmConfigService.deleteAuthorizedPlatform(authId)); } + + @Operation(summary = "enable auth platform", description = "Enable authorized platforms") + @PostMapping("/auth-platforms/{authId}/enable") + public ResponseEntity enableAuthorizedPlatform(@PathVariable Long authId) { + return ResponseEntity.success(llmConfigService.enableAuthorizedPlatform(authId)); + } + + @Operation(summary = "disable auth platform", description = "Disable authorized platforms") + @PostMapping("/auth-platforms/{authId}/disable") + public ResponseEntity disableAuthorizedPlatform(@PathVariable Long authId) { + return ResponseEntity.success(llmConfigService.disableAuthorizedPlatform(authId)); + } } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java index 9227f3641..45832fbea 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java @@ -22,7 +22,7 @@ @Getter public enum AuthPlatformStatus { - NORMAL(0), + AVAILABLE(0), ACTIVE(1), UNAVAILABLE(2), ; @@ -39,18 +39,18 @@ public static AuthPlatformStatus fromCode(Integer code) { return status; } } - return NORMAL; + return UNAVAILABLE; } - public static boolean isNormal(int code) { - return NORMAL.code.equals(code); + public static boolean isAvailable(int code) { + return AVAILABLE.code.equals(code); } public static boolean isActive(int code) { return ACTIVE.code.equals(code); } - public static boolean isAvailable(int code) { - return isNormal(code) || isActive(code); + public static boolean available(int code) { + return isAvailable(code) || isActive(code); } } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java index 85be6b6d3..e3e991c1d 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/converter/AuthPlatformConverter.java @@ -59,19 +59,6 @@ default Map mapAuthCredentials(List authCrede @AfterMapping default void afterMapping(@MappingTarget AuthPlatformDTO authPlatformDTO, AuthPlatformReq authPlatformReq) { authPlatformDTO.setAuthCredentials(mapAuthCredentials(authPlatformReq.getAuthCredentials())); - if (authPlatformReq.isActive()) { - authPlatformDTO.setIsActive(true); - } else if (authPlatformReq.isStop()) { - authPlatformDTO.setIsActive(false); - } else { - authPlatformDTO.setIsActive(null); - } - - if (authPlatformReq.isTested()) { - authPlatformDTO.setIsTested(true); - } else { - authPlatformDTO.setIsTested(false); - } } @Mapping(source = "authCredentials", target = "credentials", qualifiedByName = "map2String") diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java index c55b2d063..03eb24624 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java @@ -34,9 +34,7 @@ public class AuthPlatformDTO { private String model; - private String notes; + private String desc; private Boolean isTested; - - private Boolean isActive; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java index 4528fb757..4bde936ca 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java @@ -37,11 +37,7 @@ public class AuthPlatformReq { private String model; - private String notes; + private String desc; private boolean isTested; - - private boolean active; - - private boolean stop; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java index 80d1478b1..eee6981d2 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/vo/AuthPlatformVO.java @@ -32,15 +32,9 @@ public class AuthPlatformVO { private String model; - private String notes; + private String desc; private Integer status; - public AuthPlatformVO(long platformId, String name, String models) { - this.platformId = platformId; - this.platformName = name; - this.model = models; - } - public AuthPlatformVO() {} } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java index 178d747bd..a09e5bf15 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java @@ -41,5 +41,7 @@ public interface LLMConfigService { AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO); - AuthPlatformVO switchAuthPlatform(AuthPlatformDTO authPlatformDTO); + boolean enableAuthorizedPlatform(Long authId); + + boolean disableAuthorizedPlatform(Long authId); } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java index da78f685e..ad61708f3 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java @@ -109,6 +109,21 @@ private Boolean testAuthorization(String platformName, String model, Map authPlatformPOS = authPlatformDao.findAll(); + for (AuthPlatformPO authPlatformPO : authPlatformPOS) { + if (!AuthPlatformStatus.available(authPlatformPO.getStatus())) { + continue; + } + if (authPlatformPO.getId().equals(id)) { + authPlatformPO.setStatus(AuthPlatformStatus.ACTIVE.getCode()); + } else { + authPlatformPO.setStatus(AuthPlatformStatus.AVAILABLE.getCode()); + } + } + authPlatformDao.partialUpdateByIds(authPlatformPOS); + } + @Override public List platforms() { List platformPOs = platformDao.findAll(); @@ -160,7 +175,7 @@ public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { authPlatformDTO.setAuthCredentials(credentialSet); AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); if (authPlatformDTO.getIsTested()) { - authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); + authPlatformPO.setStatus(AuthPlatformStatus.AVAILABLE.getCode()); } else { authPlatformPO.setStatus(AuthPlatformStatus.UNAVAILABLE.getCode()); } @@ -243,7 +258,7 @@ public boolean testAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { if (authPlatformDTO.getId() != null) { AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); - authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); + authPlatformPO.setStatus(AuthPlatformStatus.AVAILABLE.getCode()); authPlatformDao.partialUpdateById(authPlatformPO); } @@ -258,7 +273,7 @@ public AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) } authPlatformPO.setName(authPlatformDTO.getName()); - authPlatformPO.setNotes(authPlatformDTO.getNotes()); + authPlatformPO.setDesc(authPlatformDTO.getDesc()); if (!authPlatformPO.getModel().equals(authPlatformDTO.getModel())) { authPlatformPO.setStatus(AuthPlatformStatus.UNAVAILABLE.getCode()); } @@ -270,35 +285,35 @@ public AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) } @Override - public AuthPlatformVO switchAuthPlatform(AuthPlatformDTO authPlatformDTO) { - AuthPlatformPO authPlatformPO = authPlatformDao.findById(authPlatformDTO.getId()); + public boolean enableAuthorizedPlatform(Long authId) { + AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } - if (authPlatformDTO.getIsActive() && AuthPlatformStatus.isAvailable(authPlatformPO.getStatus())) { - switchActivePlatform(authPlatformPO.getId()); - } else if (!authPlatformDTO.getIsActive() && AuthPlatformStatus.isActive(authPlatformPO.getStatus())) { - authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); - authPlatformDao.partialUpdateById(authPlatformPO); + if (!AuthPlatformStatus.available(authPlatformPO.getStatus())) { + return false; } - return AuthPlatformConverter.INSTANCE.fromPO2VO( - authPlatformDao.findById(authPlatformDTO.getId()), - platformDao.findById(authPlatformPO.getPlatformId())); + + if (AuthPlatformStatus.isActive(authPlatformPO.getStatus())) { + return true; + } + switchActivePlatform(authPlatformPO.getId()); + return true; } - private void switchActivePlatform(Long id) { - List authPlatformPOS = authPlatformDao.findAll(); - for (AuthPlatformPO authPlatformPO : authPlatformPOS) { - if (!AuthPlatformStatus.isAvailable(authPlatformPO.getStatus())) { - continue; - } - if (authPlatformPO.getId().equals(id)) { - authPlatformPO.setStatus(AuthPlatformStatus.ACTIVE.getCode()); - } else { - authPlatformPO.setStatus(AuthPlatformStatus.NORMAL.getCode()); - } + @Override + public boolean disableAuthorizedPlatform(Long authId) { + AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); + if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { + throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); } - authPlatformDao.partialUpdateByIds(authPlatformPOS); + AuthPlatformStatus authPlatformStatus = AuthPlatformStatus.fromCode(authPlatformPO.getStatus()); + if (authPlatformStatus.equals(AuthPlatformStatus.ACTIVE)) { + authPlatformPO.setStatus(AuthPlatformStatus.AVAILABLE.getCode()); + return true; + } + authPlatformPO.setStatus(authPlatformStatus.getCode()); + return true; } } diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql index f93614ed3..b154cc264 100644 --- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql @@ -329,10 +329,10 @@ CREATE TABLE `llm_auth_platform` `platform_id` BIGINT(20) UNSIGNED NOT NULL, `credentials` TEXT NOT NULL, `is_deleted` TINYINT(1) DEFAULT 0 NULL, - `status` SMALLINT DEFAULT 0 COMMENT '0-Normal, 1-Active, 2-Unavailable', + `status` SMALLINT DEFAULT 0 COMMENT '0-Available, 1-Active, 2-Unavailable', `model` VARCHAR(255) NOT NULL, `name` VARCHAR(255) NOT NULL, - `notes` VARCHAR(255) NOT NULL, + `desc` VARCHAR(255) NOT NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `create_by` BIGINT DEFAULT NULL, diff --git a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql index d35455bf2..1c99a3ee0 100644 --- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql @@ -342,14 +342,14 @@ CREATE TABLE llm_auth_platform status SMALLINT DEFAULT 0, model VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, - notes VARCHAR(255) NOT NULL, + desc VARCHAR(255) NOT NULL, create_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP /* ON UPDATE CURRENT_TIMESTAMP */, create_by BIGINT DEFAULT NULL, update_by BIGINT DEFAULT NULL, PRIMARY KEY (id) ); -COMMENT ON COLUMN "llm_auth_platform".status IS '0-Normal, 1-Active, 2-Unavailable'; +COMMENT ON COLUMN "llm_auth_platform".status IS '0-Available, 1-Active, 2-Unavailable'; CREATE INDEX idx_authorized_platform_id ON llm_auth_platform (platform_id); CREATE TABLE llm_chat_thread From 7ed4d7fa20ac8b303863782c93c33108c51c4852 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Sun, 20 Oct 2024 16:05:08 +0800 Subject: [PATCH 11/14] fix format --- .../src/main/resources/ddl/MySQL-DDL-CREATE.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql index b154cc264..de1fbd73d 100644 --- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql @@ -332,7 +332,7 @@ CREATE TABLE `llm_auth_platform` `status` SMALLINT DEFAULT 0 COMMENT '0-Available, 1-Active, 2-Unavailable', `model` VARCHAR(255) NOT NULL, `name` VARCHAR(255) NOT NULL, - `desc` VARCHAR(255) NOT NULL, + `desc` VARCHAR(255) NOT NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `create_by` BIGINT DEFAULT NULL, From 86e1150acb5a73b9491848864cc8e5f8dfa16356 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Sun, 20 Oct 2024 16:09:25 +0800 Subject: [PATCH 12/14] rename to testPassed --- .../apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java | 2 +- .../apache/bigtop/manager/server/model/req/AuthPlatformReq.java | 2 +- .../manager/server/service/impl/LLMConfigServiceImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java index 03eb24624..aa61003e3 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/dto/AuthPlatformDTO.java @@ -36,5 +36,5 @@ public class AuthPlatformDTO { private String desc; - private Boolean isTested; + private Boolean testPassed; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java index 4bde936ca..699d0c9c4 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/AuthPlatformReq.java @@ -39,5 +39,5 @@ public class AuthPlatformReq { private String desc; - private boolean isTested; + private boolean testPassed; } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java index ad61708f3..77640805d 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java @@ -174,7 +174,7 @@ public AuthPlatformVO addAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) { authPlatformDTO.setAuthCredentials(credentialSet); AuthPlatformPO authPlatformPO = AuthPlatformConverter.INSTANCE.fromDTO2PO(authPlatformDTO); - if (authPlatformDTO.getIsTested()) { + if (authPlatformDTO.getTestPassed()) { authPlatformPO.setStatus(AuthPlatformStatus.AVAILABLE.getCode()); } else { authPlatformPO.setStatus(AuthPlatformStatus.UNAVAILABLE.getCode()); From 8da42b73fe3d0949c7e9ca5306bcef68bb37b9b9 Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Sun, 20 Oct 2024 16:27:50 +0800 Subject: [PATCH 13/14] rename status --- .../server/controller/LLMConfigController.java | 16 ++++++++-------- .../manager/server/enums/AuthPlatformStatus.java | 4 ++-- .../manager/server/service/LLMConfigService.java | 4 ++-- .../service/impl/LLMConfigServiceImpl.java | 4 ++-- .../src/main/resources/ddl/MySQL-DDL-CREATE.sql | 2 +- .../main/resources/ddl/PostgreSQL-DDL-CREATE.sql | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java index d55de03ff..b6e41e245 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/LLMConfigController.java @@ -97,15 +97,15 @@ public ResponseEntity deleteAuthorizedPlatform(@PathVariable Long authI return ResponseEntity.success(llmConfigService.deleteAuthorizedPlatform(authId)); } - @Operation(summary = "enable auth platform", description = "Enable authorized platforms") - @PostMapping("/auth-platforms/{authId}/enable") - public ResponseEntity enableAuthorizedPlatform(@PathVariable Long authId) { - return ResponseEntity.success(llmConfigService.enableAuthorizedPlatform(authId)); + @Operation(summary = "activate auth platform", description = "Activate authorized platforms") + @PostMapping("/auth-platforms/{authId}/activate") + public ResponseEntity activateAuthorizedPlatform(@PathVariable Long authId) { + return ResponseEntity.success(llmConfigService.activateAuthorizedPlatform(authId)); } - @Operation(summary = "disable auth platform", description = "Disable authorized platforms") - @PostMapping("/auth-platforms/{authId}/disable") - public ResponseEntity disableAuthorizedPlatform(@PathVariable Long authId) { - return ResponseEntity.success(llmConfigService.disableAuthorizedPlatform(authId)); + @Operation(summary = "deactivate auth platform", description = "Deactivate authorized platforms") + @PostMapping("/auth-platforms/{authId}/deactivate") + public ResponseEntity deactivateAuthorizedPlatform(@PathVariable Long authId) { + return ResponseEntity.success(llmConfigService.deactivateAuthorizedPlatform(authId)); } } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java index 45832fbea..58f8c5ea0 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/enums/AuthPlatformStatus.java @@ -22,9 +22,9 @@ @Getter public enum AuthPlatformStatus { - AVAILABLE(0), ACTIVE(1), - UNAVAILABLE(2), + AVAILABLE(2), + UNAVAILABLE(3), ; private final Integer code; diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java index a09e5bf15..96ca25ce8 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/LLMConfigService.java @@ -41,7 +41,7 @@ public interface LLMConfigService { AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO); - boolean enableAuthorizedPlatform(Long authId); + boolean activateAuthorizedPlatform(Long authId); - boolean disableAuthorizedPlatform(Long authId); + boolean deactivateAuthorizedPlatform(Long authId); } diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java index 77640805d..9e5bb78aa 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/LLMConfigServiceImpl.java @@ -285,7 +285,7 @@ public AuthPlatformVO updateAuthorizedPlatform(AuthPlatformDTO authPlatformDTO) } @Override - public boolean enableAuthorizedPlatform(Long authId) { + public boolean activateAuthorizedPlatform(Long authId) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); @@ -303,7 +303,7 @@ public boolean enableAuthorizedPlatform(Long authId) { } @Override - public boolean disableAuthorizedPlatform(Long authId) { + public boolean deactivateAuthorizedPlatform(Long authId) { AuthPlatformPO authPlatformPO = authPlatformDao.findById(authId); if (authPlatformPO == null || authPlatformPO.getIsDeleted()) { throw new ApiException(ApiExceptionEnum.PLATFORM_NOT_AUTHORIZED); diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql index de1fbd73d..492806286 100644 --- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql @@ -329,7 +329,7 @@ CREATE TABLE `llm_auth_platform` `platform_id` BIGINT(20) UNSIGNED NOT NULL, `credentials` TEXT NOT NULL, `is_deleted` TINYINT(1) DEFAULT 0 NULL, - `status` SMALLINT DEFAULT 0 COMMENT '0-Available, 1-Active, 2-Unavailable', + `status` SMALLINT DEFAULT 0 COMMENT '1-Active, 2-Available, 3-Unavailable', `model` VARCHAR(255) NOT NULL, `name` VARCHAR(255) NOT NULL, `desc` VARCHAR(255) NOT NULL, diff --git a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql index 1c99a3ee0..d43dc6af3 100644 --- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql @@ -349,7 +349,7 @@ CREATE TABLE llm_auth_platform update_by BIGINT DEFAULT NULL, PRIMARY KEY (id) ); -COMMENT ON COLUMN "llm_auth_platform".status IS '0-Available, 1-Active, 2-Unavailable'; +COMMENT ON COLUMN "llm_auth_platform".status IS '1-Active, 2-Available, 3-Unavailable'; CREATE INDEX idx_authorized_platform_id ON llm_auth_platform (platform_id); CREATE TABLE llm_chat_thread From c3db2be3afdac4f9fb3a89aeffe101c6139124ad Mon Sep 17 00:00:00 2001 From: lhpqaq <657407891@qq.com> Date: Sun, 20 Oct 2024 16:50:02 +0800 Subject: [PATCH 14/14] quote desc --- .../src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql index d43dc6af3..206f269e0 100644 --- a/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/PostgreSQL-DDL-CREATE.sql @@ -342,7 +342,7 @@ CREATE TABLE llm_auth_platform status SMALLINT DEFAULT 0, model VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, - desc VARCHAR(255) NOT NULL, + "desc" VARCHAR(255) NOT NULL, create_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP, update_time TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP /* ON UPDATE CURRENT_TIMESTAMP */, create_by BIGINT DEFAULT NULL,