Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cmeeting
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
翟斌
cmeeting
Commits
5df62d61
提交
5df62d61
authored
7月 25, 2025
作者:
洪东保
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
日志
父级
23f53cb9
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
14 行增加
和
9 行删除
+14
-9
src/main/java/com/cmeeting/job/FileProcessTask.java
+10
-5
src/main/java/com/cmeeting/service/impl/TencentMeetingServiceImpl.java
+4
-4
没有找到文件。
src/main/java/com/cmeeting/job/FileProcessTask.java
浏览文件 @
5df62d61
...
...
@@ -120,7 +120,7 @@ public class FileProcessTask {
// 实际处理逻辑
public
void
process
()
{
// 根据meeting和subMeetingId上锁
boolean
getKey
=
redisUtils
.
setnx
(
"meeting_"
+
meetingId
+
subMeetingId
,
meetingId
,
19
*
60
);
boolean
getKey
=
redisUtils
.
setnx
(
"meeting_"
+
meetingId
+
subMeetingId
,
meetingId
,
19
*
60
);
if
(!
getKey
)
{
return
;
}
...
...
@@ -218,6 +218,9 @@ public class FileProcessTask {
throw
new
RuntimeException
(
"获取的转录文本为空,跳过纪要生成"
);
}
// 1. 根据转录文件内容recordTextBuffer判断使用模板类型
Boolean
emailGenerateAccess
=
meetingInfo
.
getEmailGenerateAccess
();
if
(
emailGenerateAccess
)
{
Long
choiceTemplateType
=
choiceTemplateType
(
meetingInfo
.
getSubject
());
log
.
info
(
"choiceTemplateType->{}"
,
choiceTemplateType
);
// 2. 获取这个会议需要使用的一个模板
...
...
@@ -235,6 +238,7 @@ public class FileProcessTask {
}
String
processedResult
=
processWithClaude
(
recordTextBuffer
.
toString
(),
meetingDate
,
participantNames
,
template
.
getPrompt
());
String
minutesPath
=
saveResult
(
processedResult
,
recordTextBuffer
.
toString
().
getBytes
(
StandardCharsets
.
UTF_8
),
meetingInfo
,
toUserCode
,
template
);
DateTimeFormatter
fmt
=
DateTimeFormatter
.
ofPattern
(
"yyyyMMdd"
);
try
(
InputStream
is
=
new
FileInputStream
(
minutesPath
))
{
...
...
@@ -269,6 +273,7 @@ public class FileProcessTask {
.
build
();
emailPush
(
emailPushBuilder
);
isSuccess
=
true
;
}
}
catch
(
Exception
e
)
{
StringWriter
sw
=
new
StringWriter
();
PrintWriter
pw
=
new
PrintWriter
(
sw
);
...
...
@@ -340,8 +345,7 @@ public class FileProcessTask {
* 提供会议转录文件和会议主题,判断会议类型
*
* @param subject 会议主题
* @return
* String token = "AKIAXFAXF62IWJXGLVEE.LnKInaahcMZG9zLsGMH3nTLOw3S3lK5Vcu0+ifnO";
* @return String token = "AKIAXFAXF62IWJXGLVEE.LnKInaahcMZG9zLsGMH3nTLOw3S3lK5Vcu0+ifnO";
* 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";
* int maxTokens = 5000;
...
...
@@ -379,7 +383,7 @@ public class FileProcessTask {
* List<Message> messages = new ArrayList<>();
* ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), formatPrompt);
* messages.add(chatMessage);
*
*
<p>
* // 调用Claude API处理文件
* String response = call_llm(apiAddr, model, token, messages, maxTokens);
* JSONObject object = JSONObject.parseObject(response);
...
...
@@ -461,7 +465,6 @@ public class FileProcessTask {
private
String
saveResult
(
String
content
,
byte
[]
recordData
,
MeetingInfo
meetingInfo
,
String
toUserCode
,
MeetingRecordTemplate
meetingRecordTemplate
)
{
String
meetingName
;
//转录文件临时存储路径
// String recordContentPath = meetingId + "-recordContent-" + IdUtil.fastSimpleUUID() + ".txt";
String
recordContentPath
;
//生成的xml临时存储路径
String
recordXmlPath
=
meetingId
+
"-recordXmlPath-"
+
IdUtil
.
fastSimpleUUID
()
+
".xml"
;
...
...
@@ -470,6 +473,8 @@ public class FileProcessTask {
//填充后的会议纪要word文件临时路径
String
meetingMinutesPath
;
try
{
// TODO 转录文件加密并且直接上传到minio,不走layout和文档库
String
subject
=
meetingInfo
.
getSubject
();
String
fileName
=
String
.
format
(
subject
+
"_转写原文_%s.txt"
,
DateUtil
.
today
());
MultipartFile
multipartFile
=
new
CustomMultipartFile
(
...
...
src/main/java/com/cmeeting/service/impl/TencentMeetingServiceImpl.java
浏览文件 @
5df62d61
...
...
@@ -242,21 +242,21 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,
// 满足以上所有则emailGenerateAccess为ture
if
(
generateAccess
)
{
generateAccess
=
generateAccess
&&
weComUserMap
.
containsKey
(
userDTO
.
getWid
());
log
.
info
(
"
uid是否绑定企业微信: {}"
,
generateAccess
);
log
.
info
(
"
用户: {}, uid是否绑定企业微信: {}"
,
userId
,
generateAccess
);
}
if
(
generateAccess
)
{
List
<
SysUserSyncCategory
>
categoryList
=
sysUserSyncService
.
getCategoryListByUserId
(
userId
);
List
<
String
>
deptIds
=
categoryList
.
stream
().
map
(
SysUserSyncCategory:
:
getDeptId
).
collect
(
Collectors
.
toList
());
generateAccess
=
generateAccess
&&
modulePermissionService
.
checkAdminPermission
(
deptIds
,
userId
);
log
.
info
(
"
超管是否授权给用户: {}"
,
generateAccess
);
log
.
info
(
"
用户: {}, 超管是否授权给用户: {}"
,
userId
,
generateAccess
);
}
if
(
generateAccess
)
{
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
);
log
.
info
(
"
是否推送邮箱: {}"
,
emailPushAccess
);
log
.
info
(
"
用户: {},是否推送邮箱: {}"
,
userId
,
emailPushAccess
);
// 查询会议开始和结束时间
MeetingInfo
startAndEndTimeByMeetingId
=
TencentMeetingApiUtil
.
getStartAndEndTimeByMeetingId
(
meetingId
);
//会议基本信息保存
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论