# BOOTHPIN — 니즈 분석·기획 설계

> 원 의뢰: [기능명세(의뢰자 원본).txt](../기능명세(의뢰자%20원본).txt) — 의뢰자가 직접 작성한 화면 기능 명세서 2장
> 원본 이미지: [원본기획/](../원본기획/)
> ※ 이번 건은 위시캣 공고문이 아니라 **기능 명세서만** 전달되었습니다. 예산·기간·기술스택·산출물 항목이 없어, 견적은 명세 범위를 기준으로 산정했습니다(5장).

---

## 1. 의뢰자 니즈 분석

### 1-1. 명시된 니즈 (명세서 전 항목)

| 영역 | 요구사항 | 데모 구현 화면 |
|---|---|---|
| 네비게이션 | 하단 4탭 (홈·지도·채팅·마이프로필) | 전 화면 공통 탭바 |
| 홈 | 셀러등록·행사만들기·개최행사관리·참여행사관리 4버튼 | ① 홈 |
| 셀러등록 | 프로필·포트폴리오·부스설명 + 실명/나이(개최자만)·연락처(비공개) | ② 셀러 등록 |
| 행사만들기 | 행사명·사진·날짜·장소·종류(10종)·모집인원·모집품목(11종 중복)·참가비·추가옵션 | ③ 행사 만들기 |
| 개최행사관리 | 행사목록 → 채팅방·참여자목록 | ④ 개최 행사관리 |
| 참여자목록 | 출석버튼(재클릭 시 취소)·출석 QR 발급/인쇄·엑셀 다운로드 | ⑤ 참여자 목록 · ⑦ QR 발급 |
| 참여자 상세 | 프로필·실명·나이·등급·판매품목·한줄소개·사진·포트폴리오·추가옵션 + 승인/거절(사유 40자) | ⑥ 참여자 상세 |
| 참여행사관리 | 승인 행사(채팅·참여자목록·QR 출석) / 거절 행사(사유만, 상호작용 X) | ⑧ 참여 행사관리 · ⑨ QR 스캔 |
| 지도 | 핀으로 행사 표시 → 정보·참여 / 참여기록 발자국(상호작용 X) | ⑩ 지도 탐색 |
| 근처 행사 | 가까운 순 정렬 + 행사 종류별 필터 | ⑪ 근처 행사 |
| 행사정보보기 | 행사명·사진·설명·날짜·장소·종류·모집인원·모집품목·참가비·참여 버튼 | ⑫ 행사 정보 |
| 참여하기 | 프로필(상호작용 X)·판매품목·한줄소개·사진(1~5장)·추가옵션/갯수 | ⑬ 참여 신청 |
| 채팅 | 개최/참여 행사목록 → 채팅방 → 우상단 참가자 → 프로필 | ⑭ 채팅 목록 · ⑮ 채팅방 |
| 마이프로필 | 프로필수정·포트폴리오·등급(브론즈/실버/골드/다이아/TOP10) | ⑯ 마이프로필 |

**명세서의 18개 화면을 빠짐없이 구현했고, 추가로 제안 화면 2개(등급 진단·검토 항목)를 붙였습니다.**

### 1-2. 명세서 행간의 숨은 니즈

- **양면 시장 구조** — 한 사람이 주최자이면서 셀러입니다(홈에 개최/참여 관리가 나란히 있음). 계정을 분리하지 않고 **역할을 오가는 구조**가 맞습니다. 데모는 같은 계정에서 두 역할을 모두 다루도록 했습니다.
- **"실명·나이는 개최자만"** — 셀러 입장의 심리적 장벽을 이미 인지하고 계십니다. 다만 이는 곧 개인정보 제3자 제공이므로, 동의 절차가 함께 설계되어야 합니다(2장 ⑥).
- **출석 체크의 존재 이유** — QR 출석은 단순 기록이 아니라 **노쇼 대응**의 출발점입니다. 그런데 명세에는 기록 이후의 흐름이 없습니다(2장 ⑤).
- **등급 시스템** — 재참여를 유도하려는 장치인데, 규칙이 그대로는 계산되지 않습니다(2장 ③). 이것이 이번 검토에서 가장 실질적인 발견입니다.
- **기획 완성도가 높음** — 화면 단위로 버튼·필드·상호작용 여부까지 정리하신 상태라, 기획 재작업 없이 **화면 설계 → 개발로 바로 진입**할 수 있습니다. 견적에 유리한 조건입니다.

## 2. 웹 리서치 — 명세서에 없지만 착수 전 확인이 필요한 항목

### ① 참가비를 플랫폼이 받으면 PG 등록 대상이 될 수 있습니다

명세의 "참가비 → 금액설정 → 결제시스템"은 **셀러가 낸 돈을 플랫폼이 받아 주최자에게 정산**하는 구조로 읽힙니다. 전자적 방법으로 대가를 정산·매개하면 **전자지급결제대행업(PG) 의무 등록** 대상이며, 셀러 정산이 필요한 커머스·배달·강의 플랫폼이 모두 여기 해당합니다. 등록 없이 자금을 보유하면 서비스 자체가 막힙니다.

**대안 (데모 적용):** 플랫폼이 자금을 보유하지 않도록, 결제를 PG사(토스페이먼츠·포트원 등)를 통해 **주최자 명의로 직접 수취**하고 플랫폼은 중개 수수료만 별도 정산받는 구조로 설계했습니다. 하위 가맹점(서브몰) 등록으로 주최자별 정산이 가능합니다. 통신판매중개의 부수적 정산은 예외 여지가 있으나, **구조를 처음부터 안전하게 잡는 편**이 낫습니다.

### ② 지도 기반 서비스는 위치기반서비스사업 신고 대상입니다

"지도에 핀으로 표시", "가까운 곳부터 표시"는 이용자 위치정보를 이용하는 기능입니다. **신고 없이 운영하면 3년 이하 징역 또는 3천만원 이하 벌금**이며, 실제로 방통위가 다수 사업자에 과징금·과태료를 부과한 사례가 있습니다.

**대안 (데모 적용):** 오픈 전 신고를 일정에 포함했습니다(처리 기간이 있어 개발과 병행). 아울러 **위치를 서버에 저장하지 않고 단말에서만 일시 처리**해(주변 검색 후 좌표 즉시 폐기) 수집 범위를 최소화했습니다 — 저장·전송이 없으면 신고 대상에서 제외될 여지가 있습니다.

### ③ 등급 규칙이 그대로는 계산되지 않습니다 ★

명세의 등급 정의를 **실제 회원 분포(50명)에 대입해 계산**해 봤습니다.

- 브론즈(1회)·실버(3회)는 **절대 기준**, 골드(상위 30%)·다이아(상위 5%)는 **상대 기준**이라 분포에 따라 한 사람이 두 등급을 동시에 만족하고, 어느 쪽이 우선인지 정해져 있지 않습니다.
- 회원 50명 기준 **TOP10은 상위 20%**로, 다이아(5%)보다 넓습니다. 그 결과 **참여 1위(55회) 회원이 다이아가 아니라 TOP10**으로 표시되는 서열 역전이 실제로 발생합니다.
- 상대평가라서 **참여 횟수가 그대로여도 신규 유입 때문에 강등**됩니다. 등급을 올리려 참여한 셀러가 오히려 떨어지는 경험을 하게 됩니다.
- "전체 회원 대비 퍼센테이지"이므로 **참여 0회 휴면 회원(50명 중 8명)도 분모**에 들어가고, **0회 등급은 정의 자체가 없습니다.**

**대안 (데모 적용):** **누적 절대 기준(강등 없음) + TOP10은 별도 명예 배지**로 분리했습니다. 참여할수록 올라가기만 하므로 동기가 유지되고, 순위 경쟁은 배지로 남깁니다. 데모의 **⑰ 등급 규칙 진단** 화면에서 두 방식을 실제 계산 결과로 비교하실 수 있고, 토글을 누르면 앱 전체 등급 표시가 바뀝니다.

