Skip to content

피드백 대기를 이벤트 기반으로 — FEEDBACK_READY 구독 + 스켈레톤 - #204

Merged
Jaeho-Site merged 2 commits into
devfrom
feat/feedback-ready-stream
Aug 22, 2026
Merged

피드백 대기를 이벤트 기반으로 — FEEDBACK_READY 구독 + 스켈레톤#204
Jaeho-Site merged 2 commits into
devfrom
feat/feedback-ready-stream

Conversation

@Jaeho-Site

Copy link
Copy Markdown
Contributor

FEEDBACK_READY 는 백엔드가 세션·유저 두 채널로 발행하는데(FeedbackCallbackService) 프론트 소비처가 사실상 없었다 — 라이브 WS 의 redirect 경로는 세션이 끝나면 소켓이 닫혀(enabled: status === 'IN_PROGRESS') 발화하지 않는다. 그래서 피드백 페이지는 3초 간격으로 404 를 최대 40번 두드리는 폴링이 유일한 인지 수단이었고, 대기 화면은 정적 텍스트 2줄('최대 1분' — 실제 예산 2분과 불일치)이라 멈춘 것처럼 보였다.

무엇

  1. useFeedbackLive — 피드백 쿼리 + 세션 채널 SSE(/realtime/stream/sessions/{id}) 구독. FEEDBACK_READY 수신 즉시 재조회(resetQueries — 재시도 대기를 끊고 바로 fetch), 피드백 도착 시 스트림 자동 종료. 데이터 도착~스트림 close 사이 좁은 창에서 늦게 온 이벤트가 표시 중 리포트를 스켈레톤으로 되돌리지 않도록 캐시 가드.
  2. 폴링은 백스톱으로 강등 — 스트림 정상이면 15s(이벤트가 주 신호), 단절이면 기존 3s. 어느 모드든 총 예산 ≈2분 유지 후 기존 재생성 복구 UI 로 연결 (api-conventions §9: SSE 우선, 폴링은 fallback).
  3. 대기 화면 스켈레톤 — 리포트가 올 자리의 형태 + 경과 초 + '완성되면 자동으로 표시됩니다'. 오표기('최대 1분') 정정.
  4. FSD: 세션 stream token API 는 interview 슬라이스 소유 → 페이지가 getToken 을 주입하고 feedback 은 interview 를 import 하지 않는다. fetchSessionStreamToken 을 interview public API 로 승격.

검증

  • 신규 테스트 5케이스: 이벤트 수신 즉시 데이터 도착(3s 재시도 타이머 전) / 도착 후 스트림 close / 늦은 이벤트 무시 레이스 / 스켈레톤 문구·경과 타이머.
  • npm run test 159/159, npm run build 성공, npm run lint 0.
  • 실서버 이벤트 경로 e2e 는 미검증 — FakeEventSource 단위 테스트 + 백엔드 발행 코드 확인으로 대체.

- 생성 대기 화면이 정적 텍스트 2줄뿐이라 최대 2분간 움직임이 없어
  '멈췄나?' 로 읽혔다 — 리포트가 올 자리의 형태 + 경과 초 표시로 교체
- '완성되면 자동으로 표시됩니다' 안내는 후속 커밋의 FEEDBACK_READY 구독이 보장
- 백엔드가 session·user 채널로 발행하는 FEEDBACK_READY 를 프론트가 소비하지
  않아(라이브 WS 는 세션 종료 시 닫힘) 피드백 대기가 3s 간격 404 폴링
  최대 40회로만 동작했다
- useFeedbackLive: 세션 채널 SSE 구독 → 수신 즉시 재조회, 피드백 도착 시
  스트림 종료. 표시 중 데이터를 늦은 이벤트가 리셋하지 않게 캐시 가드
- 폴링은 백스톱으로 강등 — 스트림 정상 15s / 단절 3s, 총 예산 ≈2분 유지
  (소진 시 기존 재생성 복구 UI, 문구·주석 정합)
- 세션 stream token 은 interview 슬라이스 소유라 페이지가 getToken 주입
  (FSD 동일 레이어 금지), fetchSessionStreamToken 을 public API 로 승격
- 테스트 5케이스 (즉시 재조회·스트림 종료·늦은 이벤트 무시·스켈레톤)
@Jaeho-Site
Jaeho-Site merged commit 6865a30 into dev Aug 22, 2026
5 checks passed
@Jaeho-Site
Jaeho-Site deleted the feat/feedback-ready-stream branch August 22, 2026 12:37
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