소스 검색

Merge remote-tracking branch 'origin/test' into test

# Conflicts:
#	xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java
tags/B.2.2.7_20231109_base
kira 2 년 전
부모
커밋
8fa63c4661
10개의 변경된 파일148개의 추가작업 그리고 36개의 파일을 삭제
  1. +0
    -6
      xueyi-api/xueyi-api-file/xueyi-api-file.iml
  2. +0
    -6
      xueyi-api/xueyi-api-job/xueyi-api-job.iml
  3. +0
    -6
      xueyi-api/xueyi-api-system/xueyi-api-system.iml
  4. +1
    -1
      xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java
  5. +61
    -9
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java
  6. +62
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/vo/MarkRecordVo.java
  7. +20
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/kafka/KafkaMessageConsumer.java
  8. +0
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java
  9. +4
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmManDeviceController.java
  10. +0
    -6
      xueyi-visual/xueyi-monitor/xueyi-visual-monitor.iml

+ 0
- 6
xueyi-api/xueyi-api-file/xueyi-api-file.iml 파일 보기

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="SonarLintModuleSettings">
<option name="uniqueId" value="247b44a0-c300-405f-a076-027db3e8eac7" />
</component>
</module>

+ 0
- 6
xueyi-api/xueyi-api-job/xueyi-api-job.iml 파일 보기

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="SonarLintModuleSettings">
<option name="uniqueId" value="be41b8e4-9859-47b2-a6fe-9edd67df019c" />
</component>
</module>

+ 0
- 6
xueyi-api/xueyi-api-system/xueyi-api-system.iml 파일 보기

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="SonarLintModuleSettings">
<option name="uniqueId" value="be06f51a-0801-4f8b-8a91-bd836ed8ecf6" />
</component>
</module>

+ 1
- 1
xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java 파일 보기

