# task-540.1 완료 보고서: InsuRo Phase 1 라우트 정리 + Dashboard 공지 DB 연동

## SCQA

**S**: InsuRo 프론트엔드는 App.tsx(37개 lazy import + Route)와 AppSidebar.tsx(menuSections 배열)에서 라우트/메뉴를 이중으로 관리하고 있으며, Dashboard 공지사항 4건이 하드코딩, AI 프리미엄 기능은 toast로만 안내하고 있다.

**C**: 라우트 추가/수정 시 두 파일을 동시에 변경해야 하는 동기화 부담 존재. Dashboard 공지는 관리자가 DB에서 변경해도 반영 불가. AI 원스탑/자동화 메뉴는 실제 페이지 없이 toast만 표시하여 UX 미흡.

**Q**: 라우트 단일 소스를 구축하고, Dashboard 공지를 DB 연동하며, AI 프리미엄 기능의 맛보기/잠금 페이지를 제공할 수 있는가?

**A**: routes.ts 단일 소스 구축으로 라우트/메뉴 관리 포인트를 2→1로 줄이고, Dashboard 공지를 Supabase notices 테이블 연동(useQuery), AI 잠금 페이지 2개 생성 완료. Vite 빌드 에러 0건, TypeScript 에러 0건, patent/npv 잔여 참조 0건.

---

## 작업 항목별 결과

### 1. routes.ts 단일 소스 구축
- **생성**: `src/config/routes.ts` (421줄)
- **수정**: `src/App.tsx` (115줄 → 52줄, -55% 코드 감소)
- **수정**: `src/components/AppSidebar.tsx` (333줄 → 229줄, -31% 코드 감소)
- routes 배열 41개 항목 (기존 39 + 신규 AI 2)
- menuSections 배열 7개 섹션
- sidebarOnlyItems: 디지털 명함 (/mypage#namecard) 별도 처리
- Settings 아이콘/컴포넌트 이름 충돌 해결 (SettingsIcon/SettingsPage)

### 2. patent/npv 라우트 정리
- Dashboard.tsx tools 배열에서 2개 항목 제거
  - `{ label: "플랫폼 특허분석", url: "/tools/patent" }`
  - `{ label: "보험NPV 계산기", url: "/tools/npv" }`
- 미사용 lucide-react import (Shield, Calculator) 제거
- grep 전체 검색: patent/npv 잔여 참조 0건

### 3. AI 잠금 페이지 생성
- **생성**: `src/pages/AiOnestop.tsx` (85줄)
- **생성**: `src/pages/AiAutomation.tsx` (85줄)
- 비프리미엄: 기능 소개 3줄 + /pricing 업그레이드 버튼
- 프리미엄: "현재 개발 중입니다" 메시지
- 사이드바: premiumOnly 아이템 → 실제 라우트 네비게이션 (toast 방식 제거)

### 4. Dashboard 공지 DB 연동
- **수정**: `src/pages/Dashboard.tsx`
- 하드코딩 notices 배열 → `useQuery("dashboard-notices")` + Supabase notices 테이블
- 로딩: Skeleton 4줄 표시
- 빈 데이터: "등록된 공지가 없습니다" 표시
- 날짜 포맷: `format(new Date(n.created_at), "yyyy. M. d")` (date-fns)

## 파일 변경 목록

- 생성: `src/config/routes.ts`, `src/pages/AiOnestop.tsx`, `src/pages/AiAutomation.tsx`
- 수정: `src/App.tsx`, `src/components/AppSidebar.tsx`, `src/pages/Dashboard.tsx`
- 삭제: 없음 (patent/npv 관련 별도 파일 없었음)

## 검증 결과

- `npx tsc --noEmit`: 에러 0건
- `npx vite build`: 성공 (7.02초, 120 precache entries)
- patent/npv grep 검색: 잔여 참조 0건
- routes.ts 라우트 수: 41개 (기존 39 + AI 2)

## 발견 이슈

1. **Dashboard 라우트 미등록 (기존 이슈)**: `Dashboard.tsx` 페이지가 존재하지만 App.tsx에 `/dashboard` 라우트가 원래부터 없었음. 이번 작업 범위 외이므로 미변경.
2. **Pricing 페이지 미존재**: AI 잠금 페이지의 업그레이드 버튼이 `/pricing`으로 이동하나 해당 페이지 미존재. 향후 Pricing 페이지 생성 필요.
3. **Chunk 크기 경고**: `index-DPE7Bwrf.js` (515KB)가 500KB 초과. 기존 이슈이며 이번 변경과 무관.

## 머지 판단
- **머지 필요**: Yes
- **브랜치**: task/task-540.1-dev1
- **워크트리 경로**: /home/jay/projects/InsuRo/.worktrees/task-540.1-dev1
- **머지 의견**: Vite 빌드 에러 0건, TSC 에러 0건, 기존 라우트 구조 보존 확인. patent/npv 완전 제거. 충돌 가능성 낮음 (관련 파일 6개 모두 이 작업에서만 변경).
