AirRecommendationService

추천 데이터를 생성하는 서비스. 검색 결과에서 추천 대상 항공편을 선별하여 추천 시스템에 전송한다.

의존성

서비스용도
AirRecommendationClient추천 API 호출

메서드

createRecommendations

fun createRecommendations(
    flightItems: List<FlightItem>,
    airportMap: Map<String, Airport>,
    policy: AirRecommendationPolicy = AirRecommendationPolicy.LOWEST_PRICE_PER_SCHEDULE,
    funnel: AirRecommendationFunnel = AirRecommendationFunnel.SEARCH,
)

추천 데이터를 생성한다.

처리 흐름:

  1. MIX 항공편 필터링 (왕복만)
  2. 동일 캐빈 스케줄만 필터링
  3. 정책에 따라 추천 대상 추출
  4. 추천 API 호출

filterMixFlight (private)

private fun List<FlightItem>.filterMixFlight(): List<FlightItem>

MIX 항공편(편도)을 제외하고 왕복만 반환한다.


filterAllSameCabin (private)

private fun List<FlightItem>.filterAllSameCabin(): List<FlightItem>

모든 구간이 동일 캐빈인 항공편만 반환한다.


extractByPolicy (private)

private fun List<FlightItem>.extractByPolicy(policy: AirRecommendationPolicy): List<FlightItem>

정책에 따라 추천 대상을 추출한다.

정책설명
LOWEST_PRICE_PER_SCHEDULE스케줄별 최저가
LOWEST_PRICE_PER_AIRLINE항공사별 최저가

findLowestFlightItems (private)

private fun List<FlightItem>.findLowestFlightItems(): List<FlightItem>

직항 최저가 + 경유 최저가(직항보다 저렴한 경우)를 반환한다.

AirRecommendationFunnel

퍼널설명
SEARCH일반 검색
CURATION큐레이션 스크래핑

특징

  • 왕복만: MIX(편도) 항공편은 추천 대상에서 제외
  • 동일 캐빈: 구간별 캐빈이 다른 항공편 제외
  • 직항 우선: 직항 최저가 + 직항보다 저렴한 경유만 추천
  • 항공사별 추천: LOWEST_PRICE_PER_AIRLINE 정책 지원