StandardFlightSearchUseCase

표준 항공편 검색 유스케이스. 일반적인 편도/왕복/다구간 검색을 처리한다.

의존성

서비스용도
FlightSearchService실제 검색 로직
BookableDateService예약 가능 날짜 검증

메서드

searchFlights

fun searchFlights(
    searchInfo: SearchInfo,
    onlyDirect: Boolean,
    cachedListKey: UUID? = null,
    useRecommendation: Boolean,
    useMultiTicket: Boolean = false,
    funnels: List<Funnel> = listOf(MDCHolder.SalesFunnel.get()),
    flightGroupCriteria: FlightGroupCriteria = FlightGroupCriteria.SCHEDULE,
    fareDecisionStrategy: FareDecisionStrategy = FareDecisionStrategy.LOWEST_FARE_BY_IDENTITY_AND_CARD_TYPE,
    onlyRepresentativeCardPromotion: Boolean = false,
    usePolling: Boolean = false,
): List<FlightItem>

표준 검색을 수행한다. 그룹핑 및 최적 운임 선택 후 결과를 반환한다.

처리 흐름:

  1. SearchInfo 유효성 검증
  2. FlightSearchService로 검색 실행
  3. FlightGroupCriteria에 따라 그룹핑
  4. FareDecisionStrategy에 따라 그룹별 최적 운임 선택
  5. 추천 점수 적용 (옵션)
  6. 폴링 결과 저장 (옵션)

init

fun init(searchInfo: SearchInfo, flightGroupCriteria: FlightGroupCriteria, useRecommendation: Boolean): UUID

비동기 검색을 시작한다. UUID를 즉시 반환하고 백그라운드에서 검색 수행.

그룹핑 기준 (FlightGroupCriteria)

기준설명
NONE그룹핑 없음
SCHEDULE스케줄 기준 그룹핑
SCHEDULE_WITH_FREE_BAGGAGE스케줄 + 무료수하물 기준

운임 결정 전략 (FareDecisionStrategy)

전략설명
LOWEST_FARE_BY_IDENTITY_AND_CARD_TYPE신분/카드타입별 최저가

특징

  • 동기/비동기 지원: usePolling 옵션으로 폴링 패턴 지원
  • 그룹핑: FlightGroupCriteria로 동일 스케줄 그룹핑
  • 최적 운임 선택: 그룹 내에서 FareDecisionStrategy에 따라 대표 운임 선택
  • 추천 점수: useRecommendation으로 AI 추천 점수 적용