gahusb 1081a3a85e feat(ui): UI 화면 골격 + store + composite/maskSplit hook (v0-plan Task 9/10/11)
새 의존성:
- expo-image-picker ~56.0.13 (PhotoCapture)
- expo-media-library ~56.0.6 (CaptureResult 저장)
- expo-file-system ~56.0.7 (generateRegionMask 파일 저장 — Mac 구현 시)

새 파일:
- src/store/useAppStore.ts: zustand store (photoUri/maskUri/pose/mode + reset)
- src/features/segmentation/index.ts: SegmentationModule TS wrapper (Mac Swift 빌드 대기)
- src/features/composite/shaders.ts: Skia RuntimeEffect 셰이더 소스 (마스크 흰색 → 카메라, 그 외 → 베이스)
- src/features/composite/CompositeView.tsx: 합성 컴포넌트 골격 (Skia v2 API Mac 검증 대기)
- src/features/composite/useCameraFrameUri.ts: 카메라 프레임 URI hook 골격 (vision-camera v5 API Mac 검증 대기)
- src/features/maskSplit/generateRegionMask.ts: region 마스크 생성 골격 (Skia v2 API Mac 검증 대기)
- src/features/maskSplit/useModeMask.ts: mode 전환 시 마스크 자동 재생성 hook + cleanup race 처리
- src/screens/OnboardingScreen.tsx: 3장 슬라이드 (정상 동작)
- src/screens/PhotoCaptureScreen.tsx: 갤러리 선택 + 자세 검증 (PoseModule Mac 빌드 후 동작)
- src/screens/CaptureResultScreen.tsx: 결과 + 저장 + 공유 (expo-media-library)
- src/screens/LiveFittingScreen.tsx: 모드 전환 + 핀치/팬 + Composite 골격 (Camera는 v5 API Mac 검증 대기)
- App.tsx: 4화면 state-based navigation (onboarding → photo → live → result) + GestureHandlerRootView 감싸기

핵심 결정:
- vision-camera v5는 v4와 완전 다른 Nitro 기반 (takeSnapshot 미존재 / usePhotoOutput/usePreviewOutput hook 패턴).
  v0-plan v4 코드 그대로 옮길 수 없어 Camera 부분 골격 + Mac TODO 명시.
- Skia v2 child shader API도 v1과 다를 가능성 → CompositeView 골격 + Mac TODO.
- 모드 전환/핀치 줌/네비게이션/store/검증 로직은 골격 단계에서 정상 동작.

검증 (Windows 가능 범위):
- npx tsc --noEmit: 무에러
- npm test: 6 suites / 17 tests passed (UI 골격 추가가 기존 테스트 영향 없음 확인)

Mac에서 채울 부분 (정리):
- vision-camera v5 Camera + photoOutput + previewOutput 통합
- Skia v2 RuntimeEffect child shader 패턴 (ImageShader / useShader)
- expo-file-system v56 writeAsStringAsync(base64) 동작 확인
- generateRegionMask 본 구현 (Surface.MakeOffscreen + clipRect + encode PNG)
- 실기기 manual test 5종 (각 화면 전환 + 핀치 줌 + 캡쳐 + 저장 + 공유)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 16:38:44 +09:00

Lapie (라피)

정면 전신 사진의 신체 영역에 실시간 카메라로 옷을 대보는 iOS 앱. 박재오 정체성-Why-탐색의 외면 분기 첫 증거.

입구

  • 하네스 운영 규약: CLAUDE.md ← AI agent와 협업하기 전에 반드시 읽음
  • 정식 spec: docs/spec.md
  • v0 구현 plan (W1~W4, 13 task): docs/v0-plan.md
  • brainstorming 원본: docs/brainstorming-raw.md

v0 상태 (2026-05-25 기준)

사전 액션

항목 상태
Brainstorming (6단 결정)
Spec 작성
v0 plan (W1~W4)
Day 0 검증 (도메인·앱스토어·인스타·상표)
@lapie_app 인스타 핸들 선점
macOS 접근 방안 결정 박재오 Mac 보유 (2026-05-24)
lapie.kr / lapie.io 도메인 등록 ⏸ 7월 착수 직전
변리사 정식 상표 조사 ⏸ 출원 직전
Figma 와이어프레임 5화면 ⏸ 가능하면 W1 첫 주

v0 코드 진행 (W1~W4, 7월 → 2026-05-24 앞당김)

Task 상태 비고
Gitea repo 연결 (gahusb/lapie_app) SSH ED25519 키 (windows-pc)
W1 Task 1 Expo + RN + TS 셋업 Windows 가능 범위 (SDK 56, RN 0.85, TS 6) prebuild + run:ios는 Mac
W1 Task 2 카메라 화면 + 권한 ⏸ Mac 실기기
W1 Task 3 Segmentation Swift 브릿지 ⏸ Mac
W2 Task 4 Pose Swift 브릿지 🟡 TS wrapper + mock test / Swift Mac
W2 Task 5 validatePose TDD 3 케이스 / UI는 Task C
W2 Task 6 splitMask TDD 4 케이스
W3 Task 7 Skia 합성 컴포넌트 ⏸ Mac 실기기
W3 Task 8 자동 스케일 (핵심 차별화) calculateScale TDD + 폴백 + usePinchScale / Mac 검증
W4 Task 9 LiveFittingScreen ⏸ Task C UI 골격 + Mac
W4 Task 10 CaptureResultScreen ⏸ Task C UI 골격 + Mac
W4 Task 11 Onboarding + 네비게이션 ⏸ Task C UI 골격 + Mac
W5~6 Task 12 자동 스케일 보강 ⏸ 버퍼
W5~6 Task 13 마케팅 콘텐츠 5편 ⏸ 버퍼

검증:

  • npx tsc --noEmit: 무에러
  • npm test: 6 suites / 17 tests passed (sanity 1 + pose 1 + photoValidation 3 + maskSplit 4 + calculateScale 6 + detectClothBounds 2)
  • 푸시: 7 commits → Gitea

기술 스택 (v0)

React Native (Expo bare) + TypeScript + react-native-vision-camera + @shopify/react-native-skia + iOS Vision Framework (Swift 브릿지) + Zustand + Jest.

자세한 빌드 명령어는 CLAUDE.md §4 참고.

박재오 위키 연결

  • 메타 페이지: [[사업-Lapie-피팅앱]]
  • 트랙 분류: 박재오 위키 카테고리 3 (사업)
  • Why 증거 라인: #3 (외면 분기)
Description
No description provided
Readme 819 KiB
Languages
TypeScript 99.3%
JavaScript 0.7%