o2o-infinith-demo/scripts
Haewon Kam 9c47df561b feat(contact): 푸터 연락처와 문의 폼 추가, 구글시트 적재·메일 알림 연동
연락처 통일
- 사이트 안에 이메일이 contact@o2o.kr · o2oteam@o2o.kr 두 갈래로 갈라져
  있던 것을 sales@o2o.kr 하나로 통일 (lib/contact.ts 단일 출처)
- 전화번호 010.2755.6463 을 처음으로 명시. discoveryContact.ts 는
  기존 import 경로를 깨지 않도록 재내보내기만 한다

푸터·문의 폼
- 푸터에 전화·이메일과 문의하기 버튼 추가 (사업자명·주소는 확인된 값이
  없어 넣지 않는다)
- ContactModal 신규: 성함·회사·전화·이메일·문의내용. 화면 구조는 기존
  DiscoveryLeadModal 을 그대로 따라 모달이 두 종류로 보이지 않게 한다
- Navbar 문의하기를 mailto 에서 모달로 교체. 메일 앱이 없는 사용자가
  mailto 에서 이탈하던 것을 막는다

수신 경로
- submitLead: Apps Script 웹앱으로 POST. 이 사이트는 서버 없는 SPA 라
  중간 서버를 두지 않았다. Apps Script 는 CORS 프리플라이트에 응답하지
  않아 Content-Type 을 text/plain 으로 보내 simple request 로 맞춘다
- scripts/apps-script/lead-intake.gs: 구글시트 행 추가와 알림 메일을
  한 실행에서 처리. 시트 트리거는 스크립트가 쓴 변경에 늦거나 누락되는
  경우가 있어 doPost 안에서 바로 보낸다
- 엔드포인트 미설정·전송 실패 시 접수된 것처럼 보이지 않게 하고 메일
  폴백을 띄운다 (기존 DiscoveryLeadModal 과 같은 규칙)

토큰 실값은 저장소에 넣지 않는다. 배포본 Apps Script 와 Vercel
환경변수(VITE_LEAD_ENDPOINT · VITE_LEAD_TOKEN)에만 둔다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 10:21:09 +09:00
..
apps-script feat(contact): 푸터 연락처와 문의 폼 추가, 구글시트 적재·메일 알림 연동 2026-10-01 10:21:09 +09:00
out feat(measure): 네이버 AI 브리핑을 질문 뱅크 실측 엔진으로 추가 2026-09-15 16:55:59 +09:00
archive-screenshots.py chore: archive-screenshots supabase-py 리팩터 + Storage 버킷 자동 생성 2026-04-07 15:32:40 +09:00
audit_aeo_geo.py feat(supporters): 발행 게이트 확장 — v2 §3 검사 11종을 규칙 모듈·픽스처 테스트로 분리 2026-09-07 13:57:31 +09:00
build_discovery_report.ts feat(ga4): AI 유입 트래픽 연동 뼈대 + 리포트 "측정 가능 범위" 절 2026-09-09 10:53:54 +09:00
build_supporters_audit_v2_xlsx.py feat(discovery): 기준표 v2.0 정식 채택 — 배지·헤더·랜딩 카피·비교 엑셀·덱 v2.0 2026-09-07 15:25:00 +09:00
build_supporters_audit_xlsx.py feat: 뷰성형외과 서포터즈 샘플 사이트 v3 + 설계 v0.1 + 공식 사이트 대비 AEO 감사 2026-09-07 08:40:10 +09:00
build_supporters_v2_compare.ts feat(discovery): 기준표 v2.0 정식 채택 — 배지·헤더·랜딩 카피·비교 엑셀·덱 v2.0 2026-09-07 15:25:00 +09:00
cleanup-and-seed-db.sql chore: archive-screenshots supabase-py 리팩터 + Storage 버킷 자동 생성 2026-04-07 15:32:40 +09:00
export_qb_excel.py feat(measure): 네이버 AI 브리핑을 질문 뱅크 실측 엔진으로 추가 2026-09-15 16:55:59 +09:00
fetch_medical_tourism.py feat(supporters): 회복 일정 플래너를 템플릿·워커에 통합 (/plan·/en/plan), /recovery·/stay 를 /plan 으로 정리 2026-09-11 11:27:59 +09:00
ga4_ai_traffic.py feat(ga4): AI 유입 트래픽 연동 뼈대 + 리포트 "측정 가능 범위" 절 2026-09-09 10:53:54 +09:00
gen_rubric_v2_doc.ts feat(discovery): AEO/GEO 분리 채점 기준표 v2.0 초안 + 리포트 패널 2026-09-07 15:12:35 +09:00
import-registry.ts fix: import-registry 스크립트 수정 + npm sync-registry 추가 2026-04-10 14:25:00 +09:00
make_share_assets.py feat(landing): 히어로 문구를 'AI에게 병원을 묻습니다'로 2026-09-15 16:55:59 +09:00
merge_qb_results.py feat(measure): 네이버 AI 브리핑을 질문 뱅크 실측 엔진으로 추가 2026-09-15 16:55:59 +09:00
monthly_ai_measure.py feat(measure): 네이버 AI 브리핑을 질문 뱅크 실측 엔진으로 추가 2026-09-15 16:55:59 +09:00
question_bank_viewclinic.json feat: 뷰성형외과 Question Bank 120문항 2엔진 실측 + 기준표 v1.1 과제 + 점수 정합성 교정(50/C) 2026-09-01 11:03:15 +09:00
rescale_deck.py fix: INFINITH 덱 폰트 pt 표준화 — 20in 캔버스를 2/3 균등 축소한 v2_표준캔버스 버전 추가 2026-09-01 11:44:41 +09:00
run_question_bank_en.py docs(reports): 뷰성형외과 영문 사이트 외국인 관점 AEO/GEO 진단 보고서 2026-09-10 2026-09-11 09:50:33 +09:00
run_question_bank_openai.py feat(measure): 네이버 AI 브리핑을 질문 뱅크 실측 엔진으로 추가 2026-09-15 16:55:59 +09:00
seed-all-reports.sql chore: archive-screenshots supabase-py 리팩터 + Storage 버킷 자동 생성 2026-04-07 15:32:40 +09:00
seed-clinic-data.sql feat: seed-clinic-data.sql — registry + gangnamUnni + doctor data 2026-04-07 10:32:05 +09:00
sentiment_qb.py feat(measure): 네이버 AI 브리핑을 질문 뱅크 실측 엔진으로 추가 2026-09-15 16:55:59 +09:00
sync-db-local.ts chore: archive-screenshots supabase-py 리팩터 + Storage 버킷 자동 생성 2026-04-07 15:32:40 +09:00
update-csv-gangnamunni.py fix: 리포트 데이터 정확도 개선 + 강남언니·인스타그램 스크래핑 데이터 반영 2026-04-07 14:18:31 +09:00
update-csv-gu-content.py fix: 리포트 데이터 정확도 개선 + 강남언니·인스타그램 스크래핑 데이터 반영 2026-04-07 14:18:31 +09:00