Commit Graph

19 Commits

Author SHA1 Message Date
Haewon Kam
dca494fc21 feat(supporters): 주변 안내(/stay·/en/stay) 뷰 샘플에 추가 · 내비·언어 짝·사이트맵·스타일 이식, 구조 기준선 갱신
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 18:28:13 +09:00
Haewon Kam
93509bf9b3 chore(supporters): 플래너 추천 장소 설명을 관광공사 데이터 유무에 따라 표기
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 13:11:25 +09:00
Haewon Kam
587462552b feat(supporters): 오시는 길 지도·길찾기 (VisitMap) 방문 안내와 영어 홈에 추가
- OpenStreetMap 타일 + Leaflet(cdnjs) 지도, 병원 핀, 주소 복사, 문의 전화, 네이버·카카오 길찾기(영어 화면은 구글 길찾기 추가). 벤치마크 2026-09-11
- 좌표는 factSheet.geo(운영 기록 source 는 화면에 내지 않음), 없으면 관광공사 수집 메타, 둘 다 없으면 지도 없이 주소·버튼만

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 11:38:07 +09:00
Haewon Kam
65fb9be9c6 refactor(supporters): 플래너 히어로의 시술 목록·기준점 문구를 데이터(procedures.json 라벨, places.json origin)에서 읽음 · 병원별 이식 준비
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 11:20:06 +09:00
Haewon Kam
83b8343262 feat(supporters): 회복 일정 플래너에 한국관광공사 TourAPI 데이터 합침 + 옛 주소 리다이렉트 + 404 페이지
- src/lib/tour.ts: 사전 수집 JSON(medicalTourismKo/medicalTourism)을 추천 후보로 변환. 관광지·문화시설→관광, 쇼핑, 음식점(일반식 단계에서만), 숙박→숙소. 사우나·스파는 회복기 금지라 제외. 거리로 외출 등급(600m·3km)
- 큐레이션(places.json) 1순위, TourAPI 2순위 가점. 타임라인 추천에 이동 시간 라벨과 '관광공사' 표시
- 체류 기간과 겹치는 행사 섹션(가까운 순 6곳, 자유 외출 단계 도달일 표시), 자유 외출(L3) 날에 행사 1건 추가
- 숙소 그리드에 TourAPI 숙박 가까운 순 6곳 추가(예약 검색은 영문 이름으로)
- scripts/fetch_medical_tourism.py: Productize 브랜치의 수집 스크립트 가져옴(화면 경로 주석 갱신)
- vercel.json: /recovery·/stay·/en/recovery·/en/stay → /plan·/en/plan 영구 리다이렉트. src/pages/404.astro 사이트 스타일 404
- 테스트 14건(어댑터·우선순위·유동식 제외·축제)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 11:01:32 +09:00
Haewon Kam
295401f356 en(supporters): 영어 홈에서 상담 언어·통역 문구 제거 (haewon)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 17:00:17 +09:00
Haewon Kam
c750cfd6d9 i18n(supporters): 전역 언어 전환(KO/EN)을 헤더 하나로 통일, 영어 홈 /en 신설
- 헤더 lang-switch: 현재 페이지의 상대 언어 페이지로 이동(/ ↔ /en, /plan ↔ /en/plan, 그 외는 언어 홈). 구조 기준선 갱신(haewon 승인)
- 영어 페이지에서는 메뉴·CTA·배너·뒤로가기·푸터(지원 고지·부작용 고지·링크·주소)까지 함께 전환. lib/i18n.ts, data/factSheetEn.json
- /en 영어 홈: 히어로, Start Here 카드, 병원 숫자, 오는 길(공항 경로·진료시간), 병원 사실, 원칙. 한국어 글은 번역 없이 링크만 안내
- 플래너의 페이지 내 언어 토글 제거, Step 1은 국적만. sitemap·hreflang 추가

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 16:38:41 +09:00
Haewon Kam
378ca7e7cd mobile(supporters): 회복 일정 플래너 반응형 정비 + 사이트 헤더 모바일·태블릿 대응
- 헤더(≤900px): 첫 줄 브랜드·상담 예약, 둘째 줄 메뉴 가로 스크롤. 메뉴 6개가 두 줄로 겹치던 문제를 DOM 변경 없이 CSS만으로 해결(구조 지문 유지)
- 플래너 모바일: 히어로 통계·핵심 날짜 2열, 시술 그리드 2열, 타임라인 날짜 머리 가로 배치, 숙소·예약 카드 1열, 입력 16px(iOS 확대 방지)
- 하단 고정 요약 바: 결과가 있고 결과 섹션이 화면 아래에 있을 때만 표시. 시술명, 입국→출국, 박 수, 일정표 보기 버튼
- 검증: 1280 창 안 390/768px 아이프레임 하네스로 확인 (헤드리스 크롬은 창 최소 폭 때문에 400px 직접 캡처가 부정확)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 16:20:39 +09:00
Haewon Kam
27e77add65 design(supporters): 회복 일정 플래너를 홈·영상 페이지와 같은 섹션 리듬으로 재구성
- 다크 히어로(세리프 그라디언트 제목, 언어 알약, 글래스 통계 4장) → 틴트(Step 1~3 카드 그리드) → 다크(핵심 날짜 6개 글래스 통계) → 라이트(체류 확인·회복 규칙·외출 단계 카드) → 틴트(타임라인 흰 카드) → 다크(숙소·항공·상담·저장 카드)
- 데이터 타일의 웜 그라디언트 제거(가드레일: CTA 카드 한 장에만). 전역 .kpi 규칙과 충돌하던 클래스명 교체
- 영문 세리프 제목 + 한글 부제로 위계, 날짜·박 수는 Playfair 숫자
- 빈 상태(시술·날짜 미선택) 다크 섹션 추가

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 16:10:29 +09:00
Haewon Kam
e40f9ceb94 feat(supporters): 회복 일정 플래너 /plan · /en/plan · 시술별 회복 규칙표, 큐레이션 장소, 예약 딥링크, 헤더 내비 연결
- src/pages/plan.astro, src/pages/en/plan.astro: 한국어·영어 페이지, hreflang 상호 연결
- src/components/Planner.astro: 5단계 흐름(언어·국적 → 시술·수술일 → 선호 → 일정표 → 예약·저장), 브라우저 안 계산, URL 해시 공유, ICS 저장
- src/lib/plan.ts: 입국 권장일·출국 가능 최소일·외출 등급·식사 단계·추천 점수·딥링크·ICS 순수 함수
- src/data/procedures.json: 시술 8종 규칙표. 값마다 clinic/provisional 표시, 병원 확인 전 잠정값은 화면 배지
- src/data/places.json: 신논현역 기준 큐레이션 31곳 (구글 지도·예약 사이트 검색 링크만)
- src/data/planStrings.json: UI 문자열 ko/en
- scripts/gate/plan.test.mjs: 계산·데이터 정합성 검증 11건
- Base.astro: lang·alternates prop, 내비 '회복 일정', 푸터 링크. 구조 기준선 갱신(haewon 승인)
- visit.astro: 플래너 진입 CTA 카드. sitemap에 /plan, /en/plan 추가
- 설계 근거: docs/INFINITH_Viewclinic_Supporters_Site_Design_v0.2.md §13

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-10 16:00:33 +09:00
Haewon Kam
7e515b70ae feat(supporters): 승인 UI·입력 반영·워커 — §7-5 ClinicInputsPanel + supporter_builds/inputs 마이그레이션 + apply_inputs, §12-2 상단 고지·개설자 승인·색인 빌드 필터, §7-6 워커 E2E(뷰성형외과 URL → 5편 → 게이트 0오류)
- 게이트: DISCLOSURE_TOP_MISSING, APPROVED_*, UNAPPROVED_IN_INDEXABLE_BUILD, PRESS_VOICE 규칙화, 픽스처 추가 (16/16)
- 생성기: --site 옵션, 병원 확인 답변(clinicAnswers) 근거 [A]
- default_briefs.mjs 첫 배치 자동 기획, workers/supporters-build/run.mjs
- 랜딩: SAMPLE REPORT 라벨 "실제 사례"로 (haewon 지시)
- v2 §11-6·§11-7 기록, E2E 리포트

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 17:07:06 +09:00
Haewon Kam
622441e6aa feat(supporters): 템플릿화 — 병원 고유값을 데이터로 분리하고 templates/supporters-astro 내보내기
- src/data/site.json 신설(매체 이름·로고·홈 큐레이션), factSheet에 kind·areaLabel·transitShort·transitNote·reservationUrl·doctorsUrl·youtube.title 추가
- lib.ts: PENDING('확인 대기')·v()·has()·surface()·editor() 도입, 스키마는 빈 값을 빼고 생성
- 페이지·컴포넌트 15개에서 뷰성형외과 하드코딩 제거, 빈 데이터 empty-state (글 0편·영상 0건·뉴스 0건·이미지 없음)
- 검증: 28페이지 표시 텍스트·구조 지문 이전 빌드와 동일(홈 title 마침표 1건만 정정), JSON-LD 차이는 빈 sameAs 제거뿐
- scripts/export_template.mjs + scripts/template/data(빈 데이터 세트) → templates/supporters-astro (빈 데이터로 10페이지 0오류 빌드, 게이트 통과)
- 게이트 픽스처를 자체 authors로 분리해 템플릿에서도 테스트 통과, 구조 기준선의 글 상세 페이지는 사전순 첫 글로 동적 선택

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 14:07:14 +09:00
Haewon Kam
49c5e46f23 feat(supporters): 발행 게이트 확장 — v2 §3 검사 11종을 규칙 모듈·픽스처 테스트로 분리
- scripts/gate/rules.mjs: 운영자 어휘·구조 지문·화법·근거 type·규제 원문·결론 문장·수치 한정·확인일 일관성·검토자/검토일·영상 제목·표/체크리스트 (순수 함수)
- scripts/check.mjs: dist + 소스 frontmatter + 데이터 검사 러너, --update-layout, error/warn 분리
- scripts/gate/test.mjs + fixtures 9개: 실패 재현 + 18편 정답지 회귀 + 부정문 통과
- corrections.json 「답변엔진」 표현 고객 화면에서 제거, 반말 문장 1건 수정
- audit_aeo_geo.py: 표본 URL 5개 미만 경고(§3-10)
- 미결: 「채널 인기 전체」 탭은 경고만 (haewon 결정 대기)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 13:57:31 +09:00
Haewon Kam
659f22b987 feat(supporters): 2단계 2차 원천 콘텐츠 5편 초안 + 1차 4편 검토 확정 + 의료진 6명 추가
- 2차 5편 (검토 대기): 트임 3종 비교(눈 조진우), 기능코성형·이비인후과 협진(고은석), 윤곽·양악 회복 일정표(오정석), 실리프팅 vs 안면거상(김소영), 타원 수술 재수술 상담·시점(정재현)
- 근거: 쇼츠 정리 답 6편, 주의사항 페이지 부위별 원문(눈·코·윤곽·양악·리프팅), 코성형·안면윤곽·가슴재수술 페이지, 원장 인터뷰·칼럼 5건. 자료에 없는 수치(지속 기간, 코·윤곽 재수술 시점, 신경 손상 확률, 타원 상담 정책)는 "자료에 없음 / 확인 대기"로 명시
- 1차 4편 검토 완료 2026-09-07: 상담 질문 최순우, 회복 정재현, 마취 최진화(마취통증의학과 전문의로 교체), 검진 오원석. 견적 글은 검토자 없음
- authors.json physicians에 조진우·고은석·오정석·김소영·윤창운·최진화 추가 (공식 프로필 경력·URL)
- 기획서에 1·2차 상태 반영. 게이트 28페이지 오류 0

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:28:06 +09:00
Haewon Kam
2735de7e2a feat(supporters): 2단계 1차 원천 콘텐츠 5편 초안 (검토 대기) + 작성자 sameAs 한경 인터뷰
- C 선택 기준: 가슴성형 상담 질문 10가지 체크리스트 (답 적는 칸, 병원 공개 답 병기)
- F 가격·이벤트: 견적 확인 항목 9가지 + 비용 확인 경로 (금액 미기재)
- D 시술 정보: 가슴성형 회복 일정표 (당일~1년, 주의사항·애프터케어 페이지 원문 기준, 출근 시점은 병원 확인 대기)
- E 안전·신뢰: 수면마취 vs 전신마취 (쇼츠 E-04 + 안전수술시스템 마취 프로세스)
- D 시술 정보: 보형물 교체 주기와 검진 (쇼츠 D1-11 + FDA 위험 안내 + 검진센터·애프터케어)
- 모두 reviewStatus pending, 확인 안 된 수치는 쓰지 않고 "상담 확인"으로 표기. 참고 자료 유형 태그·확인일 포함
- authors.json: 안성민 sameAs에 한국경제 CEO 인터뷰 추가
- 기획서에 1차 초안 발행 기록

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:19:06 +09:00
Haewon Kam
1b0fd6624a docs(supporters): 2단계 원천 콘텐츠 기획서(13편) + 작성자 역할을 'AI오투오 대표 · 편집 책임'으로
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 11:07:17 +09:00
Haewon Kam
ffbd1e66bd feat(supporters): GEO 0단계 반영 — 작성자 안성민, 근거 범위 표현, 참고 자료 유형, 갱신 기록, 정정 기록 페이지
- 작성자: 가명 2명 → 안성민(편집자·편집 책임) 1명. 소개·푸터·ReviewBox에 편집 책임과 정정 요청 이메일(o2oteam@o2o.kr) 명시
- 의학 검토: 영상 출연 원장을 감수자로 표기하던 방식을 중단. 상단 메타 "설명 {원장}" + "의학 검토 대기", ReviewBox는 검토 완료 시에만 원장명·날짜 표시
- 근거 범위(G4): 촉감 글 FDA 승인 범위 한정, 표면 글 나노텍스처를 원장 의견으로 한정, 프리저베 30분·다음 날 출근 영상 사례 한정, 재수술 글 제품 권유를 임상 의견으로 한정, 안전 글 결론 문장 교체
- 원자료(G3): sources에 type 태그(병원 제공/원장 설명/제품 정보/규제·연구/플랫폼 집계/2차 자료). FDA P230005, FDA 위험 안내, ISO 14607 원문 링크 추가
- 일관성(G6): 후기 글 요약·FAQ에 플랫폼별 확인일 병기, "해외 환자 비중" 삭제. 홈 통계에 확인일
- 갱신 추적(G5): 글 frontmatter history + History 컴포넌트. 팩트 시트 checkedAt/nextCheck 표시
- 정정 경로(G8): /corrections 정정 기록 페이지(정정 7건), 푸터·소개·ReviewBox에 정정 요청 링크. 사이트맵 반영
- GEO 계획 문서에 0단계 반영 내역 기록

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 10:53:01 +09:00
Haewon Kam
24b8be0f3d feat(supporters): 고객용 메시지와 운영자용 설명 분리 (v4)
- 홈: "답변엔진 인용", "질문 뱅크 120", "홈페이지 문장 복사 안 함", "의료법 56조" 등 제작 원칙 섹션 제거.
  주제별 찾기(카테고리 카드) · 최근 답한 질문 · 원장 영상 · 병원 둘러보기 · 신뢰 근거 3가지 · 병원 정보로 재구성. 영어 덱 스타일 헤딩을 한국어 고객 문장으로 교체
