From 8ae401e7c275a85d3dd311dec915ea92b417dc29 Mon Sep 17 00:00:00 2001 From: chaen-ing Date: Sun, 19 Oct 2025 11:20:04 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[SCRUM-415]=20Debug=20:=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=A3=BC=EC=84=9D=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/CommunityServiceTest.java | 63 +++++++++---------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/src/test/java/com/kkinikong/be/community/service/CommunityServiceTest.java b/src/test/java/com/kkinikong/be/community/service/CommunityServiceTest.java index 11fcb146..a721e6b2 100644 --- a/src/test/java/com/kkinikong/be/community/service/CommunityServiceTest.java +++ b/src/test/java/com/kkinikong/be/community/service/CommunityServiceTest.java @@ -4,20 +4,15 @@ import java.util.ArrayList; import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.kkinikong.be.community.domain.CommunityPost; import com.kkinikong.be.community.repository.communityPost.CommunityPostRepository; import com.kkinikong.be.user.domain.User; import com.kkinikong.be.user.repository.UserRepository; @@ -50,33 +45,33 @@ void setUp() { } } - @Test - @DisplayName("서로 다른 유저들이 동시에 좋아요 누르는 경우") - void testConcurrentLikeToggleWithDifferentUsers() throws InterruptedException { - // given - final long postId = 24; // 테스트용 게시글 ID - ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT); - CountDownLatch countDownLatch = new CountDownLatch(THREAD_COUNT); - - // when - for (int i = 0; i < THREAD_COUNT; i++) { - Long userId = userIds.get(i); - executorService.execute( - () -> { - try { - communityService.postCommunityPostLike(postId, userId); - } finally { - countDownLatch.countDown(); - } - }); - } - - countDownLatch.await(); // 모든 스레드 작업 끝날 때까지 대기 - - // then - CommunityPost post = communityPostRepository.findById(postId).orElseThrow(); - System.out.println("최종 좋아요 수: " + post.getLikeCount()); - - assertThat(post.getLikeCount()).isEqualTo(THREAD_COUNT); // 좋아요 100개가 되어야 함 - } + // @Test + // @DisplayName("서로 다른 유저들이 동시에 좋아요 누르는 경우") + // void testConcurrentLikeToggleWithDifferentUsers() throws InterruptedException { + // // given + // final long postId = 24; // 테스트용 게시글 ID + // ExecutorService executorService = Executors.newFixedThreadPool(THREAD_COUNT); + // CountDownLatch countDownLatch = new CountDownLatch(THREAD_COUNT); + // + // // when + // for (int i = 0; i < THREAD_COUNT; i++) { + // Long userId = userIds.get(i); + // executorService.execute( + // () -> { + // try { + // communityService.postCommunityPostLike(postId, userId); + // } finally { + // countDownLatch.countDown(); + // } + // }); + // } + // + // countDownLatch.await(); // 모든 스레드 작업 끝날 때까지 대기 + // + // // then + // CommunityPost post = communityPostRepository.findById(postId).orElseThrow(); + // System.out.println("최종 좋아요 수: " + post.getLikeCount()); + // + // assertThat(post.getLikeCount()).isEqualTo(THREAD_COUNT); // 좋아요 100개가 되어야 함 + // } } From fcdcbc18c7a4e2aa28bc249d645e59f01d8f9180 Mon Sep 17 00:00:00 2001 From: chaen-ing Date: Sun, 19 Oct 2025 11:27:47 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[SCRUM-415]=20Refactor=20:=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=EB=B0=B1=20api=EC=97=90=20=ED=94=BC=EB=93=9C=EB=B0=B1?= =?UTF-8?q?=20=ED=83=80=EC=9E=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feedback/controller/FeedbackController.java | 7 ++++++- .../kkinikong/be/feedback/domain/Feedback.java | 7 ++++++- .../be/feedback/domain/type/FeedbackType.java | 16 ++++++++++++++++ .../be/feedback/dto/request/FeedbackRequest.java | 5 ++++- .../be/feedback/service/FeedbackService.java | 7 ++++++- 5 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/kkinikong/be/feedback/domain/type/FeedbackType.java diff --git a/src/main/java/com/kkinikong/be/feedback/controller/FeedbackController.java b/src/main/java/com/kkinikong/be/feedback/controller/FeedbackController.java index f14814ff..1e464022 100644 --- a/src/main/java/com/kkinikong/be/feedback/controller/FeedbackController.java +++ b/src/main/java/com/kkinikong/be/feedback/controller/FeedbackController.java @@ -23,7 +23,12 @@ public class FeedbackController { private final FeedbackService feedbackService; - @Operation(summary = "의견 남기기") + @Operation( + summary = "의견 남기기", + description = + "type에 SEARCH_FOOD(\"음식결과없음\")" + + " SEARCH_RESTAURANT(\"식당결과없음\")," + + " SEARCH_COMMUNITY(\"커뮤니티결과없음\") 중 하나로 의견을 남깁니다.") @PostMapping("") public ResponseEntity> addFeedback(@RequestBody FeedbackRequest request) { feedbackService.addFeedback(request); diff --git a/src/main/java/com/kkinikong/be/feedback/domain/Feedback.java b/src/main/java/com/kkinikong/be/feedback/domain/Feedback.java index 37571158..0efa6c28 100644 --- a/src/main/java/com/kkinikong/be/feedback/domain/Feedback.java +++ b/src/main/java/com/kkinikong/be/feedback/domain/Feedback.java @@ -5,6 +5,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; +import com.kkinikong.be.feedback.domain.type.FeedbackType; import com.kkinikong.be.global.entity.BaseEntity; @Table(name = "feedbacks") @@ -24,9 +25,13 @@ public class Feedback extends BaseEntity { @Column(name = "content", length = 6000) private String content; + @Column(name = "type") + private FeedbackType type; + @Builder - public Feedback(int rating, String content) { + public Feedback(int rating, String content, FeedbackType type) { this.rating = rating; this.content = content; + this.type = type; } } diff --git a/src/main/java/com/kkinikong/be/feedback/domain/type/FeedbackType.java b/src/main/java/com/kkinikong/be/feedback/domain/type/FeedbackType.java new file mode 100644 index 00000000..21216cfe --- /dev/null +++ b/src/main/java/com/kkinikong/be/feedback/domain/type/FeedbackType.java @@ -0,0 +1,16 @@ +package com.kkinikong.be.feedback.domain.type; + +import lombok.Getter; + +@Getter +public enum FeedbackType { + SEARCH_FOOD("음식결과없음"), + SEARCH_RESTAURANT("식당결과없음"), + SEARCH_COMMUNITY("커뮤니티결과없음"); + + private final String label; + + FeedbackType(String label) { + this.label = label; + } +} diff --git a/src/main/java/com/kkinikong/be/feedback/dto/request/FeedbackRequest.java b/src/main/java/com/kkinikong/be/feedback/dto/request/FeedbackRequest.java index bfa9a4ac..cbb392de 100644 --- a/src/main/java/com/kkinikong/be/feedback/dto/request/FeedbackRequest.java +++ b/src/main/java/com/kkinikong/be/feedback/dto/request/FeedbackRequest.java @@ -4,4 +4,7 @@ import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Size; -public record FeedbackRequest(@Min(1) @Max(5) int rating, @Size(max = 6000) String content) {} +import com.kkinikong.be.feedback.domain.type.FeedbackType; + +public record FeedbackRequest( + @Min(1) @Max(5) int rating, @Size(max = 6000) String content, FeedbackType type) {} diff --git a/src/main/java/com/kkinikong/be/feedback/service/FeedbackService.java b/src/main/java/com/kkinikong/be/feedback/service/FeedbackService.java index 615b5af8..11dd2c1a 100644 --- a/src/main/java/com/kkinikong/be/feedback/service/FeedbackService.java +++ b/src/main/java/com/kkinikong/be/feedback/service/FeedbackService.java @@ -20,7 +20,12 @@ public class FeedbackService { @Transactional public void addFeedback(FeedbackRequest request) { Feedback feedback = - Feedback.builder().rating(request.rating()).content(request.content()).build(); + Feedback.builder() + .rating(request.rating()) + .content(request.content()) + .type(request.type()) + .build(); + feedbackRepository.save(feedback); } } From 6a89863d0d4c13d61028362fa9e4351559791176 Mon Sep 17 00:00:00 2001 From: chaen-ing Date: Sun, 19 Oct 2025 12:14:00 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[SCRUM-415]=20Refactor=20:=20docker=20compo?= =?UTF-8?q?se=20=EB=B2=84=EC=A0=84=20=EC=97=85=EA=B7=B8=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/kkinikong-be-cd.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/kkinikong-be-cd.yml b/.github/workflows/kkinikong-be-cd.yml index 0d4aeeca..6954ecc5 100644 --- a/.github/workflows/kkinikong-be-cd.yml +++ b/.github/workflows/kkinikong-be-cd.yml @@ -61,34 +61,34 @@ jobs: echo "🐳 최신 develop 이미지 pull" docker pull chaeeunkim/kkini-kong-be:develop - echo "🧲 docker-compose pull 로 의존 이미지 최신화" - docker-compose pull + echo "🧲 docker compose pull 로 의존 이미지 최신화" + docker compose pull if [ "$RUNNING" = "spring-blue" ]; then echo "✅ 현재 blue가 운영 중 -> green 배포 시작" - docker-compose stop spring-green || true - docker-compose rm -f spring-green || true - docker-compose up -d spring-green + docker compose stop spring-green || true + docker compose rm -f spring-green || true + docker compose up -d spring-green echo "🔧 nginx 설정을 green(8081)으로 변경" sudo sed -i 's/proxy_pass http:\/\/localhost:8080;/proxy_pass http:\/\/localhost:8081;/g' /etc/nginx/sites-available/default sudo nginx -s reload echo "🧹 기존 blue 컨테이너 중지" - docker-compose stop spring-blue || true + docker compose stop spring-blue || true else echo "✅ 현재 green이 운영 중 -> blue 배포 시작" - docker-compose stop spring-blue || true - docker-compose rm -f spring-blue || true - docker-compose up -d spring-blue + docker compose stop spring-blue || true + docker compose rm -f spring-blue || true + docker compose up -d spring-blue echo "🔧 nginx 설정을 blue(8080)으로 변경" sudo sed -i 's/proxy_pass http:\/\/localhost:8081;/proxy_pass http:\/\/localhost:8080;/g' /etc/nginx/sites-available/default sudo nginx -s reload echo "🧹 기존 green 컨테이너 중지" - docker-compose stop spring-green || true + docker compose stop spring-green || true fi echo "🩺 Redis 상태 확인 중..." From c4238caae5cf8feb5b16a0269eb9386de82808f2 Mon Sep 17 00:00:00 2001 From: chaen-ing Date: Sun, 19 Oct 2025 13:31:26 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[SCRUM-415]=20Refactor=20:=20enum=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/kkinikong/be/feedback/domain/Feedback.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/kkinikong/be/feedback/domain/Feedback.java b/src/main/java/com/kkinikong/be/feedback/domain/Feedback.java index 0efa6c28..a15ab5f3 100644 --- a/src/main/java/com/kkinikong/be/feedback/domain/Feedback.java +++ b/src/main/java/com/kkinikong/be/feedback/domain/Feedback.java @@ -26,6 +26,7 @@ public class Feedback extends BaseEntity { private String content; @Column(name = "type") + @Enumerated(EnumType.STRING) private FeedbackType type; @Builder