Skip to content

기획서

trz-21 edited this page May 30, 2026 · 3 revisions

프로젝트 기획서

1. 서비스 주제 및 핵심 기능 정의

1.1 서비스 한 줄 정의

쿠팡·네이버 스마트스토어 셀러가 경쟁 상품 URL을 입력하면, AI가 리뷰를 분석해 "이걸 고치면 경쟁사를 이긴다"는 인사이트를 제공하는 SaaS 도구.

1.2 타겟 사용자

  • 주 타겟: 쿠팡 / 스마트스토어 운영 소상공인 셀러
  • 세부 타겟:
    • 신규 상품 출시 전 시장 조사하는 셀러
    • 기존 상품의 판매 부진 원인을 찾는 셀러
    • 경쟁사보다 우위를 가져가고 싶은 셀러

1.3 풀려는 문제

기존 도구(아이템스카우트, 쿠파일럿, 스마툴)는 데이터를 나열한다. 1인 셀러는 그 데이터를 직접 해석할 시간이 없다.

"그래서 뭘 고쳐야 하는가" 에 AI가 직접 답하는 도구가 없다.

1.4 핵심 차별화

"AI가 분석하고, AI가 결론을 내린다."

  • 기존 도구: 리뷰 수, 평점 분포 → 사용자가 직접 해석
  • 우리 도구: 리뷰 텍스트를 Claude AI가 분석 → "고쳐야 할 것 TOP 3" 형태로 액션 가이드 제공

1.5 핵심 기능 (MVP v1)

# 기능 설명
1 상품 URL 입력 쿠팡 / 스마트스토어 상품 URL 입력, 최대 3개 동시 비교
2 리뷰 자동 수집 최근 100 ~ 500개 리뷰 크롤링
3 AI 리뷰 분석 Claude API로 4축 분석 (불만 / 긍정 / 개선 포인트 / 경쟁사 약점)
4 비교 분석 내 상품 vs 경쟁사 자동 비교
5 분석 리포트 "고쳐야 할 것 TOP 3", "경쟁사 약점", "구매 결정 요인" 출력
6 회원 + 히스토리 분석 히스토리 저장, 다시 보기
7 PDF 내보내기 리포트 PDF / 이미지 저장 (Pro 플랜)

1.6 v1 명시적 제외 (v2 이후)

  • 실시간 모니터링 알림
  • 팀 / 멀티 계정 협업
  • 리뷰 조작 탐지
  • 모바일 앱
  • 11번가 / G마켓 등 추가 플랫폼

2. 기술 스택 선택 및 선택 이유

2.1 백엔드

항목 선택 선택 이유
언어 Rust 컴파일 타임 안전성. Result<T, E> 강제로 에러 처리 누락 불가. AI Agent 코드 수정 시 컴파일 단계에서 버그 차단.
웹 프레임워크 Axum 0.7 Tokio 기반 비동기. 타입 안전 라우터. 크롤러 + AI API 호출 같은 I/O 중심 워크로드에 최적.
ORM / 쿼리 sqlx 0.7 컴파일 타임 SQL 검증. 런타임 ORM 오버헤드 없음.
DB PostgreSQL 16 트랜잭션, JSONB(분석 결과 저장), uuid 네이티브 지원.
크롤러 reqwest + scraper 쿠팡/네이버 내부 리뷰 JSON API 직접 호출.
AI 분석 Claude API (claude-sonnet-4-6) 한국어 리뷰 분석 품질이 핵심 가치. 영어 모델 대비 한국어 nuance 이해도 우위.
인증 JWT + argon2 업계 표준. 추가 인프라(세션 DB 등) 불필요.

아키텍처: Hexagonal (Ports & Adapters)

  • 외부 의존성(크롤러, AI, DB)을 Port trait 으로 격리
  • 쿠팡 API 변경 / 네이버 추가 시 어댑터만 교체
  • 테스트 시 Mock 어댑터 주입 가능

2.2 프론트엔드

항목 선택 선택 이유
프레임워크 Next.js 14 (App Router) 서버 컴포넌트로 초기 로딩 최적화. 랜딩 페이지 SEO.
언어 TypeScript 프론트-백 타입 계약 명시적 관리.
스타일 Tailwind CSS 디자인 시스템 없이 빠른 UI 구성.
UI 컴포넌트 shadcn/ui Tailwind 기반, 코드 소유 → 커스터마이징 자유.
클라이언트 상태 Zustand Redux 대비 보일러플레이트 최소. persist 로 토큰 자동 동기화.
서버 상태 TanStack Query refetchInterval 로 분석 완료 폴링 자연스럽게 구현. status 변화 시 자동 중단.

2.3 테스트 / CI

항목 선택 선택 이유
백엔드 통합 testcontainers + TestApp cargo test 만으로 격리 PostgreSQL 자동 관리. 로컬 DB 설치 불필요.
프론트엔드 단위 Vitest + Testing Library Jest 호환, Next.js 통합 자연스러움.
E2E Playwright 크로스 브라우저, CI 안정적.
CI GitHub Actions 표준. 무료 한도 충분.

2.4 선택의 트레이드오프

선택 얻는 것 잃는 것
Rust BE 안전성, 성능 학습 곡선, 개발 속도(초기)
Hexagonal 외부 API 변경 격리 보일러플레이트 증가
Claude API 한국어 품질 OpenAI 대비 가격, 가용성
자체 크롤러 데이터 제어권 공식 API 없음 → 변경 리스크

3. 화면 흐름 / 페이지 구성 초안

3.1 사용자 흐름 (Happy Path)

