PricingResponse

가격 정책 API 응답 DTO 모음. Pricing API에서 반환하는 할인/TASF/운임 정책.

주요 클래스

PricingPrincipleActiveResponse

활성 정책 응답.

필드타입설명
faresList<FarePrinciple>운임 정책 목록
sellerDiscountsList<DiscountPrinciple>판매자 할인 목록
promotionsList<PromotionPrinciple>프로모션 목록
tasfsList<TasfPrinciple>TASF 정책 목록

DiscountPrinciple

할인 정책.

필드타입설명
idLong정책 ID
nameString정책명
routeTypeRouteType노선 타입
startAtLocalDateTime시작일시
endAtLocalDateTime종료일시
passengerTypesList<PassengerType>적용 승객 타입
methodDiscountMethod할인 방식
rateDouble?할인율
maxPriceLong?최대 할인금액
priceLong?고정 할인금액
minApplicablePriceLong?최소 적용 가격
maxApplicablePriceLong?최대 적용 가격
activeBoolean활성 여부
taxIncludedBoolean세금 포함 여부
badgeIdLong?배지 ID
tagsList<String>태그 목록
ruleSetsList<DiscountRuleSet>규칙 세트
funnelsList<Funnel>적용 퍼널

메서드:

fun calculatePrice(type: PassengerType, airPrice: Long, tax: Long, totalPromotionPrice: Long = 0): Long
fun predicate(criteria: FlightItemPrincipleCriteria): Boolean

PromotionPrinciple

프로모션 정책.

필드타입설명
idLong정책 ID
routeTypeRouteType노선 타입
passengerTypesList<PassengerType>적용 승객 타입
minApplicablePriceLong?최소 적용 가격
maxApplicablePriceLong?최대 적용 가격
appliedTicketCountInt적용 티켓 수
maxApplicableSeatCountInt?최대 적용 좌석 수
taxIncludedBoolean세금 포함 여부
ruleSetsList<PromotionRuleSet>규칙 세트
tagsList<String>태그 목록
discountsList<PromotionDiscount>할인 목록
statusPromotionStatus상태
funnelsList<Funnel>적용 퍼널

계산 프로퍼티:

  • cardPromotion: 카드 프로모션 정보

메서드:

fun getDiscountMap(passengerType: PassengerType, airPrice: Long, tax: Long): Map<PromotionDiscountType, Long>
fun predicate(criteria: FlightItemPrincipleCriteria): Boolean

TasfPrinciple

TASF(여행사서비스수수료) 정책.

필드타입설명
idLong정책 ID
routeTypeRouteType노선 타입
typeTasfPrincipleTypeTASF 타입
nameString정책명
startAtLocalDateTime시작일시
endAtLocalDateTime종료일시
passengerTypesList<PassengerType>적용 승객 타입
methodTasfMethod계산 방식
rateDouble?비율
maxPriceLong?최대 금액
priceLong?고정 금액
activeBoolean활성 여부
minApplicablePriceLong?최소 적용 가격
maxApplicablePriceLong?최대 적용 가격
ruleSetsList<TasfRuleSet>규칙 세트
funnelsList<Funnel>적용 퍼널

메서드:

fun predicate(criteria: FlightItemPrincipleCriteria): Boolean
fun calculatePrice(passengerType: PassengerType, passengerTotalPrice: Long): Long

FarePrinciple

운임 정책.

필드타입설명
idLong정책 ID
channelsList<Channel>적용 채널
funnelsList<Funnel>적용 퍼널
routeTypeRouteType노선 타입
endAtLocalDateTime종료일시
orderInt우선순위
attributeFarePrincipleAttribute속성
ruleSetsList<FarePrincipleRuleSet>?규칙 세트

CardPromotion

카드 프로모션.

필드타입설명
idLong프로모션 ID
nameString프로모션명
naverCardTypeString?네이버 카드 타입
representativeBoolean대표 여부

규칙 시스템

RuleSet 구조

RuleSet
├── includes: List<RuleGroup>  // 포함 조건 (OR 관계)
└── excludes: List<RuleGroup>  // 제외 조건 (OR 관계)

RuleGroup
└── rules: List<Rule>  // 규칙들 (AND 관계)

Rule
├── type: RuleType
├── values: List<String>
└── valuesOperator: RuleValuesOperator

규칙 타입

타입설명
TRIP_TYPES여정 타입
SUPPLIERS공급자
AIRLINES항공사
DEPARTURE_NATIONS출발 국가
DEPARTURE_AIRPORTS출발 공항
DEPARTURE_DATE출발일
DEPARTURE_TIME출발 시간
ARRIVAL_NATIONS도착 국가
ARRIVAL_AIRPORTS도착 공항
ARRIVAL_DATE도착일
CABINS좌석 등급
CLASSES부킹 클래스
FLIGHT_NUMBERS편명
FARE_BASIS운임 기준
IDENTITY_TYPES신분 타입
OPERATING_CARRIERS운항 항공사
STOP_POINTS경유지
STOP_POINT_NATIONS경유지 국가
APPLIED_DAY적용 요일
APPLIED_TIME적용 시간

할인 계산

DiscountMethod

설명계산식
PRICE고정 금액min(price, basePrice - 1000)
SALES_PRICE판매가 기준min(basePrice - price, basePrice - 1000)
PERCENTAGE비율min(basePrice * rate, maxPrice)

사용처

사용 위치용도
PricingClientAPI 응답 파싱
FlightSearchService검색 결과 가격 정책 적용
FlightDetailService상세 가격 정책 적용

특징

  • 규칙 기반 매칭: 복잡한 조건 규칙으로 정책 매칭
  • 최소 1000원 보장: 할인 후 최소 1000원은 받도록 보장
  • GROUPAIR 제외: GROUPAIR 공급자는 할인/프로모션 제외
  • 시간대별 적용: appliedDay/appliedTime으로 시간대별 정책