From a0eb5f897982094dc514d6401505826ca6459e03 Mon Sep 17 00:00:00 2001 From: lsh9672 Date: Tue, 17 Jun 2025 19:51:03 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EB=B6=84=EC=84=9D=20=ED=94=84?= =?UTF-8?q?=EB=A1=AC=ED=94=84=ED=8A=B8=20=EC=88=98=EC=A0=95(=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20=EB=B6=84=EC=84=9D=EC=8B=9C=20=EB=B6=80=EC=A0=95?= =?UTF-8?q?=EC=9D=98=EA=B2=AC=20=EC=B6=94=EA=B0=80.)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ktds/hi/analytics/biz/domain/AiFeedback.java | 3 +++ .../com/ktds/hi/analytics/biz/service/AnalyticsService.java | 4 ++++ .../com/ktds/hi/analytics/infra/dto/AiAnalysisResponse.java | 3 +++ .../hi/analytics/infra/dto/AiFeedbackDetailResponse.java | 1 + .../ktds/hi/analytics/infra/gateway/AIServiceAdapter.java | 3 +++ .../analytics/infra/gateway/AnalyticsRepositoryAdapter.java | 2 ++ .../hi/analytics/infra/gateway/entity/AiFeedbackEntity.java | 5 ++++- 7 files changed, 20 insertions(+), 1 deletion(-) diff --git a/analytics/src/main/java/com/ktds/hi/analytics/biz/domain/AiFeedback.java b/analytics/src/main/java/com/ktds/hi/analytics/biz/domain/AiFeedback.java index 16014cd..3e19876 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/biz/domain/AiFeedback.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/biz/domain/AiFeedback.java @@ -4,6 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; import java.time.LocalDateTime; import java.util.List; @@ -16,12 +17,14 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor +@ToString public class AiFeedback { private Long id; private Long storeId; private String summary; private List positivePoints; + private List negativePoints; private List improvementPoints; private List recommendations; private String sentimentAnalysis; diff --git a/analytics/src/main/java/com/ktds/hi/analytics/biz/service/AnalyticsService.java b/analytics/src/main/java/com/ktds/hi/analytics/biz/service/AnalyticsService.java index e73938b..63ee09a 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/biz/service/AnalyticsService.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/biz/service/AnalyticsService.java @@ -123,6 +123,7 @@ public class AnalyticsService implements AnalyticsUseCase { .storeId(storeId) .summary(aiFeedback.get().getSummary()) .positivePoints(aiFeedback.get().getPositivePoints()) + .negativePoints(aiFeedback.get().getNegativePoints()) .improvementPoints(aiFeedback.get().getImprovementPoints()) .recommendations(aiFeedback.get().getRecommendations()) .sentimentAnalysis(aiFeedback.get().getSentimentAnalysis()) @@ -460,6 +461,7 @@ public class AnalyticsService implements AnalyticsUseCase { .feedbackId(aiFeedback.getId()) .summary(aiFeedback.getSummary()) .positivePoints(aiFeedback.getPositivePoints()) + .negativePoints(aiFeedback.getNegativePoints()) .improvementPoints(aiFeedback.getImprovementPoints()) .recommendations(aiFeedback.getRecommendations()) .sentimentAnalysis(aiFeedback.getSentimentAnalysis()) @@ -530,11 +532,13 @@ public class AnalyticsService implements AnalyticsUseCase { // 2. 실제 AI 서비스 호출 (기존 하드코딩 부분을 수정) AiFeedback aiFeedback = aiServicePort.generateFeedback(reviewData); + // 3. 도메인 객체 속성 설정 AiFeedback completeAiFeedback = AiFeedback.builder() .storeId(storeId) .summary(aiFeedback.getSummary()) .positivePoints(aiFeedback.getPositivePoints()) + .negativePoints(aiFeedback.getNegativePoints()) .improvementPoints(aiFeedback.getImprovementPoints()) .recommendations(aiFeedback.getRecommendations()) .sentimentAnalysis(aiFeedback.getSentimentAnalysis()) diff --git a/analytics/src/main/java/com/ktds/hi/analytics/infra/dto/AiAnalysisResponse.java b/analytics/src/main/java/com/ktds/hi/analytics/infra/dto/AiAnalysisResponse.java index 38b30f0..c224ae0 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/infra/dto/AiAnalysisResponse.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/infra/dto/AiAnalysisResponse.java @@ -31,6 +31,9 @@ public class AiAnalysisResponse { @Schema(description = "긍정적 요소") private List positivePoints; + @Schema(description = "부정적 요소") + private List negativePoints; + @Schema(description = "개선점") private List improvementPoints; diff --git a/analytics/src/main/java/com/ktds/hi/analytics/infra/dto/AiFeedbackDetailResponse.java b/analytics/src/main/java/com/ktds/hi/analytics/infra/dto/AiFeedbackDetailResponse.java index f0e9080..6bc0e0d 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/infra/dto/AiFeedbackDetailResponse.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/infra/dto/AiFeedbackDetailResponse.java @@ -23,6 +23,7 @@ public class AiFeedbackDetailResponse { private Long storeId; private String summary; private List positivePoints; + private List negativePoints; private List improvementPoints; private List existActionPlan; // improvemnetPoints 중에서 처리 된것. private List recommendations; diff --git a/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/AIServiceAdapter.java b/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/AIServiceAdapter.java index a77f5c6..87202e5 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/AIServiceAdapter.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/AIServiceAdapter.java @@ -176,6 +176,7 @@ public class AIServiceAdapter implements AIServicePort { { "summary": "전체적인 분석 요약(2-3문장)", "positivePoints": ["긍정적 요소1", "긍정적 요소2", "긍정적 요소3"], + "negativePoints": ["부정적 요소1", "부정적 요소2", "부정적 요소3"], "improvementPoints": ["개선점1", "개선점2", "개선점3"], "recommendations": ["추천사항1", "추천사항2", "추천사항3"], "sentimentAnalysis": "전체적인 감정 분석 결과", @@ -187,6 +188,7 @@ public class AIServiceAdapter implements AIServicePort { 분석 시 다음 사항을 고려해주세요: 1. 긍정적 요소는 고객들이 자주 언급하는 좋은 점들 + 2. 부정적 요소는 고객들이 자주 언급하는 안좋은 점들(없는 경우에는 없음으로 표시) 2. 개선점은 부정적 피드백이나 불만사항 3. 추천사항은 매장 운영에 도움이 될 구체적인 제안 4. 신뢰도 점수는 0.0-1.0 사이의 값 @@ -278,6 +280,7 @@ public class AIServiceAdapter implements AIServicePort { return AiFeedback.builder() .summary((String) result.get("summary")) .positivePoints((List) result.get("positivePoints")) + .negativePoints((List) result.get("negativePoints")) .improvementPoints((List) result.get("improvementPoints")) .recommendations((List) result.get("recommendations")) .sentimentAnalysis((String) result.get("sentimentAnalysis")) diff --git a/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/AnalyticsRepositoryAdapter.java b/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/AnalyticsRepositoryAdapter.java index 0a660d0..c24b7a3 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/AnalyticsRepositoryAdapter.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/AnalyticsRepositoryAdapter.java @@ -105,6 +105,7 @@ public class AnalyticsRepositoryAdapter implements AnalyticsPort { .storeId(entity.getStoreId()) .summary(entity.getSummary()) .positivePoints(parseJsonToList(entity.getPositivePointsJson())) + .negativePoints(parseJsonToList(entity.getNegativePointsJson())) .improvementPoints(parseJsonToList(entity.getImprovementPointsJson())) .recommendations(parseJsonToList(entity.getRecommendationsJson())) .sentimentAnalysis(entity.getSentimentAnalysis()) @@ -124,6 +125,7 @@ public class AnalyticsRepositoryAdapter implements AnalyticsPort { .storeId(domain.getStoreId()) .summary(domain.getSummary()) .positivePointsJson(parseListToJson(domain.getPositivePoints())) + .negativePointsJson(parseListToJson(domain.getNegativePoints())) .improvementPointsJson(parseListToJson(domain.getImprovementPoints())) .recommendationsJson(parseListToJson(domain.getRecommendations())) .sentimentAnalysis(domain.getSentimentAnalysis()) diff --git a/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/entity/AiFeedbackEntity.java b/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/entity/AiFeedbackEntity.java index 6219c9e..dcf1977 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/entity/AiFeedbackEntity.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/infra/gateway/entity/AiFeedbackEntity.java @@ -42,7 +42,10 @@ public class AiFeedbackEntity { @Column(name = "positive_points", columnDefinition = "TEXT") private String positivePointsJson; - + + @Column(name = "negative_points", columnDefinition = "TEXT") + private String negativePointsJson; + @Column(name = "improvement_points", columnDefinition = "TEXT") private String improvementPointsJson;