콘텐츠로 이동

[WORKSOUT] 마이페이지 홈

Screen ID Screen Title Screen Path
ACCT-MYP-01 계정 (비로그인) 하단 내비게이션 계정 버튼
ACCT-MYP-02 마이페이지 홈 (로그인) 하단 내비게이션 계정 버튼

하단 내비게이션 “계정” 버튼 클릭 시 진입하는 화면. 로그인 여부에 따라 완전히 다른 화면 형태로 분기된다.

  • 비로그인: 중앙 모달 팝업 (혜택 안내 + 로그인/회원가입 유도)
  • 로그인: 풀 페이지 마이페이지 화면 (대시보드 + 메뉴)

미로그인 상태에서 하단 내비게이션 계정 버튼 클릭 시 중앙 모달 팝업으로 노출.

ACCT-MYP-01 (비로그인, 중앙 모달 팝업)
├── 팝업 배경 딤 처리
├── 로고 모션 애니메이션 (1회 재생)
├── 메인 텍스트 "SHOPPING RELIVES STRESS"
├── 안내 메시지
├── 혜택 확인 버튼 ← 멤버십 웹페이지로 Page Transition
├── 로그인 / 회원가입 버튼 ← 각각 웹뷰 Bottom Modal
└── 비회원 주문조회 버튼 ← 비회원 주문조회 화면으로 이동
버튼 동작 방식 연결 대상
혜택 확인 Page Transition (iOS: Safari / Android: Chrome) https://worksout.co.kr/membership
로그인 Bottom Modal (웹뷰) https://worksout.co.kr/login
회원가입 Bottom Modal (웹뷰) https://worksout.co.kr/personal-verification
비회원 주문조회 앱 내 화면 전환 비회원 주문조회 화면
팝업 외부 터치 팝업 닫기

로그인/회원가입 웹뷰 완료 처리

섹션 제목: “로그인/회원가입 웹뷰 완료 처리”
케이스 처리
로그인 성공 웹뷰 모달 자동 닫힘
로그인 실패 웹뷰 내 오류 메시지 (앱 개입 없음)
사용자 취소 (로그인) 웹뷰 모달 닫힘
회원가입 완료 후 자동 로그인 웹뷰 모달 자동 닫힘
회원가입만 완료 웹뷰 내 로그인 유도로 처리
사용자 취소 (회원가입) 웹뷰 모달 닫힘, 입력 데이터 초기화

로그인과 회원가입은 모두 웹뷰 기반이다. 웹 페이지 자체의 오류(로딩 실패, 서버 오류 등)는 앱이 직접 제어하지 않으므로, 관련 CS는 웹 운영팀과 연계가 필요하다.


ACCT-MYP-02 (로그인)
├── 헤더 영역 ← 뒤로가기
├── 사용자 정보 영역 ← 이름 / 내 정보 수정 / 바코드 아이콘
├── 기본 정보 영역 ← 멤버십 레벨 / 적립금·예치금 / 쿠폰 / 미확인 알림
├── 위시리스트 영역 ← 가로 스크롤 최대 12개, 장바구니 담기
├── 주문 관리 영역 ← 전체 주문내역 / 결제 취소 / 반품
├── 내 정보 영역 ← 정보 수정 / 멤버십 / 적립금·예치금 / 쿠폰 / 응모
├── 고객 서비스 영역 ← 자주 묻는 질문 / 1:1 채팅 (ChannelTalk)
├── COMPANY 영역 ← 웍스아웃 소개 / 멤버십 / 매장 / 채용 / 비즈니스 문의
├── 로그아웃
└── 하단 푸터 ← SNS 링크 / 이용약관 / 개인정보처리방침

기본 정보 영역 — 데이터 출처 및 이동 대상

섹션 제목: “기본 정보 영역 — 데이터 출처 및 이동 대상”
항목 데이터 출처 노출 방식 이동 대상
멤버십 레벨 user.grade BASIC / SILVER / GOLD 등 등급명 membership (ACCT-GRD-01)
적립금 & 예치금 ownPoint + ownMoney 합산 합계 금액 표시 points (ACCT-PNT-01)
쿠폰 availableCouponCount N개 coupon (ACCT-CPN-01)
미확인 알림 전체 카테고리 news 합산 “N개” + 1개 이상 시 노란 점 알림 화면

미확인 알림은 GET /v1/notification/categories 응답 내 모든 카테고리의 news 값을 합산한다. 합계가 0이어도 “읽지 않은 알림 0개”는 표시되며, 노란 점만 숨긴다.

항목 기준
정렬 bookmarkUpdateAt 최신순
최대 표시 수 12개 (가로 스크롤)
목록 없을 때 “위시리스트에 상품을 추가해보세요.” 표시
하트 클릭 즉시 UI에서 제거 + 서버에서도 제거 처리
장바구니 담기 사이즈 선택 모달 → 사이즈 선택 → 장바구니 추가 → 토스트 메시지

장바구니 담기 흐름

  1. “장바구니 담기” 버튼 클릭
  2. 상품의 sizes 배열로 사이즈 선택 모달 표시
  3. 사용자가 사이즈 선택
  4. POST /v1/carts/{productId} 호출 (count: 1 고정)
  5. 성공 시 “장바구니에 추가되었습니다” 토스트 메시지

상품 상태 표시 기준

상태 표시 방식 장바구니 담기
품절 상품 “품절” 표시 비활성화
단독 상품 (isLast: true) “단독” 표시 활성화
할인 상품 (discountedRate > 0) 할인율 표시 활성화
회원 전용 (isOnlyForUser) 회원 전용 표시 활성화
앱 전용 (isOnlyApp) 앱 전용 표시 활성화

전체 위시리스트 화면은 별도 문서 참고: wishlist (ACCT-WISH-01)

항목 동작 방식 비고
자주 하는 질문 웹 페이지로 전환
1:1 채팅 문의 ChannelTalk API 호출 API 장애 시 “채팅 서비스에 연결할 수 없습니다” 안내
웍스아웃에 대하여 웹 페이지로 전환
멤버십 웹 페이지로 전환
매장 정보 웹 페이지로 전환
채용 웹 페이지로 전환
비즈니스 문의하기 웹 페이지로 전환
항목 기준
동작 클릭 즉시 로그아웃 처리
완료 후 이동 메인 화면
실패 시 “로그아웃에 실패했습니다” 메시지 + 재시도 옵션
네트워크 오류 시 로컬 세션 정리 후 로그아웃 처리

엔드포인트: GET /v1/users/info — 로그인 계정 화면 진입 시 호출

필드 활용
userName {userName}님 형태로 사용자명 표시
userGrade 멤버십 레벨 표시
ownPoint 적립금
ownMoney 예치금
ownPoint + ownMoney 합산 표시
availableCouponCount 쿠폰 수
bookmarksCount 찜한 상품 수 (위시리스트 배지 등 참고용)

엔드포인트: GET /v1/notification/categories

  • 전체 카테고리 news 값 합산
  • 합계 > 0: 노란 배지 노출
  • 합계 = 0: 배지 숨김, 텍스트는 “읽지 않은 알림 0개” 유지
목적 API 처리 기준
조회 GET /v1/bookmarks?type=PRODUCT bookmarkUpdateAt 기준 최신순 정렬, 최대 12개만 렌더링, 빈 배열 시 안내 문구
제거 POST /v1/bookmarks {"targetId": {상품ID}, "targetType": "PRODUCT"} UI 선(先) 제거 → API 호출, 실패 시 롤백 + 토스트 메시지

엔드포인트: POST /v1/carts/{productId} {"sizeId": {선택된 사이즈 ID}, "count": 1, "answer": "string"}

  • 성공: “장바구니에 추가되었습니다” 토스트
  • 실패: “장바구니 추가에 실패했습니다” 토스트
상황 처리
thumbnailUrl null 기본 플레이스홀더 이미지
hoverUrl null thumbnailUrl로 대체
이미지 로딩 실패 기본 상품 이미지 fallback

  • 비로그인/로그인 분기는 로그인 상태 여부로만 결정되며, 다른 조건은 없다.
  • 로그인/회원가입은 웹뷰 기반이므로 웹 화면 자체 오류는 앱이 제어하지 않는다.

항목 내용
비회원 주문조회 화면 스펙 이 문서 범위 밖 — 별도 화면 문서 확인 필요

버전 날짜 변경 내용
v1.0 2026-07-30 최초 작성 (계정 마스터.md 이전 — 비로그인/로그인 케이스 통합)