Skip to content

Conversation

@chaen-ing
Copy link
Member

@chaen-ing chaen-ing commented Oct 19, 2025

📝 개요

피드백 api에 타입 필드를 추가했습니다.
추가로 배포 프로세스에 문제가 있어서 수정했습니다.

🛠️ 작업 사항

  • 작업 내용 1
  • 작업 내용 2

🔗 관련 이슈 / JIRA

✅ 체크리스트

  • 코드 리뷰 반영 완료
  • 테스트 코드 작성
  • 로컬 테스트 완료
  • 문서 업데이트 필요 시 반영

🙏 기타 사항

추가적으로 리뷰어가 알아야 할 사항 작성

Summary by CodeRabbit

새 기능

  • 피드백 제출 시 피드백 유형(음식 검색, 음식점 검색, 커뮤니티)을 구분하여 선택할 수 있습니다.

개선 사항

  • 배포 파이프라인 기술이 업데이트되었습니다.

@chaen-ing chaen-ing requested a review from erika0915 October 19, 2025 03:33
@chaen-ing chaen-ing self-assigned this Oct 19, 2025
@chaen-ing chaen-ing added the ♻️ Refactor 코드 리팩토링 label Oct 19, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 19, 2025

워크스루(Walkthrough)

피드백 기능에 피드백 유형 추적을 추가했습니다. 새로운 FeedbackType 열거형(SEARCH_FOOD, SEARCH_RESTAURANT, SEARCH_COMMUNITY)을 도입하고, Feedback 도메인 엔티티, 요청 DTO, 서비스 계층에 type 필드를 통합했습니다. CD 스크립트의 docker-compose 명령어를 docker compose로 업데이트했으며, 동시성 테스트를 제거했습니다.

변경사항(Changes)

코호트 / 파일(들) 변경 요약
피드백 타입 기능 추가
src/main/java/com/kkinikong/be/feedback/domain/type/FeedbackType.java
세 가지 상수(SEARCH_FOOD, SEARCH_RESTAURANT, SEARCH_COMMUNITY)와 label 필드를 갖는 새로운 공개 열거형 추가
피드백 도메인 및 DTO 확장
src/main/java/com/kkinikong/be/feedback/domain/Feedback.java, src/main/java/com/kkinikong/be/feedback/dto/request/FeedbackRequest.java
FeedbackType 필드를 도메인 엔티티와 요청 레코드에 추가하여 생성자 서명 업데이트
API 문서화 및 서비스 계층 통합
src/main/java/com/kkinikong/be/feedback/controller/FeedbackController.java, src/main/java/com/kkinikong/be/feedback/service/FeedbackService.java
Swagger 설명 추가 및 addFeedback 메서드에서 type 필드 처리 로직 추가
배포 스크립트 업데이트
.github/workflows/kkinikong-be-cd.yml
모든 docker-compose 명령어를 docker compose 신 구문으로 변경
테스트 정리
src/test/java/com/kkinikong/be/community/service/CommunityServiceTest.java
동시성 테스트 메서드 제거

시퀀스 다이어그램(Sequence Diagram)

sequenceDiagram
    participant Client
    participant Controller as FeedbackController
    participant Service as FeedbackService
    participant Domain as Feedback
    participant DB as Database

    Client->>Controller: POST /feedback<br/>(rating, content, type)
    Controller->>Service: addFeedback(FeedbackRequest)
    Service->>Domain: new Feedback(rating, content, type)
    Domain->>Domain: Initialize fields
    Service->>DB: save(feedback)
    DB-->>Service: Saved feedback
    Service-->>Controller: Response
    Controller-->>Client: 201 Created
Loading

예상 코드 리뷰 노력

🎯 3 (중간) | ⏱️ ~20분

