Administrator
yesterday 438b5375d320af6d18f3f34cb26b803200e1ca81
feat(ai): 新增公司工作流配置查询功能

- 新增 AiCompanyWorkflowService 接口及实现类
- 实现根据类型和公司ID查询工作流配置
- 在对话流中集成工作流配置校验
- 添加工作流配置异常提示
-优化百炼工作流应用ID获取逻辑
2 files modified
2 files added
60 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/service/AiCompanyWorkflowService.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiCompanyWorkflowServiceImpl.java 28 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkStreamServiceImpl.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/strategy/Impl/AliApplicationLlmStrategyServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiCompanyWorkflowService.java
New file
@@ -0,0 +1,10 @@
package cc.mrbird.febs.ai.service;
import cc.mrbird.febs.ai.entity.AiCompanyWorkflow;
import com.baomidou.mybatisplus.extension.service.IService;
public interface AiCompanyWorkflowService extends IService<AiCompanyWorkflow> {
    AiCompanyWorkflow getByTypeAndCompanyId(Integer type, String companyId);
}
src/main/java/cc/mrbird/febs/ai/service/impl/AiCompanyWorkflowServiceImpl.java
New file
@@ -0,0 +1,28 @@
package cc.mrbird.febs.ai.service.impl;
import cc.mrbird.febs.ai.entity.AiCompanyWorkflow;
import cc.mrbird.febs.ai.mapper.AiCompanyWorkflowMapper;
import cc.mrbird.febs.ai.service.AiCompanyWorkflowService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@RequiredArgsConstructor
public class AiCompanyWorkflowServiceImpl extends ServiceImpl<AiCompanyWorkflowMapper, AiCompanyWorkflow> implements AiCompanyWorkflowService {
    private final AiCompanyWorkflowMapper aiCompanyWorkflowMapper;
    @Override
    public AiCompanyWorkflow getByTypeAndCompanyId(Integer type, String companyId) {
        LambdaQueryWrapper<AiCompanyWorkflow> query = Wrappers.lambdaQuery(AiCompanyWorkflow.class);
        query.eq(AiCompanyWorkflow::getType, type);
        query.eq(AiCompanyWorkflow::getCompanyId, companyId);
        query.last("limit 1");
        return aiCompanyWorkflowMapper.selectOne(query);
    }
}
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkStreamServiceImpl.java
@@ -53,6 +53,7 @@
    private final AiProductQuestionService aiProductQuestionService;
    private final LlmStrategyFactory llmStrategyFactory;
    private final AiService aiService;
    private final AiCompanyWorkflowService aiCompanyWorkflowService;
    @Override
@@ -252,7 +253,12 @@
        llmStrategyDtoList.add(llmStrategyDto);
        llmStrategyDto = this.buildLlmStrategyDtoList(answer, 2);
        llmStrategyDtoList.add(llmStrategyDto);
        llmStrategyDto = this.buildLlmStrategyDtoList(String.valueOf(type), 4);
        AiCompanyWorkflow aiCompanyWorkflow = aiCompanyWorkflowService.getByTypeAndCompanyId(type,aiMemberTalk.getCompanyId());
        if (ObjectUtil.isNull(aiCompanyWorkflow)){
            throw new FebsException("工作流配置异常,请联系管理员");
        }
        llmStrategyDto = this.buildLlmStrategyDtoList(aiCompanyWorkflow.getCode(), 4);
        llmStrategyDtoList.add(llmStrategyDto);
        String modelName = LlmStrategyEnum.getName(aiService.getSystemSetAiType());
src/main/java/cc/mrbird/febs/ai/strategy/Impl/AliApplicationLlmStrategyServiceImpl.java
@@ -83,6 +83,17 @@
        return appId;
    }
    private String getAppIdV2(List<LlmStrategyDto> dto) {
        String appId = null;
        for (LlmStrategyDto dtoItem : dto){
            if (StrUtil.equals(dtoItem.getRole(),Role.TOOL.getValue())){
                appId = dtoItem.getContent();
                break;
            }
        }
        return appId;
    }
    @Override
    public FebsResponse llmInvokeNonStreaming(List<LlmStrategyDto> dto) {
        return null;
@@ -166,7 +177,8 @@
        }
        HashMap prompt = getPrompt(dto);
        String query = getQuery(dto);
        String appId = getAppId(dto);
//        String appId = getAppId(dto);
        String appId = getAppIdV2(dto);
        if (prompt == null || prompt.size() == 0){
            throw new FebsException("百炼工作流初始化异常");
        }