Skip to content

Feat: 대화기록 연동 및 구현#20

Merged
Yujin1219 merged 10 commits into
developfrom
feat/meeting-dialogue
May 11, 2026
Merged

Feat: 대화기록 연동 및 구현#20
Yujin1219 merged 10 commits into
developfrom
feat/meeting-dialogue

Conversation

@ggamnunq
Copy link
Copy Markdown
Contributor

@ggamnunq ggamnunq commented May 10, 2026

🎯 작업 내용

주요 변경사항

  • 실시간 회의 발화를 메모리에 임시 저장하고, 회의 종료 시 FastAPI live_messages로 전달하도록 연결했습니다.
  • FastAPI 전사 응답의 member_id를 기준으로 DecisionTimelineDialogue 저장 흐름을 정리했습니다.
  • MeetingAnalysis / Dialogue / Application 저장이 중복 실행되어도 누적되지 않도록 idempotent하게 보강했습니다.
  • 회의 분석 저장이 끝난 뒤, 저장된 Application.id를 포함해 /api/meeting-analysis/embeddings를 호출하도록 통합했습니다.
  • 회의 히스토리 응답의 DialogueDTO.timestamp를 회의 시작 시각 기준 경과 시간(mm:ss)으로 변경했습니다.
  • FastAPI 전사 응답을 디버깅할 수 있도록 TranscribeApplicationRunResponse 전체 로그를 추가했습니다.

상세 내용

실시간 발화 임시 저장 및 FastAPI 전달

  • AUDIO_TEXT 발화를 메모리에 임시 저장하는 저장소를 추가했습니다.
  • payload.is_final == false 인 interim 발화는 저장하지 않도록 가드했습니다.
  • 같은 화자의 직전 발화와 텍스트가 같으면 중복 저장하지 않도록 dedup 했습니다.
  • 회의 종료 시 메모리에 쌓인 발화를 live_messages JSON으로 직렬화해 FastAPI 전사 요청에 함께 전달합니다.
  • 분석용으로 전달된 뒤에는 해당 회의의 임시 저장소를 비웁니다.

FastAPI 전사 응답 기반 발화자 매핑 정리

  • FastAPI 응답의 speaker_id / speaker 문자열을 더 이상 추정 매핑하지 않고, member_id를 그대로 사용하도록 변경했습니다.
  • DecisionTimeline.memberId는 FastAPI가 내려준 member_id를 그대로 저장합니다.
  • DialoguememberId가 유효한 경우에만 저장하고, 매칭 실패한 세그먼트는 skip합니다.
  • 기존의 speaker 문자열 파싱, 인덱스 추정, 첫 멤버 fallback 로직은 제거했습니다.

분석 결과 저장 흐름 정리

  • MeetingAnalysis는 기존 값이 있으면 update, 없으면 insert 하도록 정리했습니다.
  • Dialogue는 bulk delete/saveAll 대신 meeting.getDialogues().clear() + addAll() 방식으로 JPA orphanRemoval에 맡기도록 변경했습니다.
  • Application 저장은 기존 데이터를 먼저 삭제한 뒤 다시 저장하는 진짜 replace 방식으로 바꿨습니다.
  • ApplicationBase, ApplicationTimeline, DecisionBase, DecisionTimeline의 중복 누적을 막기 위해 회의 기준 삭제 메서드를 추가했습니다.
  • 회의 분석 저장이 끝난 뒤, 저장된 Application.id를 기반으로 FastAPI /api/meeting-analysis/embeddings를 호출해 임베딩 저장을 연결했습니다.
  • 임베딩 호출은 트랜잭션 밖에서 수행하고, 실패해도 분석 결과 저장은 롤백되지 않도록 분리했습니다.

회의 히스토리 응답 정리

  • DialogueDTO.timestampspeechDateTime의 절대 시각이 아니라 회의 시작 시각 기준 경과 시간으로 변경했습니다.
  • 예: 회의 시작 후 2분 31초면 02:31 형태로 반환합니다.

✅ 체크리스트

  • 코드 빌드가 정상적으로 완료되었나요?
  • 코드 리뷰 요청 전 self-review를 진행했나요?

📋 API 명세서

image

💬 리뷰 요청사항 (선택)

📚 참고 자료 (선택)

@ggamnunq ggamnunq self-assigned this May 10, 2026
@ggamnunq ggamnunq changed the title 대화기록 연동 및 구현 Feat: 대화기록 연동 및 구현 May 10, 2026
Copy link
Copy Markdown
Member

@Yujin1219 Yujin1219 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굿굿!!

@Yujin1219 Yujin1219 merged commit c4088cc into develop May 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants