Commit 4ce373e7 authored by alex yao's avatar alex yao

feat:会议助手

parent d78be39f
package cn.com.poc.meeting.aggregate.impl; package cn.com.poc.meeting.aggregate.impl;
import cn.com.poc.agent_application.entity.BizAgentApplicationDialoguesRecordEntity;
import cn.com.poc.agent_application.entity.BizAgentApplicationGcConfigEntity; import cn.com.poc.agent_application.entity.BizAgentApplicationGcConfigEntity;
import cn.com.poc.agent_application.entity.KnowledgeContentResult; import cn.com.poc.agent_application.entity.KnowledgeContentResult;
import cn.com.poc.agent_application.service.BizAgentApplicationDialoguesRecordService;
import cn.com.poc.agent_application.service.BizAgentApplicationGcConfigService; import cn.com.poc.agent_application.service.BizAgentApplicationGcConfigService;
import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum; import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum;
import cn.com.poc.ai_dialogues.entity.BizAiDialoguesEntity; import cn.com.poc.ai_dialogues.entity.BizAiDialoguesEntity;
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.service.BizFileUploadRecordService; import cn.com.poc.common.service.BizFileUploadRecordService;
import cn.com.poc.common.utils.DocumentLoad; import cn.com.poc.common.utils.*;
import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.common.utils.RandomUtil;
import cn.com.poc.common.utils.SSEUtil;
import cn.com.poc.knowledge.aggregate.KnowledgeService; import cn.com.poc.knowledge.aggregate.KnowledgeService;
import cn.com.poc.knowledge.constant.KnowledgeConstant; import cn.com.poc.knowledge.constant.KnowledgeConstant;
import cn.com.poc.knowledge.entity.BizKnowledgeDocumentEntity; import cn.com.poc.knowledge.entity.BizKnowledgeDocumentEntity;
...@@ -21,6 +20,7 @@ import cn.com.poc.long_document.domain.LongtextDialoguesResult; ...@@ -21,6 +20,7 @@ import cn.com.poc.long_document.domain.LongtextDialoguesResult;
import cn.com.poc.meeting.aggregate.AiMeetingAssistantService; import cn.com.poc.meeting.aggregate.AiMeetingAssistantService;
import cn.com.poc.meeting.cache.KeyWordCounter; import cn.com.poc.meeting.cache.KeyWordCounter;
import cn.com.poc.meeting.constants.MeetingAssistantConstantEnum; import cn.com.poc.meeting.constants.MeetingAssistantConstantEnum;
import cn.com.poc.meeting.convert.BizMeetingAssistantAnalysisTaskConvert;
import cn.com.poc.meeting.entity.AnalysisTaskDetailEntity; import cn.com.poc.meeting.entity.AnalysisTaskDetailEntity;
import cn.com.poc.meeting.entity.BizMeetingAssistantAnalysisTaskEntity; import cn.com.poc.meeting.entity.BizMeetingAssistantAnalysisTaskEntity;
import cn.com.poc.meeting.entity.BizMeetingAssistantAsrTaskEntity; import cn.com.poc.meeting.entity.BizMeetingAssistantAsrTaskEntity;
...@@ -41,6 +41,7 @@ import cn.com.poc.writing.dto.AiWritingTitleGenerationDto; ...@@ -41,6 +41,7 @@ import cn.com.poc.writing.dto.AiWritingTitleGenerationDto;
import cn.com.poc.writing.entity.BizAiWritingDialoguesRecordEntity; import cn.com.poc.writing.entity.BizAiWritingDialoguesRecordEntity;
import cn.com.poc.writing.service.BizAiWritingDialoguesRecordService; import cn.com.poc.writing.service.BizAiWritingDialoguesRecordService;
import cn.com.yict.framemax.core.exception.BusinessException; import cn.com.yict.framemax.core.exception.BusinessException;
import com.alibaba.fastjson.TypeReference;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -77,7 +78,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -77,7 +78,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
private BizMeetingAssistantAnalysisTaskService bizMeetingAssistantAnalysisTaskService; private BizMeetingAssistantAnalysisTaskService bizMeetingAssistantAnalysisTaskService;
@Resource @Resource
private BizAiWritingDialoguesRecordService bizAiWritingDialoguesRecordService; private BizAgentApplicationDialoguesRecordService bizAgentApplicationDialoguesRecordService;
@Resource @Resource
private KnowledgeService knowledgeService; private KnowledgeService knowledgeService;
...@@ -164,8 +165,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -164,8 +165,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
} }
private void asrTask(String fileUrl, String dialoguesId, Long userId) { private void asrTask(String fileUrl, String dialoguesId, Long userId) {
int produceNumber = RandomUtil.produceNumber(5); String sessionId = UUIDTool.getUUID();
String sessionId = dialoguesId + "_" + produceNumber;
String status = asrService.speechToText(sessionId, fileUrl); String status = asrService.speechToText(sessionId, fileUrl);
if (StringUtils.isBlank(status) || !"success".equals(status)) { if (StringUtils.isBlank(status) || !"success".equals(status)) {
throw new BusinessException("语音识别任务创建失败"); throw new BusinessException("语音识别任务创建失败");
...@@ -199,6 +199,16 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -199,6 +199,16 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
throw new BusinessException("会话不存在,查看会话ID是否正确"); throw new BusinessException("会话不存在,查看会话ID是否正确");
} }
// 内容分析任务
BizMeetingAssistantAnalysisTaskEntity meetingAssistantAnalysisTaskEntity = new BizMeetingAssistantAnalysisTaskEntity();
meetingAssistantAnalysisTaskEntity.setDiaguesId(dialoguesId);
meetingAssistantAnalysisTaskEntity.setMemberId(userId);
meetingAssistantAnalysisTaskEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizMeetingAssistantAnalysisTaskEntity> entities = bizMeetingAssistantAnalysisTaskService.findByExample(meetingAssistantAnalysisTaskEntity, null);
if (CollectionUtils.isEmpty(entities)) {
throw new BusinessException("无法找到对应解析任务,请重新生成");
}
BizMeetingAssistantAnalysisTaskEntity bizMeetingAssistantAnalysisTaskEntity = entities.get(0);
// 语音识别任务 // 语音识别任务
BizMeetingAssistantAsrTaskEntity bizMeetingAssistantAsrTaskEntity = new BizMeetingAssistantAsrTaskEntity(); BizMeetingAssistantAsrTaskEntity bizMeetingAssistantAsrTaskEntity = new BizMeetingAssistantAsrTaskEntity();
...@@ -210,8 +220,22 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -210,8 +220,22 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
throw new BusinessException("获取语音识别任务异常"); throw new BusinessException("获取语音识别任务异常");
} }
BizMeetingAssistantAsrTaskEntity asrTaskEntity = asrTaskEntities.get(0); BizMeetingAssistantAsrTaskEntity asrTaskEntity = asrTaskEntities.get(0);
if (MeetingAssistantConstantEnum.FAILED.getStatus().equals(asrTaskEntity.getGenerateStatus())) {
analysisTaskDetailEntity.setAnalysisStatus(MeetingAssistantConstantEnum.FAILED.getStatus());
analysisTaskDetailEntity.setAsrStatus(asrTaskEntity.getGenerateStatus()); analysisTaskDetailEntity.setAsrStatus(asrTaskEntity.getGenerateStatus());
if (asrTaskEntity.getGenerateStatus().equals(MeetingAssistantConstantEnum.COMPLETED.getStatus())) { logger.error("-------------- 语音识别任务失败 ,sessionId:{}--------------------", asrTaskEntity.getSessionId());
return analysisTaskDetailEntity;
} else if (MeetingAssistantConstantEnum.GENERATE.getStatus().equals(asrTaskEntity.getGenerateStatus())) {
analysisTaskDetailEntity.setAnalysisStatus(MeetingAssistantConstantEnum.GENERATE.getStatus());
analysisTaskDetailEntity.setAsrStatus(asrTaskEntity.getGenerateStatus());
logger.error("-------------- 语音识别任务执行中 ,sessionId:{}--------------------", asrTaskEntity.getSessionId());
return analysisTaskDetailEntity;
}
// 构造返回参数
analysisTaskDetailEntity = BizMeetingAssistantAnalysisTaskConvert.bizEntityToDetailEntity(bizMeetingAssistantAnalysisTaskEntity);
// 获取对话内容
AsrOfflineDetailResult asrServiceDetail = asrService.getDetail(asrTaskEntity.getSessionId()); AsrOfflineDetailResult asrServiceDetail = asrService.getDetail(asrTaskEntity.getSessionId());
List<Translation> translations = asrServiceDetail.getTranslation(); List<Translation> translations = asrServiceDetail.getTranslation();
analysisTaskDetailEntity.setTranslations(translations); analysisTaskDetailEntity.setTranslations(translations);
...@@ -222,32 +246,6 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -222,32 +246,6 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
spkSets.add(translation.getSpk()); spkSets.add(translation.getSpk());
} }
analysisTaskDetailEntity.setSpkSets(spkSets); analysisTaskDetailEntity.setSpkSets(spkSets);
} else if (asrTaskEntity.getGenerateStatus().equals(MeetingAssistantConstantEnum.FAILED.getStatus())) {
logger.error("-------------- 语音识别任务失败 ,sessionId:{}--------------------", asrTaskEntity.getSessionId());
return analysisTaskDetailEntity;
}
// 内容分析任务
BizMeetingAssistantAnalysisTaskEntity meetingAssistantAnalysisTaskEntity = new BizMeetingAssistantAnalysisTaskEntity();
meetingAssistantAnalysisTaskEntity.setDiaguesId(dialoguesId);
meetingAssistantAnalysisTaskEntity.setMemberId(userId);
meetingAssistantAnalysisTaskEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizMeetingAssistantAnalysisTaskEntity> entities = bizMeetingAssistantAnalysisTaskService.findByExample(meetingAssistantAnalysisTaskEntity, null);
if (CollectionUtils.isEmpty(entities)) {
throw new BusinessException("无法找到对应解析任务,请重新生成");
}
BizMeetingAssistantAnalysisTaskEntity bizMeetingAssistantAnalysisTaskEntity = entities.get(0);
BeanUtils.copyProperties(bizMeetingAssistantAnalysisTaskEntity, analysisTaskDetailEntity);
//获取关键字计数
if (bizMeetingAssistantAnalysisTaskEntity.getKeyWordGenerateStatus().equals(MeetingAssistantConstantEnum.COMPLETED.getStatus())) {
Map<String, Integer> keywordCountMap = KeyWordCounter.getKeywordCountCache(dialoguesId);
analysisTaskDetailEntity.setKeyWordCount(keywordCountMap);
}
return analysisTaskDetailEntity; return analysisTaskDetailEntity;
} }
...@@ -267,11 +265,11 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -267,11 +265,11 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
// 初始化文件 // 初始化文件
BizAiWritingDialoguesRecordEntity dialoguesRecordEntity = new BizAiWritingDialoguesRecordEntity(); BizAgentApplicationDialoguesRecordEntity dialoguesRecordEntity = new BizAgentApplicationDialoguesRecordEntity();
dialoguesRecordEntity.setDialogsId(dialoguesId); dialoguesRecordEntity.setDialogsId(dialoguesId);
dialoguesRecordEntity.setMemberId(userId); dialoguesRecordEntity.setMemberId(userId);
dialoguesRecordEntity.setIsDeleted(CommonConstant.IsDeleted.N); dialoguesRecordEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizAiWritingDialoguesRecordEntity> dialoguesRecordEntities = bizAiWritingDialoguesRecordService.findByExample(dialoguesRecordEntity, null); List<BizAgentApplicationDialoguesRecordEntity> dialoguesRecordEntities = bizAgentApplicationDialoguesRecordService.findByExample(dialoguesRecordEntity, null);
boolean isInit = false; boolean isInit = false;
if (CollectionUtils.isEmpty(dialoguesRecordEntities)) { if (CollectionUtils.isEmpty(dialoguesRecordEntities)) {
if (StringUtils.isNoneBlank(aiDialoguesEntity.getFileUrl()) && StringUtils.isBlank(fileUrl)) { if (StringUtils.isNoneBlank(aiDialoguesEntity.getFileUrl()) && StringUtils.isBlank(fileUrl)) {
...@@ -334,7 +332,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -334,7 +332,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
// 保存用户输入记录 // 保存用户输入记录
BizAiWritingDialoguesRecordEntity inputRecord = new BizAiWritingDialoguesRecordEntity(); BizAgentApplicationDialoguesRecordEntity inputRecord = new BizAgentApplicationDialoguesRecordEntity();
inputRecord.setMemberId(userId); inputRecord.setMemberId(userId);
inputRecord.setContent(input); inputRecord.setContent(input);
if (isFileUrlChanged) { if (isFileUrlChanged) {
...@@ -345,7 +343,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -345,7 +343,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
inputRecord.setTimestamp(inputTimestamp); inputRecord.setTimestamp(inputTimestamp);
// 保存AI回复记录 // 保存AI回复记录
BizAiWritingDialoguesRecordEntity assistantRecord = new BizAiWritingDialoguesRecordEntity(); BizAgentApplicationDialoguesRecordEntity assistantRecord = new BizAgentApplicationDialoguesRecordEntity();
assistantRecord.setMemberId(userId); assistantRecord.setMemberId(userId);
assistantRecord.setContent(longtextDialoguesResult.getMessage()); assistantRecord.setContent(longtextDialoguesResult.getMessage());
assistantRecord.setReasoningContent(longtextDialoguesResult.getReasoningContent()); assistantRecord.setReasoningContent(longtextDialoguesResult.getReasoningContent());
...@@ -353,8 +351,8 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -353,8 +351,8 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
assistantRecord.setRole(LLMRoleEnum.ASSISTANT.getRole()); assistantRecord.setRole(LLMRoleEnum.ASSISTANT.getRole());
assistantRecord.setTimestamp(System.currentTimeMillis()); assistantRecord.setTimestamp(System.currentTimeMillis());
bizAiWritingDialoguesRecordService.save(inputRecord); bizAgentApplicationDialoguesRecordService.save(inputRecord);
bizAiWritingDialoguesRecordService.save(assistantRecord); bizAgentApplicationDialoguesRecordService.save(assistantRecord);
} }
private List<Translation> getASRTranslations(String dialoguesId, Long userId) { private List<Translation> getASRTranslations(String dialoguesId, Long userId) {
...@@ -523,13 +521,13 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -523,13 +521,13 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
messages.add(systemMessage); messages.add(systemMessage);
// 对话记录 // 对话记录
BizAiWritingDialoguesRecordEntity recordEntity = new BizAiWritingDialoguesRecordEntity(); BizAgentApplicationDialoguesRecordEntity recordEntity = new BizAgentApplicationDialoguesRecordEntity();
recordEntity.setDialogsId(dialogsId); recordEntity.setDialogsId(dialogsId);
recordEntity.setIsDeleted(CommonConstant.IsDeleted.N); recordEntity.setIsDeleted(CommonConstant.IsDeleted.N);
recordEntity.setMemberId(userId); recordEntity.setMemberId(userId);
List<BizAiWritingDialoguesRecordEntity> recordEntities = bizAiWritingDialoguesRecordService.findByExample(recordEntity, null); List<BizAgentApplicationDialoguesRecordEntity> recordEntities = bizAgentApplicationDialoguesRecordService.findByExample(recordEntity, null);
if (CollectionUtils.isNotEmpty(recordEntities)) { if (CollectionUtils.isNotEmpty(recordEntities)) {
for (BizAiWritingDialoguesRecordEntity entity : recordEntities) { for (BizAgentApplicationDialoguesRecordEntity entity : recordEntities) {
Message message = new Message(); Message message = new Message();
message.setContent(entity.getContent()); message.setContent(entity.getContent());
message.setRole(entity.getRole()); message.setRole(entity.getRole());
...@@ -540,7 +538,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService ...@@ -540,7 +538,7 @@ public class AiMeetingAssistantServiceImpl implements AiMeetingAssistantService
if (CollectionUtils.isNotEmpty(messages)) { if (CollectionUtils.isNotEmpty(messages)) {
if (LLMRoleEnum.USER.getRole().equals(messages.get(messages.size() - 1).getRole())) { if (LLMRoleEnum.USER.getRole().equals(messages.get(messages.size() - 1).getRole())) {
Long recordId = recordEntities.get(recordEntities.size() - 1).getId(); Long recordId = recordEntities.get(recordEntities.size() - 1).getId();
bizAiWritingDialoguesRecordService.deletedById(recordId); bizAgentApplicationDialoguesRecordService.deletedById(recordId);
messages.remove(messages.size() - 1); messages.remove(messages.size() - 1);
} }
} }
......
...@@ -3,10 +3,9 @@ package cn.com.poc.meeting.cache; ...@@ -3,10 +3,9 @@ package cn.com.poc.meeting.cache;
import cn.com.poc.common.service.RedisService; import cn.com.poc.common.service.RedisService;
import cn.com.poc.common.utils.SpringUtils; import cn.com.poc.common.utils.SpringUtils;
import org.jetbrains.annotations.NotNull;
import java.util.LinkedHashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -35,9 +34,11 @@ public class KeyWordCounter { ...@@ -35,9 +34,11 @@ public class KeyWordCounter {
} }
resMap.put(keyword, count); resMap.put(keyword, count);
} }
return resMap; Map<String, Integer> sortedMap = getSortedMap(resMap);
return sortedMap;
} }
/** /**
* 缓存关键词计数 * 缓存关键词计数
*/ */
...@@ -69,6 +70,24 @@ public class KeyWordCounter { ...@@ -69,6 +70,24 @@ public class KeyWordCounter {
Integer count = (Integer) map.get(k); Integer count = (Integer) map.get(k);
resMap.put(String.valueOf(k), count); resMap.put(String.valueOf(k), count);
} }
return resMap; return getSortedMap(resMap);
}
private static @NotNull Map<String, Integer> getSortedMap(Map<String, Integer> resMap) {
// 将Map转换为List
List<Map.Entry<String, Integer>> list = new ArrayList<>(resMap.entrySet());
// 使用自定义Comparator按value排序
list.sort((o1, o2) -> {
return o2.getValue().compareTo(o1.getValue()); // 降序
});
// 将排序后的结果存入LinkedHashMap (可选,如果需要保持插入顺序)
Map<String, Integer> sortedMap = new LinkedHashMap<>();
for (Map.Entry<String, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
} }
} }
package cn.com.poc.meeting.convert; package cn.com.poc.meeting.convert;
import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.meeting.cache.KeyWordCounter;
import cn.com.poc.meeting.constants.MeetingAssistantConstantEnum;
import cn.com.poc.meeting.entity.AnalysisTaskDetailEntity;
import cn.com.poc.meeting.model.BizMeetingAssistantAnalysisTaskModel; import cn.com.poc.meeting.model.BizMeetingAssistantAnalysisTaskModel;
import cn.com.poc.meeting.entity.BizMeetingAssistantAnalysisTaskEntity; import cn.com.poc.meeting.entity.BizMeetingAssistantAnalysisTaskEntity;
import cn.com.poc.meeting.dto.BizMeetingAssistantAnalysisTaskDto; import cn.com.poc.meeting.dto.BizMeetingAssistantAnalysisTaskDto;
import com.alibaba.fastjson.TypeReference;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class BizMeetingAssistantAnalysisTaskConvert { public class BizMeetingAssistantAnalysisTaskConvert {
public static BizMeetingAssistantAnalysisTaskEntity modelToEntity(BizMeetingAssistantAnalysisTaskModel model){ public static BizMeetingAssistantAnalysisTaskEntity modelToEntity(BizMeetingAssistantAnalysisTaskModel model) {
BizMeetingAssistantAnalysisTaskEntity entity = new BizMeetingAssistantAnalysisTaskEntity(); BizMeetingAssistantAnalysisTaskEntity entity = new BizMeetingAssistantAnalysisTaskEntity();
entity.setId(model.getId()); entity.setId(model.getId());
entity.setMemberId(model.getMemberId()); entity.setMemberId(model.getMemberId());
...@@ -30,7 +41,7 @@ public class BizMeetingAssistantAnalysisTaskConvert { ...@@ -30,7 +41,7 @@ public class BizMeetingAssistantAnalysisTaskConvert {
return entity; return entity;
} }
public static BizMeetingAssistantAnalysisTaskModel entityToModel(BizMeetingAssistantAnalysisTaskEntity entity){ public static BizMeetingAssistantAnalysisTaskModel entityToModel(BizMeetingAssistantAnalysisTaskEntity entity) {
BizMeetingAssistantAnalysisTaskModel model = new BizMeetingAssistantAnalysisTaskModel(); BizMeetingAssistantAnalysisTaskModel model = new BizMeetingAssistantAnalysisTaskModel();
model.setId(entity.getId()); model.setId(entity.getId());
model.setMemberId(entity.getMemberId()); model.setMemberId(entity.getMemberId());
...@@ -53,7 +64,7 @@ public class BizMeetingAssistantAnalysisTaskConvert { ...@@ -53,7 +64,7 @@ public class BizMeetingAssistantAnalysisTaskConvert {
return model; return model;
} }
public static BizMeetingAssistantAnalysisTaskDto entityToDto(BizMeetingAssistantAnalysisTaskEntity entity){ public static BizMeetingAssistantAnalysisTaskDto entityToDto(BizMeetingAssistantAnalysisTaskEntity entity) {
BizMeetingAssistantAnalysisTaskDto dto = new BizMeetingAssistantAnalysisTaskDto(); BizMeetingAssistantAnalysisTaskDto dto = new BizMeetingAssistantAnalysisTaskDto();
dto.setId(entity.getId()); dto.setId(entity.getId());
dto.setMemberId(entity.getMemberId()); dto.setMemberId(entity.getMemberId());
...@@ -76,7 +87,7 @@ public class BizMeetingAssistantAnalysisTaskConvert { ...@@ -76,7 +87,7 @@ public class BizMeetingAssistantAnalysisTaskConvert {
return dto; return dto;
} }
public static BizMeetingAssistantAnalysisTaskEntity dtoToEntity(BizMeetingAssistantAnalysisTaskDto dto){ public static BizMeetingAssistantAnalysisTaskEntity dtoToEntity(BizMeetingAssistantAnalysisTaskDto dto) {
BizMeetingAssistantAnalysisTaskEntity entity = new BizMeetingAssistantAnalysisTaskEntity(); BizMeetingAssistantAnalysisTaskEntity entity = new BizMeetingAssistantAnalysisTaskEntity();
entity.setId(dto.getId()); entity.setId(dto.getId());
entity.setMemberId(dto.getMemberId()); entity.setMemberId(dto.getMemberId());
...@@ -98,4 +109,33 @@ public class BizMeetingAssistantAnalysisTaskConvert { ...@@ -98,4 +109,33 @@ public class BizMeetingAssistantAnalysisTaskConvert {
entity.setSysVersion(dto.getSysVersion()); entity.setSysVersion(dto.getSysVersion());
return entity; return entity;
} }
public static AnalysisTaskDetailEntity bizEntityToDetailEntity(BizMeetingAssistantAnalysisTaskEntity entity) {
AnalysisTaskDetailEntity analysisTaskDetailEntity = new AnalysisTaskDetailEntity();
analysisTaskDetailEntity.setAnalysisStatus(entity.getAnalysisStatus());
analysisTaskDetailEntity.setThemeContent(entity.getThemeContent());
analysisTaskDetailEntity.setThemeGenerateStatus(entity.getThemeGenerateStatus());
analysisTaskDetailEntity.setKeyWordGenerateStatus(entity.getKeyWordGenerateStatus());
//获取关键字计数
if (MeetingAssistantConstantEnum.COMPLETED.getStatus().equals(entity.getKeyWordGenerateStatus())) {
Map<String, Integer> keywordCountMap = KeyWordCounter.getKeywordCountCache(entity.getDiaguesId());
analysisTaskDetailEntity.setKeyWordCount(keywordCountMap);
if (StringUtils.isNotBlank(entity.getKeyWordContent())) {
List<String> keyWords = new ArrayList<>(keywordCountMap.keySet());
analysisTaskDetailEntity.setKeyWordContent(keyWords);
}
}
analysisTaskDetailEntity.setMeetingSummaryContent(entity.getMeetingSummaryContent());
analysisTaskDetailEntity.setMeetingSummaryGenerateStatus(entity.getMeetingSummaryGenerateStatus());
analysisTaskDetailEntity.setFeaturedQuestionsGenerateStatus(entity.getFeaturedQuestionsGenerateStatus());
if (StringUtils.isNotBlank(entity.getFeaturedQuestions())) {
List<String> featuredQuestions = JsonUtils.deSerialize(entity.getFeaturedQuestions(), new TypeReference<List<String>>() {
}.getType());
analysisTaskDetailEntity.setFeaturedQuestions(featuredQuestions);
}
return analysisTaskDetailEntity;
}
} }
\ No newline at end of file
package cn.com.poc.meeting.convert; package cn.com.poc.meeting.convert;
import cn.com.poc.meeting.model.BizMeetingAssistantAsrTaskModel;
import cn.com.poc.meeting.entity.BizMeetingAssistantAsrTaskEntity;
import cn.com.poc.meeting.dto.BizMeetingAssistantAsrTaskDto; import cn.com.poc.meeting.dto.BizMeetingAssistantAsrTaskDto;
import cn.com.poc.meeting.entity.BizMeetingAssistantAsrTaskEntity;
import cn.com.poc.meeting.model.BizMeetingAssistantAsrTaskModel;
public class BizMeetingAssistantAsrTaskConvert { public class BizMeetingAssistantAsrTaskConvert {
......
...@@ -58,13 +58,13 @@ public class AnalysisTaskDetailDto { ...@@ -58,13 +58,13 @@ public class AnalysisTaskDetailDto {
* key_word_content * key_word_content
* 关键词 * 关键词
*/ */
private java.lang.String keyWordContent; private List<String> keyWordContent;
public java.lang.String getKeyWordContent() { public List<String> getKeyWordContent() {
return this.keyWordContent; return keyWordContent;
} }
public void setKeyWordContent(java.lang.String keyWordContent) { public void setKeyWordContent(List<String> keyWordContent) {
this.keyWordContent = keyWordContent; this.keyWordContent = keyWordContent;
} }
...@@ -141,17 +141,16 @@ public class AnalysisTaskDetailDto { ...@@ -141,17 +141,16 @@ public class AnalysisTaskDetailDto {
* featured_questions * featured_questions
* 推荐问 * 推荐问
*/ */
private java.lang.String featuredQuestions; private List<String> featuredQuestions;
public java.lang.String getFeaturedQuestions() { public List<String> getFeaturedQuestions() {
return this.featuredQuestions; return featuredQuestions;
} }
public void setFeaturedQuestions(java.lang.String featuredQuestions) { public void setFeaturedQuestions(List<String> featuredQuestions) {
this.featuredQuestions = featuredQuestions; this.featuredQuestions = featuredQuestions;
} }
/** /**
* spk_sets * spk_sets
* 说话人列表 * 说话人列表
......
...@@ -56,13 +56,13 @@ public class AnalysisTaskDetailEntity { ...@@ -56,13 +56,13 @@ public class AnalysisTaskDetailEntity {
* key_word_content * key_word_content
* 关键词 * 关键词
*/ */
private String keyWordContent; private List<String> keyWordContent;
public String getKeyWordContent() { public List<String> getKeyWordContent() {
return this.keyWordContent; return keyWordContent;
} }
public void setKeyWordContent(String keyWordContent) { public void setKeyWordContent(List<String> keyWordContent) {
this.keyWordContent = keyWordContent; this.keyWordContent = keyWordContent;
} }
...@@ -139,17 +139,16 @@ public class AnalysisTaskDetailEntity { ...@@ -139,17 +139,16 @@ public class AnalysisTaskDetailEntity {
* featured_questions * featured_questions
* 推荐问 * 推荐问
*/ */
private String featuredQuestions; private List<String> featuredQuestions;
public String getFeaturedQuestions() { public List<String> getFeaturedQuestions() {
return this.featuredQuestions; return featuredQuestions;
} }
public void setFeaturedQuestions(String featuredQuestions) { public void setFeaturedQuestions(List<String> featuredQuestions) {
this.featuredQuestions = featuredQuestions; this.featuredQuestions = featuredQuestions;
} }
/** /**
* asr_status * asr_status
* 语音识别任务状态 * 语音识别任务状态
......
...@@ -2,6 +2,7 @@ package cn.com.poc.meeting.scheduler; ...@@ -2,6 +2,7 @@ package cn.com.poc.meeting.scheduler;
import cn.com.poc.common.constant.CommonConstant; import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.utils.DateUtils;
import cn.com.poc.meeting.constants.MeetingAssistantConstantEnum; import cn.com.poc.meeting.constants.MeetingAssistantConstantEnum;
import cn.com.poc.meeting.entity.BizMeetingAssistantAnalysisTaskEntity; import cn.com.poc.meeting.entity.BizMeetingAssistantAnalysisTaskEntity;
import cn.com.poc.meeting.entity.BizMeetingAssistantAsrTaskEntity; import cn.com.poc.meeting.entity.BizMeetingAssistantAsrTaskEntity;
...@@ -19,6 +20,7 @@ import org.springframework.scheduling.annotation.Scheduled; ...@@ -19,6 +20,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -92,6 +94,17 @@ public class MeetingAssistantScheduler { ...@@ -92,6 +94,17 @@ public class MeetingAssistantScheduler {
bizMeetingAssistantAsrTaskService.update(taskEntity); bizMeetingAssistantAsrTaskService.update(taskEntity);
// 更新会议内容分析任务状态 // 更新会议内容分析任务状态
updateAnalysisTaskToFailed(taskEntity); updateAnalysisTaskToFailed(taskEntity);
} else {
//判断执行时长,若超过15分钟则判断为失败.
Date now = new Date();
long diffTwoDate = DateUtils.diffTwoDate(now, taskEntity.getCreatedTime());
if (diffTwoDate > 15 * 60 * 1000){
taskEntity.setGenerateStatus(MeetingAssistantConstantEnum.FAILED.getStatus());
taskEntity.setMessage("Time Out");
bizMeetingAssistantAsrTaskService.update(taskEntity);
// 更新会议内容分析任务状态
updateAnalysisTaskToFailed(taskEntity);
}
} }
} }
} }
......
...@@ -131,16 +131,19 @@ public class MeetingAssistantAnalysisConsumerServiceImpl implements MeetingAssis ...@@ -131,16 +131,19 @@ public class MeetingAssistantAnalysisConsumerServiceImpl implements MeetingAssis
//更新会话标题 //更新会话标题
logger.info("-------- update dialogues title -------------"); logger.info("-------- update dialogues title -------------");
BizAiDialoguesEntity bizAiDialoguesEntity = new BizAiDialoguesEntity(); BizAiDialoguesEntity bizAiDialoguesEntity = new BizAiDialoguesEntity();
bizAiDialoguesEntity.setDialoguesId(message.getDiaguesId()); bizAiDialoguesEntity.setDialoguesId(bizMeetingAssistantAnalysisTaskEntity.getDiaguesId());
bizAiDialoguesEntity.setDialoguesType(AiDialoguesTypeEnum.MEETING_ASSISTANT.getType()); bizAiDialoguesEntity.setDialoguesType(AiDialoguesTypeEnum.MEETING_ASSISTANT.getType());
bizAiDialoguesEntity.setIsDeleted(CommonConstant.IsDeleted.N); bizAiDialoguesEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizAiDialoguesEntity> aiDialoguesEntities = bizAiDialoguesService.findByExample(bizAiDialoguesEntity, null); List<BizAiDialoguesEntity> aiDialoguesEntities = bizAiDialoguesService.findByExample(bizAiDialoguesEntity, null);
if (CollectionUtils.isNotEmpty(aiDialoguesEntities)) { if (CollectionUtils.isNotEmpty(aiDialoguesEntities)) {
BizAiDialoguesEntity updateAiDialoguesEntity = aiDialoguesEntities.get(0); BizAiDialoguesEntity updateAiDialoguesEntity = aiDialoguesEntities.get(0);
if (StringUtils.isNotBlank(bizMeetingAssistantAnalysisTaskEntity.getThemeContent())
&& !bizMeetingAssistantAnalysisTaskEntity.getThemeContent().equals(updateAiDialoguesEntity.getTitle())) {
updateAiDialoguesEntity.setTitle(bizMeetingAssistantAnalysisTaskEntity.getThemeContent()); updateAiDialoguesEntity.setTitle(bizMeetingAssistantAnalysisTaskEntity.getThemeContent());
bizAiDialoguesService.update(updateAiDialoguesEntity); bizAiDialoguesService.update(updateAiDialoguesEntity);
logger.info("------- update dialogues title success , title:{} -----------", updateAiDialoguesEntity.getTitle()); logger.info("------- update dialogues title success , title:{} -----------", updateAiDialoguesEntity.getTitle());
} }
}
} }
...@@ -236,7 +239,7 @@ public class MeetingAssistantAnalysisConsumerServiceImpl implements MeetingAssis ...@@ -236,7 +239,7 @@ public class MeetingAssistantAnalysisConsumerServiceImpl implements MeetingAssis
KeyWordCounter.cacheKeyWordCount(message.getDiaguesId(), countMap); KeyWordCounter.cacheKeyWordCount(message.getDiaguesId(), countMap);
updateMessage.setKeyWordGenerateStatus(MeetingAssistantConstantEnum.COMPLETED.getStatus()); updateMessage.setKeyWordGenerateStatus(MeetingAssistantConstantEnum.COMPLETED.getStatus());
updateMessage.setKeyWordContent(JsonUtils.serialize(keyWords)); updateMessage.setKeyWordContent(JsonUtils.serialize(countMap.entrySet()));
} else { } else {
updateMessage.setKeyWordGenerateStatus(MeetingAssistantConstantEnum.FAILED.getStatus()); updateMessage.setKeyWordGenerateStatus(MeetingAssistantConstantEnum.FAILED.getStatus());
} }
......
...@@ -83,7 +83,7 @@ public class ASRApi { ...@@ -83,7 +83,7 @@ public class ASRApi {
Assert.notBlank(sessionId); Assert.notBlank(sessionId);
HttpUriRequest httpUriRequest = RequestBuilder.post() HttpUriRequest httpUriRequest = RequestBuilder.post()
.setUri(ENDPOINT + GET_DETAIL_API) .setUri(ENDPOINT + GET_DETAIL_API)
.addHeader(new BasicHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString())) // .addHeader(new BasicHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString()))
.addParameter("sessionId", sessionId) .addParameter("sessionId", sessionId)
.build(); .build();
return LocalHttpClient.executeJsonResult(httpUriRequest, GetDetailResult.class); return LocalHttpClient.executeJsonResult(httpUriRequest, GetDetailResult.class);
......
simultanous_interpretation.endpoint= simultanous_interpretation.endpoint=http://192.168.21.102:48100
\ No newline at end of file \ No newline at end of file
simultanous_interpretation.endpoint= simultanous_interpretation.endpoint=http://192.168.21.102:48100
\ No newline at end of file \ No newline at end of file
simultanous_interpretation.endpoint= simultanous_interpretation.endpoint=http://192.168.21.102:48100
\ No newline at end of file
simultanous_interpretation.endpoint= simultanous_interpretation.endpoint=http://192.168.21.102:48100
\ No newline at end of file \ No newline at end of file
...@@ -24,7 +24,7 @@ public class ASRTest { ...@@ -24,7 +24,7 @@ public class ASRTest {
@Test @Test
public void test_speechToText() { public void test_speechToText() {
String fileUrl = ""; String fileUrl = "https://gsst-poe-sit.gz.bcebos.com/data/20250811/1754897064286.wav";
String uuid = UUIDTool.getUUID(); String uuid = UUIDTool.getUUID();
System.out.println("sessionId : " + uuid); System.out.println("sessionId : " + uuid);
String result = asrService.speechToText(uuid, fileUrl); String result = asrService.speechToText(uuid, fileUrl);
...@@ -33,7 +33,7 @@ public class ASRTest { ...@@ -33,7 +33,7 @@ public class ASRTest {
@Test @Test
public void test_asrGetDetail() { public void test_asrGetDetail() {
String sessionId = ""; String sessionId = "meeting_assistant_c9c7021dd0db4ecda6bf7eb3a325e745_4";
AsrOfflineDetailResult asrServiceDetail = asrService.getDetail(sessionId); AsrOfflineDetailResult asrServiceDetail = asrService.getDetail(sessionId);
System.out.println(JsonUtils.serialize(asrServiceDetail)); System.out.println(JsonUtils.serialize(asrServiceDetail));
} }
......
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