Skip to content

refactor : OPIc 답변 처리 비동기화(SNS+Polling) 및 리포트 이메일 발송 구현#555

Merged
hye-inA merged 704 commits into
developfrom
feature/283/414/opic-report-ses-service
Jan 27, 2026
Merged

refactor : OPIc 답변 처리 비동기화(SNS+Polling) 및 리포트 이메일 발송 구현#555
hye-inA merged 704 commits into
developfrom
feature/283/414/opic-report-ses-service

Conversation

@hye-inA

@hye-inA hye-inA commented Jan 27, 2026

Copy link
Copy Markdown
Member

개요

OPIc 답변 제출 시 발생하는 API Gateway 타임아웃(504 Error)을 해결하기 위해, 핵심 로직을 비동기 아키텍처로 전환했습니다. 또한, 세션 완료 시 사용자에게 상세 리포트를 이메일로 자동 발송하는 기능을 추가했습니다.

작업 내용

  1. 답변 처리 프로세스 비동기화 (SNS 기반)
  • 기존 로직: 제출 -> STT -> AI 피드백 -> 응답 (평균 20초 이상 소요로 인한 504 에러 발생)

  • 변경 로직:

    • 답변 상태를 PROCESSING으로 저장하고 SNS 토픽 발행 후 즉시 응답
    • SNS를 트리거로 백그라운드에서 STT(Transcribe) 및 AI 피드백(Bedrock) 수행 후 DB 업데이트
    • 프론트엔드에서 결과 완료 여부를 확인할 수 있는 폴링(Polling) 엔드포인트 구현

DDINGJOO and others added 30 commits January 20, 2026 15:26
* feat : OPIc 질문 & 세션 관련 dto 생성

* refactor : @DynamoDbBean 주석 추가

* feat : 주제 + 소주제 + 레벨로 오픽 질문 조회 추가

* feat : OPIc 세션, 질문, 답변 종합 handler 구현

* feat : 오픽 주제, 소주제별 seed 데이터 추가

* refactor : Transcribe API KEY 환경변수명 수정

* refactor : Bedrock에 사용하는 클로드 모델 변경

* refactor : S3 Key 대신 Proxy에서 요청하는 Base64 값으로 변환
- broadcastGameStart(): serverTime, roundDuration 필드 추가
- broadcastRoundEnd(): serverTime, roundStartTime, roundDuration 필드 추가
- GameService.endRound(): data에 roundStartTime, roundDuration 포함
- 타이머 동기화 버그 수정을 위한 서버 시간 제공
…servertime-fix

[MESP-174] feat: 타이머 동기화 버그 수정 (serverTime)
- domain 필드 포함 메시지 생성 헬퍼
- DOMAIN_CHAT, DOMAIN_GAME 상수 정의
- buildChatMessage(), buildGameMessage() 메서드
- ScoreUpdateMessage에 domain 필드 추가
- broadcastGameStart에 domain:"game" 추가
- broadcastRoundEnd에 domain:"game" 추가
- broadcastCorrectAnswerMessage에 domain:"game" 추가
- handleCommandResult 시스템 메시지에 domain:"game" 추가
- handleRegularMessage 채팅 메시지에 domain:"chat" 추가

Closes #426, #427
…domain-field

feat: WebSocket 메시지 구조 개선 - domain 필드 추가
- DynamoDB Enhanced Client 어노테이션 적용
- GSI1: roomId로 활성 게임 세션 조회 가능
- 게임 상태 관리용 헬퍼 메서드 포함

Closes #428
DDINGJOO and others added 19 commits January 25, 2026 18:14
…deployment

- Remove sam deploy from buildspec-test.yml and buildspec-prod.yml
- CodeBuild only does sam build + sam package
- Deploy stage handles CloudFormation deployment with Cognito parameters
findActiveByRoomId was querying main table with ROOM#roomId partition key,
but the main table PK is WORDCHAIN#sessionId. Fixed to use GSI1 index
which has ROOM#roomId as partition key.
fix: WordChain GSI1 index and Authorizer fixes
@github-actions github-actions Bot added backend Backend code changes layer:entity Entity/Domain layer layer:service Service layer layer:util Utility/Helper layer layer:config Configuration layer labels Jan 27, 2026
@github-actions

github-actions Bot commented Jan 27, 2026

Copy link
Copy Markdown

Jira: MESP-327

@github-actions github-actions Bot removed layer:service Service layer layer:util Utility/Helper layer layer:config Configuration layer labels Jan 27, 2026
@hye-inA hye-inA merged commit 4e0dfad into develop Jan 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend Backend code changes layer:entity Entity/Domain layer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants