Go to file
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
.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: 2026-09-18 핸드오버와 다음 세션 프롬프트 2026-09-18 17:27:50 +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 feat(landing): 히어로 문구를 'AI에게 병원을 묻습니다'로 2026-09-15 16:55:59 +09:00
reference feat: clinic registry DB + pipeline audit P0 fixes 2026-04-07 09:33:25 +09:00
scripts feat(contact): 푸터 연락처와 문의 폼 추가, 구글시트 적재·메일 알림 연동 2026-10-01 10:21:09 +09:00
src feat(contact): 푸터 연락처와 문의 폼 추가, 구글시트 적재·메일 알림 연동 2026-10-01 10:21:09 +09:00
supabase feat(db): clinic_registry 에 서브도메인 컬럼·유니크·예약어 제약 추가 2026-09-14 11:09:52 +09:00
supporters feat(supporters): 서포터즈 사이트 초안 표시를 눈에 띄게 강화 2026-09-21 10:27:26 +09:00
templates/supporters-astro feat(supporters): 서포터즈 사이트 초안 표시를 눈에 띄게 강화 2026-09-21 10:27:26 +09:00
workers/supporters-build feat(supporters): 주변 안내 축제를 회복 일정의 체류 기간 기준으로 먼저 보여 준다 2026-09-16 09:47:01 +09:00
.env.example feat: INFINITH Marketing Platform — Phase 1 MVP 2026-03-24 16:48:11 +09:00
.gitignore docs(design): 신청 접수 알림과 완료 안내 메일 설계 v0.1 2026-09-18 16:22:28 +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 fix(front): 루트 /favicon.ico 를 discovery 배포에 넣는다 2026-09-16 09:27:10 +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