Skip to content

[DP-481] 모의면접 finalize AI 호출 비동기 분리 — 504 Timeout 해결#169

Merged
nYeonG4001 merged 3 commits into
developV2from
feature/DP-481-mock-interview-async-finalize
May 12, 2026
Merged

[DP-481] 모의면접 finalize AI 호출 비동기 분리 — 504 Timeout 해결#169
nYeonG4001 merged 3 commits into
developV2from
feature/DP-481-mock-interview-async-finalize

Conversation

@nYeonG4001
Copy link
Copy Markdown
Collaborator

@nYeonG4001 nYeonG4001 commented May 12, 2026

Summary

  • 모의면접 마지막 답변 제출 / 여기서 마치기 시 504 Gateway Timeout 발생 원인 해결
  • AI finalize 호출(finalizeMockInterview)을 트랜잭션 커밋 후 별도 스레드에서 비동기 처리
  • 중간 상태 PROCESSING 추가로 프론트가 결과 생성 진행 중임을 구분 가능

변경 사항

  • MockInterviewStatusPROCESSING enum 값 추가 (IN_PROGRESSPROCESSINGCOMPLETED/EARLY_FINISHED)
  • MockInterviewFinalizeEvent — 이벤트 레코드 신규 생성
  • MockInterviewFinalizeService@Async + @TransactionalEventListener(AFTER_COMMIT) 리스너로 finalize 로직 분리 (히스토리·포인트 기록 포함)
  • MockInterviewService — finalize 관련 로직 제거, ApplicationEventPublisher로 이벤트 발행
  • AsyncConfigmockInterviewFinalizeExecutor ThreadPoolTaskExecutor 등록 (@EnableAsync)

⚠️ 프론트 대응 필요

백엔드 상태 변화:

상태 의미
IN_PROGRESS 면접 진행 중
PROCESSING AI 결과 생성 중 (신규)
COMPLETED 완료
EARLY_FINISHED 조기 종료 완료

MockInterviewResult.tsx 수정 요청:

  • resultJson이 null이고 세션 상태가 PROCESSING이면 로딩 UI 표시 후 polling (예: 3초 간격 GET /mock-interviews/{sessionId})
  • COMPLETED 또는 EARLY_FINISHED가 되면 polling 중단 후 결과 표시
  • AI 호출 실패 시에도 fallback JSON이 저장되므로 결과 화면은 항상 정상 표시됨

Test

  • MockInterviewFinalizeServiceTest — 9개 케이스 (FinalizeService coverage 95%)
  • MockInterviewServiceTest — 5개 케이스 (이벤트 발행 검증)

Jira

DP-481

- MockInterviewStatus에 PROCESSING 상태 추가
- MockInterviewFinalizeService: @async + @TransactionalEventListener(AFTER_COMMIT)로
  finalizeMockInterview AI 호출 비동기 처리 (히스토리·포인트 적립 포함)
- MockInterviewService: finalizeSession 제거, 마지막 문항/조기종료 시
  PROCESSING 상태 저장 후 MockInterviewFinalizeEvent 발행으로 즉시 응답 반환
- AsyncConfig: mockInterviewFinalizeExecutor 스레드풀 설정
- 테스트: MockInterviewFinalizeServiceTest(9개), MockInterviewServiceTest(5개) 작성
@sonarqubecloud
Copy link
Copy Markdown

@nYeonG4001 nYeonG4001 merged commit 3b5e688 into developV2 May 12, 2026
4 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