diff --git a/src/main/java/com/umc/yeogi_gal_lae/api/budget/controller/BudgetController.java b/src/main/java/com/umc/yeogi_gal_lae/api/budget/controller/BudgetController.java index 4bb8c844..d83f089c 100644 --- a/src/main/java/com/umc/yeogi_gal_lae/api/budget/controller/BudgetController.java +++ b/src/main/java/com/umc/yeogi_gal_lae/api/budget/controller/BudgetController.java @@ -6,13 +6,11 @@ import com.umc.yeogi_gal_lae.api.budget.dto.BudgetAssignment; import com.umc.yeogi_gal_lae.api.budget.dto.BudgetDetailResponse; import com.umc.yeogi_gal_lae.api.budget.dto.BudgetResponse; -import com.umc.yeogi_gal_lae.api.budget.dto.DailyBudgetAssignmentResponse; import com.umc.yeogi_gal_lae.api.budget.repository.BudgetRepository; import com.umc.yeogi_gal_lae.api.budget.service.BudgetService; import com.umc.yeogi_gal_lae.global.common.response.Response; import com.umc.yeogi_gal_lae.global.error.ErrorCode; import com.umc.yeogi_gal_lae.global.success.SuccessCode; -import java.time.LocalDate; import java.util.Collections; import java.util.List; import java.util.Map; @@ -56,21 +54,7 @@ public Response getBudget(@PathVariable Long budgetId) { } Budget budget = budgetOpt.get(); Map> budgetMap = budgetService.getBudgetMapById(budgetId); - List dailyAssignments = BudgetConverter.toDailyBudgetAssignmentResponseList( - budgetMap); - - // AICourse를 통해 TripPlan 정보를 조회 (TripPlan 클래스가 startDate와 endDate를 LocalDate 타입으로 제공한다고 가정) - String imageUrl = budget.getAiCourse().getTripPlan().getImageUrl(); - LocalDate startDate = budget.getAiCourse().getTripPlan().getStartDate(); - LocalDate endDate = budget.getAiCourse().getTripPlan().getEndDate(); - - BudgetDetailResponse detailResponse = BudgetDetailResponse.builder() - .dailyAssignments(dailyAssignments) - .imageUrl(imageUrl) - .startDate(startDate) - .endDate(endDate) - .build(); - + BudgetDetailResponse detailResponse = BudgetConverter.toBudgetDetailResponse(budget, budgetMap); return Response.of(SuccessCode.OK, detailResponse); } diff --git a/src/main/java/com/umc/yeogi_gal_lae/api/budget/converter/BudgetConverter.java b/src/main/java/com/umc/yeogi_gal_lae/api/budget/converter/BudgetConverter.java index 7cf78d84..afe492b8 100644 --- a/src/main/java/com/umc/yeogi_gal_lae/api/budget/converter/BudgetConverter.java +++ b/src/main/java/com/umc/yeogi_gal_lae/api/budget/converter/BudgetConverter.java @@ -2,6 +2,7 @@ import com.umc.yeogi_gal_lae.api.budget.domain.Budget; import com.umc.yeogi_gal_lae.api.budget.dto.BudgetAssignment; +import com.umc.yeogi_gal_lae.api.budget.dto.BudgetDetailResponse; import com.umc.yeogi_gal_lae.api.budget.dto.BudgetResponse; import com.umc.yeogi_gal_lae.api.budget.dto.DailyBudgetAssignmentResponse; import java.util.List; @@ -33,4 +34,17 @@ public static List toDailyBudgetAssignmentRespons .build()) .collect(Collectors.toList()); } + + public static BudgetDetailResponse toBudgetDetailResponse(Budget budget, + Map> budgetMap) { + List dailyAssignments = toDailyBudgetAssignmentResponseList(budgetMap); + return BudgetDetailResponse.builder() + .dailyAssignments(dailyAssignments) + .location(budget.getAiCourse().getTripPlan().getLocation()) + .imageUrl(budget.getAiCourse().getTripPlan().getImageUrl()) + .startDate(budget.getAiCourse().getTripPlan().getStartDate()) + .endDate(budget.getAiCourse().getTripPlan().getEndDate()) + .build(); + } + } diff --git a/src/main/java/com/umc/yeogi_gal_lae/api/budget/dto/BudgetDetailResponse.java b/src/main/java/com/umc/yeogi_gal_lae/api/budget/dto/BudgetDetailResponse.java index 80c26105..d1e2a058 100644 --- a/src/main/java/com/umc/yeogi_gal_lae/api/budget/dto/BudgetDetailResponse.java +++ b/src/main/java/com/umc/yeogi_gal_lae/api/budget/dto/BudgetDetailResponse.java @@ -12,6 +12,7 @@ @AllArgsConstructor @Builder public class BudgetDetailResponse { + private String location; private String imageUrl; private LocalDate startDate; private LocalDate endDate; diff --git a/src/main/java/com/umc/yeogi_gal_lae/api/budget/service/BudgetService.java b/src/main/java/com/umc/yeogi_gal_lae/api/budget/service/BudgetService.java index 5d0a519c..0835f57e 100644 --- a/src/main/java/com/umc/yeogi_gal_lae/api/budget/service/BudgetService.java +++ b/src/main/java/com/umc/yeogi_gal_lae/api/budget/service/BudgetService.java @@ -80,6 +80,7 @@ private String buildBudgetPrompt(String scheduleJson) { prompt.append("Given the following travel schedule in JSON format: ") .append(scheduleJson) .append(", generate budget recommendations for each day. "); + prompt.append("단, 'placeName' 필드의 값은 반드시 한국어로만 작성되어야 하며, 영어 표현은 사용하지 마세요. "); prompt.append( "For each place, assign exactly one budget type (one of MEAL, ACTIVITY, SHOPPING, TRANSPORT) and a recommended amount. "); prompt.append( @@ -125,7 +126,7 @@ private Map> parseBudgetGptResponse(String gptRes if (jsonStart != -1) { content = content.substring(jsonStart); } - return objectMapper.readValue(content, new TypeReference>>() { + return objectMapper.readValue(content, new TypeReference<>() { }); } catch (Exception e) { e.printStackTrace(); @@ -144,13 +145,11 @@ public Map> getBudgetMapById(Long id) { } try { String budgetJson = budgetOpt.get().getBudgetJson(); - return objectMapper.readValue(budgetJson, new TypeReference>>() { + return objectMapper.readValue(budgetJson, new TypeReference<>() { }); } catch (Exception e) { e.printStackTrace(); return Collections.emptyMap(); } } - - }