Skip to content

[Feat] SSE complete 결과에 root_generation_id 추가 (#46) - #47

Merged
seoyeoki merged 1 commit into
mainfrom
feat/46-sse-root-id
Oct 12, 2026
Merged

seoyeoki merged 1 commit into
mainfrom
feat/46-sse-root-id

Conversation

@seoyeoki

Copy link
Copy Markdown
Contributor

개요

SSE complete 이벤트의 result에 root_generation_id를 추가합니다. 프론트가 버전 목록·되돌리기 API(/songs/{root_generation_id}/versions)를 쓰려면 root ID가 필요한데, 지금은 최초 생성 때 받은 song_id를 직접 보관해야 했습니다. 재생성 도중 새로고침해서 마지막 task_id만 남으면 root를 알 방법이 없었고, 이제 task_id로 SSE를 다시 구독하면 root까지 복구됩니다.

Closes #46

변경 사항

  • CompletionResult에 root_generation_id(Long) 추가
    • 최초 생성곡은 song_id와 같은 값, 재생성본은 원본의 ID, root를 백필하기 전 기존 곡은 null
    • 생성하는 두 곳 모두 반영: 이미 완료된 작업을 구독했을 때의 즉시 complete, 구독 중 AI 완료 콜백을 받았을 때
  • Swagger SSE 설명·예시 갱신
  • Swagger 설명 오류 정정: 기존엔 "complete: 작업 완료 시 전송 (status: COMPLETED / FAILED)"이라고 적혀 있었지만, 실제로 실패·취소는 progress 이벤트(status: FAILED/CANCELED)로 전달되고 complete는 성공(COMPLETED)일 때만 전송됨
{
  "status": "COMPLETED",
  "result": {
    "task_id": "task_xxx",
    "song_id": 42,
    "root_generation_id": 40,
    "audio_url": "https://...",
    "duration_seconds": 30.0
  }
}

프론트 영향

항목 내용
complete의 result root_generation_id 필드 추가 (기존 필드는 그대로, 추가만이라 기존 코드는 영향 없음)
사용법 생성·재생성이 끝날 때 이 값을 받아 보관하면 versions·revert 호출에 쓸 수 있음. 새로고침 후에는 보관해 둔 task_id로 SSE를 다시 구독해도 같은 값을 얻음
주의 재생성본의 song_id는 root가 아님. 최초 생성곡만 song_id == root_generation_id
실패·취소 complete가 아니라 progress 이벤트로 옴 (이전부터 그랬고 문서만 틀렸음)

범위 외

테스트

  • ./gradlew build 통과 (MockMvc + H2, 신규 4개 포함 76개)
    • 지금까지 SSE complete 내용을 검증하는 테스트가 없어 이 PR에서 처음 추가 (TaskStreamCompletionTest)
    • 이미 완료된 작업 구독: 최초 생성곡(root == song_id), 재생성본(원본의 root 승계, song_id와 다름)
    • 구독 중 AI 완료 콜백 수신: 최초 생성곡, 재생성본
    • 생성하는 두 곳에서 값을 null로 바꾸면 4개 모두 실패하는 것 확인
    • 열려 있는 [Bug] 생성·구간 재생성 요청 API가 HTTP 202로 응답하도록 수정 (#38) #43, #45와 병합 시뮬레이션에서 충돌 없음
  • 실제 브라우저의 EventSource로 받아 보는 것은 확인하지 못했습니다 (MockMvc가 기록한 SSE 본문으로 검증)

🤖 Generated with Claude Code

프론트가 버전 목록·되돌리기 API를 쓰려면 root ID가 필요한데, 지금은 최초 생성 때 받은
song_id를 직접 보관해야 했다. 재생성 도중 새로고침해서 마지막 task_id만 남으면 root를
알 방법이 없었다. task_id로 SSE를 다시 구독하면 root까지 얻도록 complete 이벤트의
result에 root_generation_id를 추가한다.

- CompletionResult 에 root_generation_id 추가 (최초 생성곡은 song_id와 같은 값,
  재생성본은 원본의 ID, 백필 전 기존 곡은 null)
- 이미 완료된 작업 구독 / 구독 중 AI 완료 콜백 수신, 두 경로 모두 반영
- Swagger의 SSE 설명 갱신. complete 이벤트는 성공(COMPLETED)만 전송하고 실패·취소는
  progress 이벤트로 전달된다는 기존 설명 오류도 바로잡음
- SSE complete 이벤트를 검증하는 테스트 추가 (4개)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] SSE complete 결과에 root_generation_id 추가

1 participant