---
task_id: task-2001
type: context
scope: task
created: 2026-04-20
updated: 2026-04-20
status: completed
---

# 맥락 노트: task-2001

**task**: task-2001

---

## 결정 근거

### 방안 C 채택 (Migration + 프론트 안전장치)
- Migration 단독(A)은 런타임 보호가 없어 향후 유사 마이그레이션 누락 시 재발 가능
- 프론트 단독(B)은 DB의 잘못된 상태가 유지되어 다른 시스템에서 혼동 유발
- 양쪽 모두 수정(C)이 이중 방어로 가장 robust

### 3 Step Why
- **1st Why**: 기존 사용자의 onboarding_step이 DEFAULT 'SIGNED_UP'으로 설정되어 로그인 시 모든 메뉴가 /onboarding으로 리다이렉트되는 서비스 접근 불가 버그 발생
- **2nd Why**: Migration만으로 기존 데이터는 해결되지만, 향후 비슷한 마이그레이션 누락 시 동일 문제 재발 가능. 프론트 안전장치로 가입 후 1시간 기반 판단을 추가하면 이중 방어
- **3rd Why**: Migration 단독은 런타임 보호 없고, 프론트 단독은 DB 잘못된 상태 유지. 양쪽 모두 수정이 가장 안전

### 프론트 안전장치 기준: "1시간 이내"
- 날짜 하드코딩(2026-04-20) 대신 가입 후 1시간 기준 사용
- 이유: 하드코딩된 날짜는 시간이 지나면 의미가 퇴색. 1시간 기준은 범용적이고 향후에도 유효

## 참조 자료

- 원인 마이그레이션: `supabase/migrations/20260419000000_add_onboarding_step.sql`
- 수정 대상 훅: `src/hooks/useOnboardingRedirect.ts`
- 리다이렉트 호출점: `src/components/DashboardLayout.tsx:19`

## 주의사항

- Migration 적용 시 Supabase 대시보드에서 SQL 실행 또는 supabase db push 필요
- 1시간 기준은 온보딩 플로우가 60분을 초과하는 경우 문제가 될 수 있으나, 현재 온보딩은 5분 이내 완료 설계
