Commit Graph

10 Commits

Author SHA1 Message Date
3e46cc41ca refactor(music-lab): 공통 폴링 헬퍼 추출 + V5_5 모델 + 신규 파라미터 + 커버이미지 2026-04-08 08:42:36 +09:00
649b99d143 music-lab: 서비스 고도화 — duration 수정 + 모델/크레딧/연장/분리 API 추가
Phase 1A:
- mutagen으로 MP3 실제 재생시간 추출 (sync + startup backfill)
- update_track_duration() DB 헬퍼 추가

Phase 2:
- GET /api/music/models — Suno 모델 목록 (V4~V5)
- GET /api/music/credits — 잔여 크레딧 조회
- POST /api/music/extend — 곡 연장 (continueAt 지점부터)
- POST /api/music/vocal-removal — 보컬/인스트루멘탈 분리
- GenerateRequest에 model 필드 추가 (하드코딩 V4 제거)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 14:36:52 +09:00
33a011a086 music-lab: 두 번째 변형 파일명 _v2_v2 중복 수정
task_id에 이미 _v2가 붙으므로 filename_suffix를 빈 문자열로 변경.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 13:14:35 +09:00
e04c000a3e music-lab: MUSIC_DATA_DIR 경로 수정 (/app/data/music → /app/data)
볼륨 마운트가 ./data/music → /app/data 이므로,
/app/data/music/ 에 저장하면 호스트에서 ./data/music/music/ 이 되어
nginx 서빙 경로와 불일치. /app/data 로 통일.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 13:07:48 +09:00
1a251cae24 music-lab: Suno 응답 파싱 수정 — data.response.sunoData 경로로 트랙 추출
디버그 로그 제거.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 13:01:01 +09:00
2d98c4176b music-lab: Suno 디버깅 로그를 print()로 변경 (uvicorn 로그에 확실히 출력)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 12:50:46 +09:00
f7c583b806 music-lab: Suno SUCCESS 응답 디버깅 로깅 추가
실제 응답 구조 파악을 위해 keys/body 로깅 추가.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 12:47:14 +09:00
a618544823 music-lab: Suno generate 요청에 callBackUrl 필수 파라미터 추가
sunoapi.org는 callBackUrl이 필수. 폴링 방식이므로 더미 URL 사용.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 12:31:58 +09:00
2a1d8716c7 music-lab: Suno API를 sunoapi.org 래퍼로 전환 (URL·요청·응답 형식 수정)
- Base URL: apicast.suno.ai → api.sunoapi.org/api/v1
- 생성: POST /generate (customMode, model, instrumental 필드)
- 폴링: GET /generate/record-info?taskId=xxx (PENDING→SUCCESS)
- 가사: /lyrics 비동기 폴링 방식으로 변경
- 응답 필드: camelCase (audioUrl, imageUrl, sunoData) 대응

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 08:38:20 +09:00
f5c58a5aa5 music-lab: Suno API + MusicGen 듀얼 프로바이더 구조 구현
- suno_provider.py: Suno REST API 클라이언트 (곡 생성, 가사, 2변형 저장)
- local_provider.py: 기존 MusicGen 로직 분리
- main.py: provider 라우팅, /providers·/lyrics 엔드포인트 추가
- db.py: provider, lyrics, image_url, suno_id 컬럼 마이그레이션
- docker-compose.yml: SUNO_API_KEY 환경변수 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 08:23:29 +09:00