Skip to content

[Epic] 코디 재현 엔진 (Cody Recreation Engine) consumer MVP — 5+2 화면 vertical slice (F1–F9) #636

Description

@thxforall

⚠️ 생성 후 아래 하위 체크리스트의 Fn을 실제 이슈 #번호로 교체할 것.

목적

코디 재현 엔진(Cody Recreation Engine) consumer MVP의 프론트엔드 vertical slice를 구축한다. 셀럽/인플루언서 룩 이미지 → AI 코디 분석 → 유저 예산·쇼핑몰 조건 → style formula 충족하는 대체 상품 룩 세트 추천 → affiliate 구매. 백엔드 CodyMatchService(Stage 2 / cody-match-stage2) gRPC ship 이전이므로 mock fixture 기반으로 5+2 화면 + 단일 adapter seam을 먼저 안정화하고, 백엔드 ready 시 adapter 내부만 교체한다.

⚠️ VTON(가상 피팅) 아님. VTON은 mvp-scope §5 기준 Phase 3 별개 기능 — 본 Epic과 무관 (아래 "제약·주의" VTON 분리 참조).

범위

5 core 화면(① Upload → ② Analysis → ③ Conditions → ④ Recommended → ⑤ Item Detail) + 2 보조 surface((+)Saved 보드 · (+)Shop-this-look 공유 slug). 9개 feature(#626#634)로 분해. 모든 신규 화면은 packages/web/app/cody/, 로직은 packages/web/lib/ 아래에만 생성한다.

화면 / 경로 (SSOT — 이 표 밖 경로 금지)

대상 경로 (packages/web/)
① Upload app/cody/page.tsx
② Analysis app/cody/analysis/page.tsx
③ Conditions app/cody/conditions/page.tsx
④ Recommended app/cody/recommended/page.tsx
⑤ Item Detail app/cody/item/[skuHash]/page.tsx
(+) Saved app/cody/saved/page.tsx (gated)
(+) Shop-this-look app/cody/looks/[slug]/page.tsx (public read)
flow store lib/stores/codyStore.ts
단일 adapter (#626이 유일 생성) lib/api/adapters/cody-match.ts (types+entry) · lib/api/adapters/cody-match-mock.ts (mock)
화면 컴포넌트 lib/components/cody/*

금지 경로: /recreate, app/request, app/(request), app/(consumer), app/cody/screens, app/cody/detail.

하위 feature (생성 후 Fn → 실제 #번호로 교체)

의존성 그래프

#626  (base · 의존 없음 · 단일 adapter/타입 모듈을 유일하게 생성)
├─ #627  [#626]
├─ #628  [#626]
├─ #629  [#626]
├─ #632  [#626]            ← reconcile 체크리스트(구현 아님)
├─ #630  [#626, #628, #629]
│   └─ #631  [#630]
├─ #633  [#627, #628, #630, #631]   ← #629 제외(③ Conditions는 실패상태 없음)
└─ #634  [#626, #631]

크리티컬 패스: #626 → (#628·#629) → #630#631#633 / #634. #627·#628·#629·#632은 #626 후 병렬 가능.

Acceptance Criteria (epic-level · 검증가능)

백엔드 경계 (mock · real / contract 출처)

화면 (feature) mock / real contract 출처 비고
① Upload (#627) REAL (Supabase Storage upload) mvp-scope §2 (Storage upload) cody 전용 upload hook/store, useImageUpload 재사용 금지
② Analysis (#628) MOCK (cody_analysis) mvp-scope §3 + cody-match-stage2 §2.1 (CodyAnalysis) AnalysisQuality 배지는 FE-only mock statecody_analysis에 confidence 필드 없음
③ Conditions (#629) client-only (백엔드 호출 없음) cody-match-stage2 §2.1 (ShopperPreference) fitClientOnlyFitPreference(client-side), ShopperPreference없음
④ Recommended (#630) MOCK (CodyMatchResult full fixture) cody-match-stage2 §2.2 Look Set / Composition Variant(저가·중가·무드정확)는 per_role 후보에서 FE 조합 (outfit composition = Stage 3 미구현)
⑤ Item Detail (#631) MOCK (CandidateSKU full) + affiliate redirect CandidateSKU = §2.2 · affiliate_url = §7.1 catalog_items affiliate_urlCandidateSKU/§2.2 아님 — 쓰면 catalog_items §7.1 출처 명시
(+) Saved / Shop-this-look (#634) gated (추후 DB) mvp-scope §2·§5 공유 slug는 자신이 만든 룩만 (저작권 deferred)

단일 adapter seam (BLOCKER)

제약 · 주의

성공지표 (mvp-scope §6 — launch 후 1주 baseline 후 재조정)

  1. Activation: 업로드 → 결과 본 유저 비율 ≥ 70% (15초 wait 통과율)
  2. Recommendation perceived value: 추천 룩 카드 좋아요/클릭 비율 (rough proxy)
  3. Affiliate funnel: 구매 링크 클릭률 ≥ 8%
  4. Word of mouth: 공유 링크 생성 비율 ≥ 5%
  5. Negative signal: 분석 결과 보고 즉시 닫는 유저 비율 ≤ 30%

핵심 재사용 자산 (repo 검증 완료)

  • DropZonepackages/web/lib/components/request/DropZone.tsx
  • compressImagepackages/web/lib/utils/imageCompression.ts
  • uploadImagepackages/web/lib/api/posts.ts
  • ⚠️ useImageUpload(lib/hooks/useImageUpload.ts) 재사용 금지 — 내부에서 useRequestStore + startDetection() 호출(line 93) → 옛 detection flow 트리거. #627는 위 3개 부품 + 새 cody upload hook/store(codyStore) 만 사용.

참조

  • decoded-docs/Project/wireframes.md — 5+1 화면 lo-fi + §4 실패·빈 상태 카탈로그
  • decoded-docs/Project/mvp-scope.md — §2 화면 · §3 cody_analysis 스키마 · §6 성공지표
  • decoded-docs/Project/user-scenarios.md — §1 파이프라인 · §3 entry(E1/E2/E3) · §4 실패 루프
  • decoded-docs/Architecture/cody-match-stage2.md — §2.1 CodyAnalysis/ShopperPreference · §2.2 CandidateSKU/CodyMatchResult · §7.1 catalog_items/affiliate_url
  • decoded-monorepo/CONTEXT.md — Cody glossary (Composition Variant / Preference Variant / Shopper Preference / Client-only Fit / Analysis Quality / VTON)
  • docs(product): sync cody-engine direction from seed deck v0.3 #617 — geo-wedge ICP persona 연동

별도 infra 이슈 (codex BLOCKER 분리)

Metadata

Metadata

Assignees

No one assigned

    Labels

    codyCody Recreation Engine MVPenhancementNew feature or requestfrontend프론트엔드

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions