---
task_id: task-2049
type: context
scope: task
created: 2026-04-21
updated: 2026-04-21
status: completed
---

# 맥락 노트: task-2049

**task**: task-2049

---

## 결정 근거

### 인증 우회 방식 선택
- Supabase는 실제 JWT 검증을 수행하므로 localStorage 모킹으로는 세션 우회 불가
- Playwright route interception으로 Supabase token endpoint 응답을 가로채 모의 인증 세션 생성
- 이를 통해 AuthGuard를 통과하고 내부 페이지 UI 렌더링 검증 가능
- 단, Supabase REST API (profiles, subscriptions 등)는 401 반환 → BLOCKED 판정

### 3 Step Why 자문
1st Why: "왜 Playwright route interception이 필요한가?"
→ A: 실제 Supabase 계정 없이도 내부 UI 렌더링을 검증하기 위해

2nd Why: "왜 이 방식이 최선인가?"
→ B: AuthGuard는 Supabase getSession()에 의존하며, localStorage 모킹만으로는 SDK 내부 검증을 우회 불가. Route interception은 네트워크 레벨에서 응답을 가로채므로 SDK 검증 과정 자체를 우회

3rd Why: "왜 B가 다른 대안(테스트 계정 생성, AuthGuard 코드 수정)보다 나은가?"
→ C: 테스트 계정은 이메일 인증 필요(서버 설정 변경 불가), AuthGuard 수정은 "코드 수정 없음" 제약에 위반. Route interception은 코드 무수정으로 UI 검증 가능

## 참조 자료

- AuthGuard: `/home/jay/projects/InsuRo/src/components/AuthGuard.tsx`
- 라우트 설정: `/home/jay/projects/InsuRo/src/config/routes.ts`
- PostHog 프로바이더: `/home/jay/projects/InsuRo/src/components/PostHogProvider.tsx`
- PageViewTracker: `/home/jay/projects/InsuRo/src/components/PageViewTracker.tsx`
- LockedFeatureOverlay: `/home/jay/projects/InsuRo/src/components/LockedFeatureOverlay.tsx`

## 주의사항

- 모의 인증 토큰은 Supabase REST API에서 401 반환 → 데이터 의존 기능은 BLOCKED 판정
- PostHog API 키 미설정 → PostHog 초기화 로그 확인 불가 → BLOCKED 판정
- 관리자 대시보드는 adminOnly 라우트 필터링으로 일반 사용자 접근 불가 → PARTIAL 판정
