Go to file
Haewon Kam e32633e9a6 feat(supporters): /en/stay 를 참고 사이트 수준으로 다시 지음 — 설명문·이동시간·계절축제·동선·날씨
haewon 이 준 참고 사이트(스테이,머뭄)의 연동 범위에 맞춰 다시 만들었다. 앞서 만든 것은
거리순 표였고, 실제로 필요한 것은 설명문과 이동 시간이 붙은 카드, 계절로 묶은 축제,
시간표가 있는 동선이었다.

수집 (scripts/fetch_medical_tourism.py)
- detailCommon2 의 overview 를 가져온다. locationBasedList2 는 설명문을 주지 않아
  카드에 이름과 주소만 남았다. 123/125 건 확보.
- 이동 시간을 낸다. 참고 사이트 표기를 역산해 도보는 max(1, round(m/80)), 차는
  직선거리 km x 1.2 로 맞췄다(135m→2분, 566m→7분, 25km→30분). 2km 까지 도보로 보고,
  짧은 거리의 차 시간은 주차·신호 때문에 의미가 없어 최소 5분으로 둔다.
- 축제를 계절로 분류하고, 도보 시간 구간별 건수를 누적으로 집계한다.

사진 (125/125, 전부 실제로 열리는 것 확인)
목록 API 의 firstimage 만 쓰면 38건이 비었다. 폴백을 넷으로 걸었다.
  1) detailImage2 — 이미지 전용 오퍼레이션. 15건 회수(도산공원 7장이 여기 있었다)
  2) 국문 서비스 KorService2 — 영문 항목에 없어도 국문 항목에 있다. 10건
  3) 업체 공식 홈페이지 og:image — 2건
  4) Naver 이미지 검색 API — 11건
og:image 는 실제로 열어 보고 쓴다. 이미지가 아니거나 인스타 CDN 처럼 핫링크를
403 으로 막으면 화면에서 빈 칸이 되기 때문이다.
imageSource 를 항목마다 남겼다. naver 출처는 제3자 저작물이므로 내부 시연 범위이며,
공개 배포 전에는 걷어내거나 라이선스 있는 사진으로 교체해야 한다(haewon 판단).

화면 (supporters/src/pages/en/stay.astro)
- Around the clinic: 도보 시간 누적 필터, 범주별 카드, 사진 위 이동시간 배지, 설명문,
  공식 홈페이지가 있으면 링크하고 없으면 검색으로 보낸다.
- Festivals: 계절 탭.
- Shaping your days: 좌표로 그린 인라인 SVG 지도와 시간표. 외부 지도 라이브러리를
  부르지 않는다. 시각은 가정이며 화면에 그렇게 적었다.
- 오늘 날씨: Open-Meteo, 키 불필요. 빌드가 아니라 브라우저에서 받는다. 정적 빌드에
  넣으면 배포 시각의 날씨가 굳는다. 못 받으면 블록을 통째로 숨긴다.
  문구는 이 페이지의 목록에만 연결한다. 무엇을 해도 되는지는 의학 판단이라 말하지 않는다.
- 섹션 점프 바(글래스, 스티키) + IntersectionObserver 스크롤 스파이.

고친 것
- 항목마다 붙던 KO 태그를 헤더 언어 스위치 하나로 바꿨다. 짝이 있는 페이지는 서로 잇고
  없으면 그 언어의 입구로 보낸다. 영문 페이지가 늘면 PAIRS 표에 줄만 추가한다.
- .chip 클래스가 이미 있어 홈·뉴스룸·영상 페이지를 덮어쓰고 있었다. 새 스타일을
  .stay 아래로 모두 가뒀다.
- factSheet 에 영문 주소(fullEn)와 우편번호를 넣었다. 근거는 뷰성형외과 자신의
  한국관광공사 등재 항목(contentid 3364779)이며 fullEnSource 에 적었다.

