Skip to content

[REFACTOR] 백킹트랙 오디오 S3 업로드 및 조회 기능 추가 - #188

Merged
on1yoneprivate merged 8 commits into
developfrom
refactor/#184-backing-track-s3-upload
Aug 11, 2026
Merged

[REFACTOR] 백킹트랙 오디오 S3 업로드 및 조회 기능 추가#188
on1yoneprivate merged 8 commits into
developfrom
refactor/#184-backing-track-s3-upload

Conversation

@on1yoneprivate

@on1yoneprivate on1yoneprivate commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

📍 개요

백킹트랙 생성 시 오디오 파일을 S3에 직접 업로드할 수 있도록 Presigned URL 발급 기능을 추가했습니다.
기존 audioFileUrl 직접 저장 방식에서 audioObjectKey 저장 방식으로 변경하고,
백킹트랙 오디오 조회 시 Presigned GET URL을 생성하도록 수정했습니다.

기존 S3 공통 모듈을 녹음 파일과 백킹트랙 파일에서 함께 사용할 수 있도록 S3FileType 기반으로 확장했습니다.

⛓️‍💥 관련 이슈


🛠️ 작업 내용

  • 백킹트랙 오디오 파일 Presigned PUT URL 발급 API 추가
  • 백킹트랙 오디오 저장 방식 변경
  • S3 공통 모듈 확장
  • 백킹트랙 오디오 조회 방식 변경
  • DB 마이그레이션 추가
  • 관련 S3/연주/분석/히스토리 테스트 코드 수정

🔥 리뷰 요청 사항

리뷰어가 중점적으로 확인해주었으면 하는 내용을 작성해주세요.


✅ 체크리스트

  • 코드 컨벤션을 준수했습니다.
  • 불필요한 코드 및 import를 제거했습니다.
  • 예외 처리를 적용했습니다.
  • 테스트를 완료했습니다.
  • 관련 Issue를 연결했습니다.

📎 참고 사항

백킹트랙 오디오 업로드 흐름
Presigned PUT URL 발급 → 프론트에서 S3 직접 업로드 → objectKey를 백킹트랙 생성 API에 전달 → S3 객체 검증 → DB에 Object Key 저장
조회 시에는 DB에 저장된 Object Key를 기반으로 Presigned GET URL을 생성하여 클라이언트에 반환합니다.

Summary by CodeRabbit

  • 새 기능
    • 백킹 트랙 오디오를 직접 업로드할 수 있는 업로드 URL 발급 기능을 추가했습니다.
    • 연주 시작, 분석 결과, 히스토리 상세 화면에서 백킹 트랙 오디오 재생 URL을 제공합니다.
    • 녹음 파일과 백킹 트랙을 구분해 안전한 다운로드 URL을 생성합니다.
  • 개선
    • 백킹 트랙 오디오를 URL 대신 저장된 객체 정보로 관리하도록 변경했습니다.
    • 기존 오디오 정보가 새로운 저장 형식으로 자동 변환됩니다.
    • 업로드 파일명, 형식, 크기 검증을 강화했습니다.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@on1yoneprivate, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 13 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d61b08b9-d1b0-46b6-b0bf-9eb42b80f689

📥 Commits

Reviewing files that changed from the base of the PR and between 301fe2a and 5b9189d.

📒 Files selected for processing (4)
  • src/main/java/com/mr/domain/backingtrack/controller/BackingTrackController.java
  • src/main/java/com/mr/domain/backingtrack/dto/req/BackingTrackSaveRequestDTO.java
  • src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java
  • src/test/java/com/mr/domain/backingtrack/controller/BackingTrackControllerTest.java
📝 Walkthrough

Walkthrough

백킹 트랙 오디오 저장 방식을 URL에서 S3 Object Key로 변경했습니다. 파일 유형별 업로드·검증·다운로드 URL을 지원합니다. 연주, 분석 결과, 히스토리 응답에 presigned URL을 전달합니다.

Changes

S3 오디오 계약과 검증

Layer / File(s) Summary
파일 유형별 S3 계약과 검증
src/main/java/com/mr/global/file/s3/..., src/test/java/com/mr/global/file/s3/...
RECORDINGBACKING_TRACK 유형을 추가했습니다. Object Key 생성, 소유권 검증, presigned URL API에 파일 유형을 전달합니다. 관련 테스트를 갱신했습니다.

