# 인슈로(InsuRo) 전수조사 보고서

**조사일**: 2026-04-18
**프로젝트 경로**: /home/jay/projects/InsuRo/
**리포지토리**: https://github.com/JonghyukJeon/InsuRo.git
**기술 스택**: Vite + React + TypeScript + Tailwind CSS + Shadcn/ui + Supabase + FastAPI(Python)
**배포**: VitePWA (Capacitor 모바일 지원), 개발서버 Tailscale 도메인

---

## 1. 프로젝트 구조 요약

- **프론트엔드**: src/ (React SPA, React Router)
- **백엔드**: server/ (FastAPI, Python)
- **DB/Auth**: Supabase (PostgreSQL + Auth + Storage + Edge Functions + Realtime)
- **PWA**: VitePWA 설정 완료, push 알림 지원
- **모바일**: Capacitor 설정 존재, 반응형 레이아웃 (TopNavBar + MobileBottomNav)

---

## 2. 전체 페이지 목록 (42개 라우트)

### 2.1 일반 사용자 페이지 (30개)

| # | 경로 | 페이지명 | 메뉴 위치 | 구현 상태 | API 연동 | 접근 제어 | 비고 |
|---|------|----------|-----------|-----------|----------|-----------|------|
| 1 | / | 리디렉트 | - | 완성 | - | - | → /intro 리디렉트 |
| 2 | /intro | 인슈로 소개 | 안내 | **완성** | 없음 | - | 정적 마케팅 페이지, framer-motion |
| 3 | /login | 로그인 | - | **완성** | Auth | 공개 | Google OAuth + 이메일/패스워드 |
| 4 | /reset-password | 비밀번호 재설정 | - | **완성** | Auth | 공개 | URL hash `type=recovery` |
| 5 | /mypage | 마이페이지 | 내 계정 | **완성** | 6개 테이블 | 로그인 | 플랜 카드, 사용량 통계 |
| 6 | /settings | 개인 설정 | 내 계정 | **완성** | 6개 테이블 | 로그인 | 5탭 구조, `as any` 캐스트 다수 |
| 7 | /pricing | 플랜 & 구독 | 구독 | **완성** | 4개 테이블 | 로그인 | DB 동적 플랜, 20% 할인 배너 |
| 8 | /guide | 이용방법 가이드 | 안내 | **완성** | 2개 테이블 | 로그인 | DB CMS 기반 |
| 9 | /api-key | API 키 발급 가이드 | 안내 | **완성** | 없음 | 로그인 | 4개 API 가이드 |
| 10 | /fcpa | 금융소비자보호법 | 안내 | **완성** | REST+훅 | 로그인 | 벡터 검색, Markdown |
| 11 | /notices | 공지/커뮤니티 | 안내 | **완성** | React Query | 로그인 | 4탭(공지/후기/Q&A/요청) |
| 12 | /keyword-analysis | AI 키워드 분석 | AI 마케팅 | **부분완성** | Naver API | 로그인 | 1/4 탭만 구현, 3탭 공사중 |
| 13 | /generate | AI 콘텐츠 작성 | AI 마케팅 | **완성** | Edge Fn+DB | 로그인 | SSE 스트리밍, 이미지 생성 |
| 14 | /contents | 콘텐츠 관리 | AI 마케팅 | **완성** | Auth+탭위임 | 로그인 | 래퍼 페이지 (3탭) |
| 15 | /content-calendar | 콘텐츠 캘린더 | AI 마케팅 | **완성** | 탭위임 | 로그인 | 래퍼 페이지 |
| 16 | /ai-onestop | AI 원스탑 포스팅 | AI 마케팅 | **스텁** | 없음 | Premium | "개발 중" 메시지만 |
| 17 | /ai-automation | AI 포스팅 자동화 | AI 마케팅 | **스텁** | 없음 | Premium | "개발 중" 메시지만 |
| 18 | /crm/dashboard | CRM 대시보드 | 고객관리 | **완성** | 2개 테이블 | Pro | 통계+차트+알림 |
| 19 | /crm/customers | 고객 목록 | 고객관리 | **완성** | 4개 테이블 | Pro | CRUD, CSV, 일괄관리 |
| 20 | /crm/customers/:id | 고객 상세 | - | **완성** | 6개+Edge Fn | Pro | 8탭, 가장 복잡 |
| 21 | /crm/pipeline | 파이프라인 | 고객관리 | **완성(제한)** | customers | Pro | DnD 미구현, 드롭다운만 |
| 22 | /crm/messenger | 메신저 | 고객관리 | **완성** | Realtime+Push | Pro | 실시간 채팅, Push 알림 |
| 23 | /crm/messenger/:id | 메신저 대화 | - | **완성** | Realtime+Push | Pro | 동일 컴포넌트 |
| 24 | /chat/:token | 고객 채팅 | - | **완성** | Realtime+Push | 공개 | 이름+전화 본인확인 |
| 25 | /namecard/:agentId | 디지털 명함 | - | **완성(제한)** | profiles | 공개 | 상담 CTA 미동작 |
| 26 | /market/newsletter | 소식지분석 AI | 보험시장분석 | **완성** | Edge Fn | 로그인 | AI 챗봇, SSE |
| 27 | /market/premium-compare | 보험료분석 AI | 보험시장분석 | **완성** | Edge Fn+조직 | 조직 기반 | 조직 접근제어 |
| 28 | /tools/insurance-portal | 보험사 전산정보 | 유용한도구 | **완성** | 없음(정적) | 로그인 | 정적 데이터 |
| 29 | /tools/calculators | 각종 계산기 | 유용한도구 | **완성(부분잠금)** | Feature Flag | 로그인 | 3개 무료, 2개 잠금 |
| 30 | /tools/external-sites | 외부 참고 사이트 | 유용한도구 | **완성** | 없음(정적) | 로그인 | 정적 데이터 |

### 2.2 관리자 페이지 (11개)

| # | 경로 | 페이지명 | 구현 상태 | 권한 체크 | 비고 |
|---|------|----------|-----------|-----------|------|
| 31 | /admin/notices | 공지사항 관리 | **완성** | isAdmin | CRUD |
| 32 | /admin/fcpa | 금소법 관리 | **완성** | isAdmin | PDF+AI분석+벡터 |
| 33 | /admin/organizations | 조직 관리 | **완성** | isAdmin | 조직+구독 통합 |
| 34 | /admin/subscriptions | 구독 플랜 관리 | **완성(타입불완전)** | isSystemAdmin | `as any` 다수 |
| 35 | /admin/ai-config | AI 엔진 설정 | **완성** | isSystemAdmin | 4개 provider |
| 36 | /admin/image-feedback | 이미지 피드백 | **완성** | isSystemAdmin | 크레딧 복구 |
| 37 | /admin/roadmap | 개발 로드맵 | **완성** | isSystemAdmin | Phase+Item CRUD |
| 38 | /admin/crm | CRM 관리 | **완성** | PlanGuard(Pro)만! | **권한 미흡** |
| 39 | /admin/newsletters | 소식지 관리 | **완성** | isAdmin | PDF+AI파싱 |
| 40 | /admin/premium-data | 보험료 데이터 | **완성** | isAdmin | PPT/PDF 조직별 |
| 41 | /admin/guide | 이용 가이드 관리 | **완성** | **없음!** | **보안 위험** |
| 42 | * | 404 | **완성** | - | NotFound |

### 2.3 특수 항목

| 항목 | 메뉴 위치 | 실제 경로 | 비고 |
|------|-----------|-----------|------|
| 디지털 명함 (사이드바) | 고객관리 | /mypage#namecard | 별도 라우트 없음 |
| Analytics | - | /analytics → Contents | /contents와 동일 컴포넌트 |

---

## 3. 서버 API 엔드포인트 (FastAPI)

| 엔드포인트 | 메서드 | 인증 | 상태 |
|-----------|--------|------|------|
| /api/status | GET | 없음 | 헬스체크 |
| /api/insuro/fcpa/upload | POST | JWT | 완성 |
| /api/insuro/ai/generate | POST | - | **501 스텁** |
| /api/insuro/ai/anu-generate | POST | X-API-Key | 완성 |
| /api/insuro/search | POST | JWT | 완성 |
| /api/insuro/ingest | POST | JWT | 완성 |

---

## 4. Supabase Edge Functions (확인된 것)

- `generate-content`: AI 콘텐츠 생성 (SSE)
- `suggest-topics`: AI 주제 추천
- `analyze-customer`: CRM 고객 AI 분석
- `newsletter-chat`: 소식지 AI 챗봇
- `premium-chat`: 보험료분석 AI 챗봇
- `parse-premium-file`: 보험료 파일 AI 파싱
- `send-push`: Push 알림 발송

---

## 5. 주요 발견 이슈 (우선순위 순)

### CRITICAL (보안)

| # | 이슈 | 파일 | 상세 |
|---|------|------|------|
| C1 | 테스트 계정 하드코딩 | AuthForm.tsx | `test@test.com` / `admin` 프로덕션 노출 |
| C2 | AdminGuide 무권한 | AdminGuide.tsx | isAdmin 체크 전무, 모든 로그인 사용자 접근 |
| C3 | AdminCrmConfig 권한 미흡 | AdminCrmConfig.tsx | PlanGuard(Pro)만, 관리자 체크 없음 |
| C4 | CustomerChat 본인확인 취약 | CustomerChat.tsx | 이름+전화번호만으로 인증, 토큰 기반 |

### HIGH (기능 미완성)

| # | 이슈 | 파일 | 상세 |
|---|------|------|------|
| H1 | 결제 미구현 | PlanUpgradeDialog.tsx | Stripe TODO 주석만, 실제 결제 없음 |
| H2 | AiOnestop 스텁 | AiOnestop.tsx | "개발 중" 메시지만 |
| H3 | AiAutomation 스텁 | AiAutomation.tsx | "개발 중" 메시지만 |
| H4 | KeywordAnalysis 3/4탭 미구현 | KeywordAnalysis.tsx | Premium에도 "공사중" |
| H5 | CrmPipeline DnD 미구현 | CrmPipeline.tsx | 드롭다운으로만 단계 변경 |
| H6 | DigitalNamecard 상담 CTA 미동작 | DigitalNamecard.tsx | toast만 표시 |
| H7 | /api/insuro/ai/generate 501 | server/main.py | 스텁 엔드포인트 |

### MEDIUM (코드 품질)

| # | 이슈 | 파일 | 상세 |
|---|------|------|------|
| M1 | Supabase 타입 5개 테이블 누락 | types.ts | plan_token_config, feature_token_costs 등 |
| M2 | 월 필터 하드코딩 | MarketNewsletter/PremiumComparison | 2026년 1~3월 고정 |
| M3 | AI 호출 방식 혼용 | ai_parser.py vs anu_provider.py | CLI subprocess vs API 직접 |
| M4 | Naver API CORS | KeywordAnalysis.tsx | 브라우저 직접 호출 |
| M5 | Dashboard 도구 URL 불일치 | Dashboard.tsx | /tools/health 등 미존재 라우트 |
| M6 | `as any` 캐스트 다수 | Settings, AdminSubscriptions 등 | 타입 안전성 저하 |

### 의도적 미완성 (수정 대상 제외)

| 항목 | 사유 |
|------|------|
| premiumOnly 미완성 디자인 | 맥스플랜 유도 의도, 건드리지 말 것 |

---

## 6. 네비게이션 구조

### 6.1 TopNavBar (데스크톱 상단)
- 4개 도메인 탭: 고객관리 / AI 마케팅 / 분석&도구 / 안내&설정
- 관리자 메뉴 (isAdmin 시 표시)

### 6.2 ContextSubMenu (데스크톱 좌측 서브메뉴)
- 선택된 도메인 탭에 따라 하위 메뉴 표시
- 180px 고정 폭

### 6.3 MobileBottomNav (모바일 하단)
- 도메인 탭 아이콘 4개
- 768px 미만에서 표시

### 6.4 공개 페이지 (DashboardLayout 미적용)
- /login, /reset-password, /chat/:token, /namecard/:agentId

---

## 7. 인증/결제 체계

### 인증
- Supabase Auth (Google OAuth + Email/Password)
- AuthGuard: 공개 경로 제외 전역 보호
- 역할: 일반 사용자, isAdmin, isSystemAdmin

### 결제
- **미구현**: PlanUpgradeDialog에 "TODO: Stripe 결제 연동" 주석
- 현재: 관리자가 AdminOrganizations에서 수동으로 구독 부여

### 플랜 체계
- Free → Basic → Pro → Max (Enterprise=Max, Premium=Pro 하위호환)
- CRM: Pro 이상
- AI 원스탑/자동화: Premium(Max) 이상
- 계산기 일부: Pro/Premium 잠금

---

## 8. 모바일 반응형

- **구현됨**: DashboardLayout(TopNavBar/MobileBottomNav 전환), Tailwind 반응형 클래스
- **PWA**: VitePWA 설정 완료 (autoUpdate, navigateFallback)
- **Capacitor**: capacitor.config.json 존재 (하이브리드 앱 배포 가능)
- **Push**: 웹 Push API + Edge Function 연동

---

## 9. 구현 상태 요약

- **완전 구현**: 30개 (71%)
- **부분 구현**: 5개 (12%) — KeywordAnalysis, CrmPipeline, DigitalNamecard, Calculators, Dashboard
- **스텁/미구현**: 3개 (7%) — AiOnestop, AiAutomation, /api/ai/generate
- **보안 이슈**: 4건 (CRITICAL)
- **기능 미완성**: 7건 (HIGH)
