morrowbloom — 전체 기능 리뷰

2026-08-06 기준 · 기능 172건(12개 도메인) · SPEC 15편 · 아키텍처 결정 ARD 8편 · 정책 결정 79건 확정 · 외부 확인 5건 잔여 · 데이터 모델/앱 스택은 codex 교차 리뷰 완료

제품 한눈에

무엇다점포 운영 기반 꽃 배달 이커머스 — 여러 매장이 각자 제작·배송, 고객은 하나의 브랜드로 경험
시장미국 뉴저지 · USD(정수 센트) · 영어 사이트 · 직영 다점포 · NJ 판매세
배송지 ZIP5 → 담당 매장 → 그 매장의 상품·가격·배송 가능일. 모든 카탈로그 조회는 storeId 종속
병목재고가 아니라 제작 캐파(매장×날짜×시간대×건수) — 성수기(Mother’s Day·Valentine’s) 대비가 설계 전반의 전제
본질선물 컨텍스트 — 보내는 분/받는 분 분리, 주소 유형 10종, 부재 시 처리, 카드 메시지. 축소 금지 원칙
스택TypeScript 모노레포(Next.js web/admin + worker) · PostgreSQL · OpenSearch · Stripe · SES+Twilio · Google Maps · AWS(ECS) + 로컬 compose 패리티
레퍼런스frenchflorist.com 전수 실측 분석(docs/analysis) — 사이즈 3티어 가격 전략·ZIP 게이트·당일 카운트다운 등 채택, 하드코딩·태그 과다 등은 반면교사

읽는 법

P0 없으면 서비스 불성립P1 전환·객단가P2 리텐션·확장 다점포 — 매장별 데이터 · 매장별+권한 분리 설정 — 일부 설정 · 핵심이 설정(배포 없이 변경)
각 도메인의 요약 카드가 SPEC 핵심 동작이고, 표가 기능 전량입니다. 상세 근거·수용 기준은 docs/spec/ 해당 문서를 함께 열어 확인하세요.

매장 · 배송권역STO · 16건

SPEC: F-STO-01-store-management.md

  • 배송지 ZIP5가 담당 매장을 정한다 — 권역 매핑 → 반경(직선거리) → 배송 불가(요청 로그) 3단 폴백. 같은 ZIP의 다중 매장 커버 허용 + 우선순위(등록순, 수동 조정)
  • ZIP 등록 4방식: 붙여넣기 / CSV / 반경 자동 제안(체크한 것만 저장) / 지도(P2). 저장은 항상 preview → commit 2단계 — 형식 오류만 차단, 마스터 미등록·NJ 외는 경고+강제 등록
  • 매장 상태 변경 전 영향 미리보기 강제: 배송 불가가 될 ZIP 목록·진행 중 주문 수 제시. failover 임시 이관 → 복귀 시 자동 회수
  • 라우팅 테스트기 — 실제 배정은 priority→상품 취급→잔여 캐파→거리 순이라 표만으로 예측 불가. 실로직으로 선택·탈락 사유 표시
  • 커버리지 대시보드: 단독 커버 ZIP(단일 장애점) · 미커버 요청 Top N(출점 후보 사업 지표)
ID기능설명다점포설정P
F-STO-01매장 마스터코드/명/주소/좌표(자동 지오코딩)/연락처/정책. 상태 머신 → SPECP0
F-STO-02ZIP 배송권역 등록붙여넣기 / CSV / 반경 자동 제안 / 지도(P2). preview→commit 2단계P0
F-STO-03배송지 → 매장 라우팅권역매핑 → 반경 → 불가 3단 폴백. tie-break 규칙 설정P0
F-STO-04배송 불가 지역 안내주문 진입 전 차단 + 요청 지역 로깅(출점 후보 데이터)P0
F-STO-05전역 배송지 상태헤더 상시 노출, 언제든 변경. 세션 지속P0
F-STO-06배송지 변경 시 재검증장바구니 취급여부·가격 재계산 + 변동 고지P0
F-STO-07매장 고정(내 매장)고객이 특정 매장 선택. 권역 밖이면 경고 후 재배정P2
F-STO-08매장 영업시간·휴무요일별 영업시간, 임시휴무P0
F-STO-09매장 소개 페이지주소·전화·영업시간·지도·리뷰. 매장별 커스텀 문구P1
F-STO-10매장 로케이터전 매장 목록 + 배송지 입력으로 담당 매장 찾기P1
F-STO-11주문 매장 이관재배정 + 이관 매장 가격으로 재계산(인하는 환불, 인상은 흡수) + 이력P2
F-STO-12ZIP 마스터GeoNames 공개 데이터셋 적재(분기 갱신) + Census ZCTA 폴리곤(P2). 마스터 미등록은 경고+수동 등록P0
F-STO-13권역 겹침 관리ZIP 중심 뷰, 우선순위 드래그, 라우팅 테스트기(선택·탈락 사유 표시)P0
F-STO-14상태 변경 영향 미리보기중단·폐점 시 배송 불가가 될 ZIP 목록 + 진행 중 주문 수 사전 제시P0
F-STO-15대체 매장(failover)중단 시 권역 임시 이관, 복귀 시 자동 회수P1
F-STO-16커버리지 대시보드커버/중복/단독 커버 ZIP, 미커버 요청 Top N(출점 후보), 지도P1

카탈로그 · 가격 (PIM)CAT · 27건

SPEC: F-CAT-01-product-management.md · F-ADM-17-pim-admin.md

  • Family(제품군)가 속성 할당·필수 여부·레벨(PRODUCT/VARIANT)·변형 축을 정의. 속성은 전역 사전 1벌(동의어 방지) — isFacet 속성은 PLP 필터로 자동 노출
  • 사이즈 3티어 = 변형 축(size_tier). 가격은 절대값/배수 2모드 + 매장 폴백(매장가→가격그룹→기본가), 계산 근거 priceSource 노출. 라벨·뱃지·기본 선택 전부 설정값
  • 상태 머신 DRAFT→READY→ACTIVE↔PAUSED→ARCHIVED — 완성도 100%에서만 게시, ARCHIVED는 301
  • 고지(Disclaimer) 마스터: 전역/카테고리/상품 3경로 부착 합집합 + 버전 보존(주문 스냅샷에서 당시 본문 복원)
  • 카테고리 = 분류축(Taxonomy)별 독립 다계층 트리 + 속성 기반 규칙 자동 매핑. 대량 작업은 CSV dry-run·일괄 가격 미리보기
ID기능설명다점포설정P
F-CAT-01상품 마스터본사 중앙 관리. 이름·설명·이미지·관리법P0
F-CAT-02사이즈 티어 프리셋SizeTierSet(단일/3단/5단). 라벨·설명·순서·아이콘 전부 설정P0
F-CAT-03상품 변형(티어)상품 × 티어 = 판매 단위. 티어별 가격·이미지P0
F-CAT-04티어 가격 모드절대값 / base×배수 두 모드. 배수 모드로 일괄 조정P0
F-CAT-05기본 선택 티어최상위 티어 기본 선택(앵커링). 상품별 오버라이드P1
F-CAT-06티어 뱃지BEST_VALUE 등. 문자열 비교 금지, 설정값P1
F-CAT-07매장 취급 설정매장별 상품 on/off. 미설정 시 본사 기본값(opt-out)P0
F-CAT-08매장 가격 오버라이드정책(NONE/±N%/자유) 범위 내 매장 가격P1
F-CAT-09가격 그룹"North Jersey / Shore" 등 매장 묶음 가격. 일괄 운영P1
F-CAT-10가격 계산 근거 노출응답에 source(store/group/base/surcharge) 포함P1
F-CAT-11가격 반올림 규칙달러 단위 / .95 끝자리 / 센트 반올림. USD 정수 센트 저장P1
F-CAT-12매장 전용 상품scope=STORE_EXCLUSIVE. 해당 지역에서만 노출P2
F-CAT-13분류축(Taxonomy) + 다계층 카테고리축별 독립 트리(꽃종류·상황·색상·컬렉션·받는분). path 기반 다계층P0
F-CAT-14머천다이징 뱃지인기·한정·신상. 기간 지정, 매장별 오버라이드P1
F-CAT-15고지사항(Disclaimer) 마스터재사용 마스터 + 전역/카테고리/상품 3경로 부착. 버전 관리P0
F-CAT-16애드온 상품초콜릿·인형·손글씨 카드. 별도 카테고리 + 업셀 노출P1
F-CAT-17디자이너 추천 상품"고르기 어려우면 맡기세요". 선택 피로 해소 + 원가 유연성P1
F-CAT-18제작 리드타임상품별 최소 준비시간. 매장 오버라이드P1
F-CAT-19제품군(Family)꽃다발/화분/기프트별 속성 할당 · 필수 지정 · 레벨(PRODUCT/VARIANT) · 변형 축P0
F-CAT-20전역 속성 사전 + 상세 스펙Attribute를 전역 정의하고 Family가 재사용. isFacet 속성은 PLP 필터로 자동 노출P0
F-CAT-21상품 안내 정보관리법·애프터케어·꽃 이야기·배송안내. Family 기본값 폴백P1
F-CAT-22상품↔카테고리 매핑수동 + 규칙 자동(CategoryRule), 축별 대표(primary), 카테고리 내 진열순서P0
F-CAT-23상품 상태 머신DRAFT→READY→ACTIVE↔PAUSED→ARCHIVED. 게시 검증, 예약 게시P0
F-CAT-24slug 변경 301상품·카테고리 slug 변경 이력 → 301 리다이렉트P1
F-CAT-25변형(Variant) 관리변형 축 옵션 조합 생성, 표 형태 일괄 편집, 변형별 가격·이미지·속성P0
F-CAT-26완성도(Completeness)필수 항목 충족률. 100%에서만 게시 가능P1
F-CAT-27대량 작업CSV Import(dry-run) / Export / 일괄 편집 / 일괄 가격P1

탐색 — 목록 · 검색 · 내비NAV · 20건

SPEC: F-NAV-01-plp.md · F-NAV-07-global-nav-search.md

  • PLP = ListingPage 엔티티(카테고리 생성 시 자동 생성). 목록 소스 4모드: CATEGORY / MANUAL(상품 직접 지정) / RULE / HYBRID + pin·제외
  • 목록·필터·facet count·정렬은 OpenSearch(상품×매장 도큐먼트) 담당. 가격 필터는 variant 매칭 → product 1장 표시. 장애 시 DB 폴백 degrade(결제 무영향)
  • 축 교차 URL(/occasions/birthday/roses/)은 운영자가 승격한 조합만 index — 자동 생성 금지. 빈 결과는 noindex
  • 헤더 배송지 게이트: 첫 방문 강제 모달 없음(대표 매장으로 탐색), 변경 시 목록·카트 재검증
  • 인스턴트 검색 3그룹(상품/카테고리/아티클) + zero-result 로깅. 검색 결과 페이지는 PLP 기계 재사용(noindex)
ID기능설명다점포설정P
F-NAV-01카테고리 목록(PLP)매장 기준 필터된 그리드. 표시 단위 = 상품(티어는 가격 범위로 접음)P0
F-NAV-02상품 카드이미지 / 이름 / 가격(범위) / 뱃지 / 위시리스트P0
F-NAV-03카드 hover 이미지 스왑대표 → 디테일 클로즈업 크로스페이드P1
F-NAV-04필터색상(컬러 스와치) / 꽃종류 / 상황 / 가격대 / 받는 분. isFacet 축·속성에서 자동 생성P1
F-NAV-05정렬추천 / 낮은가격 / 높은가격 / 신상 / 인기P1
F-NAV-06배송지 칩목록 상단 "○○로 배송" 상시 노출P0
F-NAV-07메가메뉴꽃=텍스트 다열, 상황=이미지 카드. CMS 구성P1
F-NAV-08인스턴트 검색상품/카테고리/아티클 3그룹 실시간 제안P1
F-NAV-09인기 검색어검색창 기본 노출P1
F-NAV-10목록 하단 FAQ카테고리별 FAQ 아코디언 (불안 해소 + 롱테일 SEO)P1
F-NAV-11PLP 페이지 관리(ListingPage)페이지별 SEO·정렬·pin·제외·facet 구성. 콘텐츠는 블록 트리(F-ADM-19)P0
F-NAV-12목록 소스 모드CATEGORY / MANUAL(상품 직접 지정) / RULE / HYBRIDP0
F-NAV-13다계층 drill-down하위 카테고리 칩·카드 노출, 경로 이동, breadcrumbP0
F-NAV-14축 교차 승격 페이지/occasions/birthday/roses/ 같은 조합을 명시적으로 승격. 자동 생성 금지P1
F-NAV-15빈 결과 처리매장 취급 0건 → 빈 상태 UI + noindex + 대안 제안P0
F-NAV-16기획전 페이지카테고리 없는 큐레이션 PLP. 노출 기간 관리P1
F-NAV-17OpenSearch 기반 목록·facetPLP 필터·facet count·정렬을 OpenSearch가 담당 → ARD-0005P0
F-NAV-18인덱싱 파이프라인이벤트 기반 비동기 재색인 + 야간 정합성 검사 + 수동 재색인P0
F-NAV-19검색 degrade검색엔진 장애 시 DB 폴백(필터·facet 미제공). 결제는 영향 없음P1
F-NAV-20검색 결과 페이지/search?q= — PLP 기계 재사용(type=SEARCH), noindexP1

