diff --git a/src/main/java/hyu/erica/capstone/client/PlanClient.java b/src/main/java/hyu/erica/capstone/client/PlanClient.java index e9ce0bf..f08a397 100644 --- a/src/main/java/hyu/erica/capstone/client/PlanClient.java +++ b/src/main/java/hyu/erica/capstone/client/PlanClient.java @@ -2,16 +2,19 @@ import hyu.erica.capstone.web.dto.client.AttractionRequestDTO; import hyu.erica.capstone.web.dto.client.RestaurantRequestDTO; +import hyu.erica.capstone.web.dto.client.StyleRequestDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @FeignClient(name = "planApiClient", url = "${plan.api.url}") public interface PlanClient { - @GetMapping("/restaurants/search") - RestaurantRequestDTO getRestaurants(@RequestParam String query); + @PostMapping("/restaurants/search") + RestaurantRequestDTO getRestaurants(@RequestBody StyleRequestDTO request); - @GetMapping("/attraction/search") - AttractionRequestDTO getAttractions(@RequestParam String query); + @PostMapping("/attraction/search") + AttractionRequestDTO getAttractions(@RequestBody StyleRequestDTO request); } diff --git a/src/main/java/hyu/erica/capstone/service/async/StyleBackgroundTaskService.java b/src/main/java/hyu/erica/capstone/service/async/StyleBackgroundTaskService.java index 7069b0d..b7e0c29 100644 --- a/src/main/java/hyu/erica/capstone/service/async/StyleBackgroundTaskService.java +++ b/src/main/java/hyu/erica/capstone/service/async/StyleBackgroundTaskService.java @@ -19,6 +19,8 @@ import hyu.erica.capstone.repository.UserRepository; import hyu.erica.capstone.web.dto.client.AttractionRequestDTO; import hyu.erica.capstone.web.dto.client.RestaurantRequestDTO; +import hyu.erica.capstone.web.dto.client.StyleRequestDTO; +import hyu.erica.capstone.web.dto.style.request.UserStyleRequestDTO; import java.util.concurrent.CompletableFuture; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -52,8 +54,10 @@ public void handleTripPlanDetails(Long tripPlanId, Style style, User user) { try { - String prompt = buildPrompt(style); + StyleRequestDTO prompt = StyleRequestDTO.of(style.getCity().name(), style.getStartDate(), + style.getEndDate(), style.getPreferActivity(), style.getRequirement()); + // 외부 API 병렬 호출 CompletableFuture attractionFuture = CompletableFuture.supplyAsync(() -> planClient.getAttractions(prompt)); @@ -98,13 +102,4 @@ public void handleTripPlanDetails(Long tripPlanId, Style style, User user) { tripPlanRepository.save(tripPlan); } - private String buildPrompt(Style style) { - return new StringBuilder() - .append("여행 지역 : ").append(style.getCity().name()).append("\n") - .append("시작 날짜 : ").append(style.getStartDate()).append("\n") - .append("종료 날짜 : ").append(style.getEndDate()).append("\n") - .append("선호 활동 : ").append(style.getPreferActivity()).append("\n") - .append("추가 요구 사항 : ").append(style.getRequirement()) - .toString(); - } } diff --git a/src/main/java/hyu/erica/capstone/web/dto/client/AttractionRequestDTO.java b/src/main/java/hyu/erica/capstone/web/dto/client/AttractionRequestDTO.java index a0e6c38..c6c7e16 100644 --- a/src/main/java/hyu/erica/capstone/web/dto/client/AttractionRequestDTO.java +++ b/src/main/java/hyu/erica/capstone/web/dto/client/AttractionRequestDTO.java @@ -1,6 +1,11 @@ package hyu.erica.capstone.web.dto.client; +import jakarta.persistence.criteria.CriteriaBuilder.In; import java.util.List; -public record AttractionRequestDTO (String answer, List attraction_ids) { +public record AttractionRequestDTO (List recommendations, List attraction_ids) { + + private record AttractionDetailDTO (String name, String description, Integer index) { + + } } diff --git a/src/main/java/hyu/erica/capstone/web/dto/client/RestaurantRequestDTO.java b/src/main/java/hyu/erica/capstone/web/dto/client/RestaurantRequestDTO.java index 544c74c..aff6528 100644 --- a/src/main/java/hyu/erica/capstone/web/dto/client/RestaurantRequestDTO.java +++ b/src/main/java/hyu/erica/capstone/web/dto/client/RestaurantRequestDTO.java @@ -2,5 +2,9 @@ import java.util.List; -public record RestaurantRequestDTO(String answer, List restaurant_ids) { +public record RestaurantRequestDTO(List recommendations, List restaurant_ids) { + + private record RestaurantDetailDTO (String name, String description, Integer index) { + + } } diff --git a/src/main/java/hyu/erica/capstone/web/dto/client/StyleRequestDTO.java b/src/main/java/hyu/erica/capstone/web/dto/client/StyleRequestDTO.java new file mode 100644 index 0000000..2695847 --- /dev/null +++ b/src/main/java/hyu/erica/capstone/web/dto/client/StyleRequestDTO.java @@ -0,0 +1,11 @@ +package hyu.erica.capstone.web.dto.client; + +import java.time.LocalDate; + +public record StyleRequestDTO (String city, LocalDate startDate, LocalDate endDate, + String preferActivity, String requirement){ + + public static StyleRequestDTO of(String city, LocalDate startDate, LocalDate endDate, String preferActivity, String requirement){ + return new StyleRequestDTO(city, startDate, endDate, preferActivity, requirement); + } +}