Skip to content

Conversation

@KoSeonJe
Copy link
Collaborator

@KoSeonJe KoSeonJe commented Jan 6, 2026

🚀 작업 내용

전체 동아리 대상 피드 조회

before - 각 동아리당 1개 최신 피드만 조회
after - 동아리의 모든 피드를 조회

Summary by CodeRabbit

릴리스 노트

  • Refactor
    • 피드 관련 API 응답 구조 및 쿼리 객체 명명을 정리했습니다.
    • 피드 페이지 조회 API의 응답 및 처리 로직을 재구성했습니다.
    • 이메일 발송 시스템의 설정 처리 방식을 개선했습니다.

✏️ Tip: You can customize this high-level summary in your review settings.

@KoSeonJe KoSeonJe self-assigned this Jan 6, 2026
@KoSeonJe KoSeonJe added the 🎯리팩토링 리팩토링 및 고도화 이슈 label Jan 6, 2026
@coderabbitai
Copy link

coderabbitai bot commented Jan 6, 2026

Walkthrough

이 PR은 피드 관련 페이징 DTO와 쿼리 타입들을 NewestFeedPerClubPage*에서 FeedPage*로 일괄 이름 변경하고, SesFormResultEmailSender의 설정값 주입을 하드코딩된 값으로 교체합니다.

Changes

Cohort / File(s) 변경 요약
피드 API 및 컨트롤러 리팩토링
src/main/java/ddingdong/ddingdongBE/domain/feed/api/FeedApi.java, src/main/java/ddingdong/ddingdongBE/domain/feed/controller/FeedController.java
NewestFeedPerClubPageResponseFeedPageResponse로 반환 타입 변경, 관련 import 업데이트
피드 쿼리 및 응답 DTO 리팩토링
src/main/java/ddingdong/ddingdongBE/domain/feed/controller/dto/response/FeedPageResponse.java, src/main/java/ddingdong/ddingdongBE/domain/feed/service/dto/query/FeedPageQuery.java, src/main/java/ddingdong/ddingdongBE/domain/feed/service/dto/query/NewestFeedPerClubPageQuery.java
NewestFeedPerClubPageQuery 삭제 및 FeedPageQuery 신규 생성, NewestFeedListResponseFeedListResponse 이름 변경, 제네릭 타입 및 매핑 로직 업데이트
피드 서비스 리팩토링
src/main/java/ddingdong/ddingdongBE/domain/feed/service/FacadeFeedService.java
getAllFeedPage() 반환 타입을 NewestFeedPerClubPageQueryFeedPageQuery로 변경, 팩토리 메서드 호출 업데이트
피드 저장소 포맷팅
src/main/java/ddingdong/ddingdongBE/domain/feed/repository/FeedRepository.java
파라미터 annotation 들여쓰기 정렬 (기능 변경 없음)
이메일 발송 인프라 변경
src/main/java/ddingdong/ddingdongBE/domain/form/infrastructure/SesFormResultEmailSender.java
@Value 주입 필드 제거, configurationSetName"ddingdong-form-application-result-set" 하드코딩 값으로 교체
테스트 파일 포맷팅
src/test/java/ddingdong/ddingdongBE/common/fixture/FeedFixture.java, src/test/java/ddingdong/ddingdongBE/common/fixture/VodProcessingJobFixture.java, src/test/java/ddingdong/ddingdongBE/domain/feed/repository/FeedRepositoryTest.java
파일 끝 줄바꿈 추가 및 공백 정렬 (기능 변경 없음)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

✨기능

Suggested reviewers

  • wonjunYou
  • 5uhwann
  • Seooooo24

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
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 (2 passed)
Check name Status Explanation
Title check ✅ Passed 제목이 변경사항의 핵심 목표인 '피드 전체 조회 로직 수정'을 명확하게 반영하고 있어 변경사항과 관련성이 높습니다.
Description check ✅ Passed 설명이 저장소의 템플릿 구조를 따르고 있으며, '작업 내용' 섹션에서 전후 변화를 명확하게 기술했으나 '고민했던 내용'과 '리뷰 중점사항' 섹션이 누락되었습니다.
✨ Finishing touches
  • 📝 Generate docstrings

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.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (3)
src/main/java/ddingdong/ddingdongBE/domain/feed/repository/FeedRepository.java (1)

41-58: getAllFeedPage 쿼리: 모든 피드 조회 로직이 올바르게 구현되었습니다