상품 상세PDP · 10건

SPEC: F-PDP-01-product-detail.md

  • buybox: 티어 선택(기본 = 설정된 최상위, BEST_VALUE 뱃지), 담기 → 카트 드로어 자동 오픈. 판매 불가 상태 5종(미취급/PAUSED/시즌 외/ARCHIVED/배송지 미확정) 각각 표시·동작 정의
  • delivery-promise: 배송지 기준 “지금 주문하면 오늘” 카운트다운 또는 최단 수령일
  • 고지 중 LEGAL은 buybox 아래 인라인, 나머지는 아코디언. 관리법·꽃 이야기는 Family 기본값 폴백
  • 리뷰: DELIVERED 구매자만 + 주문아이템당 1회. 텍스트 자동 게시(금칙어 필터)·사진만 검수
  • 관련 상품은 현재 매장 취급분만. Product JSON-LD(AggregateOffer)·BreadcrumbList
ID기능설명다점포설정P
F-PDP-01이미지 갤러리데스크톱 세로 스택 / 모바일 캐러셀P0
F-PDP-02사이즈 선택기티어별 라벨·설명·가격·아이콘. 기본 선택 = 설정값P0
F-PDP-03장바구니 담기담기 → 장바구니 드로어 자동 오픈P0
F-PDP-04선물 안내 배너"결제 시 카드/영상 메시지 추가 가능" 사전 고지P1
F-PDP-05배송 가능 안내현재 배송지 기준 최단 수령일 표시P1
F-PDP-06상품 정보 아코디언관리법 / 배송안내 / 유의사항 / 꽃 이야기P1
F-PDP-07리뷰평점 + 목록 + 사진·영상 리뷰P1
F-PDP-08위시리스트하트 토글P1
F-PDP-09관련 상품같은 매장 취급 상품만P1
F-PDP-10모바일 sticky 바하단 고정 가격 + 담기P0

배송 가능성DLV · 16건

SPEC: F-DLV-01-delivery-availability.md

  • 가용성 계산 경로는 하나 — PDP 최단 수령일·상단 카운트다운·체크아웃 캘린더·결제 직전 재검증이 같은 파이프라인 사용. 불가 사유 코드(CUTOFF_PASSED/CAPACITY_FULL…)를 함께 반환
  • 컷오프 2모드(절대 시각/슬롯 N분 전) + 성수기 컷오프(Mother’s Day는 며칠 전 마감 — 날짜 자체를 닫음)
  • 캐파 = (매장×날짜×슬롯) 단일 풀(픽업 포함). 결제 진입 시 Hold(15분+1회 연장) → 결제 완료 Confirm. 조건부 UPDATE로 원자 처리 + 만료 홀드는 획득 트랜잭션에서 lazy 정리
  • 카운트다운은 서버 시각 기준(클라이언트 시계 불신), 마감 후엔 “내일 배송”으로 전환. DST 전환일(3월/11월) 처리 명시
  • 배송비 = ZIP별 기본 + 슬롯 할증 + 날짜 할증. 무료 기준은 기본 배송비만 면제. 할증은 캘린더에서 선택 전에 표시
ID기능설명다점포설정P
F-DLV-01배송 시간대 정의라벨·시작·종료·요일별 운영 → SPECP0
F-DLV-02시간대별 컷오프절대 시각(ABSOLUTE) 또는 슬롯 N분 전(LEAD_BEFORE)P0
F-DLV-03배송 가능일 캘린더불가일 비활성 + 사유 코드별 안내 문구. 계산 경로는 1개P0
F-DLV-04제작 캐파(매장 × 날짜 × 슬롯) 최대 건수. 배송·픽업 단일 풀P0
F-DLV-13캐파 Hold→Confirm결제 진입 시 임시 홀드(TTL) → 결제 완료 시 확정. 원자적 처리P0
F-DLV-14결제 직전 재검증컷오프 경과·캐파 소진 감지 → 사유 + 대안 슬롯 제시P0
F-DLV-15캐파 캘린더 어드민월 뷰, 슬롯별 인라인 수정, 기간 일괄 설정(성수기 준비)P0
F-DLV-16DST 전환일 처리존재하지 않는/중복되는 시각의 슬롯 처리P1
F-DLV-05당일배송 카운트다운서버 시각 기준. 매장 컷오프 또는 성수기 컷오프 중 이른 쪽. 마감 후 내일 배송으로 전환P0
F-DLV-06블랙아웃 데이트전사/매장별 배송 불가일P0
F-DLV-07성수기 컷오프Mother's Day·Valentine's Day 등 별도 마감 규칙P1
F-DLV-08할증일특정일 배송 할증(금액/율)P1
F-DLV-09배송비 정책ZIP별 → 매장 기본 + 슬롯 할증 + 날짜 할증. 무료 기준은 기본 배송비만 면제P0
F-DLV-10예약 가능 범위D+N일까지P1
F-DLV-11매장 픽업픽업 가능 매장·시간 선택P2
F-DLV-12배송 실행 연동자체 기사 / 외부 배송망(퀵) 연동P2

