메인 체크아웃(feature/ai-sentiment-rubric)의 작업 트리에 커밋되지 않은 채 남아 있던 플래너 계측 코드가 main 에 없었다. 기록 노트 머리말이 "2026-09-12 추가 작업: 플래너 계측 이벤트 구현"이라고 적은 그 코드다. 브랜치 통합은 커밋된 상태까지만 가져가므로 빠졌고, 그래서 배포된 세 사이트에 플래너 계측이 없었다. Planner.astro 의 계측 부분만 가져왔다(haewon 결정). 같은 미커밋분이 Base.astro 에도 GA4 태그를 넣는데, main 에는 이미 같은 태그가 들어가 있어 그대로 두었다. 두 구현이 겹치면 태그가 두 번 들어간다. 가져온 것 - track(): window.gtag 가 없으면 아무것도 하지 않는다. GA4 측정 ID 가 비어 있으면 태그 자체가 안 나가므로 기본 상태에서 조용하다. - plan_procedure_select · plan_result · plan_save 이벤트. - leadBucket(): 수술일 원본을 보내지 않고 남은 기간 구간(past·0-7d·8-28d·29-90d·90d+)만 보낸다. 체류 일수·출국 확정 여부·선호·국적도 값이 아닌 구간·플래그로 보낸다. - 호텔·항공·상담 링크의 data-ga 속성. Base.astro 의 클릭 리스너가 이 값을 읽는다. site.json 에 ga4MeasurementId 자리와 설명을 넣었다. 템플릿 빈 데이터셋에는 이미 있었다. 검증: 뷰 34페이지, 게이트 41/41, check.mjs 오류 0건, tsc 0 에러, 빈 데이터 템플릿 16페이지, 내보내기 0. 번들에서 gtag 미존재 시 조기 반환 확인. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| .vscode | ||
| briefs | ||
| public | ||
| scripts | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| astro.config.mjs | ||
| CLAUDE.md | ||
| DEPLOY_NOTE.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vercel.json | ||
supporters-astro 템플릿
병원 하나의 서포터즈 사이트를 만드는 Astro 7 정적 템플릿이다. supporters/(뷰성형외과 샘플)에서 node scripts/export_template.mjs로 생성되며, 직접 편집하지 않는다. 고칠 것은 supporters/에서 고치고 다시 내보낸다.
데이터만 채우면 되는 것
| 파일 | 내용 | 채우는 주체 |
|---|---|---|
src/data/factSheet.json |
병원 사실 단일 원본 (NAP·진료시간·층·진료과·안전·이력·플랫폼 집계) | 근거 수집기 + 병원 확인 |
src/data/authors.json |
작성자(실명·직함·sameAs·정정 이메일), 의학 검토 원장 | 운영자·병원 입력 |
src/data/site.json |
매체 이름·로고·홈 화면 큐레이션(영상 3편, 시설 사진, 방문 약도, 추천 글) | 운영자 |
src/data/videos.json |
유튜브 채널 집계 (Top10 롱폼·정보형 쇼츠+답) | 수집기 |
src/data/news.json |
뉴스룸 (보도자료·기고·언급) | scripts/build_news.py |
src/data/corrections.json |
정정 기록 | 운영자 |
src/content/posts/*.md |
글. frontmatter 규격은 src/content.config.ts |
글 생성기 + 검토 승인 |
public/img/ |
병원 허락을 받은 이미지 | 수집기 |
scripts/home_text.txt |
홈페이지 본문(공백 제거). 40자 연속 일치 검사 기준 | 수집기 |
비어 있는 값은 화면에 "확인 대기"로 표시되고 스키마에서는 빠진다. 지어내지 않는다.
빌드·검사
npm ci
npm run build # astro build + 발행 게이트(scripts/check.mjs). error가 있으면 exit 1
npm run gate:test # 게이트 규칙 회귀 (픽스처 + 글 전편)
node scripts/check.mjs --update-layout # 룩앤필 변경을 승인한 뒤에만 구조 기준선 갱신
배포 주소는 SITE_URL 환경변수(vercel.json·astro.config.mjs의 __CLINIC_ID__를 병원 id로 교체). 기본은 noindex이며 PUBLIC_INDEXABLE=true로 색인을 연다.