백킹 트랙 오디오 업로드

Layer / File(s) Summary
백킹 트랙 업로드와 Object Key 저장
src/main/java/com/mr/domain/backingtrack/..., src/main/resources/db/migration/...
Presigned PUT URL 발급 API를 추가했습니다. 백킹 트랙은 Object Key를 저장합니다. 기존 URL 데이터를 Object Key로 변환하는 마이그레이션을 추가했습니다.

연주 오디오 응답

Layer / File(s) Summary
연주 오디오 URL 전달
src/main/java/com/mr/domain/playing/..., src/test/java/com/mr/domain/playing/...
연주 시작, 상세 조회, 분석 컨텍스트에서 녹음 및 백킹 트랙 다운로드 URL을 생성합니다. 관련 서비스 호출과 테스트를 파일 유형 기준으로 변경했습니다.

분석 및 히스토리 응답

Layer / File(s) Summary
분석 및 히스토리 오디오 URL 전달
src/main/java/com/mr/domain/analysis/..., src/main/java/com/mr/domain/history/..., src/test/java/com/mr/domain/analysis/..., src/test/java/com/mr/domain/history/...
분석 결과와 히스토리 상세 응답이 전달받은 백킹 트랙 presigned URL을 사용하도록 변경했습니다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant PlayingService
  participant S3FileService
  participant PlayingStartResponse
  Client->>PlayingService: 연주 시작 요청
  PlayingService->>S3FileService: 녹음 및 백킹 트랙 다운로드 URL 생성
  S3FileService-->>PlayingService: presigned download URLs
  PlayingService->>PlayingStartResponse: 오디오 URL 전달
  PlayingStartResponse-->>Client: 연주 시작 응답
Loading

Possibly related PRs

  • Musereview/BE#116: S3 presigned URL 인프라를 확장한 변경과 직접 연결됩니다.
  • Musereview/BE#157: S3FileServiceS3ObjectKeyGenerator API를 확장합니다.
  • Musereview/BE#155: 동일한 응답 DTO와 오디오 URL 흐름을 확장합니다.

Poem

Object Key가 저장되고
유형별 prefix가 이어지네
녹음과 백킹 트랙은
presigned URL을 받아
재생 흐름에 합류하네 🎵

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 9.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed 변경 사항이 이슈 #184의 백킹트랙 S3 파일 업로드 연동 목표를 충족하며 Object Key 저장과 Presigned URL 조회도 구현합니다.
Out of Scope Changes check ✅ Passed S3FileType 공통 모듈 확장, DB 마이그레이션, 관련 조회 흐름과 테스트 변경은 PR 목표에 포함된 범위입니다.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 백킹트랙 오디오의 S3 업로드 및 조회 기능 추가라는 PR의 주요 변경 사항을 명확하게 요약합니다.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/#184-backing-track-s3-upload

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java (2)

67-86: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

정규화한 audioObjectKey를 저장하세요.

공백 문자열은 Lines 67-70에서 null로 정규화됩니다. 하지만 Line 86은 원본 request.audioObjectKey()를 저장합니다. 따라서 " " 값은 검증 없이 DB에 저장되고 이후 조회에서는 오디오가 없는 값처럼 처리됩니다.

수정 예시
-                request.audioObjectKey(),
+                audioObjectKey,
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java`
around lines 67 - 86, BackingTrackService의 create 흐름에서 검증에 사용한 정규화된
audioObjectKey를 저장하도록 BackingTrack.create 호출의 원본 request.audioObjectKey() 인자를
audioObjectKey로 교체하세요. 공백 문자열은 null로 저장되고, 유효한 키는 기존 값 그대로 유지되어야 합니다.

139-149: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

백킹트랙 수정 API가 audioObjectKey를 무시합니다. 수정 요청은 audioObjectKey를 허용하지만 서비스와 엔티티는 값을 검증하거나 저장하지 않습니다. 클라이언트는 성공 응답을 받아도 오디오가 변경되지 않으며, 새로 업로드한 S3 객체는 연결되지 않은 상태로 남습니다.

  • src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java#L139-L149: 오디오 교체를 지원하면 audioObjectKey를 정규화하고 S3FileType.BACKING_TRACK로 검증한 뒤 엔티티에 전달하세요.
  • src/main/java/com/mr/domain/backingtrack/dto/req/BackingTrackSaveRequestDTO.java#L49-L50: 오디오 교체를 지원하지 않으면 생성 요청과 수정 요청 DTO를 분리하고 수정 요청에서 audioObjectKey를 제거하세요.
  • src/main/java/com/mr/domain/backingtrack/entity/BackingTrack.java#L159-L168: 오디오 교체를 지원하면 검증된 Object Key를 저장하는 전용 메서드 또는 updateTrackInfo 인자를 복원하세요.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java`
