From 43728ee733ccb09d9228b409600429e3ebefd29b Mon Sep 17 00:00:00 2001 From: Chuck1sn Date: Fri, 23 May 2025 11:58:29 +0800 Subject: [PATCH] fix flyway depends bean --- .../zl/mjga/config/ai/ChatModelConfig.java | 33 ++++++++++++++++--- .../mjga/config/ai/DeepSeekConfiguration.java | 19 +++-------- .../zl/mjga/config/ai/ZhiPuConfiguration.java | 15 +++------ .../com/zl/mjga/service/AiChatService.java | 2 +- .../java/com/zl/mjga/service/LlmService.java | 2 +- .../db/migration/V1_0_0__init_table.sql | 4 +-- .../migration/V1_0_1__insert_init_table.sql | 4 +-- 7 files changed, 43 insertions(+), 36 deletions(-) diff --git a/backend/src/main/java/com/zl/mjga/config/ai/ChatModelConfig.java b/backend/src/main/java/com/zl/mjga/config/ai/ChatModelConfig.java index 0c43c1e..936bf74 100644 --- a/backend/src/main/java/com/zl/mjga/config/ai/ChatModelConfig.java +++ b/backend/src/main/java/com/zl/mjga/config/ai/ChatModelConfig.java @@ -1,23 +1,27 @@ package com.zl.mjga.config.ai; +import com.zl.mjga.service.LlmService; import dev.langchain4j.community.model.zhipu.ZhipuAiStreamingChatModel; import dev.langchain4j.memory.chat.MessageWindowChatMemory; import dev.langchain4j.model.openai.OpenAiStreamingChatModel; import dev.langchain4j.service.AiServices; import lombok.RequiredArgsConstructor; +import org.jooq.generated.mjga.enums.LlmCodeEnum; +import org.jooq.generated.mjga.tables.pojos.AiLlmConfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.DependsOn; @Configuration @RequiredArgsConstructor public class ChatModelConfig { - private final DeepSeekConfiguration deepSeekConfiguration; - private final ZhiPuConfiguration zhiPuConfiguration; + private final LlmService llmService; private final PromptConfiguration promptConfiguration; @Bean - public ZhipuAiStreamingChatModel zhipuChatModel() { + @DependsOn("flywayInitializer") + public ZhipuAiStreamingChatModel zhipuChatModel(ZhiPuConfiguration zhiPuConfiguration) { return ZhipuAiStreamingChatModel.builder() .model(zhiPuConfiguration.getModelName()) .apiKey(zhiPuConfiguration.getApiKey()) @@ -27,7 +31,8 @@ public class ChatModelConfig { } @Bean - public OpenAiStreamingChatModel deepSeekChatModel() { + @DependsOn("flywayInitializer") + public OpenAiStreamingChatModel deepSeekChatModel(DeepSeekConfiguration deepSeekConfiguration) { return OpenAiStreamingChatModel.builder() .baseUrl(deepSeekConfiguration.getBaseUrl()) .apiKey(deepSeekConfiguration.getApiKey()) @@ -36,6 +41,7 @@ public class ChatModelConfig { } @Bean + @DependsOn("flywayInitializer") public AiChatAssistant deepSeekChatAssistant(OpenAiStreamingChatModel deepSeekChatModel) { return AiServices.builder(AiChatAssistant.class) .streamingChatModel(deepSeekChatModel) @@ -45,6 +51,7 @@ public class ChatModelConfig { } @Bean + @DependsOn("flywayInitializer") public AiChatAssistant zhiPuChatAssistant(ZhipuAiStreamingChatModel zhipuChatModel) { return AiServices.builder(AiChatAssistant.class) .streamingChatModel(zhipuChatModel) @@ -52,4 +59,22 @@ public class ChatModelConfig { .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10)) .build(); } + + @Bean + @DependsOn("flywayInitializer") + public DeepSeekConfiguration deepSeekConfiguration() { + DeepSeekConfiguration deepSeekConfiguration = new DeepSeekConfiguration(); + AiLlmConfig deepSeek = llmService.loadConfig(LlmCodeEnum.DEEP_SEEK); + deepSeekConfiguration.init(deepSeek); + return deepSeekConfiguration; + } + + @Bean + @DependsOn("flywayInitializer") + public ZhiPuConfiguration zhiPuConfiguration() { + ZhiPuConfiguration zhiPuConfiguration = new ZhiPuConfiguration(); + AiLlmConfig aiLlmConfig = llmService.loadConfig(LlmCodeEnum.ZHI_PU); + zhiPuConfiguration.init(aiLlmConfig); + return zhiPuConfiguration; + } } diff --git a/backend/src/main/java/com/zl/mjga/config/ai/DeepSeekConfiguration.java b/backend/src/main/java/com/zl/mjga/config/ai/DeepSeekConfiguration.java index bccfd91..9b23819 100644 --- a/backend/src/main/java/com/zl/mjga/config/ai/DeepSeekConfiguration.java +++ b/backend/src/main/java/com/zl/mjga/config/ai/DeepSeekConfiguration.java @@ -1,29 +1,18 @@ package com.zl.mjga.config.ai; -import com.zl.mjga.service.LlmService; -import jakarta.annotation.PostConstruct; import lombok.Data; -import lombok.RequiredArgsConstructor; -import org.jooq.generated.default_schema.enums.LlmCodeEnum; import org.jooq.generated.mjga.tables.pojos.AiLlmConfig; -import org.springframework.stereotype.Component; @Data -@Component -@RequiredArgsConstructor public class DeepSeekConfiguration { private String baseUrl; private String apiKey; private String modelName; - private final LlmService llmService; - - @PostConstruct - public void init() { - AiLlmConfig aiLlmConfig = llmService.loadConfig(LlmCodeEnum.DEEP_SEEK); - baseUrl = aiLlmConfig.getUrl(); - apiKey = aiLlmConfig.getApiKey(); - modelName = aiLlmConfig.getModelName(); + public void init(AiLlmConfig config) { + this.baseUrl = config.getUrl(); + this.apiKey = config.getApiKey(); + this.modelName = config.getModelName(); } } diff --git a/backend/src/main/java/com/zl/mjga/config/ai/ZhiPuConfiguration.java b/backend/src/main/java/com/zl/mjga/config/ai/ZhiPuConfiguration.java index 1746653..f94a679 100644 --- a/backend/src/main/java/com/zl/mjga/config/ai/ZhiPuConfiguration.java +++ b/backend/src/main/java/com/zl/mjga/config/ai/ZhiPuConfiguration.java @@ -1,9 +1,6 @@ package com.zl.mjga.config.ai; -import com.zl.mjga.service.LlmService; -import jakarta.annotation.PostConstruct; import lombok.Data; -import org.jooq.generated.default_schema.enums.LlmCodeEnum; import org.jooq.generated.mjga.tables.pojos.AiLlmConfig; import org.springframework.stereotype.Component; @@ -15,13 +12,9 @@ public class ZhiPuConfiguration { private String apiKey; private String modelName; - private final LlmService llmService; - - @PostConstruct - public void init() { - AiLlmConfig aiLlmConfig = llmService.loadConfig(LlmCodeEnum.ZHI_PU); - baseUrl = aiLlmConfig.getUrl(); - apiKey = aiLlmConfig.getApiKey(); - modelName = aiLlmConfig.getModelName(); + public void init(AiLlmConfig config) { + this.baseUrl = config.getUrl(); + this.apiKey = config.getApiKey(); + this.modelName = config.getModelName(); } } diff --git a/backend/src/main/java/com/zl/mjga/service/AiChatService.java b/backend/src/main/java/com/zl/mjga/service/AiChatService.java index 63ccfc2..75c142d 100644 --- a/backend/src/main/java/com/zl/mjga/service/AiChatService.java +++ b/backend/src/main/java/com/zl/mjga/service/AiChatService.java @@ -4,7 +4,7 @@ import com.zl.mjga.config.ai.AiChatAssistant; import dev.langchain4j.service.TokenStream; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.jooq.generated.default_schema.enums.LlmCodeEnum; +import org.jooq.generated.mjga.enums.LlmCodeEnum; import org.jooq.generated.mjga.tables.pojos.AiLlmConfig; import org.springframework.stereotype.Service; diff --git a/backend/src/main/java/com/zl/mjga/service/LlmService.java b/backend/src/main/java/com/zl/mjga/service/LlmService.java index 34d4bee..ad4348f 100644 --- a/backend/src/main/java/com/zl/mjga/service/LlmService.java +++ b/backend/src/main/java/com/zl/mjga/service/LlmService.java @@ -10,7 +10,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jooq.Record; import org.jooq.Result; -import org.jooq.generated.default_schema.enums.LlmCodeEnum; +import org.jooq.generated.mjga.enums.LlmCodeEnum; import org.jooq.generated.mjga.tables.pojos.AiLlmConfig; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; diff --git a/backend/src/main/resources/db/migration/V1_0_0__init_table.sql b/backend/src/main/resources/db/migration/V1_0_0__init_table.sql index 2859c0e..7a25894 100644 --- a/backend/src/main/resources/db/migration/V1_0_0__init_table.sql +++ b/backend/src/main/resources/db/migration/V1_0_0__init_table.sql @@ -66,7 +66,7 @@ CREATE TABLE mjga.user_position_map ( FOREIGN KEY (position_id) REFERENCES mjga.position(id) ON UPDATE NO ACTION ON DELETE RESTRICT ); -CREATE TYPE "llm_code_enum" AS ENUM ( +CREATE TYPE mjga.llm_code_enum AS ENUM ( 'DEEP_SEEK', 'ZHI_PU' ); @@ -75,7 +75,7 @@ CREATE TYPE "llm_code_enum" AS ENUM ( CREATE TABLE mjga.ai_llm_config ( id BIGSERIAL NOT NULL UNIQUE, name VARCHAR(255) NOT NULL UNIQUE, - code LLM_CODE_ENUM NOT NULL UNIQUE, + code mjga.llm_code_enum NOT NULL UNIQUE, model_name VARCHAR(255) NOT NULL, api_key VARCHAR(255) NOT NULL, url VARCHAR(255) NOT NULL, diff --git a/backend/src/main/resources/db/migration/V1_0_1__insert_init_table.sql b/backend/src/main/resources/db/migration/V1_0_1__insert_init_table.sql index 217ae54..b0ca62c 100644 --- a/backend/src/main/resources/db/migration/V1_0_1__insert_init_table.sql +++ b/backend/src/main/resources/db/migration/V1_0_1__insert_init_table.sql @@ -30,5 +30,5 @@ VALUES (1, 1), INSERT INTO mjga.ai_llm_config (name,code,model_name, api_key, url, enable, priority) VALUES - ('DeepSeek','DEEP_SEEK','deepseek-chat','', 'https://api.deepseek.com', false, 0), - ('智谱清言','ZHI_PU','glm-4-flash', '', 'https://open.bigmodel.cn/', false, 1); \ No newline at end of file + ('DeepSeek','DEEP_SEEK','deepseek-chat','your_api_key', 'https://api.deepseek.com', false, 0), + ('智谱清言','ZHI_PU','glm-4-flash', 'your_api_key', 'https://open.bigmodel.cn/', false, 1); \ No newline at end of file