# task-2002: InsuRo 온보딩 migration DEFAULT 값 수정 + 플로우 정합성

## 배경
task-2001에서 기존 사용자 온보딩 리다이렉트 버그를 수정했으나,
원본 migration의 DEFAULT 'SIGNED_UP'이 남아있어 향후 문제 소지.

## 문제
- profiles.onboarding_step의 DEFAULT가 'SIGNED_UP'
- 신규 가입 시 자동으로 'SIGNED_UP'이 설정됨
- useOnboardingRedirect.ts에서 'SIGNED_UP'이면 /onboarding 리다이렉트
- 이 동작 자체는 의도적이나, DEFAULT가 'SIGNED_UP'이면 가입만 하고 아무것도 안 한 사용자와 실제로 온보딩을 시작한 사용자를 구분할 수 없음

## 수정 방향
1. **migration 수정**: DEFAULT를 NULL로 변경
   - 신규 migration: `ALTER TABLE profiles ALTER COLUMN onboarding_step SET DEFAULT NULL;`
   - 또는 DROP DEFAULT

2. **가입 플로우에서 명시적 설정**: 
   - 사용자가 실제 가입 완료 시 서버에서 onboarding_step = 'SIGNED_UP' 명시적 INSERT
   - AuthForm.tsx 또는 서버 auth callback에서 처리

3. **useOnboardingRedirect 정합성 확인**:
   - NULL = 가입 전 또는 레거시 사용자 → 온보딩 불필요
   - 'SIGNED_UP' = 가입 완료, 온보딩 미진행 → 온보딩 필요
   - 'FIRST_CONTENT_DONE' / 'CONVERTED' = 온보딩 완료 → 스킵
   - task-2001의 이중 방어 로직과 정합 확인

## ★ 프로젝트: `/home/jay/projects/InsuRo/`
## ★ task-2001 보고서 먼저 읽을 것: `memory/reports/task-2001.md`

## 완료 시그니처
- [grep] `SET DEFAULT NULL\|DROP DEFAULT\|onboarding_step.*NULL` @ `supabase/migrations/`
- [pytest] `server/tests/test_main.py`

## 검증 시나리오
1. 신규 가입 → onboarding_step이 NULL (DEFAULT가 NULL이므로)
2. 가입 완료 처리 → 서버에서 onboarding_step = 'SIGNED_UP' 설정
3. 기존 사용자 (task-2001에서 'CONVERTED' 설정됨) → 정상 접근
4. 온보딩 위자드 완료 → 'FIRST_CONTENT_DONE' → 정상 접근
5. tsc 0 errors, pytest PASS

## 레벨
- normal

## 프로젝트
- insuro