around lines 139 - 149, 수정 API가 audioObjectKey를 처리하지 않는 문제를 해결하세요.
src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java:139-149에서는
교체를 지원할 경우 audioObjectKey를 정규화하고 S3FileType.BACKING_TRACK으로 검증한 뒤 BackingTrack에
전달하세요.
src/main/java/com/mr/domain/backingtrack/entity/BackingTrack.java:159-168에서는 검증된
키를 저장하도록 전용 메서드 또는 updateTrackInfo 인자를 추가하세요. 교체를 지원하지 않는 설계라면
src/main/java/com/mr/domain/backingtrack/dto/req/BackingTrackSaveRequestDTO.java:49-50에서
생성·수정 DTO를 분리하고 수정 요청에서 audioObjectKey를 제거하세요.
src/main/java/com/mr/global/file/s3/service/S3FileService.java (1)

72-74: 🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

S3 객체 검증을 DB 트랜잭션 밖으로 이동하세요.

createBackingTrack@Transactional 상태에서 validateUploadedFile을 호출합니다. 이 호출은 s3Client.headObject 네트워크 요청을 수행합니다. S3 지연 또는 재시도가 발생하면 DB 트랜잭션과 커넥션이 불필요하게 유지됩니다.

S3 검증을 트랜잭션 시작 전에 수행하세요. 검증 후 DB 조회와 저장만 별도 트랜잭션에서 수행하세요. Spring 트랜잭션 경계와 AWS SDK timeout 설정도 함께 확인하세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/main/java/com/mr/global/file/s3/service/S3FileService.java` around lines
72 - 74, createBackingTrack에서 validateUploadedFile(S3 headObject 검증)을
`@Transactional` DB 작업과 분리하세요. 검증은 트랜잭션 시작 전에 수행하고, 이후 DB 조회·저장만 별도 Spring 트랜잭션에서
실행되도록 트랜잭션 경계를 조정하세요. 또한 s3Client의 연결·읽기·API 호출 timeout 및 재시도 설정을 확인해 지연 시 장시간
대기하지 않도록 하세요.
🧹 Nitpick comments (2)
src/test/java/com/mr/domain/playing/service/PlayingServiceTest.java (1)

650-663: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

백킹트랙 소유자와 요청 사용자가 다른 경우를 검증하세요.

현재 fixture는 백킹트랙 소유자와 요청 사용자를 같은 user로 설정합니다. 따라서 createPresignedDownload에 요청 사용자 ID를 전달하는 회귀를 검출하지 못합니다.

공개 백킹트랙의 소유자를 별도 사용자로 설정하세요. ownerId, S3FileType.BACKING_TRACK, BACKING_TRACK_OBJECT_KEY로 호출했는지 검증하세요. 응답의 audioFileUrlBACKING_TRACK_FILE_URL인지 검증하세요. 필요하면 Mockito verify 문서를 참고하세요.

테스트 보강 예시
+Long backingTrackOwnerId = 2L;
+User backingTrackOwner = mock(User.class);
+given(backingTrack.getUser()).willReturn(backingTrackOwner);
+given(backingTrackOwner.getUserId()).willReturn(backingTrackOwnerId);
+given(s3FileService.createPresignedDownload(
+        backingTrackOwnerId,
+        S3FileType.BACKING_TRACK,
+        BACKING_TRACK_OBJECT_KEY
+)).willReturn(BACKING_TRACK_FILE_URL);
+
+assertThat(response.backingTrack().audioFileUrl())
+        .isEqualTo(BACKING_TRACK_FILE_URL);
+verify(s3FileService).createPresignedDownload(
+        backingTrackOwnerId,
+        S3FileType.BACKING_TRACK,
+        BACKING_TRACK_OBJECT_KEY
+);

Also applies to: 840-853

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/test/java/com/mr/domain/playing/service/PlayingServiceTest.java` around
lines 650 - 663, Update the public backing-track fixture in the relevant
PlayingServiceTest case so backingTrack.getUser() returns a separate owner whose
ownerId is distinct from the requesting userId. Verify
s3FileService.createPresignedDownload is called with ownerId,
S3FileType.BACKING_TRACK, and BACKING_TRACK_OBJECT_KEY, and assert the response
audioFileUrl equals BACKING_TRACK_FILE_URL.
src/test/java/com/mr/global/file/s3/service/RecordingObjectKeyGeneratorTest.java (1)