장바구니 · 주문ORD · 23건

SPEC: F-ORD-01-cart-checkout-order.md

  • 서버 카트, 가격 미저장(항상 현재 매장 기준 계산). 배송지 변경 시 재검증 — 취급 불가 라인은 UNAVAILABLE로 남기고 체크아웃 차단
  • 3단계 체크아웃: 수신자별 주소 검증(자동완성 선택 = 재검증 없음)·매장 라우팅·배송일/슬롯·카드 메시지(occasion 템플릿+실물 미리보기)·수신자 사전 알림 토글(기본 ON)
  • 주문 생성: idempotencyKey → 최종 재검증 → PENDING_PAYMENT+전체 스냅샷 → Stripe(멱등키 파생) → 웹훅이 결제 상태의 원천 — PAID 전이·홀드 확정·쿠폰/포인트·알림(outbox)을 단일 트랜잭션으로
  • Order(결제 1건) → SubOrder(매장·수신자 1:1) 상태 머신. 취소는 SubOrder 단위 — 제작 시작 전 셀프, 이후 승인 플로우. 부분 환불은 refunds 원장
  • 비회원 조회 = 매직 링크(최초 GET 미소비 — 메일 스캐너 대응). 쿠폰 최소 모델: 주문당 1개 + 포인트 병용
ID기능설명다점포설정P
F-ORD-01장바구니 드로어아이템 / 수량 / 삭제 / 합계. 배송비·세금 "확정 전" 표기P0
F-ORD-02애드온 업셀장바구니에서 원클릭 추가P1
F-ORD-03체크아웃 3단계배송정보 → 애드온 → 결제 + 우측 주문요약 고정P0
F-ORD-04비회원 주문로그인 유도 병행P0
F-ORD-05보내는 분 / 받는 분 분리sender ≠ recipientP0
F-ORD-06주소 자동완성·검증Google Maps Platform(자동완성+검증+지오코딩). 어댑터 추상화 + 호출 최소화 → ARD-0006P0
F-ORD-07주소 유형 선택집/회사/병원/장례식장/학교/호텔… 유형별 안내문구P0
F-ORD-08부재 시 처리안전한 곳 / 이웃 / 경비실·프런트 / 연락 후 재방문. 주소유형별 옵션 제한P0
F-ORD-09요청사항자유 입력 + 글자수 + "시간 지정 미보장" 고지P0
F-ORD-10배송일·시간대 선택F-DLV-03/04 연동P0
F-ORD-11카드 메시지상황 선택 → 문구 템플릿 → 본문 + 서명. 실제 카드 미리보기P0
F-ORD-12영상 메시지촬영/업로드 → QR로 수신자 재생P2
F-ORD-13전화번호 검증형식 + 실번호 검증P0
F-ORD-14결제결제위젯(PCI 스코프 회피) + 간편결제P0
F-ORD-15쿠폰코드 입력 + 자동 적용(UTM/캠페인)P1
F-ORD-16세금·배송비 계산NJ 판매세 + 배송비. 배송지 확정 후 확정. SubOrder별 배송비P0
F-ORD-17주문 스냅샷매장·상품·티어·가격·정책을 값으로 복사 저장P0
F-ORD-18주문 확인 · 알림접수/제작/출고/완료 문자·이메일P0
F-ORD-19완성품 사진 전송출고 직전 실물 사진. "사진과 다를까 봐" 해소P2
F-ORD-20다중 수신자 · SubOrder 분할결제 1건, 이행·캐파·배송비·취소는 매장별 SubOrder 단위P2
F-ORD-21주문 조회·취소비회원은 매직 링크. 취소는 SubOrder 단위, 캐파 반환P0
F-ORD-22주문·SubOrder 상태 머신전이 화이트리스트 + 이력. IN_PRODUCTION = 셀프 취소 차단점P0
F-ORD-23배송 실패·재배송DELIVERY_FAILED 사유·알림. 재배송은 케이스별 협의(B-05)P1

