Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import DiffLens.back_end.domain.search.service.interfaces.SearchService;
import DiffLens.back_end.global.fastapi.dto.response.MainSearchResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -27,6 +28,7 @@
/**
* 자연어 Service --> SearchService 구현
*/
@Slf4j
@Service("naturalSearchService")
@RequiredArgsConstructor
public class NaturalSearchService implements SearchService<SearchRequestDTO.NaturalLanguage> {
Expand All @@ -47,6 +49,9 @@ public class NaturalSearchService implements SearchService<SearchRequestDTO.Natu
@Transactional(readOnly = false)
public SearchResponseDTO.SearchResult search(SearchRequestDTO.NaturalLanguage request) {

// 자연어 쿼리 로그 출력
log.info("[자연어 검색 호출 중] 쿼리 : {}", request.getQuestion());

// 유저 추출
Member currentUser = currentUserService.getCurrentUser();

Expand Down
162 changes: 0 additions & 162 deletions src/main/java/DiffLens/back_end/global/fastapi/FastApiClient.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,34 +12,33 @@
public enum FastApiRequestType {

// 검색
NATURAL_SEARCH("/ai/search", FastNaturalLanguageRequestDTO.NaturalSearch.class,
FastNaturalLanguageResponseDTO.NaturalSearch.class),
NATURAL_SEARCH2("/api/search/", MainSearchRequest.class,
MainSearchResponse.class),
RE_SEARCH("/api/re-search", FastReSearchRequestDTO.ReSearch.class, FastReSearchResponseDTO.ReSearch.class),
NATURAL_SEARCH("/api/search/", MainSearchRequest.class,
MainSearchResponse.class, "자연어 검색"),
RE_SEARCH("/api/re-search", FastReSearchRequestDTO.ReSearch.class, FastReSearchResponseDTO.ReSearch.class, "재검색"),

// 추천
RECOMMENDATIONS("/api/quick-search/recommendations", FastHomeRequestDTO.HomeRecommendRequest.class,
FastHomeResponseDTO.HomeRecommend.class), // 일반 추천
FastHomeResponseDTO.HomeRecommend.class, "검색어 일반 추천"), // 일반 추천
RECOMMENDATIONS_BY_MEMBER("/api/quick-search/recommendations/by-member",
FastHomeRequestDTO.HomeRecommendByMemberRequest.class,
FastHomeResponseDTO.HomeRecommend.class),
FastHomeResponseDTO.HomeRecommend.class, "검색어 유저기반 추천"),

// 라이브러리 비교
COMPARE("/api/cohort-comparison/compare", Void.class,
FastLibraryCompareResponseDTO.CompareResult.class),
FastLibraryCompareResponseDTO.CompareResult.class, "라이브러리 비교"),

// 차트
CHART_RECOMMENDATIONS("/api/chart/search-result/{searchId}/recommendations", Void.class,
FastChartResponseDTO.ChartRecommendationsResponse.class),
FastChartResponseDTO.ChartRecommendationsResponse.class, "차트 추천"),
CHART_FROM_LIBRARY("/api/chart/from-library", FastLibraryChartRequestDTO.class,
FastLibraryChartResponseDTO.LibraryChartResponse.class),
FastLibraryChartResponseDTO.LibraryChartResponse.class, "라이브러리 차트 추천"),
// REFINE_SEARCH("/search/refine",
// FastNaturalSearchResponseDTO.SearchResult.class),
;

private final String uri;
private final Class<?> requestBody; // request body
private final Class<?> responseType; // response body
private final String name;

}
34 changes: 20 additions & 14 deletions src/main/java/DiffLens/back_end/global/fastapi/FastApiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@

import DiffLens.back_end.global.fastapi.dto.request.FastHomeRequestDTO;
import DiffLens.back_end.global.fastapi.dto.request.FastLibraryChartRequestDTO;
import DiffLens.back_end.global.fastapi.dto.request.FastNaturalLanguageRequestDTO;
import DiffLens.back_end.global.fastapi.dto.request.MainSearchRequest;
import DiffLens.back_end.global.fastapi.dto.response.FastHomeResponseDTO;
import DiffLens.back_end.global.fastapi.dto.response.FastLibraryChartResponseDTO;
import DiffLens.back_end.global.fastapi.dto.response.FastNaturalLanguageResponseDTO;
import DiffLens.back_end.global.fastapi.dto.response.FastLibraryCompareResponseDTO;
import DiffLens.back_end.global.fastapi.dto.response.MainSearchResponse;
import DiffLens.back_end.global.fastapi.dto.response.FastChartResponseDTO;
import DiffLens.back_end.global.fastapi.fastApiClients.PathVariableFastApiClient;
import DiffLens.back_end.global.fastapi.fastApiClients.PostFastApiClient;
import DiffLens.back_end.global.fastapi.fastApiClients.QueryParamFastApiClient;
import DiffLens.back_end.global.responses.code.status.error.SearchStatus;
import DiffLens.back_end.global.responses.exception.handler.ErrorHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

Expand All @@ -20,44 +23,47 @@
@RequiredArgsConstructor
public class FastApiService {

private final FastApiClient fastApiClient;
private final PostFastApiClient postClient;
private final PathVariableFastApiClient pathClient;
private final QueryParamFastApiClient queryClient;

// 자연어 검색
public FastNaturalLanguageResponseDTO.NaturalSearch getNaturalSearch(
FastNaturalLanguageRequestDTO.NaturalSearch request) {
return fastApiClient.sendRequest(FastApiRequestType.NATURAL_SEARCH, request);
}

// 자연어 검색2
public MainSearchResponse getMainSearch(MainSearchRequest request) {
return fastApiClient.sendRequest(FastApiRequestType.NATURAL_SEARCH2, request);
return postClient.sendRequest(FastApiRequestType.NATURAL_SEARCH, request);
}

// 라이브러리 비교
public FastLibraryCompareResponseDTO.CompareResult compareLibraries(Long cohort1Id, Long cohort2Id) {
java.util.Map<String, Object> queryParams = new java.util.HashMap<>();
queryParams.put("cohort_1_id", cohort1Id);
queryParams.put("cohort_2_id", cohort2Id);
return fastApiClient.sendRequestWithQueryParams(FastApiRequestType.COMPARE, queryParams);
return queryClient.sendRequest(FastApiRequestType.COMPARE, queryParams);
}

// 추천검색
public FastHomeResponseDTO.HomeRecommend recommend(FastHomeRequestDTO.HomeRecommendRequest request) {
return fastApiClient.sendRequest(FastApiRequestType.RECOMMENDATIONS, request);
return postClient.sendRequest(FastApiRequestType.RECOMMENDATIONS, request);
}

// 차트 추천
public FastChartResponseDTO.ChartRecommendationsResponse getChartRecommendations(Long searchId) {
return fastApiClient.sendRequestWithPathVariable(

FastChartResponseDTO.ChartRecommendationsResponse response = pathClient.sendRequest(
FastApiRequestType.CHART_RECOMMENDATIONS,
null,
searchId);

// 호출 예외 발생하면 null을 반환함 -> null일 경우 NO_RESULT 반환
if(response == null)
throw new ErrorHandler(SearchStatus.NO_RESULT);

return response;
}

// 라이브러리로부터 차트 생성
public FastLibraryChartResponseDTO.LibraryChartResponse getChartsFromLibrary(
FastLibraryChartRequestDTO request) {
return fastApiClient.sendRequest(FastApiRequestType.CHART_FROM_LIBRARY, request);
return postClient.sendRequest(FastApiRequestType.CHART_FROM_LIBRARY, request);
}

}

This file was deleted.

This file was deleted.

Loading