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
| Caller | Callee |
|---|---|
| RecommendationService.findScoreMap | Recommendation 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의 모든 하위 타입 지원