AirScheduleEvent

항공편 스케줄 이벤트 인터페이스 및 관련 DTO. Kinesis 스트림 전송용.

인터페이스 정의

@JsonTypeInfo(
    use = JsonTypeInfo.Id.NAME,
    include = JsonTypeInfo.As.PROPERTY,
    visible = true,
    property = "argumentType"
)
interface AirScheduleEvent : MessageArgumentPayload {
    val searchInfo: SearchInfoEvent
    val flightItems: List<FlightItemEvent>
}

포함 DTO

SearchInfoEvent

검색 정보 이벤트 DTO.

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

팩토리 메서드: of(searchInfo: SearchInfo)


FlightItemEvent

항공편 아이템 이벤트 DTO.

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

팩토리 메서드: of(airportMap, channel, flightItem)


ScheduleEvent

스케줄 이벤트 DTO.

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

팩토리 메서드: of(index, schedule, airportMap)


FreeBaggageEvent

무료 수하물 이벤트 DTO.

필드타입설명
volumeInt용량
unitBaggageUnit단위 (KG/PC)

SegmentEvent

세그먼트 이벤트 DTO.

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

팩토리 메서드: of(index, segment, airportMap)


FlightFareEvent

운임 이벤트 DTO.

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

계산 프로퍼티: total = airPrice + tax - discounts + ticketingFee

팩토리 메서드: of(fare)

데이터 변환 플로우

FlightItem (Domain)
    │
    └──► FlightItemEvent.of(airportMap, channel, flightItem)
             │
             ├──► Schedule → ScheduleEvent.of()
             │        │
             │        ├──► FreeBaggage → FreeBaggageEvent.of()
             │        │
             │        └──► Segment → SegmentEvent.of()
             │
             └──► FlightFare → FlightFareEvent.of()

특징

  • @JsonTypeInfo: JSON 다형성 직렬화 지원
  • 팩토리 메서드: 도메인 객체에서 이벤트 DTO로 변환
  • City 정보 보강: airportMap으로 도시 IATA 코드 추가
  • KST 시간: retrievedAt은 한국 표준시로 변환