프로젝트 개요
마스터몰 복제형 지사몰의 고객 화면을 모바일 고정폭 PWA로 구현하는 프로젝트입니다. 밸런스키트 8문항 문진과 정기구독, 카카오 로그인 주문, 다중 PG 결제, 점주 예치금 잔액 확인까지 한 흐름으로 설계하며, 멀티테넌트 구조로 지사몰 500개 규모 확장을 고려합니다.
작업 범위
- 지사몰 상품 탐색: 마스터몰을 복제한 지사몰에서 사료·간식·영양제 카테고리 필터와 상품 카드 그리드로 탐색하고, 퀵뷰로 상세를 확인합니다. 소비자가와 점주 공급가가 분리된 이중 가격 구조에서 고객에게는 몰별 소비자가만 노출합니다
- 밸런스키트 문진: 로그인 없이 8문항을 단계별로 응답하면 본사 매핑표 기준으로 추천 상품과 급여량, 월 구독가를 산출하고 정기구독 가입으로 이어집니다
- 간편 주문 결제: 카카오 로그인 또는 비회원으로 장바구니와 주문서를 거쳐 몰별 점주 PG로 결제하고, 주문 상태 변경 시 해당 점주 명의의 카카오 알림톡 발송을 요청합니다
- 점주 대시보드: 점주가 모바일에서 자기 몰의 판매 현황과 주문을 조회하고, 가상계좌 예치금 잔액과 주문별 예치금 자동 차감 내역을 확인합니다
주요 업무
- 지사몰 상품 탐색 화면: 도메인 기반 테넌트 라우팅으로 지사몰을 식별하고, 마스터몰 상품 중앙 관리 데이터를 몰별 가격 레이어와 결합해 노출합니다
- 밸런스키트 문진 화면: 크기별 4단계 고정가 정기구독과 단계형 설문을 하나의 상태 머신으로 연결합니다
- 간편 주문 결제 화면: 다중 PG 추상화 계층으로 몰마다 다른 PG 설정을 호출하고 결제 결과를 주문 상태에 반영합니다
- 점주 대시보드 화면: 원장 기반 예치금 구조를 점주 화면에서 읽기 전용으로 보여줍니다




프로젝트 핵심 과제
지사몰 100~500개로 늘어도 상품·가격 조회가 유지되도록 tenant_id 복합 인덱스와 캐시 전략 설계가 필요하며
단계별 부하 점검 계획으로 대응합니다
몰마다 다른 점주 PG 설정을 안전하게 분리 보관하고 결제 호출에 주입하는 어댑터 구조 설계가 필요하며
암호화 저장과 테스트 키 기반 검증으로 대응합니다
정기구독 회차별 자동결제 실패 시 재시도와 안내 상태 전이를 명확히 정의해야 하며
상태 머신 문서화로 대응합니다
밸런스키트 매핑표가 바뀌어도 기존 구독 추천 근거를 추적할 수 있어야 하며
룰 버전 기록으로 대응합니다
핵심 기능 상세
지사몰 상품 탐색
마스터몰을 복제한 지사몰에서 사료·간식·영양제 카테고리 필터와 상품 카드 그리드로 탐색하고, 퀵뷰로 상세를 확인합니다. 소비자가와 점주 공급가가 분리된 이중 가격 구조에서 고객에게는 몰별 소비자가만 노출합니다.
- Host 헤더 기반 테넌트 미들웨어와 Prisma tenant_id 스코프 쿼리로 멀티테넌트 데이터 분리
- 마스터 상품 테이블과 몰별 가격 오버레이 테이블을 조인하는 이중 가격 조회 구조 설계
- React Query의 staleTime 설정과 무한 스크롤 카드 그리드로 상품 중앙 관리 변경분을 전 몰에 반영
마스터몰 1개를 복제하는 멀티테넌트 구조에서 상품·가격 변경이 전 몰 동기화되도록 설계하고, 지사몰 500개 규모 확장성을 고려한 인덱스 전략을 적용합니다.