### ④ 행사장에서 QR 출석이 가장 먼저 실패합니다

출석 체크는 야외 행사장에서 수백 명이 동시 접속하는 순간에 쓰입니다. 실시간 서버 검증에 의존하는 QR은 **과부하·음영지역에서 그대로 멈춥니다.** 행사 체크인 실무에서는 오프라인 스캔 후 동기화와 수동 조회 폴백이 표준 권장 사항입니다.

**대안 (데모 적용):** **오프라인 우선 체크인** — 승인자 명단을 기기에 미리 내려받아 네트워크 없이 검증·기록하고 연결되면 자동 동기화합니다. **닉네임 수동 조회**와 **종이 명단 인쇄**를 함께 제공합니다.

### ⑤ 노쇼 대응 수단이 없습니다

승인해 놓고 당일 나타나지 않는 셀러는 주최자에게 빈 부스라는 실질 손해를 남깁니다. 명세에 출석 체크는 있지만 **기록 이후 아무 일도 일어나지 않습니다.**

**대안 (데모 적용):** 출석 데이터를 **노쇼율로 환산해 프로필에 표시**하고 주최자가 승인 화면에서 바로 보도록 했습니다. 참가비에 **환불 규정(D-7 100% / D-3 50% / 당일 0%)** 을 명시하고 신청 시 동의를 받습니다.

### ⑥ 실명·나이·연락처는 제3자 제공에 해당합니다

"개최자만 볼 수 있음"은 좋은 방향이지만, 이는 곧 플랫폼이 셀러 개인정보를 주최자에게 제공하는 것입니다. 별도 동의 없이 제공하면 문제가 되고, **엑셀 다운로드는 그 정보를 밖으로 내보내는 행위**입니다.

**대안 (데모 적용):** 신청 시점에 **"주최자에게 제공되는 항목"을 명시하고 별도 동의**를 받습니다. 엑셀 반출은 **행사 종료 후 30일까지만** 가능하고 다운로드 이력이 남습니다. 연락처는 승인된 셀러에 한해 행사 기간에만 열립니다.

**리서치 출처:** [에스크로 vs 지급대행 (포트원)](https://blog.portone.io/ps_escrow-vs/) · [전자금융거래법 개정 대비 (토스페이먼츠)](https://www.tosspayments.com/blog/articles/amendment) · [전자금융거래법 (국가법령정보센터)](https://www.law.go.kr/LSW/lsRvsDocListP.do?lsId=010199) · [위치기반서비스사업 신고 안내 (방송통신위원회)](https://kcc.go.kr/user.do?mode=view&page=A02060600&dc=K02060600&boardId=1080&cp=1&boardSeq=31228) · [위치기반서비스사업 신고 (정부24)](https://www.gov.kr/mw/AA020InfoCappView.do?CappBizCD=15701000085) · [위치정보법 위반 373곳 처분 (EBN)](https://www.ebn.co.kr/news/articleView.html?idxno=1705064) · [위치기반서비스 신고 면제 요건 (법무법인 비트)](https://www.veatlaw.kr/main/board_detail/1599) · [행사 노쇼율 줄이는 방법 (이벤터스)](https://blog.event-us.kr/solution/eventus-wepick) · [Event QR Code Check-In 가이드 (Cvent)](https://www.cvent.com/en/blog/events/qr-code-check-in-guide) · [QR 체크인 베스트 프랙티스 (fielddrive)](https://www.fielddrive.com/blog/event-qr-code-check-in-registrations)

## 3. 레퍼런스 3곳 — 무엇을 카피했나

실제 브라우저로 열어 computed style을 실측했습니다.

| 레퍼런스 | 실측값 | 카피한 요소 |
|---|---|---|
| **[당근마켓](https://www.daangn.com/)** | 시그니처 오렌지 `#FF6600` · 잉크 `#1A1C20` · 보조 `#555D6D`/`#868B94` · 배경 `#F3F4F5` · Pretendard | **전체 컬러 시스템과 로컬 감성**: 오렌지 프라이머리, 회색 계조, 동네 기반 서비스 특유의 친근한 톤. 플리마켓 성격에 가장 잘 맞는 팔레트 |
| **[Airbnb](https://www.airbnb.co.kr/)** | 잉크 `#222222` · 보조 `#6C6C6C` · 경계선 `#DDDDDD` · 배경 `#F2F2F2` | **지도 + 카드 양면 탐색 구조**: 지도 위 핀 → 선택 시 하단 시트로 요약 카드, 리스트/지도 전환, 절제된 경계선과 여백 |
| **[Eventbrite](https://www.eventbrite.com/)** | pill 버튼 `100px` fw600 · 잉크 `#39364F` · 블루 `#3659E3` · 경계선 `#DBDAE3` | **행사 카드 IA**: D-day·종류 배지, 날짜·장소·참가비·모집현황의 정보 위계, pill 형태 필터 칩 |

인터랙션: 지도 핀 선택 → 바텀시트 전환, 출석 토글(재클릭 취소), 바텀시트 모달(거절 사유·참가자 목록), QR 스캔 라인 애니메이션, 모집률 프로그레스 바, 등급 토글 시 앱 전체 리렌더.

## 4. 화면 구성 (18개)

```
홈 탭        ① 홈 → ② 셀러등록 / ③ 행사만들기 / ④ 개최행사관리 / ⑧ 참여행사관리
             ④ → ⑤ 참여자목록(출석·엑셀) → ⑥ 참여자상세(승인/거절) / ⑦ 출석QR 발급
             ⑧ → ⑨ QR 출석 스캔
지도 탭      ⑩ 지도 탐색(핀·발자국) → ⑪ 근처 행사(필터) → ⑫ 행사정보 → ⑬ 참여 신청
채팅 탭      ⑭ 채팅 목록 → ⑮ 채팅방 → 참가자 시트 → 프로필
내정보 탭    ⑯ 마이프로필(등급) → ⑰ 등급 규칙 진단* → ⑱ 착수 전 검토 항목*
                                    * 제안 화면 (명세서에 없음)
```

## 5. 견적 산정 근거와 제안 스택

명세서에 예산·기간이 없어, **기능 범위를 기준으로 역산**했습니다.

| 구분 | 내용 | 산정 |
|---|---|---|
| 기획·화면설계 | 명세서가 이미 상세해 재작업 최소 | 5일 |
| UI/UX 디자인 | 18개 화면 + 디자인 시스템 | 10일 |
| 프런트엔드 | React Native (iOS/Android 동시) 18화면 | 25일 |
| 백엔드·DB | 회원·행사·신청·승인·출석·등급·채팅 API | 20일 |
| 지도·QR·결제 연동 | 카카오맵 SDK, QR 스캔, PG 서브몰 | 10일 |
| 실시간 채팅 | 단체방·읽음·알림 | 8일 |
| 테스트·스토어 배포 | 심사 대응 포함 | 7일 |
| **합계** | | **85일** |

- **React Native** — QR 카메라·지도·푸시가 모두 필요해 웹앱으로는 한계가 있고, iOS/Android 동시 대응으로 공수를 절반으로 줄입니다
- **백엔드**: NestJS + PostgreSQL + Redis(채팅·알림) / **지도**: 카카오맵 SDK / **결제**: PG 서브몰 구조 / **푸시**: FCM
- **오프라인 우선 출석**: 로컬 DB(WatermelonDB 등)에 명단 캐시 후 동기화

**단계 축소안**: 실시간 채팅(8일)과 결제(10일 중 일부)를 2차로 미루면 **65일 규모**로 1차 출시가 가능합니다. 채팅은 초기에 오픈채팅 링크로 대체하고, 참가비는 계좌이체 안내로 시작하는 방식입니다. 미팅에서 논의드리고 싶은 부분입니다.