이 메서드는 모든 동아리의 피드를 커서 기반으로 페이징하는 설계로, PR 목표(각 동아리의 모든 피드 조회)와 일치합니다. 쿼리 로직은 안정적이고 일관성이 있습니다.

제안: 향후 메서드 이름을 findAllFeedPage로 통일하면 findPageByClubIdOrderById와의 네이밍 일관성이 더욱 개선될 것 같습니다.

src/main/java/ddingdong/ddingdongBE/domain/form/infrastructure/SesFormResultEmailSender.java (1)

41-41: 설정값을 외부화하는 것을 권장합니다.

구성 세트 이름을 하드코딩하면 환경별(개발, 스테이징, 프로덕션) 유연성이 떨어지고 테스트가 어려워집니다. 이전처럼 @Value를 통해 외부 설정으로 관리하는 것이 Spring Boot 모범 사례에 부합합니다.

이 변경이 의도적인 것으로 보이는데, 특별한 이유가 있나요? 만약 모든 환경에서 동일한 구성 세트 이름을 사용해야 하는 요구사항이 있다면, 현재 구현도 괜찮지만, 그렇지 않다면 아래와 같이 되돌리는 것을 권장합니다:

🔎 외부 설정으로 되돌리는 제안

클래스 필드에 설정값 추가:

  @Value("${cloud.aws.ses.sender-email}")
  private String senderEmail;
+ 
+ @Value("${cloud.aws.ses.configuration-set-name}")
+ private String configurationSetName;

  private final SesEmailSender sesEmailSender;

그리고 line 41을 다음과 같이 수정:

- .configurationSetName("ddingdong-form-application-result-set")
+ .configurationSetName(configurationSetName)
src/main/java/ddingdong/ddingdongBE/domain/feed/controller/dto/response/FeedPageResponse.java (1)

10-15: 필드명 일관성 검토 권장

레코드 이름이 FeedPageResponse로 변경되었으나 필드명은 여전히 newestFeeds입니다. PR 목적이 "동아리별 최신 피드 1개"에서 "모든 피드 조회"로 변경하는 것이므로, 필드명을 feeds로 변경하면 의미가 더 명확해집니다.

다만, API 응답 JSON 필드명 변경은 클라이언트에 영향을 줄 수 있으므로 의도적인 결정이라면 현재 상태를 유지해도 무방합니다.

