Skip to content

Feature/voice interview#71

Merged
i3months merged 3 commits into
devfrom
feature/voice-interview
Jun 3, 2026
Merged

Feature/voice interview#71
i3months merged 3 commits into
devfrom
feature/voice-interview

Conversation

@i3months

@i3months i3months commented Jun 3, 2026

Copy link
Copy Markdown
Member

변경 사항

i3months and others added 3 commits June 3, 2026 12:01
음성 면접 재생을 위해 ttsAudioPath/audioFilePath(원시 S3 키)를
조회 응답에서 presigned URL(ttsAudioUrl/audioFileUrl)로 변환.
문서 다운로드 presign 패턴과 동일, TTL 30분.

- MessageResult/MessageResponse: ttsAudioUrl/audioFileUrl 필드 추가
- InterviewMessageService.list: ObjectStorageClient 주입,
  TTS SUCCEEDED 질문 + 음성 답변 원본을 presign (개별 try/catch)
- openapi.json 재생성

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
백엔드 음성 파이프라인(STT/TTS)이 이미 있었으나 프론트가 텍스트만
사용. 풀 음성 경험을 연결한다.

질문 음성 재생:
- QuestionBubble: ttsStatus=SUCCEEDED + ttsAudioUrl 이면 "음성 듣기"
  버튼 + <audio>. 최신 질문은 자동재생 시도(차단 시 조용히 폴백)
- ConversationThread: 마지막 질문에만 autoPlay 전달

음성 답변:
- useVoiceRecorder(lib/media): getUserMedia + MediaRecorder, 권한
  거부/미지원 감지 → 텍스트 폴백
- messageApi.submitVoiceAnswer: multipart 업로드(/messages/voice)
- useLiveInterview: 음성 업로드 mutation + 성공 시 메시지 무효화
- AnswerComposer: 마이크 버튼 + 녹음/업로드 바(취소·전송)
- AnswerBubble: content 없는 placeholder 는 "음성 인식 중…",
  STT 실패 시 안내 + 본인 음성(audioFileUrl) 재생

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
음성 답변 placeholder 의 임시 content 가 null 이 아니라 리터럴
"(transcribing)" 임(백엔드 VOICE_TRANSCRIPTION_PENDING_TEXT).
빈 값 체크로는 못 걸러 "(transcribing)" 이 그대로 노출됨.

- domain/session: VOICE_TRANSCRIBING_TEXT 상수 + isTranscribing() 헬퍼
- AnswerBubble: isTranscribing 으로 판별 → "음성 인식 중…" 표시

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
stackup Ready Ready Preview, Comment Jun 3, 2026 3:10am

@i3months i3months merged commit 3f43979 into dev Jun 3, 2026
3 checks 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.

1 participant