feat : 실행계획 생성 api 수정(선택한 내용만 실행계획 생성하도록 변경)
This commit is contained in:
parent
fd000a2d4e
commit
002adbed34
@ -21,6 +21,7 @@ public class ActionPlan {
|
||||
private Long id;
|
||||
private Long storeId;
|
||||
private Long userId;
|
||||
private Long feedbackId;
|
||||
private String title;
|
||||
private String description;
|
||||
private String period;
|
||||
|
||||
@ -444,9 +444,10 @@ public class AnalyticsService implements AnalyticsUseCase {
|
||||
|
||||
// 2. 실행계획 생성 (요청 시)
|
||||
List<String> actionPlans = null;
|
||||
if (Boolean.TRUE.equals(request.getGenerateActionPlan())) {
|
||||
actionPlans = aiServicePort.generateActionPlan(aiFeedback);
|
||||
}
|
||||
//TODO : 추후에 AI 분석후에 바로 실행계획까지 생성해야 한다면 추가.
|
||||
// if (Boolean.TRUE.equals(request.getGenerateActionPlan())) {
|
||||
// actionPlans = aiServicePort.generateActionPlan(aiFeedback);
|
||||
// }
|
||||
|
||||
// 3. 응답 생성
|
||||
AiAnalysisResponse response = AiAnalysisResponse.builder()
|
||||
@ -459,7 +460,7 @@ public class AnalyticsService implements AnalyticsUseCase {
|
||||
.sentimentAnalysis(aiFeedback.getSentimentAnalysis())
|
||||
.confidenceScore(aiFeedback.getConfidenceScore())
|
||||
.totalReviewsAnalyzed(getTotalReviewsCount(storeId, request.getDays()))
|
||||
.actionPlans(actionPlans)
|
||||
.actionPlans(actionPlans) //TODO : 사용하는 값은 아니지만 의존성을 위해 그대로 둠, 추후에 변경 필요.
|
||||
.analyzedAt(aiFeedback.getGeneratedAt())
|
||||
.build();
|
||||
|
||||
@ -474,7 +475,7 @@ public class AnalyticsService implements AnalyticsUseCase {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<String> generateActionPlansFromFeedback(Long feedbackId) {
|
||||
public List<String> generateActionPlansFromFeedback(ActionPlanCreateRequest request, Long feedbackId) {
|
||||
log.info("실행계획 생성: feedbackId={}", feedbackId);
|
||||
|
||||
try {
|
||||
@ -487,7 +488,7 @@ public class AnalyticsService implements AnalyticsUseCase {
|
||||
|
||||
AiFeedback feedback = aiFeedback.get();
|
||||
// 2. 기존 AIServicePort.generateActionPlan 메서드 활용
|
||||
List<String> actionPlans = aiServicePort.generateActionPlan(aiFeedback.get());
|
||||
List<String> actionPlans = aiServicePort.generateActionPlan(request.getActionPlanSelect(), aiFeedback.get());
|
||||
|
||||
|
||||
// 3. DB에 실행계획 저장
|
||||
@ -593,7 +594,8 @@ public class AnalyticsService implements AnalyticsUseCase {
|
||||
// ActionPlan 도메인 객체 생성 (기존 ActionPlanService의 패턴과 동일하게)
|
||||
ActionPlan actionPlan = ActionPlan.builder()
|
||||
.storeId(feedback.getStoreId())
|
||||
.userId(1L) // AI가 생성한 계획이므로 userId는 null
|
||||
.userId(0L) // AI가 생성한 계획이므로 userId는 0
|
||||
.feedbackId(feedback.getId())
|
||||
.title("AI 추천 실행계획 " + (i + 1))
|
||||
.description(planContent)
|
||||
.period("1개월") // 기본 실행 기간
|
||||
|
||||
@ -44,6 +44,6 @@ public interface AnalyticsUseCase {
|
||||
/**
|
||||
* AI 피드백 기반 실행계획 생성
|
||||
*/
|
||||
List<String> generateActionPlansFromFeedback(Long feedbackId);
|
||||
List<String> generateActionPlansFromFeedback(ActionPlanCreateRequest request,Long feedbackId);
|
||||
|
||||
}
|
||||
|
||||
@ -24,5 +24,5 @@ public interface AIServicePort {
|
||||
/**
|
||||
* 실행 계획 생성
|
||||
*/
|
||||
List<String> generateActionPlan(AiFeedback feedback);
|
||||
List<String> generateActionPlan(List<String> actionPlanSelect, AiFeedback feedback);
|
||||
}
|
||||
|
||||
@ -154,10 +154,8 @@ public class AnalyticsController {
|
||||
|
||||
log.info("실행계획 바디 데이터 => {}", request);
|
||||
|
||||
List<String> actionPlans = analyticsUseCase.generateActionPlansFromFeedback(request,feedbackId);
|
||||
|
||||
return ResponseEntity.ok(SuccessResponse.of("실행계획 생성 완료"));
|
||||
|
||||
// List<String> actionPlans = analyticsUseCase.generateActionPlansFromFeedback(feedbackId);
|
||||
|
||||
// return ResponseEntity.ok(SuccessResponse.of(actionPlans, "실행계획 생성 완료"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,25 +125,30 @@ public class AIServiceAdapter implements AIServicePort {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> generateActionPlan(AiFeedback feedback) {
|
||||
public List<String> generateActionPlan(List<String> actionPlanSelect, AiFeedback feedback) {
|
||||
log.info("OpenAI 실행 계획 생성 시작");
|
||||
|
||||
try {
|
||||
|
||||
StringBuffer planFormat = new StringBuffer();
|
||||
for(int i = 1; i <= actionPlanSelect.size(); i++) {
|
||||
planFormat.append(i).append(" [구체적인 실행 계획 ").append(i).append("]\n");
|
||||
}
|
||||
String prompt = String.format(
|
||||
"""
|
||||
다음 AI 피드백을 바탕으로 구체적인 실행 계획 3개를 생성해주세요.
|
||||
다음 AI 피드백을 바탕으로 구체적인 실행 계획 %s개를 생성해주세요.
|
||||
각 계획은 실행 가능하고 구체적이어야 합니다.
|
||||
|
||||
요약: %s
|
||||
개선점: %s
|
||||
|
||||
실행계획 내용은 점주가 반영할 수 있도록 구체적어야 합니다.
|
||||
실행 계획을 다음 형식으로 작성해주세요:
|
||||
1. [구체적인 실행 계획 1]
|
||||
2. [구체적인 실행 계획 2]
|
||||
3. [구체적인 실행 계획 3]
|
||||
%s
|
||||
""",
|
||||
actionPlanSelect.size(),
|
||||
feedback.getSummary(),
|
||||
String.join(", ", feedback.getImprovementPoints())
|
||||
String.join(", ", actionPlanSelect),
|
||||
planFormat
|
||||
);
|
||||
|
||||
String result = callOpenAI(prompt);
|
||||
@ -151,10 +156,9 @@ public class AIServiceAdapter implements AIServicePort {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("OpenAI 실행 계획 생성 중 오류 발생", e);
|
||||
//TODO : 시연을 위해서 우선은 아래과 같이 처리, 추후에는 실행계획이 실패했다면 Runtime계열의 예외를 던지는게 좋을듯.
|
||||
return Arrays.asList(
|
||||
"서비스 품질 개선을 위한 직원 교육 실시",
|
||||
"고객 피드백 수집 체계 구축",
|
||||
"매장 운영 프로세스 개선"
|
||||
"실행계획 생성 실패. 재생성 필요"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,6 +79,7 @@ public class ActionPlanRepositoryAdapter implements ActionPlanPort {
|
||||
private ActionPlanEntity toEntity(ActionPlan domain) {
|
||||
return ActionPlanEntity.builder()
|
||||
.id(domain.getId())
|
||||
.feedbackId(domain.getFeedbackId())
|
||||
.storeId(domain.getStoreId())
|
||||
.userId(domain.getUserId())
|
||||
.title(domain.getTitle())
|
||||
|
||||
@ -50,6 +50,9 @@ public class ActionPlanEntity {
|
||||
@Column(name = "user_id", nullable = false)
|
||||
private Long userId;
|
||||
|
||||
@Column(name = "feedback_id", nullable = true)
|
||||
private Long feedbackId;
|
||||
|
||||
@Column(name = "title", nullable = false, length = 100)
|
||||
private String title;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user