🔎 필드명 변경 제안
 public record FeedPageResponse(
-        @ArraySchema(schema = @Schema(name = "동아리 최신 피드 정보", implementation = FeedListResponse.class))
-        List<FeedListResponse> newestFeeds,
+        @ArraySchema(schema = @Schema(name = "동아리 피드 정보", implementation = FeedListResponse.class))
+        List<FeedListResponse> feeds,
         @Schema(name = "피드 페이지 정보", implementation = PagingResponse.class)
         PagingResponse pagingInfo
 ) {
📜 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 3a52104 and 635263b.

📒 Files selected for processing (11)
  • src/main/java/ddingdong/ddingdongBE/domain/feed/api/FeedApi.java
  • src/main/java/ddingdong/ddingdongBE/domain/feed/controller/FeedController.java
  • src/main/java/ddingdong/ddingdongBE/domain/feed/controller/dto/response/FeedPageResponse.java
  • src/main/java/ddingdong/ddingdongBE/domain/feed/repository/FeedRepository.java
  • src/main/java/ddingdong/ddingdongBE/domain/feed/service/FacadeFeedService.java
  • src/main/java/ddingdong/ddingdongBE/domain/feed/service/dto/query/FeedPageQuery.java
  • src/main/java/ddingdong/ddingdongBE/domain/feed/service/dto/query/NewestFeedPerClubPageQuery.java
  • src/main/java/ddingdong/ddingdongBE/domain/form/infrastructure/SesFormResultEmailSender.java
  • src/test/java/ddingdong/ddingdongBE/common/fixture/FeedFixture.java
  • src/test/java/ddingdong/ddingdongBE/common/fixture/VodProcessingJobFixture.java
  • src/test/java/ddingdong/ddingdongBE/domain/feed/repository/FeedRepositoryTest.java
💤 Files with no reviewable changes (1)
  • src/main/java/ddingdong/ddingdongBE/domain/feed/service/dto/query/NewestFeedPerClubPageQuery.java
🧰 Additional context used
🧬 Code graph analysis (1)
src/main/java/ddingdong/ddingdongBE/domain/feed/service/dto/query/FeedPageQuery.java (1)
src/main/java/ddingdong/ddingdongBE/domain/feed/service/dto/query/MyFeedPageQuery.java (1)
  • MyFeedPageQuery (6-18)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build_and_push
🔇 Additional comments (10)
src/test/java/ddingdong/ddingdongBE/common/fixture/FeedFixture.java (1)

32-32: 파일 끝에 개행 추가 - 승인합니다.

파일 끝에 개행을 추가한 부분입니다. 코드 스타일 정리 차원에서 적절한 변경입니다. 기존 팩토리 메서드들은 그대로 유지되며 기능적 변화가 없습니다.

src/test/java/ddingdong/ddingdongBE/domain/feed/repository/FeedRepositoryTest.java (1)

216-220: LGTM!

클럽 변수 선언과 피드 변수 선언 사이에 빈 줄을 추가하여 가독성을 개선한 단순 포맷팅 변경입니다. 기능적 변경 사항은 없습니다.

src/main/java/ddingdong/ddingdongBE/domain/feed/repository/FeedRepository.java (2)

35-39: 파라미터 포맷팅 개선 승인

코드 가독성을 위한 파라미터 포맷팅 변경이 잘 적용되었습니다.

Also applies to: 59-62


11-34: findPageByClubIdOrderById 쿼리: 커서 기반 페이징 구현이 적절합니다

Cursor-based pagination 구현이 올바릅니다. id 필드는 indexed 고유값이므로 cursor로 적합하며, DESC 정렬로 최신 데이터부터 조회합니다. 삭제된 피드 필터링 및 VOD 처리 상태 검증도 명확합니다.

src/main/java/ddingdong/ddingdongBE/domain/feed/service/FacadeFeedService.java (1)

39-51: LGTM!

NewestFeedPerClubPageQuery에서 FeedPageQuery로의 타입 리네이밍이 일관되게 적용되었습니다. 메서드 시그니처, empty 생성, 팩토리 메서드 호출 모두 올바르게 변경되었습니다.

src/main/java/ddingdong/ddingdongBE/domain/feed/service/dto/query/FeedPageQuery.java (1)

1-18: LGTM!

FeedPageQuery 레코드가 기존 MyFeedPageQuery와 동일한 패턴으로 구현되어 코드베이스 전반의 일관성을 유지합니다. of() 팩토리 메서드와 createEmpty() 헬퍼가 적절하게 구현되었습니다.

src/main/java/ddingdong/ddingdongBE/domain/feed/api/FeedApi.java (1)

33-41: API 응답 타입 변경 확인

NewestFeedPerClubPageResponse에서 FeedPageResponse로 API 응답 타입이 변경되었습니다. Swagger 스키마도 올바르게 업데이트되었습니다.

API를 사용하는 클라이언트(프론트엔드 등)에서 응답 타입 변경에 대응했는지 확인이 필요합니다.

src/main/java/ddingdong/ddingdongBE/domain/feed/controller/FeedController.java (1)

30-37: LGTM!

컨트롤러가 업데이트된 FeedApi 인터페이스를 올바르게 구현합니다. FeedPageQueryFeedPageResponse 타입 사용이 서비스 레이어 및 API 레이어와 일관성 있게 적용되었습니다.

src/main/java/ddingdong/ddingdongBE/domain/feed/controller/dto/response/FeedPageResponse.java (2)

17-25: LGTM!

FeedPageQuery를 받아 FeedPageResponse로 변환하는 팩토리 메서드가 올바르게 구현되었습니다. 스트림 매핑과 PagingResponse 생성 로직이 적절합니다.


27-50: LGTM!

FeedListResponse 내부 레코드가 빌더 패턴을 사용하여 깔끔하게 구현되었습니다. FeedListQuery에서 응답 객체로의 매핑이 정확합니다.

Copy link
Collaborator

@Gopistol Gopistol left a comment

Choose a reason for hiding this comment

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

고생하셨습니다!

@KoSeonJe KoSeonJe merged commit 207b7f7 into develop Jan 6, 2026
2 checks passed
@KoSeonJe KoSeonJe deleted the revert/DDING-001 branch January 6, 2026 13:44
KoSeonJe added a commit that referenced this pull request Jan 6, 2026
@KoSeonJe KoSeonJe mentioned this pull request Jan 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🎯리팩토링 리팩토링 및 고도화 이슈

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants