# InsuRo 온보딩 플로우 개선 — 안내 문구 추가 + AI 체험 버그 수정

## 작업 레벨: Lv.1

## ★★★ 방향 전환 (기존 지시 무시) ★★★
기존 "강제 리다이렉트 제거" 지시를 **폐기**합니다.
온보딩 강제 리다이렉트는 **유지**합니다.
대신 온보딩 페이지를 **개선**하는 것이 목표입니다.

## 프로젝트
- InsuRo: `/home/jay/projects/InsuRo`

## 문제
1. 온보딩 페이지에 "왜 이 페이지에 왔는지" 안내 문구가 없음 — 첫 방문자가 당황
2. AI 블로그 작성 체험 기능이 실제로 작동하지 않음 (API 호출 실패)
3. AI 생성 실패 시 사용자가 온보딩을 완료할 수 없어 갇힘

## 수정 사항

### 1. 온보딩 페이지에 환영 안내 문구 추가
`src/pages/OnboardingWizard.tsx` — Step 1 상단에 환영 메시지 섹션 추가:

```
🎉 인슈로(InsuRo)에 오신 것을 환영합니다!

인슈로는 보험 설계사를 위한 올인원 AI 마케팅 플랫폼입니다.
지금 바로 AI가 만들어주는 콘텐츠를 체험해보세요.
단 1분이면 완료됩니다!
```

- 이 문구는 Step 1 ("콘텐츠 유형을 선택하세요") 위에 Card 형태로 표시
- 배경: primary/5 계열 (인슈로 블루 톤)
- 이모지 사용 (환영 느낌)

### 2. AI 콘텐츠 생성 버그 수정

현재 AI 생성 흐름:
- 프론트: `fetch("/api/insuro/onboarding/ai-generate")` 상대경로 호출
- 서버: `anu_provider.generate()` → claude CLI subprocess (haiku 모델)

**문제 원인 조사 후 수정:**
a. **API URL**: 프론트엔드가 상대경로 `/api/insuro/...`로 호출 → Vite 프록시 또는 Cloudflare 프록시 설정 확인
   - `vite.config.ts`에서 `/api/insuro` → 서버(8001포트) 프록시 설정 확인
   - 프로덕션에서는 Cloudflare Worker가 프록시하는지 확인
b. **anu_provider**: 서버에서 `anu_provider.generate()` 호출이 정상 작동하는지 확인
   - `anu_provider`가 초기화되었는지 (claude CLI 경로 등)
c. **require_feature("onboarding_ai")**: DB에 feature flag 설정이 없으면 403 반환
   - `plan_feature_mapping` 테이블에 `onboarding_ai` 키가 있는지 확인
   - 무료 플랜에도 `onboarding_ai` 접근 허용해야 함 (main.py 281줄에 `"onboarding_ai": "무료"` 설정 있음)

**수정 방법:**
- 서버에서 직접 curl로 API 테스트: `curl -X POST http://localhost:8001/api/insuro/onboarding/ai-generate -H "Authorization: Bearer <token>" -d '{"preset":"blog","customer_name":"테스트","product_name":"종신보험"}'`
- 에러 원인 파악 후 수정

### 3. AI 생성 실패 시 폴백 + 탈출 보장

현재 코드에서 AI 생성이 실패하면:
- show_first 그룹: AI 콘텐츠 없음 → 빈 화면
- control 그룹: 정적 콘텐츠 표시 → 정상

**수정:**
- AI 생성 실패 시에도 **정적 샘플 콘텐츠를 표시** (SAMPLE_OUTPUTS 폴백)
- "콘텐츠 생성하러 가기" 버튼은 AI 로딩 중이 아니면 항상 활성화
- "건너뛰기" 버튼 추가 — 온보딩을 건너뛰고 `/intro`로 이동 가능

### 4. 강제 리다이렉트 완화 (기존 유지하되 탈출 가능)
`src/components/DashboardLayout.tsx`:
- 온보딩 강제 리다이렉트는 유지
- 단, OnboardingWizard 내에 "건너뛰기" 또는 "나중에 하기" 링크 추가
- 클릭 시 `onboarding_step`을 `FIRST_CONTENT_DONE`으로 업데이트 → 리다이렉트 해제 → `/intro`로 이동

## affected_files
- `src/pages/OnboardingWizard.tsx` (수정 — 안내 문구 + 폴백 + 건너뛰기)
- `src/components/DashboardLayout.tsx` (확인만 — 리다이렉트 로직 유지)
- `server/main.py` (확인/수정 — onboarding AI generate 엔드포인트 작동 확인)
- `vite.config.ts` (확인 — API 프록시 설정)

## 검증 시나리오
1. 신규 사용자 가입 → `/onboarding` 이동 → 환영 안내 문구 표시
2. Step 1: 콘텐츠 유형 선택 → Step 2: 고객명/상품명 입력 → Step 3: AI 생성 콘텐츠 표시
3. AI 생성 실패 시 → 정적 샘플 콘텐츠로 폴백 표시 (빈 화면 없음)
4. "건너뛰기" 클릭 → `/intro`로 이동 (온보딩 탈출 가능)
5. Step 3 완료 → `/generate`로 이동
6. npm run build 성공
7. 서버 curl 테스트: `POST /api/insuro/onboarding/ai-generate` → 200 응답
