RecommendationRequest

AI 추천 API 요청 DTO. 추천 점수 조회용.

클래스 구조

RecommendationRequest

추천 요청.

필드타입설명
itemsList<RecommendationItemRequest>추천 항목 목록

팩토리 메서드:

fun <T : CommonFlightItem> of(items: List<T>): RecommendationRequest

RecommendationItemRequest

추천 항목 요청.

필드타입설명
idString항목 ID (없으면 UUID 생성)
adultInt성인 수
infantInt유아 수
childInt아동 수
priceLong항공권 가격 (성인 1매 기준)
originPriceLong할인 전 가격 (성인 1매 기준)
originAirportCodeString출발 공항
originCityCodeString?출발 도시 (nullable)
destinationAirportCodeString도착 공항
destinationCityCodeString?도착 도시 (nullable)
outboundAirlineString가는편 항공사
outboundDepartureDateTimeString가는편 출발시각 (ISO 8601)
outboundLayoverCountInt가는편 환승 횟수
outboundFlightDurationString가는편 총 소요시간 (ISO 8601)
outboundFreeBaggageRecommendationFreeBaggageRequest?가는편 무료 수하물
inboundAirlineString?오는편 항공사 (편도 시 null)
inboundDepartureDateTimeString?오는편 출발시각
inboundLayoverCountInt?오는편 환승 횟수
inboundFlightDurationString?오는편 총 소요시간
inboundFreeBaggageRecommendationFreeBaggageRequest?오는편 무료 수하물

팩토리 메서드:

fun of(
    id: String,
    price: Long,
    passengerFareMap: Map<PassengerType, PassengerFare>,
    schedules: List<Schedule>,
): RecommendationItemRequest

RecommendationFreeBaggageRequest

무료 수하물 요청.

필드타입설명
unitBaggageUnit단위 (KG, PC)
allowanceInt허용량

팩토리 메서드:

fun of(freeBaggage: FreeBaggage): RecommendationFreeBaggageRequest

사용처

사용 위치용도
RecommendationClient추천 점수 API 호출
RecommendationService추천 점수 조회

예시

{
  "items": [
    {
      "id": "item-001",
      "adult": 2,
      "child": 1,
      "infant": 0,
      "price": 450000,
      "originPrice": 500000,
      "originAirportCode": "ICN",
      "destinationAirportCode": "NRT",
      "outboundAirline": "KE",
      "outboundDepartureDateTime": "2024-03-15T10:30:00",
      "outboundLayoverCount": 0,
      "outboundFlightDuration": "PT2H30M",
      "outboundFreeBaggage": {
        "unit": "KG",
        "allowance": 23
      },
      "inboundAirline": "KE",
      "inboundDepartureDateTime": "2024-03-20T14:00:00",
      "inboundLayoverCount": 0,
      "inboundFlightDuration": "PT2H40M",
      "inboundFreeBaggage": {
        "unit": "KG",
        "allowance": 23
      }
    }
  ]
}

특징

  • 제네릭 지원: CommonFlightItem 하위 타입 모두 지원
  • 편도/왕복 구분: inbound 필드 null 여부로 구분
  • ISO 8601 시간: 날짜/시간 형식 표준화
  • 도시 코드 추론: 도시 코드 없으면 공항에서 추론