템플릿은 같은 코드에 빈 데이터 스캐폴드를 둔다. 뷰성형외과 데이터가 새 병원 빌드로
새면 안 된다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 13:51:28 +09:00
.claude chore: archive-screenshots supabase-py 리팩터 + Storage 버킷 자동 생성 2026-04-07 15:32:40 +09:00
.vscode feat: add API Dashboard + filled icons + pipeline improvements 2026-04-06 14:59:31 +09:00
data feat(ga4): AI 유입 트래픽 연동 뼈대 + 리포트 "측정 가능 범위" 절 2026-09-09 10:53:54 +09:00
doc docs: update DB V3 checklist — Phase 1-4 implemented 2026-04-05 00:54:52 +09:00
docs docs(handover): 2026-09-09 진행분 반영 — 감성 1차 보정 완료, 남은 것은 2차 보정과 GA4 실연결 2026-09-09 10:54:52 +09:00
evidence/viewclinic feat(supporters): 근거 수집기 scripts/collect_evidence.mjs + evidence/viewclinic (§7-3) 2026-09-07 14:26:15 +09:00
plugins chore: archive-screenshots supabase-py 리팩터 + Storage 버킷 자동 생성 2026-04-07 15:32:40 +09:00
public fix: Pretendard self-host + 한글 시스템 폰트 fallback 체인 강화 2026-04-15 11:03:04 +09:00
reference feat: clinic registry DB + pipeline audit P0 fixes 2026-04-07 09:33:25 +09:00
scripts feat(supporters): /en/stay 를 참고 사이트 수준으로 다시 지음 — 설명문·이동시간·계절축제·동선·날씨 2026-09-09 13:51:28 +09:00
src refactor(supporters): 의료관광 연결을 /discovery 에서 서포터즈 사이트 /en/stay 로 옮김 2026-09-09 11:42:46 +09:00
supabase feat(supporters): haewon 결정 반영 — 채널 인기 전체 탭 제거, 단가 상한 $10 기본, 큐 폴러(poll.mjs)+launchd, /supporters/:id 페이지, URL 신청→빌드 큐, 수집기 UA·슬래시 수정, 기획 목록 일반화(원진 6편) 2026-09-07 18:54:01 +09:00
supporters feat(supporters): /en/stay 를 참고 사이트 수준으로 다시 지음 — 설명문·이동시간·계절축제·동선·날씨 2026-09-09 13:51:28 +09:00
templates/supporters-astro feat(supporters): /en/stay 를 참고 사이트 수준으로 다시 지음 — 설명문·이동시간·계절축제·동선·날씨 2026-09-09 13:51:28 +09:00
workers/supporters-build feat(supporters): 뉴스룸 워커 단계 + 뉴스 게이트 규칙, launchd 폴러 설치 2026-09-08 14:14:08 +09:00
.env.example feat: INFINITH Marketing Platform — Phase 1 MVP 2026-03-24 16:48:11 +09:00
.gitignore chore: archive-screenshots supabase-py 리팩터 + Storage 버킷 자동 생성 2026-04-07 15:32:40 +09:00
.vercelignore feat: add API Dashboard + filled icons + pipeline improvements 2026-04-06 14:59:31 +09:00
CLAUDE.md docs: CLAUDE.md 백엔드 파이프라인 실제 구현 반영 2026-04-10 13:41:53 +09:00
extracted_marketing_text.md feat: INFINITH Marketing Platform — Phase 1 MVP 2026-03-24 16:48:11 +09:00
index.html fix: Pretendard self-host + 한글 시스템 폰트 fallback 체인 강화 2026-04-15 11:03:04 +09:00
Medical Marketing Intelligence Report Prompt_01.28.2026.md feat: INFINITH Marketing Platform — Phase 1 MVP 2026-03-24 16:48:11 +09:00
metadata.json feat: INFINITH Marketing Platform — Phase 1 MVP 2026-03-24 16:48:11 +09:00
package-lock.json feat: real API integration + YouTube Data API v3 + progressive loading 2026-04-02 10:57:14 +09:00
package.json fix: import-registry 스크립트 수정 + npm sync-registry 추가 2026-04-10 14:25:00 +09:00
PRD.md feat: INFINITH Marketing Platform — Phase 1 MVP 2026-03-24 16:48:11 +09:00
README.md feat: INFINITH Marketing Platform — Phase 1 MVP 2026-03-24 16:48:11 +09:00
tsconfig.json feat(discovery): AEO/GEO 분리 채점 기준표 v2.0 초안 + 리포트 패널 2026-09-07 15:12:35 +09:00
vercel.json feat: Hero section copy & design refinement 2026-03-29 15:23:43 +09:00
Viewclinic Plan.md feat: 뷰성형외과 실제 데이터 기반 세일즈 프로토타입 완성 2026-04-13 13:11:18 +09:00
vite.config.ts chore: archive-screenshots supabase-py 리팩터 + Storage 버킷 자동 생성 2026-04-07 15:32:40 +09:00
뷰성형외과_Marketing_Intelligence_Report.md feat: INFINITH Marketing Platform — Phase 1 MVP 2026-03-24 16:48:11 +09:00

GHBanner

Run and deploy your AI Studio app

This contains everything you need to run your app locally.

View your app in AI Studio: https://ai.studio/apps/d446f5f5-e089-404a-93ce-32a72f2f5108

Run Locally

Prerequisites: Node.js

  1. Install dependencies: npm install
  2. Set the GEMINI_API_KEY in .env.local to your Gemini API key
  3. Run the app: npm run dev