Skip to content

Conversation

@zyovn
Copy link
Member

@zyovn zyovn commented Nov 19, 2025

🔗 연관된 이슈

🚀 변경 유형

  • ✨ 기능 추가 (feature)
  • 🐛 버그 수정 (fix)
  • 📝 문서 변경 (docs)
  • ♻️ 리팩토링 (refactor)
  • 🧪 테스트 추가 / 수정 (test)
  • ⚙️ 설정 변경 (chore)

📝 작업 내용

  • 사진 상세 조회 프로필 이미지 추가
  • 앨범 정보 조회 검증 제거 및 비로그인 시에도 조회 가능

📸 스크린샷

사진 상세 조회 프로필 이미지 추가
image

💬 리뷰 요구사항

📜 리뷰 규칙

Reviewer는 아래 P5 Rule을 참고하여 리뷰를 진행합니다.
P5 Rule을 통해 Reviewer는 Reviewee에게 리뷰의 의도를 보다 정확히 전달할 수 있습니다.

  • P1: 꼭 반영해주세요 (Comment)
  • P2: 적극적으로 고려해주세요 (Comment)
  • P3: 웬만하면 반영해 주세요 (Comment)
  • P4: 반영해도 좋고 넘어가도 좋습니다 (Approve)
  • P5: 그냥 사소한 의견입니다 (Approve)

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 사진 상세 조회 시 작성자의 프로필 이미지 정보 추가
  • 개선사항

    • 앨범 정보 조회 엔드포인트가 인증 없이 누구나 접근 가능하도록 변경

@zyovn zyovn self-assigned this Nov 19, 2025
@zyovn zyovn added 🐛bug Something isn't working ✨feature New feature or request labels Nov 19, 2025
@zyovn zyovn linked an issue Nov 19, 2025 that may be closed by this pull request
@coderabbitai
Copy link

coderabbitai bot commented Nov 19, 2025

워크스루

getAlbumInfo 엔드포인트에서 인증 요구사항을 제거하고 공개 접근을 허용하도록 변경했습니다. 앨범 정보 검색 시 사용자 검증 로직을 삭제했고, 보안 설정에서 해당 경로를 화이트리스트에 추가했습니다. 동시에 사진 상세 응답에 프로필 이미지 필드를 추가했습니다.

변경사항

