Commit 6cad786e authored by alex yao's avatar alex yao

feat[智能问答]:猜你想问优化数据

parent b5de80f2
package cn.com.poc.ai_dialogues.aggregate.impl; package cn.com.poc.ai_dialogues.aggregate.impl;
import cn.com.poc.agent_application.aggregate.AgentApplicationService;
import cn.com.poc.agent_application.entity.BizAgentApplicationGcConfigEntity; import cn.com.poc.agent_application.entity.BizAgentApplicationGcConfigEntity;
import cn.com.poc.agent_application.query.AgentApplicationDialoguesRecordQueryItem; import cn.com.poc.agent_application.query.AgentApplicationDialoguesRecordQueryItem;
import cn.com.poc.agent_application.service.BizAgentApplicationDialoguesRecordService; import cn.com.poc.agent_application.service.BizAgentApplicationDialoguesRecordService;
...@@ -16,7 +17,9 @@ import cn.com.poc.ai_dialogues.service.BizAiDialoguesGuessYouAskService; ...@@ -16,7 +17,9 @@ import cn.com.poc.ai_dialogues.service.BizAiDialoguesGuessYouAskService;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesProblemAssociationService; import cn.com.poc.ai_dialogues.service.BizAiDialoguesProblemAssociationService;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesService; import cn.com.poc.ai_dialogues.service.BizAiDialoguesService;
import cn.com.poc.common.constant.CommonConstant; import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.constant.XLangConstant;
import cn.com.poc.common.service.BizFileUploadRecordService; import cn.com.poc.common.service.BizFileUploadRecordService;
import cn.com.poc.common.service.RedisService;
import cn.com.poc.common.utils.JsonUtils; import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.common.utils.StringUtils; import cn.com.poc.common.utils.StringUtils;
import cn.com.poc.expose.dto.DialoguesContextDto; import cn.com.poc.expose.dto.DialoguesContextDto;
...@@ -34,10 +37,8 @@ import org.slf4j.LoggerFactory; ...@@ -34,10 +37,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.security.SecureRandom;
import java.util.Collections; import java.util.*;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -70,6 +71,9 @@ public class AiDialoguesServiceImpl implements AiDialoguesService { ...@@ -70,6 +71,9 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
@Resource @Resource
private BizAgentApplicationGcConfigService bizAgentApplicationGcConfigService; private BizAgentApplicationGcConfigService bizAgentApplicationGcConfigService;
@Resource
private RedisService redisService;
@Override @Override
public String create(AiDialoguesTypeEnum type, Long userId) throws Exception { public String create(AiDialoguesTypeEnum type, Long userId) throws Exception {
return bizAiDialoguesService.create(type.getType(), userId); return bizAiDialoguesService.create(type.getType(), userId);
...@@ -232,15 +236,33 @@ public class AiDialoguesServiceImpl implements AiDialoguesService { ...@@ -232,15 +236,33 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
@Override @Override
public List<String> guessYouAsk(String type) throws Exception { public List<String> guessYouAsk(String type) throws Exception {
List<BizAiDialoguesGuessYouAskEntity> entities = bizAiDialoguesGuessYouAskService.findByExample(new BizAiDialoguesGuessYouAskEntity(), null); //
// 新增随机逻辑 String redisKey = "AGENT_APPLICATION_RECOMMEND_QUESTIONS:" + XLangConstant.ZH_CN;
if (CollectionUtils.isNotEmpty(entities)) {
Collections.shuffle(entities); // 打乱顺序 long size = redisService.lGetListSize(redisKey);
return entities.stream() if (size < 8) {
.limit(8) // 取前八个 redisService.del(redisKey);
.map(BizAiDialoguesGuessYouAskEntity::getQuestion) return Collections.emptyList();
.collect(Collectors.toList());
} }
return Collections.emptyList();
List<Object> lastRecomendIdSet = null;
Set<Long> indexSet = new HashSet<>(8);
SecureRandom secureRandom = new SecureRandom();
do {
long id = secureRandom.nextInt((int) size);
if (CollectionUtils.isNotEmpty(lastRecomendIdSet) && lastRecomendIdSet.stream().anyMatch(v -> String.valueOf(v).equals(String.valueOf(id)))) {
continue;
}
indexSet.add(id);
} while (indexSet.size() < 8);
List<String> result = new ArrayList<>(8);
for (Long index : indexSet) {
Object str = redisService.lGetIndex(redisKey, index);
result.add(str.toString());
}
return result;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment