CombineFlightSearchUseCase

조합(Combined) 검색 유스케이스. 가는편+오는편을 조합하여 멀티티켓 상품을 생성한다.

의존성

서비스용도
FlightSearchService검색 및 추천 점수
BookableDateService예약 가능 날짜 검증

메서드

searchFlights

fun searchFlights(
    searchInfo: SearchInfo,
    onlyDirect: Boolean,
    useRecommendation: Boolean,
    fareDecisionStrategy: FareDecisionStrategy,
    onlyRepresentativeCardPromotion: Boolean = false,
    flightGroupCriteria: FlightGroupCriteria,
    funnels: List<Funnel>,
    debug: Boolean = false
): List<CombinedFlightItem>

조합 검색을 수행한다. 왕복 + MIX 조합 상품을 생성한다.


combineMultiTicketSearchFlights (private)

private fun combineMultiTicketSearchFlights(
    flightItems: List<FlightItem>,
): List<CombinedFlightItem>

검색 결과를 CombinedFlightItem으로 변환한다.

처리 흐름:

  1. MIX 항공편과 왕복 항공편 분리
  2. 왕복 항공편을 CombinedFlightItem으로 래핑
  3. OUTBOUND와 INBOUND를 조합하여 MIX CombinedFlightItem 생성

combineFlightItems (private)

private fun combineFlightItems(
    outbound: FlightItem,
    inbounds: List<FlightItem>,
): List<CombinedFlightItem>

가는편과 오는편을 조합한다.


compact (private)

private fun List<CombinedFlightItem>.compact(debug: Boolean): List<CombinedFlightItem>

동일한 대표 스케줄끼리 그룹핑하여 최적의 항공편만 노출한다.

CallerCallee
CombineFlightSearchUseCase.searchFlights그룹핑 및 최소 비행시간 선택

그룹 키: {마케팅캐리어}{편명}{출발시간}{도착공항}{경유횟수}{최저가}

CombinedFlightItem vs FlightItem

항목FlightItemCombinedFlightItem
용도단일 티켓조합 티켓 (RT + MIX)
운임FlightFareCombinedFlightFare
스케줄직접 포함outbound + inbound 조합

특징

  • MIX 조합: 가는편과 오는편을 독립적으로 조합
  • 연결 시간 검증: 가는편 도착~오는편 출발 3시간 이상 필요
  • Compact: 동일 대표 스케줄 중 최소 비행시간 선택
  • 디버그 모드: debug=true 시 hidden 항목도 반환
  • 왕복 래핑: 왕복 항공편도 CombinedFlightItem 형태로 통일