From 2acf4e2cb6ca2ea821fd5d5e4ff02e7a2bc838e6 Mon Sep 17 00:00:00 2001 From: hbyang Date: Mon, 19 Jan 2026 17:05:57 +0900 Subject: [PATCH] =?UTF-8?q?suno=20task=20id=20->=20song=20id=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=ED=99=95=EC=9D=B8=20=EB=B3=80=EA=B2=BD=20.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Dashboard/SoundStudioContent.tsx | 20 ++++++++++---------- src/types/api.ts | 2 +- src/utils/api.ts | 12 ++++++------ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/pages/Dashboard/SoundStudioContent.tsx b/src/pages/Dashboard/SoundStudioContent.tsx index 5243d60..6b1a348 100755 --- a/src/pages/Dashboard/SoundStudioContent.tsx +++ b/src/pages/Dashboard/SoundStudioContent.tsx @@ -22,7 +22,7 @@ type GenerationStatus = 'idle' | 'generating_lyric' | 'generating_song' | 'polli interface SavedGenerationState { taskId: string; - sunoTaskId: string; + songId: string; lyrics: string; status: GenerationStatus; timestamp: number; @@ -71,10 +71,10 @@ const SoundStudioContent: React.FC = ({ const audioRef = useRef(null); const languageDropdownRef = useRef(null); - const saveToStorage = (taskId: string, sunoTaskId: string, currentLyrics: string, currentStatus: GenerationStatus) => { + const saveToStorage = (taskId: string, songId: string, currentLyrics: string, currentStatus: GenerationStatus) => { const data: SavedGenerationState = { taskId, - sunoTaskId, + songId, lyrics: currentLyrics, status: currentStatus, timestamp: Date.now(), @@ -114,7 +114,7 @@ const SoundStudioContent: React.FC = ({ } setStatus('polling'); setStatusMessage('노래를 생성하고 있습니다... (새로고침 후 복구됨)'); - resumePolling(savedState.taskId, savedState.sunoTaskId, savedState.lyrics, 0); + resumePolling(savedState.taskId, savedState.songId, savedState.lyrics, 0); } }, []); @@ -146,11 +146,11 @@ const SoundStudioContent: React.FC = ({ } }, [videoGenerationStatus, songTaskId, onNext]); - const resumePolling = async (taskId: string, sunoTaskId: string, currentLyrics: string, currentRetryCount: number = 0) => { + const resumePolling = async (taskId: string, songId: string, currentLyrics: string, currentRetryCount: number = 0) => { try { const downloadResponse = await waitForSongComplete( taskId, - sunoTaskId, + songId, (pollStatus: string) => { if (pollStatus === 'pending') { setStatusMessage('노래를 생성하고 있습니다...'); @@ -221,8 +221,8 @@ const SoundStudioContent: React.FC = ({ throw new Error(songResponse.error_message || '음악 생성 요청에 실패했습니다.'); } - saveToStorage(songResponse.task_id, songResponse.suno_task_id, currentLyrics, 'polling'); - await resumePolling(songResponse.task_id, songResponse.suno_task_id, currentLyrics, currentRetryCount); + saveToStorage(songResponse.task_id, songResponse.song_id, currentLyrics, 'polling'); + await resumePolling(songResponse.task_id, songResponse.song_id, currentLyrics, currentRetryCount); } catch (error) { console.error('Song regeneration failed:', error); @@ -396,9 +396,9 @@ const SoundStudioContent: React.FC = ({ setStatus('polling'); setStatusMessage('노래를 생성하고 있습니다...'); - saveToStorage(songResponse.task_id, songResponse.suno_task_id, lyricDetailResponse.lyric_result, 'polling'); + saveToStorage(songResponse.task_id, songResponse.song_id, lyricDetailResponse.lyric_result, 'polling'); - await resumePolling(songResponse.task_id, songResponse.suno_task_id, lyricDetailResponse.lyric_result, 0); + await resumePolling(songResponse.task_id, songResponse.song_id, lyricDetailResponse.lyric_result, 0); } catch (error) { console.error('Music generation failed:', error); diff --git a/src/types/api.ts b/src/types/api.ts index 0f1224c..04d454a 100644 --- a/src/types/api.ts +++ b/src/types/api.ts @@ -78,7 +78,7 @@ export interface SongGenerateRequest { export interface SongGenerateResponse { success: boolean; task_id: string; - suno_task_id: string; + song_id: string; message: string; error_message: string | null; } diff --git a/src/utils/api.ts b/src/utils/api.ts index ce53aa5..1d19496 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -150,9 +150,9 @@ export async function generateSong(taskId: string, request: SongGenerateRequest) return response.json(); } -// 노래 상태 확인 API (suno_task_id 사용) -export async function getSongStatus(sunoTaskId: string): Promise { - const response = await fetch(`${API_URL}/song/status/${sunoTaskId}`, { +// 노래 상태 확인 API (song_id 사용) +export async function getSongStatus(songId: string): Promise { + const response = await fetch(`${API_URL}/song/status/${songId}`, { method: 'GET', }); @@ -182,7 +182,7 @@ const POLL_INTERVAL = 5000; // 5초 export async function waitForSongComplete( taskId: string, - sunoTaskId: string, + songId: string, onStatusChange?: (status: string) => void ): Promise { const startTime = Date.now(); @@ -195,8 +195,8 @@ export async function waitForSongComplete( } try { - // 상태 확인은 suno_task_id 사용 - const statusResponse = await getSongStatus(sunoTaskId); + // 상태 확인은 song_id 사용 + const statusResponse = await getSongStatus(songId); onStatusChange?.(statusResponse.status); // status가 "SUCCESS" (대문자)인 경우 완료