From 91602210af56c0febbdabf455a591cdf1283cdc7 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 22 Sep 2025 18:03:21 +0800
Subject: [PATCH] feat(ai): 新增公司工作流实体类及Mapper接口
---
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkStreamServiceImpl.java | 81 ++++++++++++++++++++++++++++------------
1 files changed, 56 insertions(+), 25 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkStreamServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkStreamServiceImpl.java
index 001f00a..03f253e 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkStreamServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkStreamServiceImpl.java
@@ -11,6 +11,7 @@
import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkStreamVo;
import cc.mrbird.febs.ai.service.*;
import cc.mrbird.febs.ai.strategy.LlmStrategyFactory;
+import cc.mrbird.febs.ai.strategy.enumerates.LlmApplicationAppIdEnum;
import cc.mrbird.febs.ai.strategy.enumerates.LlmStrategyEnum;
import cc.mrbird.febs.ai.strategy.param.LlmStrategyDto;
import cc.mrbird.febs.common.entity.FebsResponse;
@@ -30,10 +31,7 @@
import org.springframework.transaction.annotation.Transactional;
import reactor.core.publisher.Flux;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
/**
* AI用户对话训练记录 Service实现类
@@ -257,21 +255,16 @@
llmStrategyDto = this.buildLlmStrategyDtoList(String.valueOf(type), 4);
llmStrategyDtoList.add(llmStrategyDto);
- LlmStrategyDto llmStrategyDtoMessage = buildMessages(state, memberTalkId);
- llmStrategyDtoList.add(llmStrategyDtoMessage);
String modelName = LlmStrategyEnum.getName(aiService.getSystemSetAiType());
-
return llmStrategyFactory.getCalculationStrategyMap().get(modelName).llmInvokeStreamingNoThink(llmStrategyDtoList);
}
- private LlmStrategyDto buildMessages(Integer state, String memberTalkId) {
+ private LlmStrategyDto buildMessages(String memberTalkId) {
LlmStrategyDto message = new LlmStrategyDto();
- if (1!= state){
- return message;
- }
LambdaQueryWrapper<AiMemberTalkItem> memberTalkItemQuery = Wrappers.lambdaQuery(AiMemberTalkItem.class);
memberTalkItemQuery.eq(AiMemberTalkItem::getMemberTalkId,memberTalkId);
+ memberTalkItemQuery.in(AiMemberTalkItem::getType,Arrays.asList(1, 2));
memberTalkItemQuery.orderByAsc(AiMemberTalkItem::getCreatedTime);
List<AiMemberTalkItem> aiMemberTalkItems = aiMemberTalkItemService.getListByQuery(memberTalkItemQuery);
if (CollUtil.isEmpty(aiMemberTalkItems)){
@@ -287,14 +280,12 @@
if (aiMemberTalkItem.getType() == 2){
llmStrategyDto.setRole(Role.USER.getValue());
}
- if (aiMemberTalkItem.getType() == 3){
- llmStrategyDto.setRole(Role.ASSISTANT.getValue());
- }
llmStrategyDto.setContent(aiMemberTalkItem.getContext());
messages.add(llmStrategyDto);
}
message.setRole(AiTypeEnum.MESSAGES.getName());
+ message.setContent(AiTypeEnum.MESSAGES.getName());
message.setMessages(messages);
return message;
@@ -397,25 +388,65 @@
this.updateMemberTalkUpdateTime(AiTypeEnum.AI_MEMBER_TALK_STATE_DONE.getCode(), aiMemberTalk.getDoneCnt(),aiMemberTalk.getId(), new Date());
- Integer type = dto.getType();
- String contentByCode = AiTalkOutputEnum.HIGH_LIGHT.getCodeByType(type);
- String analysis = aiMemberTalk.getAnalysis();
- HashMap<String, String> stringStringHashMap = new HashMap<>();
- if(StrUtil.isEmpty(analysis)){
- stringStringHashMap.put(contentByCode,content);
- }else{
- stringStringHashMap = JSONUtil.toBean(analysis, HashMap.class);
- stringStringHashMap.put(contentByCode,content);
- }
+// Integer type = dto.getType();
+// String contentByCode = AiTalkOutputEnum.HIGH_LIGHT.getCodeByType(type);
+// String analysis = aiMemberTalk.getAnalysis();
+// HashMap<String, String> stringStringHashMap = new HashMap<>();
+// if(StrUtil.isEmpty(analysis)){
+// stringStringHashMap.put(contentByCode,content);
+// }else{
+// stringStringHashMap = JSONUtil.toBean(analysis, HashMap.class);
+// stringStringHashMap.put(contentByCode,content);
+// }
aiMemberTalkMapper.update(
null,
Wrappers.lambdaUpdate(AiMemberTalk.class)
- .set(AiMemberTalk::getAnalysis,JSONUtil.toJsonStr(stringStringHashMap))
+ .set(AiMemberTalk::getAnalysis,content)
.eq(AiMemberTalk::getId,aiMemberTalk.getId())
);
return new FebsResponse().success();
}
+ @Override
+ public Flux<FebsResponse> answerV3(AiTalkAnswerStreamDto dto) {
+ String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid();
+ String memberTalkId = dto.getId();
+ AiMemberTalk aiMemberTalk = this.getById(memberTalkId);
+ if (ObjectUtil.isNull(aiMemberTalk)){
+ throw new FebsException("对话不存在");
+ }
+
+ LambdaQueryWrapper<AiProductRoleLink> productLinkQuery = Wrappers.lambdaQuery(AiProductRoleLink.class);
+ productLinkQuery.eq(AiProductRoleLink::getProductId,aiMemberTalk.getProductId());
+ productLinkQuery.last("limit 1");
+ AiProductRoleLink aiProductRoleLink = aiProductRoleLinkService.getByQuery(productLinkQuery);
+ if(ObjectUtil.isNull(aiProductRoleLink)){
+ throw new FebsException("产品没有关联AI陪练");
+ }
+
+ String productRoleId = aiProductRoleLink.getProductRoleId();
+ AiProductRole aiProductRole = aiProductRoleService.getById(productRoleId);
+ if (ObjectUtil.isNull(aiProductRole)){
+ throw new FebsException("产品AI陪练不存在");
+ }
+
+ String promptHead = aiProductRole.getPromptHead();
+
+ List<LlmStrategyDto> llmStrategyDtoList = new ArrayList<>();
+ LlmStrategyDto llmStrategyDto = this.buildLlmStrategyDtoList(promptHead, 1);
+ llmStrategyDtoList.add(llmStrategyDto);
+ llmStrategyDto = this.buildLlmStrategyDtoList("请按照要求生成报告", 2);
+ llmStrategyDtoList.add(llmStrategyDto);
+ llmStrategyDto = this.buildLlmStrategyDtoList(String.valueOf(LlmApplicationAppIdEnum.REPORT.getCode()), 4);
+ llmStrategyDtoList.add(llmStrategyDto);
+
+ LlmStrategyDto llmStrategyDtoMessage = buildMessages(memberTalkId);
+ llmStrategyDtoList.add(llmStrategyDtoMessage);
+ String modelName = LlmStrategyEnum.getName(aiService.getSystemSetAiType());
+
+ return llmStrategyFactory.getCalculationStrategyMap().get(modelName).llmInvokeStreamingNoThink(llmStrategyDtoList);
+ }
+
}
--
Gitblit v1.9.1