Skip to content

Commit b593cea

Browse files
committed
docs: 피드백 실패 영속 마커 스펙 반영
database.md interview_sessions V29 컬럼, api-conventions §5 FEEDBACK_* 카탈로그(기존 3종 누락 정정 + GENERATION_FAILED), event-stream §4 폴링 fallback 의 실패 구분, messaging §5.11 Core 마커 영속화 서술.
1 parent b640189 commit b593cea

4 files changed

Lines changed: 15 additions & 1 deletion

File tree

docs/api-conventions.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,12 @@ SESSION_MAX_REACHED 422 최대 질문/시간 도달
245245
SESSION_NOT_FOUND 404
246246
SESSION_FORBIDDEN 403 타인 세션 접근
247247
248+
# 피드백 (FEEDBACK_*)
249+
FEEDBACK_NOT_READY 404 아직 생성 중 (폴링/SSE 대기 지속)
250+
FEEDBACK_GENERATION_FAILED 404 생성 실패 마커 존재 — 대기 중단, 재생성 유도. details.retriable(boolean) 동봉
251+
FEEDBACK_NOT_FOUND 404 공유 토큰 무효
252+
FEEDBACK_ALREADY_EXISTS 409 재생성 요청 시 이미 존재 (재조회 신호)
253+
248254
# 시스템 (SYS_*)
249255
SYS_RATE_LIMITED 429
250256
SYS_DEPENDENCY_DOWN 503 RabbitMQ/AI/LLM 다운

docs/database.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ CREATE TABLE interview_sessions (
171171
target_job_description TEXT,
172172
resumed_at TIMESTAMPTZ, -- 이어하기로 재개한 시각. 시간 한도를 이 값 기준으로 다시 잰다(V27)
173173
focus_areas JSONB, -- 약점 집중 재도전의 겨냥 축 배열(TECHNICAL|LOGIC|COMMUNICATION). 일반 면접은 NULL
174+
-- 피드백 생성 실패 마커(V29). callback.feedback FAILED 수신 시 기록, 성공 콜백·재생성 요청 시 클리어.
175+
-- 새로고침한 클라이언트가 GET 피드백에서 "생성 중"(FEEDBACK_NOT_READY)과 "실패"(FEEDBACK_GENERATION_FAILED)를 구분하는 근거.
176+
feedback_failed_at TIMESTAMPTZ,
177+
feedback_fail_retriable BOOLEAN,
174178
status VARCHAR(20) NOT NULL DEFAULT 'READY'
175179
CHECK (status IN ('READY','IN_PROGRESS','INTERRUPTED','COMPLETED','CANCELLED')),
176180
total_question_count INT DEFAULT 0,

docs/event-stream.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,8 @@ SSE 미지원 환경 또는 영구 단절 시:
222222
```
223223
GET /api/documents/{id} # 5초 간격 폴링
224224
GET /api/sessions/{id} # 메시지 변경 감지
225+
GET /api/sessions/{id}/feedback # 피드백 대기 폴링. 실패는 SSE ERROR(§3.6) 미수신이어도
226+
# 404 FEEDBACK_GENERATION_FAILED(영속 마커)로 구분된다
225227
```
226228

227229
프론트엔드 구현은 `frontend/src/shared/hooks/useEventStream.ts` 단일 책임 훅으로 추상화. SSE 우선 → 실패 시 폴링.

docs/messaging.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,9 @@
526526
- 생성이 성공했는데 **성공 콜백 발행만** 실패한 경우는 FAILED 로 오인 발행하지 않는다 — 원 예외로
527527
DLQ 에 보내 재처리 가능하게 남긴다(멱등 마킹도 되돌림).
528528
- Core 는 FAILED 수신 시 피드백을 저장하지 않고 SSE `ERROR`(scope=FEEDBACK) 로 세션·유저 채널에
529-
알린다. `errorMessage` 원문은 서버 로그에만 남긴다(클라이언트 미노출).
529+
알리며, **실패 마커를 영속화**한다(`interview_sessions.feedback_failed_at`/`feedback_fail_retriable`,
530+
V29) — SSE 를 놓친 클라이언트도 GET 피드백의 404 `FEEDBACK_GENERATION_FAILED` 로 실패를 구분한다.
531+
마커는 성공 콜백 도착·재생성 요청 시 클리어. `errorMessage` 원문은 서버 로그에만 남긴다(클라이언트 미노출).
530532

531533
### 5.12 `realtime.session.notify`
532534
```json

0 commit comments

Comments
 (0)