@@ -336,7 +336,7 @@ public class ApiController {
if (RedisUtil.existed(MessageConstants.REDIS_GROUP_DEVICE_HEADER)) {
List<Object> hashVals = RedisUtil.getObjectList(MessageConstants.REDIS_GROUP_DEVICE_HEADER);
List<DmManDeviceDto> dtos = hashVals.stream().map(item->(DmManDeviceDto)item).collect(Collectors.toList());
manCount = Integer.valueOf(dtos.size()).longValue();
manCount = (long)dtos.size();
onlineCount = dtos.stream().filter(item->(!item.getOnlineStatus().isEmpty()) &&
item.getOnlineStatus().equalsIgnoreCase("1")).count();



+ 61
- 9
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java 파일 보기

@@ -1,6 +1,5 @@
package com.xueyi.nlt.nlt.controller;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.query_dsl.MatchAllQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.MatchQuery;
import co.elastic.clients.elasticsearch.core.SearchResponse;
import co.elastic.clients.elasticsearch.core.search.Hit;
@@ -10,8 +9,9 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.xueyi.common.cache.utils.SourceUtil;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.constant.digitalman.MessageConstants;
import com.xueyi.common.core.constant.digitalman.SkillConstants.SkillType;
import com.xueyi.common.core.context.SecurityContextHolder;
import com.xueyi.common.core.utils.core.ListUtil;
import com.xueyi.common.core.utils.core.IdUtil;
import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.core.web.validate.V_A;
@@ -20,11 +20,16 @@ import com.xueyi.common.log.annotation.Log;
import com.xueyi.common.log.enums.BusinessType;
import com.xueyi.common.security.annotation.Logical;
import com.xueyi.common.security.annotation.RequiresPermissions;
import com.xueyi.common.security.utils.SecurityUtils;
import com.xueyi.common.web.entity.controller.BaseController;
import com.xueyi.nlt.api.netty.domain.vo.DmWebSocketMessageVo;
import com.xueyi.nlt.api.nlt.domain.vo.*;
import com.xueyi.nlt.api.nlt.domain.vo.response.DmIntentResponse;
import com.xueyi.nlt.api.nlt.domain.vo.CoversationSessionVo;
import com.xueyi.nlt.api.nlt.domain.vo.DmIntentVo;
import com.xueyi.nlt.api.nlt.domain.vo.DmLandingLlmVo;
import com.xueyi.nlt.api.nlt.domain.vo.DmRecognitionVo;
import com.xueyi.nlt.api.nlt.domain.vo.KnowledgeVo;
import com.xueyi.nlt.api.nlt.domain.vo.TaskKnowledgeVo;
import com.xueyi.nlt.api.nlt.feign.RemoteIntentService;
import com.xueyi.nlt.api.nlt.feign.RemoteLandingLlmService;
import com.xueyi.nlt.api.nlt.feign.RemoteQAService;
@@ -33,6 +38,7 @@ import com.xueyi.nlt.nlt.context.TerminalSecurityContextHolder;
import com.xueyi.nlt.nlt.domain.dto.DmIntentDto;
import com.xueyi.nlt.nlt.domain.query.DmIntentQuery;
import com.xueyi.nlt.nlt.domain.vo.IntentTemplateVo;
import com.xueyi.nlt.nlt.domain.vo.MarkRecordVo;
import com.xueyi.nlt.nlt.service.IDmIntentService;
import com.xueyi.nlt.nlt.template.FreeChatTemplate;
import com.xueyi.nlt.nlt.template.GenerativeKnowledgeTemplate;
@@ -47,17 +53,21 @@ import com.xueyi.system.api.digitalmans.feign.RemoteSkillService;
import com.xueyi.system.api.model.Source;
import com.xueyi.system.api.organize.domain.dto.SysEnterpriseDto;
import com.xueyi.system.api.organize.feign.RemoteEnterpriseService;
import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto;
import com.xueyi.tenant.api.tenant.feign.RemoteTenantService;
import org.apache.commons.lang.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.xueyi.common.core.constant.digitalman.SkillConstants.SkillType;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.io.Serializable;
@@ -68,9 +78,12 @@ import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.concurrent.CountDownLatch;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

import static com.xueyi.common.core.constant.digitalman.MessageConstants.SYS_DICT_DATA_SPLITED;
@@ -316,6 +329,19 @@ public class DmIntentController extends BaseController<DmIntentQuery, DmIntentDt
return AjaxResult.success(joResult);
}

/**
* 数字人提交问答请求
*/
@PostMapping("/api/commitKnowledgeRecord")
@ResponseBody
public AjaxResult commitKnowledgeRecord(@RequestBody MarkRecordVo recordVo) {
log.info("提交记录:{}", recordVo.toString());
recordVo.setId(IdUtil.getSnowflakeNextId());
redisTemplate.opsForHash().put("nlt:record:origin",recordVo.getId(),recordVo);
// return remoteQAService.query(manDeviceDtoR.getData().getManCode(),intent.getContent(),manDeviceDtoR.getData().getTId());
return AjaxResult.success(null);
}


/**
* 意图请求列表
@@ -519,6 +545,32 @@ public class DmIntentController extends BaseController<DmIntentQuery, DmIntentDt
return R.ok(null,"处理成功");
}

/**
* 意图管理
列表
*/
@GetMapping("/getRecordList")
public AjaxResult getRecordList(MarkRecordVo recordVo) {
// 获取缓存nlt:record:origin前十的列表
Map<Object,Object> records = redisTemplate2.opsForHash().randomEntries("nlt:record:origin", 10);
if (records == null || records.isEmpty()) {
return AjaxResult.success("没有数据");
}
List result = records.values().stream().toList();

return AjaxResult.success(result);
}

@PostMapping("/commitRecord")
public AjaxResult commitRecordList(MarkRecordVo recordVo) {
// 获取缓存nlt:record:origin前十的列表
if (redisTemplate2.opsForHash().hasKey("nlt:record:origin",recordVo.getId())) {
redisTemplate.opsForList().rightPush("nlt:record:marked", JSONObject.toJSONString(recordVo));
redisTemplate.opsForHash().delete("nlt:record:origin",recordVo.getId());
}
return AjaxResult.success();
}

/**
* 查询意图管理
列表


+ 62
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/vo/MarkRecordVo.java 파일 보기

@@ -0,0 +1,62 @@
package com.xueyi.nlt.nlt.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.xueyi.common.core.utils.time.LocalDateTimeSerializer;
import com.xueyi.common.core.utils.time.LocalDatetimeDeserializer;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class MarkRecordVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;


protected Long id;
protected Long devId;
/** 标注来源
* 0: 知识库标注
* 1: 自由问答标注
* 2:正则表达式
*/
protected Integer type;

/** 选用的大模型
* spark:星火大模型
* zhipu:智普AI
* baidu:文心一言
* other: 其他
*/
protected String llm;

/** 是否喜欢
* -1: 未标注
* 0: 喜欢位置0的答案
* 1: 喜欢位置1的答案
* 2: 喜欢位置2的答案
* 3: 喜欢位置3的答案
* ...
*/
protected Integer like;

/** 问题 */
protected String question;

/** 答案 */
protected List<String> answers;

/** 租户号 */
protected Long tenantId;

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonDeserialize(using = LocalDatetimeDeserializer.class) // 反序列化
@JsonSerialize(using = LocalDateTimeSerializer.class)
protected LocalDateTime createTime;

}

