FlightDetailService
항공편 상세 정보를 조회하는 서비스. 운임, 프로모션, TASF 등의 가격 정보를 포함한 상세 정보를 제공한다.
의존성
| 서비스 | 용도 |
|---|---|
| AdapterClient | 운임 상세 조회 |
| AirlineService | 항공사 정보 |
| AirportService | 공항 정보 |
| BookableDateService | 예약 가능 날짜 검증 |
| PricingClient | 운임/TASF/프로모션 조회 |
| BillingService | 카드 혜택 조회 |
| AirConsoleService | Supplier 정보 |
| NaverClient | 네이버 프로모션 검증 |
| FlightSearchService | 캐시된 검색 결과 조회 |
메서드
getFlightDetail
fun getFlightDetail(
detailKey: String,
adult: Int,
child: Int,
infant: Int,
promotionPrincipleId: Long? = null,
naverPromotion: NaverPromotion? = null,
): FlightDetail단일 항공편의 상세 정보를 조회한다. 가격 변동 검증을 수행한다.
가격 변동 검증: 캐싱된 검색 결과와 1000원 이상 차이나면 CHANGED_PRICE 예외 발생.
getFlightDetails
fun getFlightDetails(
selectedFlights: List<SelectedFlight>,
adult: Int,
child: Int,
infant: Int,
naverPromotion: NaverPromotion?,
): List<FlightDetail>멀티티켓용 복수 항공편 상세 조회. 병렬로 각 항공편을 조회한다.
| Caller | Callee |
|---|---|
| FlightDetailProxyController.getFlightDetails | FlightDetailService.validateMultiTicketParameter |
| FlightDetailService.getFlightDetail (pmap 병렬) | |
| NaverClient.validatePromotion |
getFlightDetailByPnr
fun getFlightDetailByPnr(
detailKey: String,
pnr: String,
adult: Int,
child: Int,
infant: Int,
): FlightDetailPNR로 항공편 상세를 조회한다. 재발행용.
| Caller | Callee |
|---|---|
| 재발행 플로우 | AdapterClient.getFareItineraryByPnr |
| FlightDetail.of |
findFreeInstallment
fun findFreeInstallment(detailKey: String): CardBenefit?무이자 할부 카드 혜택을 조회한다.
getDetailKeys
fun getDetailKeys(metaId: String, listKey: UUID, fareStrategy: MetaFareStrategy): List<FlightDetailKey>메타검색 ID로 detailKey 목록을 조회한다. 메타검색 랜딩용.
| Caller | Callee |
|---|---|
| FlightDetailProxyController.getDetailKeys | FlightSearchService.getFlightItems |
| FlightDetailKey 생성 |
fareStrategy 옵션:
LOWEST_FARE: 최저가 운임LOWEST_REPRESENTATIVE_PROMOTION_FARE: 대표 프로모션 최저가LOWEST_FARE_WITH_CARD_PROMOTION: 카드 프로모션 포함 최저가- 그 외: promotionPrincipleId 매칭
findCardBenefit (private)
private fun findCardBenefit(supplierCode: String): CardBenefit?Supplier의 prepayment 설정에 따라 카드 혜택을 조회한다.
| Caller | Callee |
|---|---|
| FlightDetailService.findFreeInstallment | AirConsoleService.findSuppliers |
| BillingService.findCardBenefit |
getMatchedPromotionPrinciple (private)
private fun getMatchedPromotionPrinciple(
fareItinerary: FareItineraryDetailResponse,
promotionPrincipleId: Long?,
airportMap: Map<String, Airport>,
adult: Int,
child: Int,
infant: Int,
): Pair<DiscountPrinciple?, List<PromotionPrinciple>>할인/프로모션 원칙을 매칭한다.
validateMultiTicketParameter (private)
private fun validateMultiTicketParameter(selectedFlights: List<SelectedFlight>)멀티티켓 파라미터 검증. 2개 이상 선택 시 각각 MIX 항공편이어야 함.
특징
- 가격 변동 검증: 검색 시점과 상세 조회 시점의 가격 차이를 1000원 기준으로 검증
- 네이버 프로모션: 네이버 할인 정보 적용 및 검증 지원
- 메타검색 랜딩: metaId로 트레이스 정보(가격, 프로모션ID, 항공사 등) 추적
- 병렬 처리: 멀티티켓 조회 시 pmap으로 병렬 처리