[랜딩 페이지 /]
    │
    ├─ 회원가입 → [/register] → 가입 완료 → [/dashboard]
    └─ 로그인 → [/login] → [/dashboard]
                                  │
                                  ▼
                         [대시보드 /dashboard]
                         ┌──────────────────────────┐
                         │  URL 입력 폼              │
                         │  ├ 플랫폼 선택 (쿠팡/네이버)│
                         │  ├ URL 1 ~ 3개 입력        │
                         │  └ 리뷰 수 설정           │
                         │                          │
                         │  [분석 시작]              │
                         │                          │
                         │  ── 최근 히스토리 ──       │
                         │  • 분석 1 (2일 전)        │
                         │  • 분석 2 (5일 전)        │
                         └──────────────────────────┘
                                  │ 분석 시작
                                  ▼
                       [분석 결과 /analyses/[id]]
                       ┌──────────────────────────┐
                       │ status = pending          │
                       │   ↓ (2초 폴링)            │
                       │ status = crawling         │
                       │   ↓                       │
                       │ status = analyzing        │
                       │   ↓                       │
                       │ status = completed        │
                       │                          │
                       │ ── 인사이트 리포트 ──       │
                       │ 1. 고쳐야 할 것 TOP 3      │
                       │ 2. 경쟁사 약점             │
                       │ 3. 구매 결정 요인          │
                       │ 4. 평점 분포 차트          │
                       │                          │
                       │ [PDF 다운로드] (Pro)      │
                       └──────────────────────────┘

3.2 페이지 목록

경로 페이지 인증 핵심 기능
/ 랜딩 서비스 소개, 로그인/회원가입 CTA
/login 로그인 이메일/비밀번호 로그인
/register 회원가입 신규 가입
/dashboard 대시보드 URL 입력 폼 + 분석 히스토리
/analyses/[id] 분석 결과 폴링 + 인사이트 리포트
/account 계정 관리 플랜 확인, 결제, 사용량

3.3 페이지별 와이어프레임 (텍스트)

랜딩 (/)

┌─────────────────────────────────────────────────┐
│ [로고]  Coupang Review AI       [로그인][시작하기]│
├─────────────────────────────────────────────────┤
│                                                 │
│   경쟁사 리뷰를 AI가 분석해                       │
│   "이걸 고치면 이긴다"는 답을 줍니다              │
│                                                 │
│   [무료로 시작하기]                              │
│                                                 │
│   ┌──────┐  ┌──────┐  ┌──────┐                │
│   │ 불만 │  │ 약점 │  │ 개선 │                │
│   │  분석 │  │  발굴 │  │ 가이드│                │
│   └──────┘  └──────┘  └──────┘                │
└─────────────────────────────────────────────────┘

대시보드 (/dashboard)

┌─────────────────────────────────────────────────┐
│ [로고]                              [내 계정 ▾] │
├──────────┬──────────────────────────────────────┤
│          │  새 분석                              │
│ 사이드바  │  ┌─────────────────────────────────┐ │
│          │  │ 플랫폼: (●) 쿠팡  ( ) 스마트스토어│ │
│ • 대시보드│  │ URL 1: [____________________]  │ │
│ • 히스토리│  │ URL 2: [____________________] +│ │
│ • 계정    │  │ 리뷰 수: [100 ▾]              │ │
│          │  │ [분석 시작]                     │ │
│          │  └─────────────────────────────────┘ │
│          │                                      │
│          │  최근 분석                            │
│          │  ┌─────────────────────────────────┐ │
│          │  │ 무선 이어폰 비교 · 2일 전         │ │
│          │  │ 텀블러 분석 · 5일 전              │ │
│          │  └─────────────────────────────────┘ │
└──────────┴──────────────────────────────────────┘

분석 결과 (/analyses/[id])

┌─────────────────────────────────────────────────┐
│ < 대시보드로                                     │
├─────────────────────────────────────────────────┤
│ 분석 결과 · 2026-05-30                          │
│ 상품: 무선 이어폰 A vs B vs C                    │
│                                                 │
│ [진행중 상태일 때]                               │
│   ▰▰▰▰▱▱▱▱  리뷰 수집 중... (2/3)              │
│                                                 │
│ [완료 상태일 때]                                 │
│ ┌──── 고쳐야 할 것 TOP 3 ────┐                  │
│ │ 1. 포장 강화 (불만 37건)    │                  │
│ │ 2. AS 응답 속도 (29건)     │                  │
│ │ 3. 설명서 보강 (18건)      │                  │
│ └────────────────────────────┘                  │
│                                                 │
│ ┌──── 경쟁사 약점 ────┐                          │
│ │ • AS 평균 5일 (내 상품: 2일)│                  │
│ │ • 배터리 지속 시간 불만 多   │                  │
│ └────────────────────────────┘                  │
│                                                 │
│ ┌──── 구매 결정 요인 ────┐                       │
│ │ "가성비 좋다" 52건         │                  │
│ │ "디자인 마음에 든다" 41건   │                  │
│ └────────────────────────────┘                  │
│                                                 │
│ ┌──── 평점 분포 ────┐                            │
│ │ ★★★★★ ████████ 52%          │              │
│ │ ★★★★  ██████ 30%            │              │
│ │ ★★★   ██ 10%                │              │
│ │ ★★    █ 5%                  │              │
│ │ ★     ▏3%                   │              │
│ └────────────────────────────┘                  │
│                                                 │
│ [PDF 다운로드] (Pro)                            │
└─────────────────────────────────────────────────┘

3.4 상태 전이 (분석 결과 페이지)

pending → crawling → analyzing → completed
                                       ↓
                                  [리포트 표시]

   pending/crawling/analyzing → failed
                                  ↓
                             [에러 메시지 + 재시도]
  • 폴링 간격: 2초 (TanStack Query refetchInterval)
  • completed 또는 failed 도달 시 폴링 자동 중단