- /about: 방문자용 "이 사이트에 대해"로 다시 씀 (근거, 작성·감수, 싣지 않는 것, 병원과의 관계, 문의)
- /editorial 신설: 운영자용 편집 기준 (질문 뱅크, 글 구조, 원천 변환, 중복 회피, 스키마, 발행 게이트, 고객/운영자 경계). noindex, 푸터에서만 연결
- 내비 "운영 원칙" → "소개", 샘플 배너에서 noindex 언급 제거, 글 상세 QB 번호는 data-qb 속성으로만 유지
- 글 목록·병원 정보·영상·뉴스룸·작성자 페이지의 "단일 원본", "API 집계", "수집 기준", "팩트 시트" 문구 정리
- 후기 글·방문 안내 글의 법 조문·답변엔진 언급을 고객 문장으로 교체
- Base에 noindex prop 추가. docs/v4-screenshots 기록

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 08:57:56 +09:00
Haewon Kam
03ed725481 feat: 뷰성형외과 서포터즈 샘플 사이트 v3 + 설계 v0.1 + 공식 사이트 대비 AEO 감사
- supporters/: Astro 사이트 소스 (pages·components·posts·factSheet/authors/videos 데이터, 뉴스룸 916건 빌더, 발행 게이트 check.mjs, vercel.json)
- supporters/docs/: v1~v3 스크린샷 기록
- docs/INFINITH_Viewclinic_Supporters_Site_Design_v0.1.md: 서포터즈 사이트 설계 문서
- docs/NEXT_SESSION_SUPPORTERS_AUTOBUILD.md: 다음 세션 자동 빌드 프롬프트
- docs/reports/Viewclinic_Supporters_vs_Official_AEO_Audit.xlsx + scripts/build_supporters_audit_xlsx.py: 서포터즈 vs 공식 사이트 AEO/GEO 감사 비교

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 08:40:10 +09:00