Repository navigation
feat: 사용자가 음성 분석을 면접당 2번까지 다시 요청할 수 있게 함(D3) - #95
Merged
Merged
Conversation
정상 결과도 말더듬 라인이 없어 늘 partial이라, 상태가 아니라 답변 단위로 다시 보낼 만한지 가린다.
결과가 없거나 분석 서버가 retryable=true로 알린 실패가 있는 답변만 새 요청 id로 다시 보낸다.
- POST /api/interviews/{id}/audio-analysis/retry, 조회 응답에 canRetry
- V33: feedback_dispatch.user_retry_count. 한도·중복 클릭을 조건부 갱신 한 문장으로 막는다
- 다시 분석하는 동안 그 답변은 PENDING으로 보여 웹이 새 결과까지 조회한다
- 녹음을 실은 가장 나중 요청이 닫혔으면 앞선 결과가 있어도 다시 보낸다
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
danjee2009
reviewed
Oct 14, 2026
danjee2009
left a comment
Member
There was a problem hiding this comment.
면접 단위 재요청 한도, 조건부 대기 행 갱신, 실패·재분석 중 상태 표시, 기존 요청 재전송 경로와 새 Postgres 테스트를 검토했습니다. 확인한 범위에서 수정이 필요한 정확성·API 호환성·데이터 일관성 문제는 찾지 못했습니다. GitHub Actions의 전체 테스트가 통과했습니다. 별도 로컬 테스트는 실행하지 않았습니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
개요
영상·음성 분석 인계 문서(10/14)의 B1, D3 음성 재요청입니다. main(da6abbe) 기준입니다. Analysis 서버는 수정하지 않습니다.
인계 문서가 명세에서 먼저 정하라고 한 두 가지는 아래처럼 정했습니다.
retryable=true가 있는 답변만 대상입니다.partial입니다. 그래서 "partial이면 허용"을 쓰면 모든 면접이 대상이 됩니다.partial이거나retryable=false이면 같은 음성으로는 결과가 같아 대상에서 뺐습니다.변경
1. API
POST /api/interviews/{id}/audio-analysis/retry→ 202, 본문은 GET과 같은AudioAnalysisResponse입니다.GET …/audio-analysis응답에canRetry를 추가했습니다.2. 재요청 처리 (
AudioAnalysisService.retry)reopenForUserRetry로 되돌립니다. 상태 DONE·FAILED,user_retry_count < 2조건을 확인하고, 시도 횟수를 0으로, 재요청 횟수를 +1 합니다.confirmAcceptance가 jobId 없는 행을 그 requestId로 보냅니다. 따로 보내는 길은 없습니다.3. 조회·재전송 규칙
PENDING입니다. 앞선 결과를 보여 주면 전체 상태가 PENDING에서 벗어나 웹이 조회를 멈추고 새 결과를 놓칩니다.newRequest로 합쳤습니다.4. DB
V33__add_audio_analysis_user_retry.sql:feedback_dispatch.user_retry_count INTEGER NOT NULL DEFAULT 0테스트
retryable=false제외, 파일 오류가retryable=true면 포함canRetryreopenForUserRetry: 요청 중이면 0, FAILED도 받음, 한도에서 0다른 레포
canRetry일 때만 재요청 버튼을 보여 줍니다. 요청 뒤PENDING인 동안 다시 조회합니다.docs/interview-recording.md조회 계약에canRetry와 재요청 엔드포인트를 추가해야 합니다.리뷰 시 참고
retry가 대기 행의lastActivityAt을 바꾸지 않습니다. 면접을 마친 지 2분(업로드 유예) 안에 재요청하면 전송이 그만큼 늦습니다.🤖 Generated with Claude Code