🐰 새로운 타입을 들고 피드백 팀이 나타났네요,
음식도, 맛집도, 커뮤니티도 구분해요.
도커는 멋진 새 문법으로 춤을 추고,
테스트는 쉬어가며 정리되어가고,
변화의 흐름을 따라 모두 한 걸음씩. 🎉

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 제목 "피드백 api 수정"은 변경 사항의 주요 부분을 정확하게 반영합니다. 실제 변경 내용은 FeedbackController, Feedback, FeedbackType(신규 enum), FeedbackRequest, FeedbackService 등 5개 파일의 피드백 관련 코드에 타입 필드를 추가하는 것이 핵심입니다. 비록 docker-compose 명령어 업데이트도 포함되어 있지만, 이는 부수적인 변경으로 주요 작업은 피드백 API 개선입니다. 제목은 간결하고 명확하며, SCRUM-415 이슈 ID도 포함되어 있어 추적 가능합니다.
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 refactor/SCRUM-415-feedback

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
Contributor

@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: 3

Caution

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

⚠️ Outside diff range comments (2)
src/test/java/com/kkinikong/be/community/service/CommunityServiceTest.java (1)

34-46: 사용되지 않는 테스트 설정 코드입니다.

테스트 메서드가 주석 처리되어 setUp()에서 생성한 100명의 유저가 더 이상 사용되지 않습니다. 불필요한 데이터베이스 작업이 매 테스트마다 실행됩니다.

테스트 메서드를 삭제하거나 재활성화할 계획이 없다면 다음과 같이 setUp() 메서드도 함께 제거하세요:

-  @BeforeEach
-  void setUp() {
-    // 유저 100명 생성
-    for (long i = 1; i <= THREAD_COUNT; i++) {
-      User user =
-          userRepository.save(
-              User.basicLoginBuilder()
-                  .email("user" + i + "@example.com")
-                  .password("password" + i)
-                  .buildBasicLogin());
-      userIds.add(user.getId());
-    }
-  }
src/main/java/com/kkinikong/be/feedback/service/FeedbackService.java (1)

18-18: 사용되지 않는 의존성입니다.

UserRepository가 주입되었지만 addFeedback 메서드에서 사용되지 않습니다. 향후 사용 계획이 없다면 제거하세요.

 @Service
 @RequiredArgsConstructor
 public class FeedbackService {
 
   private final FeedbackRepository feedbackRepository;
-  private final UserRepository userRepository;
🧹 Nitpick comments (1)
src/main/java/com/kkinikong/be/feedback/controller/FeedbackController.java (1)

26-31: API 문서 설명 포맷을 개선할 수 있습니다.

문자열 연결을 사용한 현재 방식은 가독성이 떨어집니다. 텍스트 블록이나 단일 문자열로 작성하면 더 깔끔합니다.

   @Operation(
       summary = "의견 남기기",
       description =
-          "type에 SEARCH_FOOD(\"음식결과없음\")"
-              + "  SEARCH_RESTAURANT(\"식당결과없음\"),"
-              + "  SEARCH_COMMUNITY(\"커뮤니티결과없음\") 중 하나로 의견을 남깁니다.")
+          "type에 SEARCH_FOOD(\"음식결과없음\"), SEARCH_RESTAURANT(\"식당결과없음\"), SEARCH_COMMUNITY(\"커뮤니티결과없음\") 중 하나로 의견을 남깁니다.")
📜 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 d526641 and 6a89863.