밸런스키트 문진
로그인 없이 8문항을 단계별로 응답하면 본사 매핑표 기준으로 추천 상품과 급여량, 월 구독가를 산출하고 정기구독 가입으로 이어집니다. 크기별 4단계 고정가 정기구독과 단계형 설문을 하나의 상태 머신으로 연결합니다.
- XState 없이 reducer 기반 단계 상태 머신으로 8문항 진행과 뒤로가기 복원을 구현
- 본사 매핑표를 JSON 룰 테이블로 관리하고 서버에서 추천 상품과 급여량을 산출하는 룰 엔진 설계
- 정기구독 회차별 PG 자동결제 어댑터와 결제 실패 재시도 상태 전이 설계
문진 응답과 매핑표 룰을 분리해 매핑표 변경만으로 추천 결과가 갱신되는 구조로 설계하며, 정기구독 결제 실패 회차를 상태 전이로 관리합니다.


간편 주문 결제
카카오 로그인 또는 비회원으로 장바구니와 주문서를 거쳐 몰별 점주 PG로 결제하고, 주문 상태 변경 시 해당 점주 명의의 카카오 알림톡 발송을 요청합니다.
- 카카오 로그인 OAuth 인가 코드 흐름과 몰 단위 회원 분리 스키마 설계
- PG 어댑터 인터페이스로 토스페이먼츠와 포트원 호출을 같은 결제 서비스 뒤에 추상화
- Bull Queue 없이 DB 아웃박스 테이블로 알림톡 발송 요청을 적재하는 구조 설계
몰별 PG 설정을 어댑터 계층에서 주입하는 다중 PG 구조와 몰별 카카오 알림톡 발송 설정을 같은 주문 이벤트 흐름에 연결합니다.


점주 대시보드
점주가 모바일에서 자기 몰의 판매 현황과 주문을 조회하고, 가상계좌 예치금 잔액과 주문별 예치금 자동 차감 내역을 확인합니다. 원장 기반 예치금 구조를 점주 화면에서 읽기 전용으로 보여줍니다.
- 예치금 원장 테이블을 append-only로 설계하고 잔액을 원장 합계로 산출
- 주문 결제 트랜잭션 안에서 공급가와 택배비를 차감하고 멱등 키로 이중 차감을 방지
- 점주 가상계좌 입금 통지를 웹훅으로 수신해 충전 내역에 반영하는 엔드포인트 설계
가상계좌 예치금 충전과 주문별 자동 차감을 원장으로 기록해 잔액과 차감 사유를 항상 추적할 수 있게 설계합니다.


프로젝트 진행 단계
멀티테넌트 스키마와 마스터몰 복제 설계 · 2026.10
tenant_id 스코프 Prisma 스키마, 도메인 라우팅 미들웨어, 마스터 상품·몰별 가격 테이블 설계
고객 쇼핑 흐름과 PWA 셸 구현 · 2026.10
모바일 고정폭 레이아웃, 카탈로그·장바구니·주문서 화면, manifest와 서비스 워커 구성
카카오 로그인과 다중 PG 결제 연동 · 2026.10
OAuth 로그인, PG 어댑터 계층, 일반·정기결제 흐름과 알림톡 발송 요청 구조 구현
밸런스키트 문진과 정기구독 구현 · 2026.10
8문항 단계형 설문, 매핑표 룰 엔진, 크기별 4단계 정기구독 상태 전이 구현
개발 결과
기술적 주안점
- 마스터몰 1개를 복제하는 멀티테넌트 구조에서 상품·가격 변경이 전 몰 동기화되도록 설계하고, 지사몰 500개 규모 확장성을 고려한 인덱스 전략을 적용합니다
- 문진 응답과 매핑표 룰을 분리해 매핑표 변경만으로 추천 결과가 갱신되는 구조로 설계하며, 정기구독 결제 실패 회차를 상태 전이로 관리합니다
- 몰별 PG 설정을 어댑터 계층에서 주입하는 다중 PG 구조와 몰별 카카오 알림톡 발송 설정을 같은 주문 이벤트 흐름에 연결합니다