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

46 lines
3.0 KiB
Markdown

# 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`)에 넣는다. 공개 폼에 다시 붙이려면 사람 승인 단계를 먼저 둔다.