| Screen ID |
Screen Title |
Screen Path |
| ACCT-MYP-01 |
계정 (비로그인) |
하단 내비게이션 계정 버튼 |
| ACCT-MYP-02 |
마이페이지 홈 (로그인) |
하단 내비게이션 계정 버튼 |
하단 내비게이션 “계정” 버튼 클릭 시 진입하는 화면. 로그인 여부에 따라 완전히 다른 화면 형태로 분기된다.
- 비로그인: 중앙 모달 팝업 (혜택 안내 + 로그인/회원가입 유도)
- 로그인: 풀 페이지 마이페이지 화면 (대시보드 + 메뉴)
미로그인 상태에서 하단 내비게이션 계정 버튼 클릭 시 중앙 모달 팝업으로 노출.
ACCT-MYP-01 (비로그인, 중앙 모달 팝업)
├── 메인 텍스트 "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는 웹 운영팀과 연계가 필요하다.
├── 사용자 정보 영역 ← 이름 / 내 정보 수정 / 바코드 아이콘
├── 기본 정보 영역 ← 멤버십 레벨 / 적립금·예치금 / 쿠폰 / 미확인 알림
├── 위시리스트 영역 ← 가로 스크롤 최대 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에서 제거 + 서버에서도 제거 처리 |
| 장바구니 담기 |
사이즈 선택 모달 → 사이즈 선택 → 장바구니 추가 → 토스트 메시지 |
장바구니 담기 흐름
- “장바구니 담기” 버튼 클릭
- 상품의
sizes 배열로 사이즈 선택 모달 표시
- 사용자가 사이즈 선택
POST /v1/carts/{productId} 호출 (count: 1 고정)
- 성공 시 “장바구니에 추가되었습니다” 토스트 메시지
상품 상태 표시 기준
| 상태 |
표시 방식 |
장바구니 담기 |
| 품절 상품 |
“품절” 표시 |
비활성화 |
단독 상품 (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 이전 — 비로그인/로그인 케이스 통합) |