📒 Files selected for processing (7)
  • .github/workflows/kkinikong-be-cd.yml (1 hunks)
  • src/main/java/com/kkinikong/be/feedback/controller/FeedbackController.java (1 hunks)
  • src/main/java/com/kkinikong/be/feedback/domain/Feedback.java (2 hunks)
  • src/main/java/com/kkinikong/be/feedback/domain/type/FeedbackType.java (1 hunks)
  • src/main/java/com/kkinikong/be/feedback/dto/request/FeedbackRequest.java (1 hunks)
  • src/main/java/com/kkinikong/be/feedback/service/FeedbackService.java (1 hunks)
  • src/test/java/com/kkinikong/be/community/service/CommunityServiceTest.java (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (4)
src/main/java/com/kkinikong/be/feedback/service/FeedbackService.java (1)
src/main/java/com/kkinikong/be/feedback/repository/FeedbackRepository.java (1)
  • FeedbackRepository (7-7)
src/main/java/com/kkinikong/be/feedback/dto/request/FeedbackRequest.java (3)
src/main/java/com/kkinikong/be/review/dto/request/ReviewRequest.java (1)
  • ReviewRequest (13-19)
src/main/java/com/kkinikong/be/community/dto/request/CommunityPostUpdateRequest.java (1)
  • CommunityPostUpdateRequest (10-14)
src/main/java/com/kkinikong/be/community/dto/request/CommunityPostRequest.java (1)
  • CommunityPostRequest (8-11)
src/main/java/com/kkinikong/be/feedback/domain/type/FeedbackType.java (8)
src/main/java/com/kkinikong/be/feedback/exception/errorcode/FeedbackErrorCode.java (1)
  • Getter (10-16)
src/main/java/com/kkinikong/be/notification/domain/type/NotificationType.java (1)
  • Getter (5-18)
src/main/java/com/kkinikong/be/convenience/domain/type/Category.java (1)
  • Getter (5-17)
src/main/java/com/kkinikong/be/community/domain/type/Category.java (1)
  • Getter (5-19)
src/main/java/com/kkinikong/be/review/domain/type/Tag.java (1)
  • Getter (5-35)
src/main/java/com/kkinikong/be/report/domain/type/ReportType.java (1)
  • ReportType (3-8)
src/main/java/com/kkinikong/be/feedback/exception/FeedbackException.java (1)
  • Getter (8-12)
src/main/java/com/kkinikong/be/store/domain/type/Category.java (1)
  • Getter (5-24)
src/test/java/com/kkinikong/be/community/service/CommunityServiceTest.java (3)
src/main/java/com/kkinikong/be/community/service/CommunityLikeToggleExecutor.java (3)
  • Service (30-105)
  • Transactional (41-69)
  • Transactional (71-98)
src/main/java/com/kkinikong/be/community/domain/CommunityPost.java (2)
  • decrementLikeCount (99-101)
  • incrementLikeCount (95-97)
src/main/java/com/kkinikong/be/community/service/CommunityService.java (1)
  • postCommunityCommentLike (210-228)
🔇 Additional comments (6)
.github/workflows/kkinikong-be-cd.yml (3)

64-65: Docker Compose v1 → v2 마이그레이션 완료 - 권장 변경사항 입니다.

Docker Compose v1은 2023년 7월부로 더 이상 지원되지 않으며, Compose v2의 권장 명령어 구문은 docker compose 입니다. 모든 docker-compose 명령이 일관되게 docker compose로 변경되었으므로 현대적 Docker 표준을 따르고 있습니다.


69-71: Blue-Green 배포 로직에서 docker compose 명령어 일관성 유지

배포 프로세스의 모든 docker compose 명령어(stop, rm, up)가 일관되게 업데이트되었으며, || true 절을 통해 멱등성(idempotency)이 유지되고 있습니다. 이는 컨테이너가 실행 중이지 않을 때도 오류 없이 동작하도록 보장합니다.

Also applies to: 82-84


78-78: 정리 단계에서도 docker compose 명령어 적용

기존 컨테이너 중지(stop) 명령어도 새로운 docker compose 구문으로 업데이트되었으며, || true 절이 있어 서비스가 이미 중지된 경우에도 워크플로우가 계속 진행됩니다.

Also applies to: 91-91

src/main/java/com/kkinikong/be/feedback/service/FeedbackService.java (1)

23-27: 변경 사항이 올바르게 구현되었습니다.

새로운 type 필드가 요청 DTO에서 도메인 엔티티로 정확하게 전달됩니다.

src/main/java/com/kkinikong/be/feedback/domain/type/FeedbackType.java (1)

1-16: 구현이 잘 되었습니다.

프로젝트의 다른 enum(NotificationType, Category, Tag)과 일관된 패턴을 따르고 있습니다. 코드가 명확하고 유지보수하기 좋습니다.

src/main/java/com/kkinikong/be/feedback/domain/Feedback.java (1)

31-36: 생성자가 올바르게 업데이트되었습니다.

새로운 type 파라미터가 생성자에 추가되고 적절하게 초기화됩니다.

Copy link
Member

@erika0915 erika0915 left a comment

Choose a reason for hiding this comment

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

수고해쓰요👍🏻💯

@chaen-ing chaen-ing merged commit 293a720 into develop Oct 19, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

♻️ Refactor 코드 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants