feat: 질문 풀·피드백 생성 진행 이벤트 (AI 직접 발행 + 프론트 표시) - #205
Merged
Conversation
- SessionRealtimeNotifier.emit_progress 추가 — realtime.session.notify 로 QUESTION_POOL_PROGRESS / FEEDBACK_PROGRESS 직접 발행 (휘발성, Core 미경유) - questions_consumer: CONTEXT_BUILDING→GENERATING→FINALIZING 순차 3단계 (생성 실패 시 FINALIZING 은 발행하지 않음 — FAILED 콜백 직전 오해 방지) - feedback_consumer: 세부 평가 5개가 gather 병렬이라 SCORING 완료 카운터 (completed/total) 방식, PREPARING/FINALIZING 전후 단계 포함 - runner 에서 followup 과 동일 notifier 인스턴스 재사용 주입 - 기존 AnalysisProgressNotifier(user 채널) 무변경 — 경로 불변 회귀 테스트로 고정 - 단위 테스트 8건 추가 (발행 시퀀스·직렬화·예외 삼킴·미주입 회귀)
- 질문 풀: 라이브 WS QUESTION_POOL_PROGRESS → InterviewPreparing 대기 화면 문구 대체 (interviewEvent pool-progress 액션 + useLiveInterview state) - 피드백: 세션 SSE FEEDBACK_PROGRESS → FeedbackReportSkeleton 캡션 (useFeedbackLive progress state, 카운터 completed/total 포함) - 이벤트 미수신 시 기존 기본 안내 문구 폴백 — 유실이 UX 를 깨지 않음 - 워크스페이스 useAnalysisProgress TTL 스토어(user 채널 전용)는 미사용 - 테스트 7건 추가 (이벤트 매핑·진행 state·비정상 페이로드 무시·문구 대체/폴백)
- messaging.md §5.12-3 신설 — realtime.session.notify 발행 스펙(phase·카운터) - event-stream.md §2 이벤트 목록 + §3.3-3 신설 (payload 예시·소비처·폴백) - ai/·frontend/ CLAUDE.md 현재 상태 갱신
Jaeho-Site
force-pushed
the
feat/generation-progress-events
branch
from
August 22, 2026 13:33
d000301 to
5c8e09c
Compare
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.
변경 사항
작업 내용
SessionRealtimeNotifier.emit_progress신설 — 질문 풀·피드백 생성 단계를realtime.session.notify로 직접 발행 (휘발성, Core·DB 미경유, 실패는 경고만)questions_consumer:QUESTION_POOL_PROGRESS— CONTEXT_BUILDING → GENERATING → FINALIZING (생성 실패 시 FINALIZING 미발행)feedback_consumer:FEEDBACK_PROGRESS— 세부 평가 5개가asyncio.gather병렬이라 순차 phase 대신 완료 카운터(SCORINGcompleted/total) 방식InterviewPreparing, WS 경로)과 피드백 스켈레톤(FeedbackReportSkeleton, 세션 SSE)에 진행 문구 표시. 이벤트 미수신 시 기본 안내 문구 폴백messaging.md §5.12-3·event-stream.md §3.3-3신설, ai/·frontend/ CLAUDE.md 갱신변경 이유 / 배경
스트리밍이 있는 꼬리질문과 달리 질문 풀 생성(Pro, 최대 30s)과 피드백 생성(≈2분 예산)은 진행 중 무통보 블로킹이라 "멈췄나?"로 읽혔다 (#203/#204 의 연장). 기존
ANALYSIS_PROGRESS(user 채널) 패턴을 세션 채널로 확장해 두 경로에도 진행 신호를 흘린다. RealTime(Go) 디스패처는 이벤트 타입 무관 패스스루고realtime.session.*바인딩이 기존재해 realtime/·backend/·infra/ 변경은 없다.테스트
uv run pytest370 통과 /npm run test166 통과 /npm run build·npm run lint클린영향 범위
QUESTION_POOL_PROGRESS,FEEDBACK_PROGRESS) — 휘발성·additive, 기존 이벤트·콜백 스키마 무변경. 기존 user 채널ANALYSIS_PROGRESS경로 불변(회귀 테스트 고정)리뷰어 체크포인트
feedback_consumer의_tracked카운터 — 단일 이벤트 루프에서 증가~emit 인자 평가 사이 await 없음(유실·중복 불가). 발행 순서는 병렬이라 비보장이며 값으로 판별(문서 명시)