248-328: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

BACKING_TRACK 네임스페이스 경계도 테스트하세요.

현재 소유자 검증은 RECORDING 경로만 검사합니다. backing-tracks/{userId}/... 생성과 RECORDING 키를 BACKING_TRACK으로 검증할 때 false를 반환하는 경우를 추가하세요.

이 테스트가 없으면 파일 유형 prefix 변경 시 백킹트랙 업로드 또는 다운로드 권한 검증이 깨져도 감지하지 못합니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@src/test/java/com/mr/global/file/s3/service/RecordingObjectKeyGeneratorTest.java`
around lines 248 - 328, Extend the belongsToOwner tests around
objectKeyGenerator to cover the BACKING_TRACK namespace: verify a
backing-tracks/{userId}/... key generated for BACKING_TRACK returns true, and
verify a RECORDING-prefixed key validated as BACKING_TRACK returns false. Use
the existing FILE_TYPE and object-key test structure while adding the
appropriate backing-track file type value.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/main/java/com/mr/domain/analysis/service/AnalysisService.java`:
- Around line 125-127: Update the recording download URL logic in
AnalysisService.java lines 125-127 and HistoryService.java lines 82-84 to apply
the same null-or-blank recordingObjectKey check used for the backing track; only
call createPresignedDownload when the key is present, otherwise preserve the URL
as null.

In
`@src/main/resources/db/migration/V7__migrate_backing_track_audio_file_url_to_object_key.sql`:
- Around line 6-13: Update the V7 migration so legacy backing-track objects
under recordings/... are moved or copied into the backing-tracks/{ownerId}/...
prefix defined by S3FileType.BACKING_TRACK, and update
backing_track.audio_object_key to the new key in the same migration. Preserve
existing URL/query-string normalization while ensuring migrated keys satisfy the
expectedPrefix validation.

---

Outside diff comments:
In `@src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java`:
- Around line 67-86: BackingTrackService의 create 흐름에서 검증에 사용한 정규화된
audioObjectKey를 저장하도록 BackingTrack.create 호출의 원본 request.audioObjectKey() 인자를
audioObjectKey로 교체하세요. 공백 문자열은 null로 저장되고, 유효한 키는 기존 값 그대로 유지되어야 합니다.
- Around line 139-149: 수정 API가 audioObjectKey를 처리하지 않는 문제를 해결하세요.
src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java:139-149에서는
교체를 지원할 경우 audioObjectKey를 정규화하고 S3FileType.BACKING_TRACK으로 검증한 뒤 BackingTrack에
전달하세요.
src/main/java/com/mr/domain/backingtrack/entity/BackingTrack.java:159-168에서는 검증된
키를 저장하도록 전용 메서드 또는 updateTrackInfo 인자를 추가하세요. 교체를 지원하지 않는 설계라면
src/main/java/com/mr/domain/backingtrack/dto/req/BackingTrackSaveRequestDTO.java:49-50에서
생성·수정 DTO를 분리하고 수정 요청에서 audioObjectKey를 제거하세요.

In `@src/main/java/com/mr/global/file/s3/service/S3FileService.java`:
- Around line 72-74: createBackingTrack에서 validateUploadedFile(S3 headObject
검증)을 `@Transactional` DB 작업과 분리하세요. 검증은 트랜잭션 시작 전에 수행하고, 이후 DB 조회·저장만 별도 Spring
트랜잭션에서 실행되도록 트랜잭션 경계를 조정하세요. 또한 s3Client의 연결·읽기·API 호출 timeout 및 재시도 설정을 확인해 지연
시 장시간 대기하지 않도록 하세요.

