feat : 분석 프롬프트 수정(리뷰 분석시 부정의견 추가.)

This commit is contained in:
lsh9672 2025-06-17 19:51:03 +09:00
parent a67cd0db79
commit a0eb5f8979
7 changed files with 20 additions and 1 deletions

View File

@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.ToString;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ -16,12 +17,14 @@ import java.util.List;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@ToString
public class AiFeedback { public class AiFeedback {
private Long id; private Long id;
private Long storeId; private Long storeId;
private String summary; private String summary;
private List<String> positivePoints; private List<String> positivePoints;
private List<String> negativePoints;
private List<String> improvementPoints; private List<String> improvementPoints;
private List<String> recommendations; private List<String> recommendations;
private String sentimentAnalysis; private String sentimentAnalysis;

View File

@ -123,6 +123,7 @@ public class AnalyticsService implements AnalyticsUseCase {
.storeId(storeId) .storeId(storeId)
.summary(aiFeedback.get().getSummary()) .summary(aiFeedback.get().getSummary())
.positivePoints(aiFeedback.get().getPositivePoints()) .positivePoints(aiFeedback.get().getPositivePoints())
.negativePoints(aiFeedback.get().getNegativePoints())
.improvementPoints(aiFeedback.get().getImprovementPoints()) .improvementPoints(aiFeedback.get().getImprovementPoints())
.recommendations(aiFeedback.get().getRecommendations()) .recommendations(aiFeedback.get().getRecommendations())
.sentimentAnalysis(aiFeedback.get().getSentimentAnalysis()) .sentimentAnalysis(aiFeedback.get().getSentimentAnalysis())
@ -460,6 +461,7 @@ public class AnalyticsService implements AnalyticsUseCase {
.feedbackId(aiFeedback.getId()) .feedbackId(aiFeedback.getId())
.summary(aiFeedback.getSummary()) .summary(aiFeedback.getSummary())
.positivePoints(aiFeedback.getPositivePoints()) .positivePoints(aiFeedback.getPositivePoints())
.negativePoints(aiFeedback.getNegativePoints())
.improvementPoints(aiFeedback.getImprovementPoints()) .improvementPoints(aiFeedback.getImprovementPoints())
.recommendations(aiFeedback.getRecommendations()) .recommendations(aiFeedback.getRecommendations())
.sentimentAnalysis(aiFeedback.getSentimentAnalysis()) .sentimentAnalysis(aiFeedback.getSentimentAnalysis())
@ -530,11 +532,13 @@ public class AnalyticsService implements AnalyticsUseCase {
// 2. 실제 AI 서비스 호출 (기존 하드코딩 부분을 수정) // 2. 실제 AI 서비스 호출 (기존 하드코딩 부분을 수정)
AiFeedback aiFeedback = aiServicePort.generateFeedback(reviewData); AiFeedback aiFeedback = aiServicePort.generateFeedback(reviewData);
// 3. 도메인 객체 속성 설정 // 3. 도메인 객체 속성 설정
AiFeedback completeAiFeedback = AiFeedback.builder() AiFeedback completeAiFeedback = AiFeedback.builder()
.storeId(storeId) .storeId(storeId)
.summary(aiFeedback.getSummary()) .summary(aiFeedback.getSummary())
.positivePoints(aiFeedback.getPositivePoints()) .positivePoints(aiFeedback.getPositivePoints())
.negativePoints(aiFeedback.getNegativePoints())
.improvementPoints(aiFeedback.getImprovementPoints()) .improvementPoints(aiFeedback.getImprovementPoints())
.recommendations(aiFeedback.getRecommendations()) .recommendations(aiFeedback.getRecommendations())
.sentimentAnalysis(aiFeedback.getSentimentAnalysis()) .sentimentAnalysis(aiFeedback.getSentimentAnalysis())

View File

@ -31,6 +31,9 @@ public class AiAnalysisResponse {
@Schema(description = "긍정적 요소") @Schema(description = "긍정적 요소")
private List<String> positivePoints; private List<String> positivePoints;
@Schema(description = "부정적 요소")
private List<String> negativePoints;
@Schema(description = "개선점") @Schema(description = "개선점")
private List<String> improvementPoints; private List<String> improvementPoints;

View File

@ -23,6 +23,7 @@ public class AiFeedbackDetailResponse {
private Long storeId; private Long storeId;
private String summary; private String summary;
private List<String> positivePoints; private List<String> positivePoints;
private List<String> negativePoints;
private List<String> improvementPoints; private List<String> improvementPoints;
private List<String> existActionPlan; // improvemnetPoints 중에서 처리 된것. private List<String> existActionPlan; // improvemnetPoints 중에서 처리 된것.
private List<String> recommendations; private List<String> recommendations;

View File

@ -176,6 +176,7 @@ public class AIServiceAdapter implements AIServicePort {
{ {
"summary": "전체적인 분석 요약(2-3문장)", "summary": "전체적인 분석 요약(2-3문장)",
"positivePoints": ["긍정적 요소1", "긍정적 요소2", "긍정적 요소3"], "positivePoints": ["긍정적 요소1", "긍정적 요소2", "긍정적 요소3"],
"negativePoints": ["부정적 요소1", "부정적 요소2", "부정적 요소3"],
"improvementPoints": ["개선점1", "개선점2", "개선점3"], "improvementPoints": ["개선점1", "개선점2", "개선점3"],
"recommendations": ["추천사항1", "추천사항2", "추천사항3"], "recommendations": ["추천사항1", "추천사항2", "추천사항3"],
"sentimentAnalysis": "전체적인 감정 분석 결과", "sentimentAnalysis": "전체적인 감정 분석 결과",
@ -187,6 +188,7 @@ public class AIServiceAdapter implements AIServicePort {
분석 다음 사항을 고려해주세요: 분석 다음 사항을 고려해주세요:
1. 긍정적 요소는 고객들이 자주 언급하는 좋은 점들 1. 긍정적 요소는 고객들이 자주 언급하는 좋은 점들
2. 부정적 요소는 고객들이 자주 언급하는 안좋은 점들(없는 경우에는 없음으로 표시)
2. 개선점은 부정적 피드백이나 불만사항 2. 개선점은 부정적 피드백이나 불만사항
3. 추천사항은 매장 운영에 도움이 구체적인 제안 3. 추천사항은 매장 운영에 도움이 구체적인 제안
4. 신뢰도 점수는 0.0-1.0 사이의 4. 신뢰도 점수는 0.0-1.0 사이의
@ -278,6 +280,7 @@ public class AIServiceAdapter implements AIServicePort {
return AiFeedback.builder() return AiFeedback.builder()
.summary((String) result.get("summary")) .summary((String) result.get("summary"))
.positivePoints((List<String>) result.get("positivePoints")) .positivePoints((List<String>) result.get("positivePoints"))
.negativePoints((List<String>) result.get("negativePoints"))
.improvementPoints((List<String>) result.get("improvementPoints")) .improvementPoints((List<String>) result.get("improvementPoints"))
.recommendations((List<String>) result.get("recommendations")) .recommendations((List<String>) result.get("recommendations"))
.sentimentAnalysis((String) result.get("sentimentAnalysis")) .sentimentAnalysis((String) result.get("sentimentAnalysis"))

View File

@ -105,6 +105,7 @@ public class AnalyticsRepositoryAdapter implements AnalyticsPort {
.storeId(entity.getStoreId()) .storeId(entity.getStoreId())
.summary(entity.getSummary()) .summary(entity.getSummary())
.positivePoints(parseJsonToList(entity.getPositivePointsJson())) .positivePoints(parseJsonToList(entity.getPositivePointsJson()))
.negativePoints(parseJsonToList(entity.getNegativePointsJson()))
.improvementPoints(parseJsonToList(entity.getImprovementPointsJson())) .improvementPoints(parseJsonToList(entity.getImprovementPointsJson()))
.recommendations(parseJsonToList(entity.getRecommendationsJson())) .recommendations(parseJsonToList(entity.getRecommendationsJson()))
.sentimentAnalysis(entity.getSentimentAnalysis()) .sentimentAnalysis(entity.getSentimentAnalysis())
@ -124,6 +125,7 @@ public class AnalyticsRepositoryAdapter implements AnalyticsPort {
.storeId(domain.getStoreId()) .storeId(domain.getStoreId())
.summary(domain.getSummary()) .summary(domain.getSummary())
.positivePointsJson(parseListToJson(domain.getPositivePoints())) .positivePointsJson(parseListToJson(domain.getPositivePoints()))
.negativePointsJson(parseListToJson(domain.getNegativePoints()))
.improvementPointsJson(parseListToJson(domain.getImprovementPoints())) .improvementPointsJson(parseListToJson(domain.getImprovementPoints()))
.recommendationsJson(parseListToJson(domain.getRecommendations())) .recommendationsJson(parseListToJson(domain.getRecommendations()))
.sentimentAnalysis(domain.getSentimentAnalysis()) .sentimentAnalysis(domain.getSentimentAnalysis())

View File

@ -42,7 +42,10 @@ public class AiFeedbackEntity {
@Column(name = "positive_points", columnDefinition = "TEXT") @Column(name = "positive_points", columnDefinition = "TEXT")
private String positivePointsJson; private String positivePointsJson;
@Column(name = "negative_points", columnDefinition = "TEXT")
private String negativePointsJson;
@Column(name = "improvement_points", columnDefinition = "TEXT") @Column(name = "improvement_points", columnDefinition = "TEXT")
private String improvementPointsJson; private String improvementPointsJson;