고객 계정CUS · 8건

SPEC: F-CUS-01-customer-account.md

  • 주소록 = 받는 분 장부 — 재구매(“작년 그 사람에게 또”)의 핵심. 저장 시 1회 검증, 12개월 경과 시 재검증. 체크아웃 원탭 프리필
  • 게스트 → 회원 전환: 주문 완료 화면에서 비밀번호만 설정, 과거 게스트 주문 자동 연결
  • 주문 내역은 스냅샷 기준 렌더(이후 가격 변경 무영향) + 재주문(현재 가격 고지)
  • 가입 시 생일 수집(로열티 유인), 마케팅 동의 채널별 분리(TCPA). 계정 삭제 = PII 마스킹 + 주문 원장 보존
ID기능설명다점포설정P
F-CUS-01회원가입·로그인이메일 + 소셜. 생일 수집(로열티 연계)P1
F-CUS-02비밀번호 재설정P1
F-CUS-03주문 내역상태 추적 포함P1
F-CUS-04주소록저장된 받는 분 재사용. 재구매 전환 핵심P1
F-CUS-05기념일 리마인더저장된 수신자의 생일·기념일 알림P2
F-CUS-06저장 결제수단P2
F-CUS-07위시리스트P1
F-CUS-08계정 삭제·개인정보PII 익명화 + 주문 원장 보존. NJDPA 대응P1

로열티LOY · 5건

SPEC: F-LOY-01-loyalty.md

  • Yotpo 대신 원장(ledger) 자체 구현 — 잔액 = 원장 합, 중복 적립은 부분 UNIQUE로 차단
  • 적립은 SubOrder DELIVERED 시(회수 로직 불필요), 유효 24개월 FIFO 소진 + D-30 알림
  • 등급 rolling 12개월(승급 즉시·강등 분기), 사용은 상품액 한정·쿠폰 병용
  • 추천 give/get — 피추천 첫 주문 DELIVERED 시 지급(취소 어뷰징 차단), 자기 추천 금지
ID기능설명다점포설정P
F-LOY-01포인트 적립구매금액 비례. 적립률 설정P2
F-LOY-02행동 적립가입/리뷰/사진리뷰/영상리뷰/SNS/생일. 항목·점수 설정P2
F-LOY-03등급누적 기준 + 배율. 등급 수·기준 설정P2
F-LOY-04포인트 사용결제 시 차감P2
F-LOY-05친구 추천추천인·피추천인 양방향 리워드P2

정기구독SUB · 6건

SPEC: F-SUB-01-subscription.md

  • 구독 = SUBSCRIPTION Family 상품(사이즈=변형 축) — 전용 상품 모델 없음. 기간·주기는 구독 파라미터
  • 매 회차가 일반 Order를 생성 — 이행·현황판·알림 경로 단일화. 배송비 0 + 구독 할인
  • T-3일 잠금(메시지·skip 마감) → 캐파 홀드 → vault 청구 → 주문 생성. 휴무일은 같은 주 최근접일로 자동 이동+고지
  • dunning: +1일/+3일 재시도 → 회차 skip·PAST_DUE → 2연속 실패 해지. 기간형 가격은 가입가 고정, 중도 해지 위약 없음
ID기능설명다점포설정P
F-SUB-01구독 플랜사이즈 등급 × 기간 × 주기. 옵션 전부 설정P2
F-SUB-02구독 구성기3단계 선택 UI + 실시간 가격P2
F-SUB-03정기 결제회차별 자동 결제 + 실패 재시도P2
F-SUB-04회차별 배송회차마다 캐파 예약, 휴무일 자동 이월P2
F-SUB-05회차별 메시지매 회차 카드 메시지 첨부P2
F-SUB-06일시정지·해지고객 셀프P2

콘텐츠 · SEOCNT · 11건

SPEC: F-CNT-01-content-seo.md

  • 프로모 바 2모드(STATIC/카운트다운 — 배송지 매장 컷오프 기준), 매장 오버라이드 가능
  • 홈·랜딩·매장 페이지 전부 블록 트리(전용 코드 없음). 도시 랜딩은 커버 ZIP 있는 도시 단위 자동 생성 — ZIP 단위 랜딩은 만들지 않음
  • FAQ Set 재사용(PLP·PDP·매장) + FAQPage JSON-LD. 리드 폼은 매장 라우팅 + TCPA 고지 + honeypot
  • 사이트맵 분할 자동 재생성(S3 원자 교체) · robots · UrlRedirect 레지스트리(slug 변경 301, 12개월 후 삭제)
