o2o-infinith-demo/docs/WEBFORAI_FEATURE_FLAGS.md
Haewon Kam 8667bf6e2e docs: webforai.kr 공개 기능 스위치와 다시 여는 순서
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 14:21:53 +09:00

3.0 KiB

webforai.kr 공개 기능 스위치

공개 배포(webforai.kr, VITE_SITE=discovery)에서 숨겨 둔 기능을 다시 여는 방법. 2026-10-07 보도자료 공개일 기준.

지금 공개된 것

랜딩(/), 로그인(/login), 개인정보처리방침(/privacy), 이용약관(/terms). 나머지 경로는 홈으로 돌아간다. infinith-demo 배포(VITE_SITE 없음)는 모든 화면이 그대로 열린다.

스위치 (src/lib/site.ts)

스위치 여는 것 켜기 전 조건 같이 고칠 것
SHOW_PRICING /pricing, 헤더 Pricing 요금 확정 src/data/pricingTiers.ts 요금표
SHOW_SAMPLE_REPORT /discovery/sample, 랜딩 "샘플 리포트 보기" 없음 (가상 데이터 src/data/discovery_sample.ts) 필요하면 가상 데이터 문구
SHOW_USE_CASES 랜딩 Use Cases 섹션, 헤더 Use Cases 병원 동의를 받은 비식별 사례 src/data/useCases.ts 에 사례 추가 (비어 있으면 섹션·메뉴가 나오지 않는다)

켜는 방법: 값을 !DISCOVERY_SITE 에서 true 로 바꾸고 커밋·배포한다. 값은 빌드 때 정해지는 상수라 꺼진 기능은 공개 번들에서 통째로 빠진다.

공개 번들 검사 (배포 차단)

공개 배포 빌드 끝에 plugins/vite-plugin-public-bundle-guard.ts 가 결과물 전체를 검사한다. 아래가 하나라도 있으면 빌드가 실패해 Vercel 배포가 진행되지 않는다.

  • 실제 병원명·도메인 (plugins/public-bundle-denylist.json 의 clinics)
  • 비밀 키: Google API 키(AIza·AQ.), Supabase 주소·JWT (secrets)
  • 실제 병원 파일: reports/, assets/clients/ (paths)

새 병원과 계약하거나 진단하면 public-bundle-denylist.json 에 이름·도메인을 추가한다. 실패 메시지에 어느 파일에서 무엇이 걸렸는지 나온다.

켜기 전 확인 순서

  1. 스위치를 켠 상태로 로컬 빌드: VITE_SITE=discovery npx vite build → 번들 검사 통과 확인
  2. 로컬 미리보기로 화면 확인 (npx vite preview, 루트가 아니라 해당 경로)
  3. 헤더 메뉴가 빈 곳을 가리키지 않는지 확인
  4. 배포 후 라이브에서 같은 경로 확인

4단계: 실제 병원 리포트 (스위치로 열지 않음)

/discovery/:id, /actions/:id, /supporters/:id, /images/:id, /build/:id, /report/:id 는 실제 병원 데이터를 보여 준다. 공개 배포에서 열려면 아래가 먼저 끝나야 한다. 스위치를 만들지 않은 이유다.

  1. 로그인(Supabase Auth)과 병원별 접근 권한
  2. 데이터베이스 익명 읽기 정리: docs/security/2026-10-07_rls_anon_read_DRAFT.sql (infinith-demo 화면 영향 확인 후 실행)
  3. src/lib/supabase.ts 가 공개 번들에 들어가게 되므로 번들 검사 secrets 의 Supabase 항목을 어떻게 다룰지 결정
  4. 진단 신청 모달(DiscoveryLeadModal.tsx, 현재 미사용)은 신청마다 자동 빌드 큐(supporter_builds)에 넣는다. 공개 폼에 다시 붙이려면 사람 승인 단계를 먼저 둔다.