+ 20
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/kafka/KafkaMessageConsumer.java 파일 보기

@@ -0,0 +1,20 @@
package com.xueyi.nlt.nlt.kafka;

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.support.KafkaHeaders;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;

import java.io.IOException;

@Component
public class KafkaMessageConsumer {

@KafkaListener(groupId = "simpleGroup", topics = "es_info_log")
public void coumuser(@Payload String record, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) throws InterruptedException, IOException, IllegalAccessException {
System.out.println(record);
System.out.println(topic);
return;
}
}

+ 0
- 2
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java 파일 보기

@@ -23,7 +23,6 @@ import com.xueyi.message.api.transfer.feign.RemoteTransferService;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.device.feign.RemoteDeviceTenantMergeService;
import com.xueyi.system.api.dict.domain.dto.SysDictDataDto;
import com.xueyi.system.api.dict.domain.po.SysDictDataPo;
import com.xueyi.system.api.digitalmans.domain.dto.DmDigitalmanWorktimeDto;
import com.xueyi.system.api.digitalmans.domain.dto.DmManDeviceDto;
import com.xueyi.system.api.digitalmans.domain.dto.DmSyncDigitalmanDto;
@@ -74,7 +73,6 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;

/**
* 数字人基础管理 业务处理


+ 4
- 0
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmManDeviceController.java 파일 보기

@@ -28,6 +28,10 @@ import com.xueyi.system.api.organize.domain.dto.SysEnterpriseDto;
import com.xueyi.system.api.sms.domain.vo.DingdingReqEntity;
import com.xueyi.system.api.sms.feign.RemoteDingdingService;
import com.xueyi.system.api.sms.feign.RemoteSmsService;
import com.xueyi.system.api.sms.domain.vo.DingdingReqEntity;
import com.xueyi.system.api.sms.domain.vo.SmsReqEntity;
import com.xueyi.system.api.sms.feign.RemoteDingdingService;
import com.xueyi.system.api.sms.feign.RemoteSmsService;
import com.xueyi.system.device.service.IDmDeviceTenantMergeService;
import com.xueyi.system.dict.service.ISysDictDataService;
import com.xueyi.system.digitalmans.domain.query.DmManDeviceQuery;


+ 0
- 6
xueyi-visual/xueyi-monitor/xueyi-visual-monitor.iml 파일 보기

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="SonarLintModuleSettings">
<option name="uniqueId" value="a231fd41-2b5f-4b07-b1fe-c41fe53d7a18" />
</component>
</module>

불러오는 중...
취소
저장