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>표준 검색을 수행한다. 그룹핑 및 최적 운임 선택 후 결과를 반환한다.
처리 흐름:
- SearchInfo 유효성 검증
- FlightSearchService로 검색 실행
- FlightGroupCriteria에 따라 그룹핑
- FareDecisionStrategy에 따라 그룹별 최적 운임 선택
- 추천 점수 적용 (옵션)
- 폴링 결과 저장 (옵션)
init
fun init(searchInfo: SearchInfo, flightGroupCriteria: FlightGroupCriteria, useRecommendation: Boolean): UUID비동기 검색을 시작한다. UUID를 즉시 반환하고 백그라운드에서 검색 수행.
| Caller | Callee |
|---|---|
| FlightSearchController.init | CacheKeyGenerator.getFlightSearchCacheKey |
| FlightSearchService.savePolling (PENDING) | |
| StandardFlightSearchUseCase.searchFlights (코루틴) |
그룹핑 기준 (FlightGroupCriteria)
| 기준 | 설명 |
|---|---|
NONE | 그룹핑 없음 |
SCHEDULE | 스케줄 기준 그룹핑 |
SCHEDULE_WITH_FREE_BAGGAGE | 스케줄 + 무료수하물 기준 |
운임 결정 전략 (FareDecisionStrategy)
| 전략 | 설명 |
|---|---|
LOWEST_FARE_BY_IDENTITY_AND_CARD_TYPE | 신분/카드타입별 최저가 |
특징
- 동기/비동기 지원: usePolling 옵션으로 폴링 패턴 지원
- 그룹핑: FlightGroupCriteria로 동일 스케줄 그룹핑
- 최적 운임 선택: 그룹 내에서 FareDecisionStrategy에 따라 대표 운임 선택
- 추천 점수: useRecommendation으로 AI 추천 점수 적용