From d75f9fd9cacebb8efff11b667c96a459e485999a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=84=EB=8F=99=EC=9E=AC?= Date: Fri, 22 Aug 2025 03:02:42 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat/#348:=20Proceeding=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=83=9D=EC=84=B1=EC=8B=9C=20lastOpened=EC=97=90?= =?UTF-8?q?=20=EC=8D=B8=EB=84=A4=EC=9D=BC=ED=82=A4=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MeetingCommandServiceImpl.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/haru/api/domain/meeting/service/MeetingCommandServiceImpl.java b/src/main/java/com/haru/api/domain/meeting/service/MeetingCommandServiceImpl.java index 3c5827e6..293be09d 100644 --- a/src/main/java/com/haru/api/domain/meeting/service/MeetingCommandServiceImpl.java +++ b/src/main/java/com/haru/api/domain/meeting/service/MeetingCommandServiceImpl.java @@ -1,5 +1,7 @@ package com.haru.api.domain.meeting.service; +import com.haru.api.domain.lastOpened.entity.UserDocumentLastOpened; +import com.haru.api.domain.lastOpened.repository.UserDocumentLastOpenedRepository; import com.haru.api.domain.lastOpened.service.UserDocumentLastOpenedService; import com.haru.api.domain.meeting.converter.MeetingConverter; import com.haru.api.domain.meeting.dto.MeetingRequestDTO; @@ -42,6 +44,8 @@ import java.util.List; import java.util.stream.Collectors; +import static com.haru.api.domain.lastOpened.entity.enums.DocumentType.AI_MEETING_MANAGER; + @Slf4j @Service @RequiredArgsConstructor @@ -54,6 +58,7 @@ public class MeetingCommandServiceImpl implements MeetingCommandService { private final KeywordRepository keywordRepository; private final ChatGPTClient chatGPTClient; private final UserDocumentLastOpenedService userDocumentLastOpenedService; + private final UserDocumentLastOpenedRepository userDocumentLastOpenedRepository; private final WebSocketSessionRegistry webSocketSessionRegistry; private final SpeechSegmentRepository speechSegmentRepository; private final MarkdownFileUploader markdownFileUploader; @@ -275,16 +280,22 @@ public void processAfterMeeting(AudioSessionBuffer sessionBuffer) { currentMeeting.initThumbnailKeyName(newThumbnailKey); // Meeting 엔티티에 썸네일 키 저장 log.info("회의록 썸네일 생성/업데이트 완료. Key: {}", newThumbnailKey); + + List foundLastOpenedList = userDocumentLastOpenedRepository.findByDocumentIdAndDocumentType(currentMeeting.getId(), AI_MEETING_MANAGER); + foundLastOpenedList.forEach(userDocumentLastOpened -> { + userDocumentLastOpened.updateThumbnailKeyName(newThumbnailKey); + }); + + } catch (Exception e) { log.error("meetingId: {}의 PDF 또는 썸네일 생성/업로드 중 에러 발생", currentMeeting.getId(), e); + throw new MeetingHandler(ErrorStatus.MEETING_FILE_UPLOAD_FAIL); } log.info("meetingId: {}의 AI 회의록 생성 및 저장 완료.", currentMeeting.getId()); } else { log.warn("meetingId: {}의 AI 분석 결과가 비어있습니다.", currentMeeting.getId()); } - - } else { log.warn("meetingId: {}에 처리할 오디오 데이터가 없습니다.", currentMeeting.getId()); } From dfd6377f97ba567c8df9ecb5d3f214db84649ba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9E=84=EB=8F=99=EC=9E=AC?= Date: Fri, 22 Aug 2025 04:07:49 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix/#348:=20proceeding=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=EC=8B=9C=20=EC=B5=9C=EA=B7=BC=EB=AC=B8=EC=84=9C=20=EC=8D=B8?= =?UTF-8?q?=EB=84=A4=EC=9D=BC=20=EA=B0=B1=EC=8B=A0=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../meeting/service/MeetingCommandServiceImpl.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/haru/api/domain/meeting/service/MeetingCommandServiceImpl.java b/src/main/java/com/haru/api/domain/meeting/service/MeetingCommandServiceImpl.java index 293be09d..7cebb14f 100644 --- a/src/main/java/com/haru/api/domain/meeting/service/MeetingCommandServiceImpl.java +++ b/src/main/java/com/haru/api/domain/meeting/service/MeetingCommandServiceImpl.java @@ -199,11 +199,12 @@ public void adjustProceeding(User user, Meeting meeting, MeetingRequestDTO.meeti // 썸네일 생성 및 업데이트 String newThumbnailKey = markdownFileUploader.createOrUpdateThumbnail(pdfKey, "meeting" + meeting.getId(), meeting.getThumbnailKeyName()); log.info("회의록 썸네일 생성/업데이트 완료. Key: {}", newThumbnailKey); - // Meeting AI 회의록 수정 시 워크스페이스에 속해있는 모든 유저에 대해 썸네일 이미지 키 수정 - foundMeeting.initProceedingPdfKeyName(newThumbnailKey); - List usersInWorkspace = userWorkspaceRepository.findUsersByWorkspaceId(foundMeeting.getWorkspace().getId()); - userDocumentLastOpenedService.updateRecordsThumbnailForWorkspaceUsers(usersInWorkspace, foundMeeting); + List foundLastOpenedList = userDocumentLastOpenedRepository.findByDocumentIdAndDocumentType(foundMeeting.getId(), AI_MEETING_MANAGER); + foundLastOpenedList.forEach(userDocumentLastOpened -> { + userDocumentLastOpened.updateThumbnailKeyName(newThumbnailKey); + }); + } catch (Exception e) { log.error("meetingId: {}의 PDF 또는 썸네일 생성/업로드 중 에러 발생", meeting.getId(), e); throw new RuntimeException("파일 갱신 중 오류가 발생했습니다.", e); @@ -287,6 +288,7 @@ public void processAfterMeeting(AudioSessionBuffer sessionBuffer) { }); + } catch (Exception e) { log.error("meetingId: {}의 PDF 또는 썸네일 생성/업로드 중 에러 발생", currentMeeting.getId(), e); throw new MeetingHandler(ErrorStatus.MEETING_FILE_UPLOAD_FAIL);