Conversation
Contributor
chaiminwoo0223
left a comment
There was a problem hiding this comment.
고생하셨습니다. 코드 리뷰 확인 부탁드립니다!
src/main/java/com/ject/studytrip/member/application/service/MemberService.java
Show resolved
Hide resolved
src/main/java/com/ject/studytrip/studylog/domain/error/StudyLogErrorCode.java
Outdated
Show resolved
Hide resolved
hisonghy
commented
Oct 10, 2025
Contributor
Author
hisonghy
left a comment
There was a problem hiding this comment.
코드 리뷰 확인했습니다.
수정내용 바로 반영해서 PR 올리도록 하겠습니다!
src/main/java/com/ject/studytrip/member/application/service/MemberService.java
Show resolved
Hide resolved
src/main/java/com/ject/studytrip/studylog/domain/error/StudyLogErrorCode.java
Outdated
Show resolved
Hide resolved
hisonghy
commented
Oct 10, 2025
Contributor
Author
hisonghy
left a comment
There was a problem hiding this comment.
코드 리뷰 내용 반영해두었습니다.
확인부탁드려요!
chaiminwoo0223
approved these changes
Oct 10, 2025
Contributor
chaiminwoo0223
left a comment
There was a problem hiding this comment.
수정된 내용 모두 확인했습니다. 고생하셨습니다.
커밋 병합 후 머지 부탁드립니다!
* feat: 학습로그 엔티티 image_url 필드 추가 * feat: Flyway V3__add_image_url_column_to_study_log.sql 추가 * feat: 멤버 프로필 이미지 Presigned URL 발급/confirm 기능 추가 * feat: 학습로그 이미지 Presigned URL 발급/confirm 기능 추가 * feat: ImageService에 cleanup 기능 추가 * refactor: 기존 CdnUrlResolver 클래스를 삭제하고, image.domain.util에 ImageUrlUtil 클래스 추가 * refactor: 회원 탈퇴 로직에 이미지 삭제 기능 추가 * test: 멤버 프로필 이미지 Presigned URL 발급 및 confirm 기능 통합/단위 테스트 추가 * test: 학습로그 이미지 Presigned URL 발급 및 confirm 기능 통합/단위 테스트 추가 * test: ImageService cleanup 단위 테스트 추가
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📌 작업 내용 및 특이사항
✅ StudyLog 엔티티 필드 추가
StudyLog엔티티에image_url필드를 추가했습니다.image_url필드는NULL이 허용되도록 구성했습니다.V3__add_image_url_column_to_study_log.sql파일을 추가했습니다.✅ Member 프로필 이미지 관련 기능 구현
Presigned PUT URL을 발급하는 기능을 구현했습니다.✅ StudyLog 이미지 관련 기능 구현
Presigned PUT URL을 발급하는 기능을 구현했습니다.따라서 먼저 학습 로그를 생성해 ID를 발급받은 뒤 이미지가 존재한다면 Presigned URL을 요청하고 Confrim API를 요청하는 흐름으로 우선 설계했습니다.
추후 더 좋은 방법을 찾아보고 리팩토링하는 방향으로 생각중입니다.
✅ ImageUrlUtil 추가
global.resolver의CdnUrlResolver를 제거했습니다.image도메인에서 담당하는 게 적절하다고 판단해ImageService가CdnUrlResovler를 의존하던 부분을 없애고image.domain.util에ImageUrlUtil를 추가해 순수 함수로 해당 로직을 처리하도록 변경했습니다.ImageService.confirm()에서 **finalKey(최종 이미지 키)**를 반환하지 않고 최종 이미지 경로를 반환하도록 수정했습니다.build()메서드와 최종 경로에서 이미지 키를 추출하는extractKey()메서드를 정의했습니다.extractKey()는 유효하지 않은 경로일 경우Optional.empty()를 반환하고, 호출부에서는 이를 감안해 삭제/갱신 로직을 건너뛰도록 처리했습니다.예를 들어 멤버의 프로필 이미지가 카카오 프로필 URL이면 우리 스토리지 경로가 아니기 때문에
extractKey()에서 빈 값을 반환하고, S3 삭제를 수행하지않도록 구성했습니다.✅ 이미지 정리 기능 추가
ImageService에cleanup기능을 추가했습니다.S3 삭제는 멱등이어서 대상이 없어도 예외 없이 성공 처리되므로, 별도의 존재 확인이나 예외 처리가 불필요하다고 판단했습니다.
✅ 테스트 코드 작성
🌱 관련 이슈
🔍 참고사항(선택)
JPG,JPEG,PNG,WEBP만 허용하도록 정책을 구성했습니다.5MB로 구성했습니다.📚 기타(선택)