MusicStudio: Suno/MusicGen 듀얼 프로바이더 UI 추가

- Provider 선택 바 (Suno 🎙️ / MusicGen 🤖)
- Suno 전용: 보컬/인스트루멘탈 토글, 가사 입력, AI 가사 생성
- 라이브러리·결과 카드에 provider 뱃지 표시
- TrackResult에 가사 접기/펼치기 추가
- api.js: getMusicProviders, generateMusicLyrics 함수 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-03 08:26:49 +09:00
parent 299ce636ff
commit a727bbf153
3 changed files with 330 additions and 5 deletions

View File

@@ -247,20 +247,33 @@ export function deleteSellHistory(id) {
}
// ── AI 음악 생성 API ──────────────────────────────────────────────────────────
// POST /api/music/generate body: { genre, moods, instruments, duration_sec, bpm, key, scale, prompt }
// → { task_id: string }
// GET /api/music/providers → { providers: [{ id, name, description, features }] }
export function getMusicProviders() {
return apiGet('/api/music/providers');
}
// POST /api/music/generate
// body: { provider, genre, moods, instruments, duration_sec, bpm, key, scale, prompt, lyrics, instrumental }
// → { task_id: string, provider: string }
export function generateMusic(payload) {
return apiPost('/api/music/generate', payload);
}
// GET /api/music/status/:task_id
// → { status: "queued"|"processing"|"succeeded"|"failed", progress: 0~100, message, audio_url?, error? }
// → { status, progress, message, audio_url?, error?, provider?, track? }
export function getMusicStatus(taskId) {
return apiGet(`/api/music/status/${encodeURIComponent(taskId)}`);
}
// POST /api/music/lyrics body: { prompt }
// → { id, status, text } (Suno 가사 생성)
export function generateMusicLyrics(prompt) {
return apiPost('/api/music/lyrics', { prompt });
}
// GET /api/music/library
// → { tracks: [{ id, title, genre, moods, instruments, duration_id, bpm, key, scale, audio_url, created_at }] }
// → { tracks: [{ id, title, genre, ..., provider, lyrics, image_url, suno_id }] }
export function getMusicLibrary() {
return apiGet('/api/music/library');
}