# task-2176 완료 보고서: InsuRo UX Critical 2건 수정

**S**: InsuRo 프론트엔드에서 task-2173 UX 전수조사에서 Critical 등급으로 분류된 2건의 UX 결함이 발견되었다: (1) PWA 설치 팝업이 닫아도 페이지 이동 시 재출현하여 50대 설계사 이탈 위험, (2) 로그인 실패 시 UI에 피드백이 없어 사용자가 원인을 알 수 없음.

**C**: 두 결함 모두 모바일 사용자 경험에 직접적 영향. PWA 팝업은 App.tsx + CustomerChat.tsx 2곳에서 중복 렌더링되어 dismiss 로직이 정상 동작하지 않았고, 로그인 에러는 toast로 표시되지만 Supabase 영문 에러가 그대로 노출되어 사용자에게 무의미했다.

**Q**: 프론트엔드 코드만 수정하여 2건의 Critical UX 결함을 해결할 수 있는가?

**A**: 3개 파일(PwaInstallPrompt.tsx, AuthForm.tsx, CustomerChat.tsx) 수정으로 2건 모두 해결. PWA 팝업은 중복 렌더링 제거 + "다시 보지 않기" 영구 dismiss 기능 추가. 로그인 에러는 Supabase 영문 에러 → 한국어 매핑 함수 + 인라인 에러 메시지 UI 추가. 빌드 성공 + Playwright 스모크테스트 통과.

## 수정 파일별 검증 상태

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| /home/jay/projects/InsuRo/.worktrees/task-2176-dev6/src/components/PwaInstallPrompt.tsx | "permanent" 영구 dismiss 로직 + "다시 보지 않기" 체크박스 UI 추가 | grep "permanent" OK (2건), grep "다시 보지 않기" OK (1건) | verified |
| /home/jay/projects/InsuRo/.worktrees/task-2176-dev6/src/components/AuthForm.tsx | getAuthErrorMessage 한국어 에러 매핑 + authError 인라인 에러 UI 추가 | grep "getAuthErrorMessage" OK (2건), grep "authError" OK | verified |
| /home/jay/projects/InsuRo/.worktrees/task-2176-dev6/src/pages/CustomerChat.tsx | PwaInstallPrompt import 및 JSX 제거 (중복 해소) | grep "PwaInstallPrompt" 0건 | verified |
| /home/jay/projects/InsuRo/.worktrees/task-2176-dev6/tests/auth-error-message.test.ts | getAuthErrorMessage 및 PWA dismiss 로직 테스트 12건 | vitest 12/12 PASS | verified |

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **PWA 팝업 중복 렌더링** — CustomerChat.tsx에서 PwaInstallPrompt를 제거하여 App.tsx의 전역 인스턴스만 남김
2. **영구 dismiss 미지원** — "다시 보지 않기" 체크박스 + localStorage "permanent" 값으로 영구 숨김 구현
3. **로그인 에러 영문 표시** — getAuthErrorMessage 함수로 6종 Supabase 에러를 한국어 매핑 + 인라인 에러 UI 추가

## L1 스모크테스트 결과

- 서버 재시작: 성공 (Vite dev server port 5174, HTTP 200)
- API 응답 확인: 해당없음 (프론트엔드 전용 작업)
- 스크린샷:
  - `/home/jay/workspace/memory/reports/task-2176-login-page.png` — 로그인 페이지 정상 로드
  - `/home/jay/workspace/memory/reports/task-2176-login-error.png` — 로그인 실패 시 "이메일 또는 비밀번호가 올바르지 않습니다." 인라인 표시 확인
- 콘솔 에러: 로그인 실패 시 1건 (Supabase auth 에러 — 의도된 동작)
- 빌드: `npx vite build` 성공 (142 entries precached, 8.20s)

## 머지 판단

- **머지 필요**: Yes
- **브랜치**: task/task-2176-dev6
- **워크트리 경로**: /home/jay/projects/InsuRo/.worktrees/task-2176-dev6
- **머지 의견**: 3개 파일만 수정, 서버 미수정, 빌드 성공, Playwright 스모크테스트 통과. 기존 기능(Google OAuth, 매직링크) 무변경. Low risk.

## 모델 사용 기록

- 팀원: 라다 / 작업 내용: PWA 팝업 수정 (중복 제거 + 다시 보지 않기) / 사용 모델: sonnet
- 팀원: 라다 / 작업 내용: 로그인 에러 한국어 메시지 + 인라인 UI / 사용 모델: sonnet

## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회


## 세션 통계
- 총 도구 호출: 0회

