7.4 KiB
7.4 KiB
PRD 생성 메타 프롬프트
노션 견적서 → 웹 뷰어 & PDF 다운로드 MVP
사용법: 아래
---START---부터---END---까지 전체를 복사하여 Claude에게 붙여넣으세요.
---START---
역할
당신은 시니어 프로덕트 매니저 겸 풀스택 아키텍트입니다. 아래 제품 아이디어와 기술 제약조건을 바탕으로 실행 가능한 MVP PRD 문서를 작성하세요.
제품 아이디어
서비스명 (가칭): InvoiceLink
한 줄 요약: 노션 데이터베이스에 입력한 견적서를 고유 링크로 공유하면, 클라이언트가 브라우저에서 확인하고 PDF로 다운로드할 수 있는 웹 서비스.
핵심 사용 흐름:
- 공급자(supplier)가 노션 데이터베이스에 견적 항목을 입력한다
- InvoiceLink 대시보드에서 "견적서 발행" 클릭 → 고유 URL 생성
- 공급자가 URL을 클라이언트에게 전달(이메일, 카카오톡 등)
- 클라이언트가 링크를 열면 브랜딩된 견적서 페이지를 확인한다
- 클라이언트가 "PDF 다운로드" 버튼을 클릭하여 파일을 저장한다
기술 제약조건 (반드시 반영)
이 프로젝트의 기존 스택을 기반으로 설계한다:
- 프레임워크: Nuxt 3 (App Router 방식,
app/디렉토리 구조) - UI:
@nuxt/uiv4 - 인증/DB: Supabase (
@nuxtjs/supabase) — magic link + Google OAuth - AI 기능 (선택): Anthropic Claude Sonnet 4.6 (
@anthropic-ai/sdk) — streaming - 패키지 매니저: pnpm
- 검증: Zod
- 아이콘: Lucide + Iconify
- 배포: Vercel 또는 Netlify (서버리스 우선)
- 개발 인원: 1인, 빠른 출시 우선, 비용 최소화
PRD 작성 구조 (아래 순서대로 빠짐없이 작성)
1. 배경 및 문제 정의
- 현재 견적서 전달 방식의 Pain Point 3가지 (이메일 첨부, 엑셀, 구두 전달 등)
- 타겟 사용자 페르소나: 노션을 이미 사용하는 프리랜서 / 소규모 에이전시
- 해결하려는 핵심 문제를 1문장으로 정의
2. 목표 (Goals & Non-Goals)
MVP Goals (3개 이내, 측정 가능하게):
- 예: "견적서 발행부터 클라이언트 PDF 수령까지 5분 이내"
Non-Goals (MVP에서 의도적으로 제외):
- 클라이언트 서명/결재 기능
- 다국어 지원
- 그 외 범위 방어 항목 추가
3. 사용자 스토리
형식: 나는 [역할]로서, [목적]을 위해 [행동]을 할 수 있다.
각 스토리마다 수용 기준(Acceptance Criteria) 2~3개 포함.
- 공급자(Supplier) 스토리 4개
- 클라이언트(Client) 스토리 3개
4. 기능 명세
F1. 노션 연동
- 연동 방식: Notion Integration Token (OAuth는 Non-Goal)
- 필수 데이터베이스 속성 매핑 테이블:
| 노션 속성명 | 타입 | InvoiceLink 필드 | 필수 여부 |
|---|---|---|---|
| 견적번호 | Title | quote_number | 필수 |
| 발행일 | Date | issued_at | 필수 |
| 유효기간 | Date | expires_at | 필수 |
| 수신자명 | Text | client_name | 필수 |
| 수신자 이메일 | client_email | 선택 | |
| 항목명 | Text | item_name | 필수 |
| 수량 | Number | quantity | 필수 |
| 단가 (원) | Number | unit_price | 필수 |
| 세율 (%) | Number | tax_rate | 필수 |
| 비고 | Text | notes | 선택 |
- 동기화 트리거 방식 및 근거 (수동 버튼 vs 자동 webhook 중 선택)
- 에러 처리: 필수 필드 누락 시 동작 정의
F2. 고유 링크 생성
- URL 구조:
/q/[uuid-v4](추측 불가 설계) - 링크 유효기간 정책 (기본값 및 커스터마이징 범위)
- 비공개/공개 접근 제어: 링크 소유자만 비활성화 가능
- 링크 복사 UX (클립보드 복사 버튼)
F3. 견적서 웹 뷰어
레이아웃 구성 요소:
- 헤더: 공급자 로고, 상호명, 연락처
- 견적 메타: 견적번호, 발행일, 유효기간, 수신자 정보
- 품목 테이블: 항목명 / 수량 / 단가 / 세액 / 소계
- 합계 영역: 공급가액, 세액, 총액 (천 단위 콤마 포맷)
- 푸터: 비고, 공급자 사업자 정보
반응형 요구사항:
- 모바일(375px)에서 품목 테이블 가로 스크롤 허용
- PDF 출력 시 A4 1페이지 기준 최적화
브랜딩 커스터마이징 범위 (MVP):
- 로고 이미지 업로드
- Primary 컬러 선택 (6가지 프리셋)
F4. PDF 다운로드
- 생성 방식: 서버사이드 — Nuxt server route(
server/api/quote/[id]/pdf.get.ts)에서@sparticuz/chromium+puppeteer-core로 헤드리스 렌더링 - 근거: 클라이언트
window.print()는 브라우저별 출력 차이 존재, 서버사이드가 일관성 보장 - 파일명 규칙:
견적서_{견적번호}_{YYYYMMDD}.pdf - 다운로드 이벤트: Supabase
quote_events테이블에pdf_downloaded로그 기록 - Vercel 서버리스 함수 메모리 제한(1GB) 내 처리 가능 여부 명시
F5. 공급자 대시보드
- 견적서 목록 (발행일 내림차순, 페이지네이션)
- 견적서별 상태 표시:
draft/sent/viewed/expired - 클라이언트 조회 여부 및 PDF 다운로드 여부 표시
- 견적서 비활성화(링크 만료) 토글
5. 데이터 모델
아래 엔티티에 대해 Supabase(PostgreSQL) 기준 핵심 필드 정의. 필드명 영문 snake_case, PostgreSQL 타입 명시, RLS 정책 방향 포함.
suppliers(공급자)quotes(견적서 헤더)quote_items(견적 항목)quote_events(조회/다운로드 이벤트 로그)
6. API 설계 (Nuxt Server Routes)
| Method | Route | 설명 | Auth |
|---|---|---|---|
| GET | /api/quote/[id] | 견적서 데이터 조회 | Public (링크 보유자) |
| GET | /api/quote/[id]/pdf | PDF 생성 및 다운로드 | Public |
| POST | /api/quotes | 견적서 생성 (노션 동기화) | Supplier |
| PATCH | /api/quotes/[id] | 견적서 상태 변경 | Supplier |
| GET | /api/notion/sync | 노션 DB 항목 목록 조회 | Supplier |
7. 기술 스택 최종 제안
아래 항목별로 선택한 라이브러리와 선택 이유를 한 줄로 명시:
- PDF 생성
- 노션 API 클라이언트
- 날짜 처리
- 숫자/통화 포맷
- 이메일 발송 (선택)
8. MVP 마일스톤
| Phase | 기간 | 완성 기준 |
|---|---|---|
| Phase 1 | Week 1~2 | ? |
| Phase 2 | Week 3~4 | ? |
| Launch | Week 5 | ? |
런치 기준(Launch Criteria): 이 조건이 모두 충족되어야 배포 가능
- 조건 1
- 조건 2
- 조건 3
9. 성공 지표 (Metrics)
- Primary Metric (북극성 지표) 1개
- Supporting Metrics 3개 이내
- 각 지표의 측정 방법 및 도구 명시 (Supabase Analytics, PostHog 등)
10. 리스크 & 미해결 질문
리스크:
- Vercel 서버리스에서 Headless Chrome 실행 시 Cold Start 지연 가능성
- 노션 API rate limit (평균 3 req/s) 대응 전략 필요
Open Questions (의사결정 필요 항목 3~5개): 각 질문에 현재 유력한 가설(assumption)을 함께 명시.
출력 형식 요구사항
- 마크다운 형식
- 섹션: H2(
##), 서브섹션: H3(###), 세부항목: H4(####) - 테이블, 체크리스트, 코드블록 적극 활용
- SQL DDL은 코드블록(
sql)으로 표현 - 분량: 2,000~3,000 단어
- 톤: 군더더기 없는 기술 문서체 (한국어)
- 추상적 표현 금지 — 모든 기능은 구현 레벨로 구체화
- 각 섹션 말미에 구현 시 주의사항 한 줄 추가
---END---