프로젝트

일반

사용자정보

이슈 #239

Ryan Lee이(가) 7달 전에 변경

재시도 로직. 사용자 친화적 에러 메시지 

 ## 완료 내역 
 - `InterruptReason` 4가지 분류 (`src/types/chat.ts:5`): `background | network | abort | error` 
 - 사용자 친화 에러 메시지 (`src/components/MessageBubble.tsx:18-23`): 
   - background: "백그라운드에서 연결이 끊겼어요." 
   - network: "네트워크 문제로 응답이 중단됐어요." 
   - abort: "응답을 중단했어요." 
   - error: "응답을 받지 못했어요." 
 - 원인별 아이콘 차등 (`MessageBubble.tsx:45-48`): network/background → WifiOff, 그 외 → AlertCircle 
 - 수동 재시도 버튼 + `retryMessage(conversationId, messageId)` 로직 (`src/stores/chatStore.ts:348-396`) 
   - 대상 메시지 이후 잘라내기, HTML 첨부 파일 정리, 직전 사용자 메시지 기반 재생성 
 - 백그라운드 자동 중단 (`App.tsx:14-24`): AppState 'background' 전환 시 `interruptGeneration(..., 'background')` 
 - 앱 재시작 고아 스트리밍 복구 (`chatStore.ts:403-414`): rehydrate 시 streaming 상태 → interrupted + background 표시 
 - 오류 타입 감지 (`src/services/api/anthropic.ts:21-32`): AbortError 분리 처리 
 - SDK 자동 재시도: Anthropic SDK 기본 `maxRetries=2` 활용 (별도 설정 없음) 

 ## 주요 파일 
 - `src/types/chat.ts` — `InterruptReason` 타입 
 - `src/components/MessageBubble.tsx` — 에러 메시지/아이콘/재시도 UI 
 - `src/stores/chatStore.ts` — `retryMessage()`, `interruptGeneration()`, rehydrate 복구 
 - `src/services/api/anthropic.ts` — AbortError 분리 
 - `App.tsx` — AppState 백그라운드 감지 

 ## 관련 커밋 
 - `3b6c46b` (#237) — 콜백 인터페이스 (onError/onAbort 포함) 
 - 재시도/에러 UI는 동일 커밋 범위에서 함께 추가됨 

 ## 후속 처리 (하위 이슈 분리) 
 - 네트워크 오류 자동 분류 — fetch 실패 시 `'network'` interruptReason 설정 (`NetInfo` 또는 error.name 기반) 
 - 스트림 타임아웃 명시 설정 — `client.messages.stream()`에 `timeout` 옵션 지정, 초과 시 사용자 친화 메시지 

뒤로