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

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

parent b5de80f2
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.query.AgentApplicationDialoguesRecordQueryItem;
import cn.com.poc.agent_application.service.BizAgentApplicationDialoguesRecordService;
......@@ -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.BizAiDialoguesService;
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.RedisService;
import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.common.utils.StringUtils;
import cn.com.poc.expose.dto.DialoguesContextDto;
......@@ -34,10 +37,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.security.SecureRandom;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -70,6 +71,9 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
@Resource
private BizAgentApplicationGcConfigService bizAgentApplicationGcConfigService;
@Resource
private RedisService redisService;
@Override
public String create(AiDialoguesTypeEnum type, Long userId) throws Exception {
return bizAiDialoguesService.create(type.getType(), userId);
......@@ -232,15 +236,33 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
@Override
public List<String> guessYouAsk(String type) throws Exception {
List<BizAiDialoguesGuessYouAskEntity> entities = bizAiDialoguesGuessYouAskService.findByExample(new BizAiDialoguesGuessYouAskEntity(), null);
// 新增随机逻辑
if (CollectionUtils.isNotEmpty(entities)) {
Collections.shuffle(entities); // 打乱顺序
return entities.stream()
.limit(8) // 取前八个
.map(BizAiDialoguesGuessYouAskEntity::getQuestion)
.collect(Collectors.toList());
}
//
String redisKey = "AGENT_APPLICATION_RECOMMEND_QUESTIONS:" + XLangConstant.ZH_CN;
long size = redisService.lGetListSize(redisKey);
if (size < 8) {
redisService.del(redisKey);
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