SoundCloud와 같이 누구나 자신이 만든 음악을 업로드하면, 검증·비동기 트랜스코딩·검수를 거쳐 배포되는 플랫폼
| 역할 | 주요 기능 |
|---|---|
| 크리에이터 | 음원 업로드, 처리 상태 확인, 반려 사유 확인 및 수정 |
| 일반 사용자 | 음원 검색·재생, AI 챗봇을 통한 음악 탐색 |
| 운영자 | 콘텐츠 검수, 파이프라인 관리, 크리에이터 제재, 신고 처리 |
① 운영 대시보드
- 오늘 업로드 수, 검수 대기·승인·반려 건수, 전체 작업 처리 수
- 이상 상태·실패 작업 알림, 지표 클릭 시 관련 목록으로 이동
② 음원 검수 대기열
- 필터: 음원명, 크리에이터명, 업로드일시, 검수상태, 부적절 콘텐츠 탐지 여부
- 검수 정보: 미리듣기, 메타데이터, 커버 이미지, 파일 스펙, AI 분석 결과
- 처리: 승인 / 반려(사유 기록) / 수정 요청 / 임시 보류
③ 파이프라인 대시보드
-
처리 단계: 음원 등록 요청 →검증→트랜스코딩→AI분석→검수→배포
① 검증 (Validate)
검사 항목 무엇을 확인하는지 스펙 추출 재생시간, 코덱, 비트레이트 최대 파일 크기 제한 너무 큰 파일 거부 중복 업로드 검사 동일 파일 재업로드 방지 파일 손상 여부 ffprobe로 열었을 때 에러 없이 메타데이터 추출되는지 MIME 타입 검사(후순위) 확장자가 아니라 파일 실제 내용 기반으로 진짜 오디오인지 매직바이트 검사(후순위) 파일 시그니처가 mp3/wav 포맷과 일치하는지 ② 트랜스코딩 (Transcode)
목적: 검증 통과한 원본을 실제 서비스에서 쓸 수 있는 형태(고음질 스트리밍용 + 미리듣기용)로 변환 + 앨범 커버 이미지도 이 단계에서 같이 처리 (WebP 변환 + 리사이징)
구현 방법: FFmpeg를 서브프로세스로 직접 호출
③ AI 콘텐츠 분석 (AI Analyze)
목적: 변환까지 끝난 곡의 가사가 정책상 문제없는지 판단, 부적절 콘텐츠 탐지
구현 방법: STT(가사 추출) → LLM 분류
-
진행상태, 작업 상태(WAITING/PROCESSING/COMPLETED/FAILED/RETRYING)
-
실패 작업 단건/단계별 재처리, 멱등성 보장(작업 ID 기준 중복실행 방지)
크리에이터
- 음원 업로드(파일+메타데이터+커버이미지)
- 처리 상태 확인(진행 단계 실시간 조회)
- 반려 사유 확인 및 재제출
일반 사용자
- 음원 재생 (공개 상태 + 재생 권한 있는 음원만)
- AI 음악 탐색 챗봇
- 최신 음악, 장르 추천, 가사/크리에이터로 음원 찾기
공통 인증 (후순위)
- JWT Access/Refresh Token, 역할 기반(일반 사용자/크리에이터/운영자) API 접근 제어
- 크리에이터 관리: 활동 이력 조회, 경고/업로드제한/일시정지/영구정지/정지해제
- 신고 관리: 신고 접수→검토→소명요청→처리, 음원 임시 비공개
- AI 분석: 저작권 의심, AI 분석 위험도, 성인인증 필요 음악 판별
- 감사 로그: 운영자 작업 이력(변경 전후 값, IP, 요청ID까지 포함한 상세 추적)
- 운영 대시보드의 Kafka Consumer Lag/DLQ 실시간 지표, 기간별 통계
- 파이프라인: Retry Topic/DLQ 상세 조회, Kafka 이벤트 이력 조회, SSE 기반 실시간 진행률
- 음원 검색, 좋아요, 커뮤니티 기능, 나만의 음악 앨범
- 챗봇: 청취이력 기반 검색(추천시스템)
https://stripe-caper-24c.notion.site/API-3a906564e6b88055b7bbf1fe6f0ef8ae?source=copy_link
https://app.swaggerhub.com/apis/ybe1027organization/SoundHub/1.0.0