ID기능설명다점포설정P
F-CNT-01섹션 순서·노출 설정. 히어로/큐레이션/베스트/브랜드신뢰P0
F-CNT-02상단 프로모 바문구·색·기간·카운트다운 on/offP0
F-CNT-03매장 랜딩매장별 페이지 자동 생성 + 커스텀 콘텐츠P1
F-CNT-04지역 랜딩배송 가능 동네 단위 SEO 페이지P2
F-CNT-05블로그꽃 종류·관리법·꽃말. 검색 유입 + PDP 신뢰P2
F-CNT-06FAQ공통 + 카테고리별. PLP 재사용P1
F-CNT-07문의 폼매장 선택 포함P1
F-CNT-08행사·웨딩 리드 폼커머스와 분리된 다단계 문의P2
F-CNT-09이메일 수집하단 스티키 바P1
F-CNT-10구조화 데이터Product/LocalBusiness/FAQ/Breadcrumb 스키마P1
F-CNT-11사이트맵·robots·리다이렉트 레지스트리분할 사이트맵 자동 재생성, UrlRedirect 일원화P1

어드민 (코어 · PIM · CMS)ADM · 22건

SPEC: F-ADM-01-admin-core.md · F-ADM-17-pim-admin.md · F-ADM-18-page-builder.md

  • 역할 4종(HQ_ADMIN/HQ_STAFF/STORE_MANAGER/STORE_STAFF) — 스코프는 서버 강제, HQ_ADMIN 2FA 필수. 매장 스위처
  • 주문 관리: 스냅샷+리비전 뷰, 이관 위저드(캐파 확보 실패 시 이관 실패, 가격 재계산 미리보기)
  • 제작 현황판 — 슬롯별 제작 목록, [제작 시작]=셀프 취소 차단점, 메시지 카드/제작지/라벨 일괄 PDF(카드에 가격 미표기)
  • 설정 화면 = resolve() 시각화(전역/매장/캠페인 source 배지, 예약 반영·롤백). 캠페인은 exclude 방식
  • 페이지 빌더: 컴포넌트 propsSchema로 폼 자동 생성, 템플릿 상속(Family→상품, 블록 단위 override), 프리뷰 = 실서비스 렌더러 draft 모드(iframe, 매장·시점·디바이스 전환)
ID기능설명다점포설정P
F-ADM-01권한 2계층HQ(본사) / STORE(매장). 매장 스위처P0
F-ADM-02주문 관리매장은 자기 주문만. 상태 변경·이관P0
F-ADM-03상품 관리본사=마스터, 매장=취급/가격 → SPECP0
F-ADM-04사이즈 티어 프리셋 관리프리셋 CRUD + 상품 일괄 적용P0
F-ADM-13카테고리 트리 관리축·노드 CRUD, 이동, slug 변경 301, 규칙 매핑 미리보기P0
F-ADM-14속성·제품군 관리전역 Attribute 사전, Family 속성 할당·변형 축, 영향도 표시P0
F-ADM-15PLP 페이지 관리ListingPage CRUD, pin·제외, facet 구성, 승격 조합 등록P0
F-ADM-16고지사항 관리Disclaimer 마스터 CRUD, 전역/카테고리 부착, 버전P0
F-ADM-17PIM 어드민위 항목 통합 화면 + 완성도 + 대량작업 → SPECP0
F-ADM-18컴포넌트 레지스트리사전 구현된 컴포넌트 + propsSchema어드민 설정 폼 자동 생성P0
F-ADM-19페이지 빌더블록 트리 편집, 템플릿 상속(Family→상품), 데이터 바인딩 → SPECP0
F-ADM-20프리뷰실서비스 렌더러 draft 모드 + iframe. 디바이스·매장·시점 전환, 공유 링크P0
F-ADM-21페이지 버전·게시버전 이력·diff·롤백·예약 게시·편집 잠금P1
F-ADM-22메시지 카드·제작지·라벨 인쇄슬롯/일자 일괄 PDF. 카드에 가격 미표기P0
F-ADM-05가격 관리기본가 / 가격그룹 / 매장가. 일괄 조정P0
F-ADM-06배송 설정시간대·컷오프·캐파·휴무·할증P0
F-ADM-07매장·권역 관리 화면매장 CRUD, ZIP 권역 등록·겹침·커버리지 → SPECP0
F-ADM-08설정 화면폴백 체인 시각화("본사 기본값 / 우리 매장 설정")P1
F-ADM-09설정 예약·이력유효기간 예약 반영, 변경 이력·롤백P1
F-ADM-10제작 현황판오늘 제작 목록, 슬롯별 잔여 캐파P1
F-ADM-11매출 리포트매장별 매출 집계 (직영이므로 가맹 정산 없음)P2
F-ADM-12배송 불가 요청 로그출점 후보 데이터P2

