mirror of
https://github.com/hwanny1128/HGZero.git
synced 2026-06-12 22:59:10 +00:00
AI 제안사항 SSE 스트리밍 기능 구현 및 CORS 문제 해결
주요 변경사항: - Event Hub 리스너를 Python AI Service에 통합하여 STT 텍스트 실시간 수신 - LocalDateTime 배열 형식을 Unix timestamp로 변환하는 로직 추가 - SSE 응답에 CORS 헤더 명시적 추가 (localhost:8888 허용) - SSE Keep-alive를 위한 ping 이벤트 추가 (5초 주기) - Redis 데이터 정리 스크립트 추가 - 분석 임계값을 MVP 수준으로 조정 (3개 세그먼트 = 약 15-30초) - 프론트엔드 SSE 연동 가이드 문서 작성 - 프론트엔드에 ping 이벤트 핸들러 추가 및 에러 핸들링 개선 기술적 개선사항: - EventSourceResponse에 Access-Control-Allow-Origin 헤더 추가 - timestamp 변환 로직으로 Java-Python 호환성 해결 - Redis 저장 오류 로깅 강화 - SSE generator에 주기적 heartbeat 전송으로 연결 유지 문서: - develop/dev/ai-frontend-integration-guide.md: 프론트엔드 개발자를 위한 상세 연동 가이드 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -472,13 +472,21 @@
|
||||
|
||||
eventSource = new EventSource(sseUrl);
|
||||
|
||||
// Ping 이벤트 핸들러 (keep-alive)
|
||||
eventSource.addEventListener('ping', (event) => {
|
||||
console.log('Ping received:', event.data);
|
||||
// ping은 로그에 표시하지 않음 (연결 유지용)
|
||||
});
|
||||
|
||||
// AI 제안사항 이벤트 핸들러
|
||||
eventSource.addEventListener('ai-suggestion', (event) => {
|
||||
try {
|
||||
const data = JSON.parse(event.data);
|
||||
displaySuggestions(data);
|
||||
addLog('✅ AI 제안사항 수신', 'info');
|
||||
addLog('✅ AI 제안사항 수신 (' + data.suggestions.length + '개)', 'info');
|
||||
} catch (e) {
|
||||
addLog('AI 제안 파싱 실패: ' + e.message, 'error');
|
||||
console.error('Parse error:', e, 'Data:', event.data);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -496,15 +504,19 @@
|
||||
default: stateText = 'UNKNOWN';
|
||||
}
|
||||
|
||||
addLog(`❌ AI 제안사항 SSE 오류 (State: ${stateText})`, 'error');
|
||||
console.error('SSE Error:', error, 'State:', stateText);
|
||||
|
||||
// 연결이 닫혔을 때만 재연결 시도
|
||||
// CLOSED 상태일 때만 에러로 표시하고 재연결
|
||||
if (state === EventSource.CLOSED) {
|
||||
addLog(`❌ AI 제안사항 SSE 연결 종료`, 'error');
|
||||
eventSource.close();
|
||||
setTimeout(() => {
|
||||
addLog('AI SSE 재연결 시도...', 'info');
|
||||
connectAISuggestions();
|
||||
}, 5000);
|
||||
} else if (state === EventSource.CONNECTING) {
|
||||
// 연결 중일 때는 에러 로그를 표시하지 않음
|
||||
console.log('SSE reconnecting...');
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user