[FIX] 학습 모범 연주 S3 재생 오류 수정 - #227
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (2)
📝 WalkthroughWalkthrough학습 모범 연주의 저장값을 S3 Object Key로 변경합니다. 공용 콘텐츠용 Presigned GET URL 발급과 Object Key 검증을 추가합니다. 학습 단계 상세 API는 생성된 URL을 반환하며, 마이그레이션과 테스트를 갱신합니다. Changes학습 모범 연주 Presigned URL 전환
Estimated code review effort: 3 (Moderate) | ~25 minutes Mergeability Score: ⚪ Minimal · up to The PR changes private learning audio delivery to use presigned URLs and updates stored object-key handling; no actionable merge-blocking risk remains based on the supplied evidence. Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
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. Comment |
on1yoneprivate
left a comment
There was a problem hiding this comment.
사소한 코멘트라서 편한 대로 유지/수정하면 될 듯!! 수고하셨습니다~~
📍 개요
⛓️💥 관련 이슈
🛠️ 작업 내용
반영한 작업
LearningService가 모범 연주 Object Key로 Presigned GET URL을 발급하여 응답하도록 변경PlayingExample.audioFileUrl을audioObjectKey로 변경하고 DB 컬럼도audio_object_key로 전환playing_example/...Object Key로 변환하고, 잘못된 값은 배포 중 즉시 감지하도록 검증 추가PLAYING_EXAMPLE파일 유형을 정의RECORDING,BACKING_TRACK처럼 사용자 소유권 검증이 필요한 파일은 공용 다운로드 경로로 우회할 수 없도록 차단이번 PR에서 의도적으로 유지·제외한 작업
StepLearningPlayPage에서 실제 호출 중이므로 죽은 코드로 단정할 수 없음. FE 호출 전환과 함께 별도 리팩토링 필요sql/png/xlsx) 수동 동기화🔥 리뷰 요청 사항
audio_file_url값을 안전하게 Object Key로 변환하는지 확인 부탁드립니다.S3FileType.ownerScoped로 사용자 소유 파일과 공용 학습 콘텐츠의 다운로드 경계를 나눈 방식이 적절한지 확인 부탁드립니다.✅ 체크리스트
검증 결과
playing_example/triads_step1.mp3등 실제 객체 존재 및 직접 열기 재생 확인Range요청이206 Partial Content,audio/mp3, ID3 헤더를 반환하는 것 확인448개 테스트 성공 및 clean build 통과git diff --check통과📎 참고 사항
GetObject권한이 있어야 합니다.develop기준 CI와 리뷰를 확인한 뒤 Ready 상태로 전환합니다.쉽게 비유하면
비공개 S3는 잠긴 음원 창고입니다. 기존 API는 사용자에게 창고 주소와 선반 위치만 알려주고 열쇠는 주지 않은 셈이라, 파일이 실제로 있어도 입구에서
AccessDenied가 발생했습니다.이번 수정은 DB에 **선반 번호(Object Key)**만 기록하고, 사용자가 재생을 요청할 때 서버가 **10분짜리 임시 출입증(Presigned URL)**을 발급하는 방식입니다. 창고 전체를 공개하지 않으면서도 해당 음원만 안전하게 들을 수 있습니다. Flyway V9은 장부에 적힌 예전 전체 주소를 선반 번호로 바꾸는 장부 정리 작업이고, 이상한 주소가 나오면 잘못 배송하지 않도록 작업을 멈춥니다.
진행률 단일 조회 API는 다른 조회 응답과 역할이 겹쳐 보여도, 현재 프론트 화면에 아직 연결된 사용 중인 구형 인터폰과 같습니다. 새 인터폰이 같은 내용을 알려준다고 해서 먼저 선을 뽑으면 현재 화면이 고장 날 수 있으므로, 이번에는 유지하고 FE 전환과 함께 별도로 정리하기로 했습니다.
정적 ERD 문서는 건물 도면에 해당합니다. 이번 PR에는 실제 배관을 바꾸는 Flyway V9까지 포함했지만, 도면 원본의 수동 대조·수정은 별도 확인 작업으로 남겼습니다.
Summary by CodeRabbit
새로운 기능
개선 사항