RecommendationRequest
AI 추천 API 요청 DTO. 추천 점수 조회용.
클래스 구조
RecommendationRequest
추천 요청.
| 필드 | 타입 | 설명 |
|---|---|---|
items | List<RecommendationItemRequest> | 추천 항목 목록 |
팩토리 메서드:
fun <T : CommonFlightItem> of(items: List<T>): RecommendationRequestRecommendationItemRequest
추천 항목 요청.
| 필드 | 타입 | 설명 |
|---|---|---|
id | String | 항목 ID (없으면 UUID 생성) |
adult | Int | 성인 수 |
infant | Int | 유아 수 |
child | Int | 아동 수 |
price | Long | 항공권 가격 (성인 1매 기준) |
originPrice | Long | 할인 전 가격 (성인 1매 기준) |
originAirportCode | String | 출발 공항 |
originCityCode | String? | 출발 도시 (nullable) |
destinationAirportCode | String | 도착 공항 |
destinationCityCode | String? | 도착 도시 (nullable) |
outboundAirline | String | 가는편 항공사 |
outboundDepartureDateTime | String | 가는편 출발시각 (ISO 8601) |
outboundLayoverCount | Int | 가는편 환승 횟수 |
outboundFlightDuration | String | 가는편 총 소요시간 (ISO 8601) |
outboundFreeBaggage | RecommendationFreeBaggageRequest? | 가는편 무료 수하물 |
inboundAirline | String? | 오는편 항공사 (편도 시 null) |
inboundDepartureDateTime | String? | 오는편 출발시각 |
inboundLayoverCount | Int? | 오는편 환승 횟수 |
inboundFlightDuration | String? | 오는편 총 소요시간 |
inboundFreeBaggage | RecommendationFreeBaggageRequest? | 오는편 무료 수하물 |
팩토리 메서드:
fun of(
id: String,
price: Long,
passengerFareMap: Map<PassengerType, PassengerFare>,
schedules: List<Schedule>,
): RecommendationItemRequestRecommendationFreeBaggageRequest
무료 수하물 요청.
| 필드 | 타입 | 설명 |
|---|---|---|
unit | BaggageUnit | 단위 (KG, PC) |
allowance | Int | 허용량 |
팩토리 메서드:
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 시간: 날짜/시간 형식 표준화
- 도시 코드 추론: 도시 코드 없으면 공항에서 추론