녹음 중지 시 오디오 업로드 → 자동 화자 분리(Google Cloud STT)
→ 자동 AI 요약 순서로 진행하도록 변경
기존에는 수동으로 "화자 분리" 버튼을 눌러야 했음
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
수동으로 '요약 실행' 클릭 시 로컬 세그먼트가 서버에 저장되지 않아
full_transcript가 비어있어 '요약할 텍스트가 없습니다' 에러 발생.
요약 API 호출 전에 로컬 세그먼트를 먼저 서버에 저장하도록 수정.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- GoogleCloudService에 speechToTextWithDiarization 메서드 추가
- Google STT V1 diarizationConfig 활성화로 자동 화자 구분
- MeetingMinuteService에 processDiarization 메서드 추가
- POST /{id}/diarize 엔드포인트 및 라우트 추가
- 프론트엔드에 '화자 분리' 버튼 추가 (RecordingControlBar)
- saveSegments 컨트롤러에 try-catch 에러 핸들링 추가
- 빈 텍스트 세그먼트 필터링 로직 추가 (서버/클라이언트 양쪽)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- MeetingMinute/MeetingMinuteSegment 모델
- MeetingMinuteService (CRUD, GCS 업로드, Gemini AI 요약)
- MeetingMinuteController (11개 엔드포인트)
- React SPA Blade 뷰 (대화기록/스크립트 탭, AI 요약 사이드패널)
- Web Speech API 실시간 STT + 수동 화자 전환 + MediaRecorder 녹음
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 모달에서 사진 업로드/삭제/수정 시 배경 리스트 fetchList() 제거
- modalDirtyRef로 변경 여부 추적
- 모달 닫힐 때만 dirty 상태면 리스트 한 번 갱신
- 카드 많을 때 불필요한 리렌더링으로 인한 성능 저하 방지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- interim 텍스트: italic + gray (수정 가능)
- final 텍스트: normal weight + solid color (영구 저장, 삭제 불가)
- finalizedSegments 배열로 확정 텍스트 누적 관리
- 고정 line-height(1.6)으로 부드러운 전환
- 녹음 종료 후 2초 dismiss 타이머
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 말풍선 max-w 확대 + 줄바꿈 허용 (truncate 제거)
- final 결과 시 녹색 말풍선으로 1.2초 유지 후 페이드
- interim→final 전환 시 깜빡임 없이 자연스럽게 연결
- 인식 중 노란 점 애니메이션, 확정 시 체크 아이콘
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>