---

Nitpick comments:
In `@src/test/java/com/mr/domain/playing/service/PlayingServiceTest.java`:
- Around line 650-663: Update the public backing-track fixture in the relevant
PlayingServiceTest case so backingTrack.getUser() returns a separate owner whose
ownerId is distinct from the requesting userId. Verify
s3FileService.createPresignedDownload is called with ownerId,
S3FileType.BACKING_TRACK, and BACKING_TRACK_OBJECT_KEY, and assert the response
audioFileUrl equals BACKING_TRACK_FILE_URL.

In
`@src/test/java/com/mr/global/file/s3/service/RecordingObjectKeyGeneratorTest.java`:
- Around line 248-328: Extend the belongsToOwner tests around objectKeyGenerator
to cover the BACKING_TRACK namespace: verify a backing-tracks/{userId}/... key
generated for BACKING_TRACK returns true, and verify a RECORDING-prefixed key
validated as BACKING_TRACK returns false. Use the existing FILE_TYPE and
object-key test structure while adding the appropriate backing-track file type
value.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 8c32f84e-7242-49c1-ad67-1e99e58480ab

📥 Commits

Reviewing files that changed from the base of the PR and between 26c6c0a and cfeec5f.

📒 Files selected for processing (22)
  • src/main/java/com/mr/domain/analysis/dto/res/AnalysisResultResponseDTO.java
  • src/main/java/com/mr/domain/analysis/service/AnalysisService.java
  • src/main/java/com/mr/domain/backingtrack/controller/BackingTrackController.java
  • src/main/java/com/mr/domain/backingtrack/dto/req/BackingTrackSaveRequestDTO.java
  • src/main/java/com/mr/domain/backingtrack/dto/req/BackingTrackUploadUrlRequest.java
  • src/main/java/com/mr/domain/backingtrack/dto/res/BackingTrackUploadUrlResponse.java
  • src/main/java/com/mr/domain/backingtrack/entity/BackingTrack.java
  • src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java
  • src/main/java/com/mr/domain/history/dto/res/HistoryDetailResponseDTO.java
  • src/main/java/com/mr/domain/history/service/HistoryService.java
  • src/main/java/com/mr/domain/playing/dto/res/AnalysisContextResponse.java
  • src/main/java/com/mr/domain/playing/dto/res/PlayingStartResponse.java
  • src/main/java/com/mr/domain/playing/service/PlayingService.java
  • src/main/java/com/mr/global/file/s3/enums/S3FileType.java
  • src/main/java/com/mr/global/file/s3/service/S3FileService.java
  • src/main/java/com/mr/global/file/s3/service/S3ObjectKeyGenerator.java
  • src/main/resources/db/migration/V7__migrate_backing_track_audio_file_url_to_object_key.sql
  • src/test/java/com/mr/domain/analysis/service/AnalysisServiceTest.java
  • src/test/java/com/mr/domain/history/service/HistoryServiceTest.java
  • src/test/java/com/mr/domain/playing/service/PlayingServiceTest.java
  • src/test/java/com/mr/global/file/s3/service/RecordingObjectKeyGeneratorTest.java
  • src/test/java/com/mr/global/file/s3/service/S3FileServiceTest.java

Comment thread src/main/java/com/mr/domain/analysis/service/AnalysisService.java

@p1001q p1001q left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

S3FileType 기반으로 recording/backing-track 두 파일 타입을 깔끔하게 통합하신 것도 좋았고
특히 백킹트랙은 소유자(제작자)와 요청자가 다를 수 있다는 걸 놓치지 않고
presigned URL 발급 시 소유자 ID를 정확히 넘기신 부분이 좋네요~
CodeRabbit이 짚은 마이그레이션 이슈 반영도 확인했습니다. 고생하셨습니다!

Comment thread src/main/java/com/mr/domain/backingtrack/service/BackingTrackService.java Outdated

@ownue ownue left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다!

@on1yoneprivate
on1yoneprivate merged commit 20c3e4f into develop Aug 11, 2026
2 checks passed
@on1yoneprivate
on1yoneprivate deleted the refactor/#184-backing-track-s3-upload branch August 11, 2026 02:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

♻️ Refactor - 백킹트랙 S3 파일 업로드 연동

3 participants