플랫폼PLT · 8건

SPEC: F-PLT-01-platform.md

  • 설정 resolver: 캠페인→매장→전역→코드 폴백 + source 반환. 레지스트리는 코드(미등록 키 = 에러)
  • 이벤트는 outbox(도메인 트랜잭션과 동일 tx) → SQS. 잡은 멱등+DLQ, envelope 버전 N-1 호환
  • 알림: 거래/마케팅 구분 + 발송 시점 동의 검사, Twilio STOP inbound·quiet hours 지연·SUPPRESSED 기록
  • 이미지 EXIF 제거·원본만 저장(파생본은 URL 변환). 분석은 GA4 단독(레퍼런스의 태그 15개+ 반면교사). 감사 로그 미들웨어 자동 기록·3년
ID기능설명다점포설정P
F-PLT-01설정 Resolver캠페인→매장→전역→코드 단일 폴백 + source 반환P0
F-PLT-02설정 캐시·무효화유효기간 기반 TTL, 스코프 무효화P0
F-PLT-03반응형데스크톱/모바일. 모바일 sticky 액션P0
F-PLT-04이미지 파이프라인리사이즈·포맷 변환 CDNP0
F-PLT-05알림 발송문자/이메일 템플릿 관리P0
F-PLT-06분석최소 구성으로 시작 (레퍼런스는 태그 15개+로 성능 파괴)P1
F-PLT-07감사 로그설정·가격·주문 변경 이력. 미들웨어 자동 기록P1
F-PLT-08비동기 잡·큐at-least-once + 멱등, 재시도·DLQ. 인덱싱·알림·구독·홀드정리 소비P0

주요 결정 (요약)

인프라결제 Stripe · 알림 SES+Twilio · AWS 중심(ECS/CloudFront/SQS/Image Handler) · 검색 OpenSearch · 주소 Google Maps 단독(세션 토큰 시 자동완성 무료) · DB PostgreSQL · ZIP 마스터 공개 데이터셋
구조모듈러 모놀리스(별도 API 서버 없음) · SubOrder=매장·수신자 1:1 · 주문 불변 스냅샷 · outbox 이벤트 · 페이지=블록 트리(템플릿 상속) · 프리뷰=실서비스 렌더러 draft 모드
제안과 다르게 결정된 정책셀프 취소 제작 시작 전까지 · 재배송 케이스별 협의 · 미결제 TTL 15분 · 301 12개월 후 삭제 · 인기도 28일 주문수+수동 부스트
안 하기로 한 것ZIP 단위 SEO 랜딩 · SNS 팔로우 적립 · 특정 시각 지정 배송 · 임의 HTML 입력 · 인라인 편집 · k8s/마이크로서비스/GraphQL
전체 목록docs/README.md 결정 완료 표(20) + 정책·범위 리뷰 표(B 38 · C 20) · docs/decisions-pending.md

외부 확인 — 잔여 5건

ID항목대상기한 힌트
D-01NJ 판매세의 배송비 과세 여부세무결제 구현 전
D-02NJDPA(뉴저지 개인정보법) 컴플라이언스법무런칭 전
D-03수신자(제3자) SMS TCPA 동의 구조 — “수신자 사전 알림 기본 ON”이 이 결과에 종속법무알림 구현 전
D-05성수기 피크 배수 산정(예산·캐파 계획)운영·재무첫 성수기 전
D-06계정 삭제 시 주문 스냅샷 내 수신자 PII 처리 범위법무D-02와 함께

리뷰 가이드 (제안)

1) P0만 먼저 훑기 — 표에서 P0만 세로로 읽으면 서비스 성립 조건이 보입니다.
2) 도메인당 질문 2개 — “요약 카드의 규칙 중 우리 운영과 어긋나는 것은?” / “빠진 기능은?”
3) 이의는 기능 ID로 — 예: “F-ORD-08 부재 옵션에 ○○ 추가”. 반영은 해당 SPEC → PRD 순.
4) 정책 재론은 docs/README.md 결정 표를 근거로 — 이미 확정된 79건은 번복 사유와 함께.