RecommendationClient

AI 추천 API를 호출하는 인터페이스와 구현체. 항공편별 추천 점수를 조회한다.

인터페이스

interface RecommendationClient {
    fun <T : CommonFlightItem> findRecommendationFlights(items: List<T>): List<RecommendationResponse>?
}

구현체

RecommendationActiveClient

활성 상태일 때 실제 API를 호출하는 클라이언트.

상속: ClientSupport

설정:

  • endpoint: infrastructureProperties.recommendation.internalEndpoint
  • timeout: infrastructureProperties.recommendation.fuelTimeout

findRecommendationFlights

override fun <T : CommonFlightItem> findRecommendationFlights(items: List<T>): List<RecommendationResponse>

추천 점수를 조회한다. POST /recommendations/flights

CallerCallee
RecommendationService.findScoreMapRecommendation API

RecommendationInactiveClient

비활성 상태일 때 null을 반환하는 Dummy 클라이언트.

override fun <T : CommonFlightItem> findRecommendationFlights(items: List<T>): List<RecommendationResponse>? {
    return null
}

RecommendationRequest

data class RecommendationRequest(
    val items: List<FlightItemRequest>
)

RecommendationResponse

필드설명
id항공편 ID
score추천 점수
rank추천 순위

특징

  • 인터페이스 기반: 활성/비활성 상태에 따라 다른 구현체 주입
  • Graceful Degradation: 비활성 시 null 반환으로 검색에 영향 없음
  • 제네릭 지원: CommonFlightItem의 모든 하위 타입 지원