✨ 기능 설명
Proovy-ai 서버의 새로운 SSE 프로토콜(v2) 명세에 맞춰 Proovy-server의 스트리밍 처리 로직을 마이그레이션합니다.
기존의 /stream (v1) 대신 /stream/v2 엔드포인트를 사용하며, 데이터 페이로드 내부의 type 필드 대신 표준 SSE event 필드를 사용하여 이벤트를 구분합니다.
🎯 개발 목적
- 표준 준수:
[DONE]과 같은 비표준 종료 시그널을 제거하고, run.completed / run.failed 등 명시적인 라이프사이클 이벤트를 사용합니다.
- 구조 개선: 백엔드에서 이벤트를 중계할 때
ServerSentEvent 객체를 활용하여, 클라이언트(프론트엔드)가 EventSource.addEventListener로 깔끔하게 분기 처리할 수 있도록 지원합니다.
- 확장성:
llm.token.delta, chat.message 등 세분화된 이벤트 분류 체계(Taxonomy)를 도입합니다.
✅ 작업 내용
📌 비고
- 프론트엔드 영향도: 프론트엔드 클라이언트 코드는
onmessage 하나로 처리하던 방식에서 addEventListener('llm.token.delta', ...) 형태로 변경해야 정상 동작합니다.
✨ 기능 설명
Proovy-ai 서버의 새로운 SSE 프로토콜(v2) 명세에 맞춰 Proovy-server의 스트리밍 처리 로직을 마이그레이션합니다.
기존의
/stream(v1) 대신/stream/v2엔드포인트를 사용하며, 데이터 페이로드 내부의type필드 대신 표준 SSEevent필드를 사용하여 이벤트를 구분합니다.🎯 개발 목적
[DONE]과 같은 비표준 종료 시그널을 제거하고,run.completed/run.failed등 명시적인 라이프사이클 이벤트를 사용합니다.ServerSentEvent객체를 활용하여, 클라이언트(프론트엔드)가EventSource.addEventListener로 깔끔하게 분기 처리할 수 있도록 지원합니다.llm.token.delta,chat.message등 세분화된 이벤트 분류 체계(Taxonomy)를 도입합니다.✅ 작업 내용
/stream→/stream/v2String에서ServerSentEvent<String>으로 변경하여 이벤트 필드 파싱token→llm.token.delta,content→delta)[DONE]→run.completed/run.failed)ServerSentEvent.builder().event(...)를 사용하여 표준 SSE 이벤트 필드 설정type필드 의존성 제거 및 데이터 구조 정리📌 비고
onmessage하나로 처리하던 방식에서addEventListener('llm.token.delta', ...)형태로 변경해야 정상 동작합니다.