코호트 / 파일 변경 요약
앨범 서비스 접근 제어 제거
src/main/java/com/cheeeese/album/application/AlbumService.java,
src/main/java/com/cheeeese/album/presentation/AlbumController.java,
src/main/java/com/cheeeese/album/presentation/swagger/AlbumSwagger.java
getAlbumInfo() 메서드에서 @CurrentUser User 파라미터 제거 및 사용자 검증 로직 삭제. 메서드 시그니처를 (User user, String code)(String code)로 변경
공개 엔드포인트 화이트리스트 추가
src/main/java/com/cheeeese/global/config/SecurityConfig.java
보안 설정에 /v1/album/*/info 경로를 인증 없이 접근 가능한 경로로 추가
사진 상세 응답에 프로필 이미지 추가
src/main/java/com/cheeeese/photo/application/PhotoQueryService.java,
src/main/java/com/cheeeese/photo/dto/response/PhotoDetailResponse.java,
src/main/java/com/cheeeese/photo/infrastructure/mapper/PhotoMapper.java
PhotoDetailResponseprofileImage 필드 추가. PhotoMapper.toPhotoDetailResponse()profileImage 파라미터 추가 및 매핑 로직 업데이트

예상 코드 리뷰 소요시간

🎯 3 (Moderate) | ⏱️ ~25 분

  • 주의 사항:
    • 앨범 접근 제어 제거로 인한 보안 영향 검토 필요 (참여자 검증 로직 삭제의 의도 확인)
    • SecurityConfig의 화이트리스트 추가가 의도된 공개 범위와 일치하는지 확인
    • ProfileImageUtil 사용으로 인한 프로필 이미지 조회 로직의 일관성 검토

관련 이슈

관련 PR

제안 리뷰어

  • dahyun24

🐰 공개의 길을 닦고서
프로필 사진 담아내니
앨범 정보는 모두에게
검증 없이 활짝 열렸네
사진마다 얼굴 빛나는
설렘 가득한 변화로다! ✨

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title check ⚠️ Warning 제목은 앨범 정보 조회 로직 수정과 참여자 조회 관련 변경을 언급하지만, 실제 변경 사항은 훨씬 광범위합니다. 프로필 이미지 추가, 보안 설정 변경, 공개 엔드포인트 추가 등 주요 기능이 제목에 반영되지 않았습니다. 제목을 수정하여 모든 주요 변경 사항을 포함하거나, 가장 중요한 변경만 명확히 나타내세요. 예: 'feat: 로그인 없이 앨범 정보 조회 및 프로필 이미지 추가'
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/#80-album-expired

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a47e595 and fc5a23d.

📒 Files selected for processing (7)
  • src/main/java/com/cheeeese/album/application/AlbumService.java (1 hunks)
  • src/main/java/com/cheeeese/album/presentation/AlbumController.java (1 hunks)
  • src/main/java/com/cheeeese/album/presentation/swagger/AlbumSwagger.java (0 hunks)
  • src/main/java/com/cheeeese/global/config/SecurityConfig.java (1 hunks)
  • src/main/java/com/cheeeese/photo/application/PhotoQueryService.java (3 hunks)
  • src/main/java/com/cheeeese/photo/dto/response/PhotoDetailResponse.java (2 hunks)
  • src/main/java/com/cheeeese/photo/infrastructure/mapper/PhotoMapper.java (2 hunks)
💤 Files with no reviewable changes (1)
  • src/main/java/com/cheeeese/album/presentation/swagger/AlbumSwagger.java
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-10-31T13:17:52.523Z
Learnt from: dahyun24
Repo: Say-Cheeeese/BE PR: 35
File: src/main/java/com/cheeeese/photo/application/PhotoService.java:46-52
Timestamp: 2025-10-31T13:17:52.523Z
Learning: In src/main/java/com/cheeeese/photo/application/PhotoService.java, the getRecentThumbnailUrls method intentionally returns only the first thumbnail URL when photos.size() < 5, rather than returning all available thumbnails. This is according to product requirements: 0 photos → empty list, 1-4 photos → single thumbnail (most recent), 5 photos → all 5 thumbnails.

Applied to files:

  • src/main/java/com/cheeeese/photo/application/PhotoQueryService.java
📚 Learning: 2025-11-13T12:56:22.161Z
Learnt from: dahyun24
Repo: Say-Cheeeese/BE PR: 58
File: src/main/java/com/cheeeese/cheese4cut/application/Cheese4cutService.java:149-156
Timestamp: 2025-11-13T12:56:22.161Z
Learning: In src/main/java/com/cheeeese/cheese4cut/application/Cheese4cutService.java, the finalizeCheese4cut method intentionally re-sorts photos using findAllByIdInOrderByLikesDescCreatedDesc(request.photoIds()) instead of preserving the client's requested order. This is a defensive measure to ensure photos are always ordered by likes (DESC) and creation time (DESC), regardless of what order the client sends, preventing incorrect ordering from client errors.

Applied to files:

  • src/main/java/com/cheeeese/photo/application/PhotoQueryService.java
🧬 Code graph analysis (1)
src/main/java/com/cheeeese/photo/application/PhotoQueryService.java (2)
src/main/java/com/cheeeese/global/util/ProfileImageUtil.java (1)
  • ProfileImageUtil (7-14)
src/main/java/com/cheeeese/photo/infrastructure/mapper/PhotoMapper.java (1)
  • PhotoMapper (15-176)
🔇 Additional comments (6)
src/main/java/com/cheeeese/album/application/AlbumService.java (1)

202-210: LGTM!

사용자 검증 로직이 제거되어 앨범 정보를 인증 없이 조회할 수 있도록 변경되었습니다. 앨범 코드 검증과 메이커 정보 조회 로직은 정상적으로 유지되고 있으며, SecurityConfig 및 Controller의 변경사항과 일관성 있게 구현되었습니다.

src/main/java/com/cheeeese/album/presentation/AlbumController.java (1)

78-79: LGTM!

컨트롤러 메서드에서 @CurrentUser 파라미터가 제거되어 서비스 레이어 및 보안 설정과 일관성 있게 변경되었습니다.

src/main/java/com/cheeeese/photo/dto/response/PhotoDetailResponse.java (1)

13-13: LGTM!

프로필 이미지 필드가 올바르게 추가되었습니다. Swagger 스키마의 requiredProperties에도 포함되어 있으며, 필드 정의에 적절한 문서화가 되어 있습니다.

Also applies to: 27-28

src/main/java/com/cheeeese/photo/infrastructure/mapper/PhotoMapper.java (1)

134-156: LGTM!

매퍼 메서드에 profileImage 파라미터가 추가되었고, 응답 객체 생성 시 올바르게 매핑되고 있습니다. PhotoDetailResponse 및 PhotoQueryService의 변경사항과 일관성 있게 구현되었습니다.

src/main/java/com/cheeeese/photo/application/PhotoQueryService.java (1)

4-4: LGTM!

사진 상세 조회에 프로필 이미지 조회 로직이 깔끔하게 추가되었습니다. ProfileImageUtil.resolveProfileImage를 사용하여 사진 업로더의 프로필 이미지를 가져오고, 매퍼에 올바르게 전달하고 있습니다.

Also applies to: 98-98, 108-108

src/main/java/com/cheeeese/global/config/SecurityConfig.java (1)

43-44: 비즈니스 요구사항 확인 필요 - 엔드포인트 공개 접근 의도 명시

이 엔드포인트의 공개 접근이 의도된 설계인지 명확히 확인하고 문서화해주세요.

검증 결과:

  • AlbumInfoResponse는 앨범 제목, 테마, 생성자명, 참여자 수 등 메타데이터만 반환 (민감한 정보 없음)
  • 패턴 일관성: /v1/album/*/invitation, /v1/album/*/participants 등 다른 앨범 조회 엔드포인트도 이미 공개 접근 허용
  • getAlbumInfo는 앨범 코드 존재 여부만 검증하며, 권한 체크 없음 (일반 공개 엔드포인트와 동일)

요청 사항:

  • 이 엔드포인트의 공개 접근이 앨범 공유/미리보기 기능의 일부인지 명시적으로 확인
  • 가능하면 Swagger/코드 주석에 의도를 명시 (예: "앨범 공유용 공개 엔드포인트")

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 and usage tips.

@zyovn zyovn merged commit 049edcc into develop Nov 19, 2025
1 check passed
@zyovn zyovn deleted the fix/#80-album-expired branch November 19, 2025 17:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐛bug Something isn't working ✨feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: 앨범 정보, 참여자 조회 로직 수정

2 participants