o2o-infinith-demo/docs/WEBFORAI_FEATURE_FLAGS.md
Haewon Kam 0be730f0f9 fix: 데모 화면의 DB 조회·쓰기를 서버 함수로 옮긴다
브라우저가 공개 키로 테이블을 직접 읽고 쓰던 구조를 없앤다.
- api/db.js: 정해진 작업만 서비스 키로 실행 (임의 쿼리·열 지정 불가)
- api/_origin.js: 서버 함수 공용 출처 검사, 공개 배포에서는 404
- src/lib/db.ts: 화면용 호출 함수, 반환 형태 { data, error } 유지
- 빌드 큐에 바로 넣던 예전 진단 신청 모달 삭제

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 16:09:29 +09:00

3.2 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. 데이터베이스 익명 읽기·쓰기 정리: 2026-10-07 실행 (docs/security/2026-10-07_rls_anon_read_DRAFT.sql). 데모 화면은 서버 함수 api/db.js 로 조회한다
  3. src/lib/supabase.ts 가 공개 번들에 들어가게 되므로 번들 검사 secrets 의 Supabase 항목을 어떻게 다룰지 결정
  4. 예전 진단 신청 모달(신청마다 자동 빌드 큐 supporter_builds 에 넣던 것)은 2026-10-07 삭제했다. 빌드 큐 쓰기는 이제 서버 함수(api/db.js 의 builds.queue)만 할 수 있다. 공개 폼에서 빌드를 받으려면 사람 승인 단계를 먼저 둔다.