AirSchedulePayload

Kinesis 스트림 전송용 페이로드 DTO. GZIP 압축된 항공편 데이터 포함.

클래스 정의

@JsonIgnoreProperties(ignoreUnknown = true)
class AirSchedulePayload(
    val request: SearchInfoPayload,
    val body: ByteArray,
    val isBodyCompressed: Boolean
) : Serializable

필드

필드타입설명
requestSearchInfoPayload검색 요청 정보
bodyByteArrayGZIP 압축된 FlightItemPayload 목록
isBodyCompressedBoolean압축 여부 (항상 true)

포함 DTO

SearchInfoPayload

검색 정보 페이로드 DTO.

필드타입설명
tripTypeTripType여정 타입
originTypeLocationType출발지 타입
originString출발지 IATA
destinationTypeLocationType도착지 타입
destinationString도착지 IATA
outboundDateLocalDate출발일
inboundDateLocalDate?귀국일
channelChannel채널
funnelFunnel퍼널
cabinsSet<CabinType>좌석 등급

팩토리 메서드: of(searchInfoEvent: SearchInfoEvent)


FlightItemPayload

항공편 아이템 페이로드 DTO.

필드타입설명
channelChannel채널
validatingCarrierString발권 항공사
schedulesList<SchedulePayload>스케줄 목록
faresList<FlightFarePayload>운임 목록
tripDirectionTypeTripDirectionType?MIX 방향 타입
retrievedAtLocalDateTime조회 시간

팩토리 메서드: of(flightItem: FlightItemEvent)


SchedulePayload

스케줄 페이로드 DTO.

필드타입설명
sequenceInt순서
flightTimeString비행 시간
departureString출발 공항
departureCityString출발 도시
arrivalString도착 공항
arrivalCityString도착 도시
departureAtLocalDateTime출발 시간
arrivalAtLocalDateTime도착 시간
stopPointsList<String>경유지 목록
addDayInt추가일
stopInt경유 횟수
freeBaggageFreeBaggagePayload?무료 수하물
segmentsList<SegmentPayload>세그먼트 목록

FreeBaggagePayload

무료 수하물 페이로드 DTO.

필드타입설명
volumeInt용량
unitBaggageUnit단위

SegmentPayload

세그먼트 페이로드 DTO.

필드타입설명
sequenceInt순서
departureString출발 공항
departureCityString출발 도시
departureAtLocalDateTime출발 시간
arrivalString도착 공항
arrivalCityString도착 도시
arrivalAtLocalDateTime도착 시간
marketingCarrierString마케팅 항공사
operatingCarrierString?운항 항공사
bookingClassString예약 클래스
flightNumberString편명
cabinCabinType좌석 등급

FlightFarePayload

운임 페이로드 DTO.

필드타입설명
funnelFunnel퍼널
airPriceLong항공료
taxLong세금
fuelChargeLong유류할증료
ticketingFeeLong발권 수수료
discountsList<Discount>할인 목록
promotionPrincipleIdLong?프로모션 원칙 ID
cardPromotionIdLong?카드 프로모션 ID
cardPromotionNameString?카드 프로모션명
identityTypeIdentityType?신원 타입
totalLong총액

데이터 변환 플로우

AirScheduleEvent
    │
    ├──► SearchInfoEvent → SearchInfoPayload.of()
    │
    └──► List<FlightItemEvent>
             │
             └──► FlightItemPayload.of() (각각)
                      │
                      ├──► SchedulePayload.of()
                      │        │
                      │        ├──► FreeBaggagePayload.of()
                      │        │
                      │        └──► SegmentPayload.of()
                      │
                      └──► FlightFarePayload.of()

최종: List<FlightItemPayload> → GZIP 압축 → ByteArray

Event vs Payload 비교

계층Event DTOPayload DTO
인터페이스MessageArgumentPayloadSerializable
용도애플리케이션 내 이벤트 전달Kinesis 스트림 전송
total 필드계산 프로퍼티직접 필드

특징

  • Serializable: Java 직렬화 지원
  • @JsonIgnoreProperties: 알 수 없는 필드 무시
  • GZIP 압축: body는 압축된 ByteArray
  • Event → Payload 변환: 팩토리 메서드로 변환