2.5.0 출시 전 실서버 검증¶
2026-10-07 KST 04:35~04:44에 출시 전 main의 대표 조회·임시 예약 흐름을 확인했습니다.
대상 커밋은 e62fd8788b9aeae1d21670f8af78dc22cc587f11이며, 당시 패키지 버전 문자열은 2.4.0입니다.
이 기록은 2.5.0 출시를 위한 해당 커밋의 검증이며, 배포된 2.5.0 패키지의 검증은 아닙니다.
전체 근거는 검증 JSON에 있습니다.
실행 범위와 환경¶
- 앱 버전은
7.0.8이며 SDK 기본 설정, DynaPath·NetFunnel을 사용했습니다. - API 제한 시간 15초, 대기열 제한 시간 10초, 최대 대기 20초이며 명시적 프록시는 설정하지 않았습니다.
- 비로그인·인증 후 조회와 승인받은 미결제 임시 홀드 두 건의 생성·상세 조회·취소를 실행했습니다.
- 실제 카드 결제·환불 요청은 보내지 않았습니다.
집계¶
| 항목 | 결과 |
|---|---|
| 반환과 개별 검사가 성공한 시나리오 | 59 |
| 실패 시나리오 | 0 |
| HTTP 요청 | 105 |
| HTTP 200 응답 | 105 |
| 서로 다른 호스트·경로 조합 | 29 |
Device 필드가 기록된 요청 |
56 |
위 요청 중 AppVersion=7.0.8 포함 |
56 |
| 생성·취소한 임시 홀드 | 각각 2 |
| 시작·종료 예약 건수 | 각각 0 |
59건은 공개 메서드 수가 아닌 시나리오 수입니다. 정상 close() 네 번과
실응답으로 만든 PaidTicket의 로컬 팩토리 검사도 포함합니다.
이 중 서버 요청이 동반된 시나리오는 54건입니다.
HTTP 200 여부와 반환 객체의 개별 검사는 별도로 확인했습니다.
| 배치 | 성공 시나리오 | HTTP 요청 | 범위 |
|---|---|---|---|
read_only |
26 | 39 | 공통 정보·필터·환승·인증 후 조회 |
additional_reads |
12 | 19 | 자정 경계·과거 승차권·후속 조회 |
availability |
5 | 13 | 일부·전체 좌석 가능 결과의 필터 |
temporary_reservations |
16 | 34 | 임시 홀드 생성·복원·취소·정리 |
첫 조회 배치에서는 보유 미결제 예약이 없어 existing_reservation_find 한 건을 실행하지 못했습니다.
이후 임시 홀드 두 건에서 reservations.find(pnr)를 실행해 조회 경로를 확인했습니다.
조회와 간편 API¶
| 대상 | 관측 결과 |
|---|---|
| 역 이름·캐시 | 역 281개의 이름 집합과 캐시가 일치함 |
| 운행일·은행 | 운행일 63개, 은행 56개 파싱 |
| 기본 열차 검색 | SUCC/IRG000000, 기본 설정에서 열차 10개 보존 |
| 좌석 필터 | 필터 전후 10→0, 10→3, 10→10인 실제 응답 확인 |
| 예약대기 포함 필터 | 같은 조회에서 성공했으나 예약대기 가능 행은 관측하지 못함 |
| 날짜·소요 시간 | 실제 출발·도착 날짜로 대조했으며 자정을 넘는 행도 검사 통과 |
| 후속 조회 | 필터 전 목록의 마지막 출발 시각을 사용한 후속 실제 조회 성공 |
| 환승·정차역 | 환승 여정 5개·열차 10개, 별도 열차의 정차역 9개 파싱 |
| 인증 후 조회 | 예약·현재 승차권·장바구니·쿠폰·포인트·여행상품·수령 이력·마일리지 파싱 |
| 과거 승차권 | 예약 묶음 5개와 원표·구매 이력 상세·영수증의 후속 조회 성공 |
필터는 실제 서버 응답을 받은 뒤 클라이언트에서 적용합니다.
필터 전 목록, 최상위 raw 참조와 마지막 출발 시각의 조회 조건 보존을 확인했습니다.
서버의 다음 페이지 표시가 Y인 응답도 있었지만 필요한 커서 값이 없어 next_page()는 None이었습니다.
따라서 이번 기록은 사용할 수 있는 서버 커서를 통한 페이지 이동을 확인한 결과가 아닙니다.
과거 상세로 만든 PaidTicket은 원래 식별자를 보존했으며 추가 네트워크 요청을 보내지 않았습니다.
메시지가 있는 관측 응답의 display_message도 확인했으며, 전체 사전·언어·오류 분기를 검증한 것은 아닙니다.
임시 홀드 생성·조회·취소¶
서울→부산, 2026-10-14 KTX 105의 일반실·특실 가용 결과를 확인한 뒤 다음 두 건을 순차 실행했습니다.
| 승객·옵션 | 상세에서 확인한 코드 | 홀드 정산액 | 결과 |
|---|---|---|---|
어른 1명·GENERAL_FIRST |
객실 1, 승객 1 |
48,000원 | 일반실 홀드·좌석 배정·상세 조회 성공 후 취소 |
어린이 1명·SPECIAL_FIRST |
객실 2, 승객 3 |
46,000원 | 특실 홀드·좌석 배정·상세 조회 성공 후 취소 |
생성은 모두 SUCC/IRR000018, reservations.find(pnr)와 상세 조회는 SUCC/IRZ000001이었습니다.
두 find() 결과의 예약번호와 금액은 생성 결과와 일치했고, 상세의 결제 플래그 누락도 허용했습니다.
취소는 모두 SUCC/IRG000000이며 각 취소 후와 최종 예약 이력은 SUCC/P100·0건이었습니다.
시작 상태를 보존했고 알려진 미취소 검증 홀드는 남지 않았습니다.
인증 배치는 로그아웃 후 로컬 세션이 지워졌으며, 모든 배치에서 API·대기열 연결 종료를 확인했습니다.
두 정산액은 승객 유형과 객실이 다른 각각의 관측값입니다. 어린이 특실 금액을 성인 일반실 금액과 비교해 50% 할인으로 해석하지 않습니다. 해당 상세에는 총 할인액이 없었으므로 할인율을 별도로 확정하지 않았습니다.
이번 실서버 검증에서 확인하지 않은 범위¶
- 예약대기 전용 행과 사용할 수 있는 서버 후속 커서.
GENERAL_ONLY·SPECIAL_ONLY, 우선 객실이 없을 때 다른 객실 선택, 요청 후 재시도 여부의 모든 분기.- 계정 잠금·요청 제한·처리 중·DynaPath 거절 등 의도적으로 유도하지 않은 예외 경로.
- 정기권 승객·자율 좌석 변경·N카드 자격 및 N카드 예약.
- 실제 카드 결제·환불·체크인과 이번 배치에 없는 거래 종류.
- 정리 동시 실패·타입·import·pickle·암호화 기준값·표시 개인정보 등 로컬 계약 전체.
위 항목의 합성 계약 검사와 이번 실서버 관측은 구분합니다. 이번 결과는 해당 시점의 대표 흐름이며 모든 계정·승객·열차·상품·오류 분기의 성공을 보장하지 않습니다.
기록과 과거 이력¶
근거에는 경로·HTTP 상태·필드 이름·결과 코드·검사 결과와 공개 열차·날짜·승인된 홀드 금액만 남겼습니다. 요청 폼 값은 앱 버전만 기록했고, 계정·비밀번호·쿠키·헤더·PNR·좌석 식별자·응답 본문·예외 전문은 저장하지 않았습니다. 현재 공개 메서드는 85개지만 이번 검사는 과거 84개 전수 확인표의 재실행이 아닙니다. 7.0.8 전수 확인표의 역사 집계는 그대로 보존하며 실서버 확인 현황에 함께 안내합니다.