提交 5df62d61 作者: 洪东保

日志

父级 23f53cb9
...@@ -120,7 +120,7 @@ public class FileProcessTask { ...@@ -120,7 +120,7 @@ public class FileProcessTask {
// 实际处理逻辑 // 实际处理逻辑
public void process() { public void process() {
// 根据meeting和subMeetingId上锁 // 根据meeting和subMeetingId上锁
boolean getKey = redisUtils.setnx("meeting_" + meetingId + subMeetingId, meetingId, 19*60); boolean getKey = redisUtils.setnx("meeting_" + meetingId + subMeetingId, meetingId, 19 * 60);
if (!getKey) { if (!getKey) {
return; return;
} }
...@@ -218,6 +218,9 @@ public class FileProcessTask { ...@@ -218,6 +218,9 @@ public class FileProcessTask {
throw new RuntimeException("获取的转录文本为空,跳过纪要生成"); throw new RuntimeException("获取的转录文本为空,跳过纪要生成");
} }
// 1. 根据转录文件内容recordTextBuffer判断使用模板类型 // 1. 根据转录文件内容recordTextBuffer判断使用模板类型
Boolean emailGenerateAccess = meetingInfo.getEmailGenerateAccess();
if (emailGenerateAccess) {
Long choiceTemplateType = choiceTemplateType(meetingInfo.getSubject()); Long choiceTemplateType = choiceTemplateType(meetingInfo.getSubject());
log.info("choiceTemplateType->{}", choiceTemplateType); log.info("choiceTemplateType->{}", choiceTemplateType);
// 2. 获取这个会议需要使用的一个模板 // 2. 获取这个会议需要使用的一个模板
...@@ -235,6 +238,7 @@ public class FileProcessTask { ...@@ -235,6 +238,7 @@ public class FileProcessTask {
} }
String processedResult = processWithClaude(recordTextBuffer.toString(), meetingDate, participantNames, template.getPrompt()); String processedResult = processWithClaude(recordTextBuffer.toString(), meetingDate, participantNames, template.getPrompt());
String minutesPath = saveResult(processedResult, recordTextBuffer.toString().getBytes(StandardCharsets.UTF_8), meetingInfo, toUserCode, template); String minutesPath = saveResult(processedResult, recordTextBuffer.toString().getBytes(StandardCharsets.UTF_8), meetingInfo, toUserCode, template);
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMMdd"); DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMMdd");
try (InputStream is = new FileInputStream(minutesPath)) { try (InputStream is = new FileInputStream(minutesPath)) {
...@@ -269,6 +273,7 @@ public class FileProcessTask { ...@@ -269,6 +273,7 @@ public class FileProcessTask {
.build(); .build();
emailPush(emailPushBuilder); emailPush(emailPushBuilder);
isSuccess = true; isSuccess = true;
}
} catch (Exception e) { } catch (Exception e) {
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw); PrintWriter pw = new PrintWriter(sw);
...@@ -340,8 +345,7 @@ public class FileProcessTask { ...@@ -340,8 +345,7 @@ public class FileProcessTask {
* 提供会议转录文件和会议主题,判断会议类型 * 提供会议转录文件和会议主题,判断会议类型
* *
* @param subject 会议主题 * @param subject 会议主题
* @return * @return String token = "AKIAXFAXF62IWJXGLVEE.LnKInaahcMZG9zLsGMH3nTLOw3S3lK5Vcu0+ifnO";
* String token = "AKIAXFAXF62IWJXGLVEE.LnKInaahcMZG9zLsGMH3nTLOw3S3lK5Vcu0+ifnO";
* String apiAddr = llmApiAddr + "/llm/sse-invoke"; * String apiAddr = llmApiAddr + "/llm/sse-invoke";
* String model = "arn:aws:bedrock:us-east-1:491822380689:inference-profile/us.anthropic.claude-3-7-sonnet-20250219-v1:0"; * String model = "arn:aws:bedrock:us-east-1:491822380689:inference-profile/us.anthropic.claude-3-7-sonnet-20250219-v1:0";
* int maxTokens = 5000; * int maxTokens = 5000;
...@@ -379,7 +383,7 @@ public class FileProcessTask { ...@@ -379,7 +383,7 @@ public class FileProcessTask {
* List<Message> messages = new ArrayList<>(); * List<Message> messages = new ArrayList<>();
* ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), formatPrompt); * ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), formatPrompt);
* messages.add(chatMessage); * messages.add(chatMessage);
* * <p>
* // 调用Claude API处理文件 * // 调用Claude API处理文件
* String response = call_llm(apiAddr, model, token, messages, maxTokens); * String response = call_llm(apiAddr, model, token, messages, maxTokens);
* JSONObject object = JSONObject.parseObject(response); * JSONObject object = JSONObject.parseObject(response);
...@@ -461,7 +465,6 @@ public class FileProcessTask { ...@@ -461,7 +465,6 @@ public class FileProcessTask {
private String saveResult(String content, byte[] recordData, MeetingInfo meetingInfo, String toUserCode, MeetingRecordTemplate meetingRecordTemplate) { private String saveResult(String content, byte[] recordData, MeetingInfo meetingInfo, String toUserCode, MeetingRecordTemplate meetingRecordTemplate) {
String meetingName; String meetingName;
//转录文件临时存储路径 //转录文件临时存储路径
// String recordContentPath = meetingId + "-recordContent-" + IdUtil.fastSimpleUUID() + ".txt";
String recordContentPath; String recordContentPath;
//生成的xml临时存储路径 //生成的xml临时存储路径
String recordXmlPath = meetingId + "-recordXmlPath-" + IdUtil.fastSimpleUUID() + ".xml"; String recordXmlPath = meetingId + "-recordXmlPath-" + IdUtil.fastSimpleUUID() + ".xml";
...@@ -470,6 +473,8 @@ public class FileProcessTask { ...@@ -470,6 +473,8 @@ public class FileProcessTask {
//填充后的会议纪要word文件临时路径 //填充后的会议纪要word文件临时路径
String meetingMinutesPath; String meetingMinutesPath;
try { try {
// TODO 转录文件加密并且直接上传到minio,不走layout和文档库
String subject = meetingInfo.getSubject(); String subject = meetingInfo.getSubject();
String fileName = String.format(subject + "_转写原文_%s.txt", DateUtil.today()); String fileName = String.format(subject + "_转写原文_%s.txt", DateUtil.today());
MultipartFile multipartFile = new CustomMultipartFile( MultipartFile multipartFile = new CustomMultipartFile(
......
...@@ -242,21 +242,21 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper, ...@@ -242,21 +242,21 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,
// 满足以上所有则emailGenerateAccess为ture // 满足以上所有则emailGenerateAccess为ture
if (generateAccess) { if (generateAccess) {
generateAccess = generateAccess && weComUserMap.containsKey(userDTO.getWid()); generateAccess = generateAccess && weComUserMap.containsKey(userDTO.getWid());
log.info("uid是否绑定企业微信: {}", generateAccess); log.info("用户: {}, uid是否绑定企业微信: {}", userId, generateAccess);
} }
if (generateAccess) { if (generateAccess) {
List<SysUserSyncCategory> categoryList = sysUserSyncService.getCategoryListByUserId(userId); List<SysUserSyncCategory> categoryList = sysUserSyncService.getCategoryListByUserId(userId);
List<String> deptIds = categoryList.stream().map(SysUserSyncCategory::getDeptId).collect(Collectors.toList()); List<String> deptIds = categoryList.stream().map(SysUserSyncCategory::getDeptId).collect(Collectors.toList());
generateAccess = generateAccess && modulePermissionService.checkAdminPermission(deptIds, userId); generateAccess = generateAccess && modulePermissionService.checkAdminPermission(deptIds, userId);
log.info("超管是否授权给用户: {}", generateAccess); log.info("用户: {}, 超管是否授权给用户: {}", userId, generateAccess);
} }
if (generateAccess) { if (generateAccess) {
generateAccess = generateAccess && modulePermissionService.personalStatus(userId); generateAccess = generateAccess && modulePermissionService.personalStatus(userId);
log.info("个人是否开启纪要功能: {}", generateAccess); log.info("用户: {}, 个人是否开启纪要功能: {}", userId, generateAccess);
} }
// 是否推送邮箱 // 是否推送邮箱
emailPushAccess = generateAccess && (weComUserMap.containsKey(userDTO.getWid()) ? weComUserMap.get(userDTO.getWid()).getEmailPushAccess() : Boolean.FALSE); emailPushAccess = generateAccess && (weComUserMap.containsKey(userDTO.getWid()) ? weComUserMap.get(userDTO.getWid()).getEmailPushAccess() : Boolean.FALSE);
log.info("是否推送邮箱: {}", emailPushAccess); log.info("用户: {},是否推送邮箱: {}", userId, emailPushAccess);
// 查询会议开始和结束时间 // 查询会议开始和结束时间
MeetingInfo startAndEndTimeByMeetingId = TencentMeetingApiUtil.getStartAndEndTimeByMeetingId(meetingId); MeetingInfo startAndEndTimeByMeetingId = TencentMeetingApiUtil.getStartAndEndTimeByMeetingId(meetingId);
//会议基本信息保存 //会议基本信息保存
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论