한국인의 일본 자유여행 일정 · 도쿄 · 오사카
항공권 다음에 오는 화면
TripNaru는 항공권을 입력해야 시작합니다. 편명과 출발일이 없으면 서버가 일정을 만들지 않습니다. 그래서 이 화면에 도착한 사람은 날짜·도시·인원이 이미 확정돼 있고, 남은 일은 잘 곳을 정하고 무엇을 예약할지 정하는 것뿐입니다.
- 입력 = 항공권
- 도착 공항 = NRT · HND · KIX · ITM · ICN · GMP · PUS
- 출력 = 완성된 일정 1개
도착 공항 판정은 사용자 확인보다 먼저 실행됩니다. 도착지가 위 네 곳이 아니면 일정 생성 단계로 넘어가지 않습니다. 지원하지 않는 목적지를 광고하지 않습니다.
The input is a boarding pass, not a search box. Arrivals are limited to NRT, HND, KIX and ITM.
지금 열리는 페이지
Every itinerary below is a real page. None of them is a mock-up.
아래 일정은 전부 실제로 열리는 페이지입니다. 각 편에는 호텔 1곳, 날짜별 방문지와 시각, 하루 2~3끼, 구간 이동, 예약 우선순위가 들어 있습니다.
각 편은 파이프라인이 만든 데이터 위에서 사람이 배치를 검수한 것입니다. 자동 생성 결과를 그대로 게시하지 않습니다. 검수자와 검수일을 각 페이지 하단에 적어 두었습니다.
사용자가 자기 항공권으로 생성하는 개별 일정 페이지는 별도 경로에 있고 검색엔진에 색인하지 않습니다. 공개 콘텐츠이자 심사에 제출하는 것은 이 목록의 편집 검수본뿐입니다.
예약이 놓이는 자리
Partner products sit inside itinerary slots, not in a sidebar.
제휴 상품은 배너가 아니라 일정 안의 슬롯에 놓입니다. 이 사이트에는 사이드바 광고 자리도, 파트너 로고를 나열한 영역도 없습니다.
10:00–11:00 센소지
12:00–13:00 점심 슬롯 · 동선상 배치
┗ [예약] 2인 · 12:00 · 도쿄
→ 파트너 사이트에서 최종 가격을 확인합니다
16:00–16:40 나카미세 거리
숙박 호텔 1곳
┗ [예약] 2인 1실 · 3박 · KRW
→ 파트너 사이트에서 최종 가격을 확인합니다호텔은 목록이 아닙니다. 전 일정을 통틀어 1곳을 제시하고 선정 이유를 함께 적습니다. 사용자를 스무 개 옵션 사이로 돌리는 구간이 이 화면에 없습니다. 마음에 들지 않으면 대체를 요청할 수 있고, 그때도 결과는 다시 1곳입니다.
[예약] 버튼이 여는 링크에는 도시·체크인·체크아웃·인원·통화·로케일이 채워집니다. 파트너 사이트에 도착한 사용자가 검색 폼을 다시 채우는 구간이 없습니다. 전달 파라미터는 계약 스키마에 고정돼 있습니다.
entityId · checkIn · checkOut · partySize · locale · currency
링크 품질 4단계
| EXACT_PRODUCT | 상품 페이지로 직행 |
|---|---|
| PREFILLED_SEARCH | 조건이 채워진 검색 결과 |
| CATEGORY_LANDING | 해당 도시의 카테고리 페이지 |
| UNAVAILABLE | 열 수 있는 경로가 없으면 예약 버튼을 노출하지 않습니다 |
열리지 않는 버튼을 사용자에게 보이는 것이 파트너 브랜드에 더 나쁘다고 봅니다. 그래서 네 번째 단계를 ‘표시하지 않음’으로 두었습니다.
예약은 상태로 회수합니다
SELECTED → LINK_READY → OPENED_PARTNER → BOOKED_UNVERIFIED → CONFIRMED
BOOKED_UNVERIFIED 이후의 슬롯은 자동 교체 대상에서 잠깁니다. 일정이 다시 계산되어도 이미 예약한 호텔과 투어는 다른 상품으로 바뀌지 않습니다. 예약을 마친 사용자에게 ‘더 싼 곳으로 바꾸시겠어요’를 띄우지 않습니다.
TripNaru는 발권하지 않고 결제를 대행하지 않습니다. 최저가를 주장하지 않습니다. 최종 가격과 잔여 재고는 파트너 사이트에서 확인합니다.
사실은 관측에서 오고, AI는 표기만 만듭니다
Hours, prices and coordinates come from observed sources. The model may only touch naming and tags.
이 서비스에서 언어모델은 사실의 권위가 아닙니다. 장소 하나가 저장되기까지 오간 실제 데이터입니다.
[1] 수집 — 출처가 준 원본 그대로
"名称": "東京国立博物館" "営業時間": "9:30〜17:00" "定休日": "月曜日" "緯度": "35.7188" "経度": "139.7766"
[2] 정규화 — 규칙만 돕니다. 이 단계에서 모델을 호출하지 않습니다
운영시간 · 휴무 · 요금 · 좌표가 여기서 구조화됩니다.
[3] 판별 — 모델에 좌표·시간·요금을 보내지 않습니다
돌려받는 것: verdict · confidence · tags
[4] 정제 — 표기만
돌려받는 것: displayName · nameLanguage · confidence
[5] 저장
좌표 · 운영시간 · 요금 ← [2] 규칙에서만 표기 · 태그 ← [3][4] 에서만
모델 응답 스키마에 좌표·시간·요금 필드가 아예 없습니다. 사실을 덮어쓸 경로가 구조상 존재하지 않습니다. 확신이 낮은 건은 자동으로 통과시키지 않고 사람 검수 큐로 보냅니다.
모든 관측값에 신뢰 등급이 붙습니다
| LIVE | 구조화된 실시간·준실시간 데이터 |
|---|---|
| WATCH | 공식 공지·감시 대상 — 근거 확인 후 반영 |
| SCHEDULE | 정적 운영시간 — 계획용. ‘지금 열려 있음’으로 표시하지 않습니다 |
| ESTIMATED | 규칙·통계 기반 범위 — 범위로만 표기하고 확정 사실로 쓰지 않습니다 |
데이터 출처 — 먼저 밝힙니다
현재 코퍼스는 지자체 관광 오픈데이터 CSV 형식을 그대로 흉내 낸 픽스처 데이터 위에서 파이프라인을 검증하는 단계입니다. 좌표는 실제 위치를 기준으로 넣었지만 저희가 검증한 값이 아니고, 공공데이터 실연동이 붙으면 출처 권위 서열에 따라 그쪽 값이 이 값을 덮습니다. 픽스처에서 온 값에는 화면마다 FIXTURE 배지를 붙이고, 검수되지 않은 요금·운영시간은 게시하지 않습니다. 실연동이 끝나면 같은 정규화 코드가 그대로 돌아갑니다.
쓰지 않기로 한 데이터
| OpenStreetMap | ODbL 조항상 좌표를 저희 DB에 저장하는 순간 파생 DB가 되고, 그것을 공개 사용하면 정제 결과물까지 무상 제공 의무가 생깁니다. 회피 방법이 없어 아예 쓰지 않습니다. |
|---|---|
| 위키백과 본문 | CC BY-SA라 share-alike가 전염됩니다. 서술 문장은 가져오지 않습니다. |
| Wikidata | 라이선스(CC0)는 문제가 없습니다. 실제로 적재해 검증한 결과가 문제였습니다 — 1,592건을 넣었지만 영업시간·요금·사진이 전부 0건이었고, 판정 확신도가 구조적으로 낮게 나와 어떤 카드도 채우지 못했습니다. 저희가 필요한 사실(운영시간·요금·사진)을 주지 않는 출처는 라이선스와 무관하게 쓰지 않기로 했습니다. |
파트너에게 이것이 뜻하는 바는 하나입니다. 존재하지 않는 호텔, 폐업한 식당, 틀린 운영시간으로 사용자를 보내 파트너 고객센터에 문의를 만드는 사고가, 운영 규칙이 아니라 구조 수준에서 막혀 있습니다.
수수료는 추천 점수에 들어가지 않습니다
Commission is stored but never fed into the recommendation score. It is a tie-breaker only.
약속 문장 대신 저장소에 있는 주석을 그대로 옮깁니다.
packages/contracts/src/partner.ts
/** * 수수료 정보는 저장하되 RecommendationScore 에 직접 반영하지 않는다. * 동일 품질·가격·취소조건일 때만 tie-breaker 로 사용한다. (ADR-007) */ commissionType: z.enum(['PERCENT', 'REVSHARE', 'CPA', 'UNKNOWN']).optional(), commissionRate: z.number().optional(),
수수료율은 저장은 하되 점수 계산에 들어가지 않습니다. 품질·가격·취소조건이 완전히 같을 때에만 동점 처리에 쓰이고, 그 외에는 순위에 개입하지 않습니다.
위 분리는 지금 코드에 있는 구조입니다. 반면 ‘수수료율과 노출 순위의 상관이 없다’는 사후 검증은, 제휴가 승인되어 수수료율 데이터가 실제로 쌓인 뒤에야 계산할 수 있습니다. 지금 그 수치를 적으면 계산한 적 없는 숫자를 적는 것이 됩니다. 데이터가 생기는 즉시 이 검증을 릴리스 게이트에 넣고 결과를 그대로 공개하겠습니다.
서면 진술 / Written declarations
- 노출 자리를 판매하지 않습니다. We do not sell placement.
- 클릭에 인센티브를 제공하지 않습니다. We do not incentivise clicks.
- 유료 트래픽과 자동화 트래픽을 사용하지 않습니다. No paid or bot traffic.
- 쿠폰·캐시백·포인트 모델을 운영하지 않습니다.
- 프로모션 방식은 콘텐츠(웹)와 모바일 앱입니다.
파트너 관점에서 이것은 두 가지를 뜻합니다. 나쁜 소식은, 수수료를 올려도 순위가 오르지 않는다는 것입니다. 좋은 소식은, 저희 화면에 올라간 상품은 돈을 낸 순서가 아니라 그 여행에 맞아서 올라간 것이고, 그래서 리뷰 악화와 환불로 돌아오는 트래픽이 아니라는 것입니다. 요율 논의는 순위가 아니라 커버리지와 매칭 정확도로 하겠습니다.
지금 있는 것과 아직 없는 것
Zero traffic today. We would rather send you a real number in ninety days than an invented one now.
숫자를 부풀리지 않겠습니다. 지금 상태 그대로 적습니다.
있는 것
| 도착 공항 게이트 | NRT · HND · KIX · ITM · ICN · GMP · PUS |
|---|---|
| 사실·판단 분리 | 모델 응답 스키마에 좌표·시간·요금 필드 없음 |
| 딥링크 품질 4단계 | EXACT_PRODUCT / PREFILLED_SEARCH / CATEGORY_LANDING / UNAVAILABLE |
| 예약 자동교체 잠금 | BOOKED_UNVERIFIED 이후 |
| 정책 문서 | 소개 · 문의 · 개인정보 · 제휴 공시 · 편집 정책 · 영문판 |
아직 없는 것
| 월간 방문자 | 0 |
|---|---|
| 앱 다운로드 | 0 |
| 제휴 예약 실적 | 0 |
| 공공데이터 실연동 | 현재 코퍼스는 픽스처 등급입니다 |
| 모바일 앱 공개 | 웹 지면이 먼저 운영됩니다 |
트래픽이 0인 상태로 신청합니다. 지어낸 숫자를 드리는 것보다 3개월 뒤의 실제 숫자를 드리는 편이 서로에게 낫다고 봅니다. 신규 파트너에게 적용하시는 수습 기간·물량 제한·중간 심사를 전부 받아들이고, 기준 미달로 중단하기로 하셔도 이의를 제기하지 않겠습니다.
모든 아웃바운드 링크에는 화면·도시·파트너·슬롯 단위의 sub-ID를 붙입니다. 첫 링크를 게시하고 30일 뒤에 아래 표를 채워 먼저 보내드리겠습니다. 지금은 열 이름만 있고 값이 없습니다.
surface city slot clicks bookings — — — — —
이 페이지에 적힌 것 중 재실행해서 같은 값이 나오지 않는 숫자는 없습니다. 나오지 않게 되면 이 페이지를 고칩니다.