Skip to content

Latest commit

 

History

History
254 lines (222 loc) · 11.4 KB

File metadata and controls

254 lines (222 loc) · 11.4 KB

A-01 | 사용자 분기 페이지 | 사장님,손님 | 사장님 / 손님 역할 선택 | 사용자 역할(사장님,손님) 분기 A-02 | 로그인 페이지 | 사장님,손님 | 계정 인증 | 소셜 로그인(카카오) A-03 | 온보딩/튜토리얼 페이지 | 사장님,손님 | 첫 사용자가 앱의 사용법을 쉽게 알기 위함 | 서비스 주요 기능 안내 C-01 | 사전 피드백 페이지 | 손님 | 고객의 입맛 프로필 수집 | 평소 맵기, 식사량, 지출 금액 선택 C-02 | 가게(메뉴) 리스트 페이지 | 손님 | 피드백 가능한 가게(메뉴) 탐색 | 가게(메뉴) 목록 표시, 검색/필터 기능 C-03 | 메뉴 세부 페이지 | 손님 | 선택한 메뉴 상세 정보 확인 | 메뉴 정보(설명, 사진 등), 피드백 작성 신청, 타 배달 플랫폼으로 연결 C-04 | 주문 인증 페이지 | 손님 | 실제 주문 여부 검증 | 영수증 사진 업로드 C-05 | 사후 피드백 페이지 | 손님 | 메뉴에 대한 세부 평가, 사용자의 속에 있는 진실된 내용을 끌어내고자 함 | 맛, 양, 가격 평가, 재주문, 추천의향 수집 C-06 | 피드백 작성 마무리(한마디) 페이지 | 손님 | 사장님께 전달할 메시지 작성 | 사장님께 한마디(30자 이상) C-07 | 마이페이지 | 손님 | 개인정보 및 리워드 관리 | 피드백 작성 내역, 적립 횟수 확인, 리워드 교환 신청 C-08 | 피드백(선택한 메뉴) 내역 조회 페이지 | 손님 | 선택한 메뉴 조회 C-09 | 작성한 피드백 이력 확인 | 피드백을 남기기 위해 선택한 메뉴들 리스트를 확인, 날짜별 작성 내역, 승인대기 상태 표시 C-10 | 리워드 페이지 | 손님 | 피드백을 남긴 횟수에 따른 리워드 교환 및 관리 | 현재 적립 횟수 표시, 상품권 교환 신청, 교환 내역 확인 C-11 | 피드백 완료 페이지 | 손님 | 자신의 의견이 가게에 반영되었다는 것을 느끼게 함 | 사용자의 피드백이 완료되었음을 알림 O-01 | 사장님 대시보드/홈 페이지 (마이페이지) | 사장님 | 전체 현황 파악 | O-02 | 가게(메뉴) 조회 페이지 | 사장님 | 피드백 받기 위해 등록한 가게(메뉴) 조회 | 등록한 가게(메뉴) 리스트 O-03 | 가게(메뉴) 등록 페이지 | 사장님 | 피드백 받기 위한 가게(메뉴) 등록 | 메뉴 정보 입력(메뉴명, 가격, 설명, 사진 등) O-04 | 가게(메뉴) 수정 페이지 | 사장님 | 피드백 받기 위한 가게(메뉴) 수정 | O-05 | 가게(메뉴) 세부 페이지 | 사장님 | 피드백 받기 위한 가게(메뉴) 상세 조회 | 등록한 가게(메뉴) 정보 단순 조회 O-06 | 음식 별 통계/분석 리포트 페이지 | 사장님 | 피드백 받은 결과 조회 | 종합 통계 분석(항목펼 평균 점수 및 분포, 재주문 및 추천의향률), 텍스트 형태 개선 제안, 리포트 다운로드 O-07 | 마이페이지(대시보드/홈페이지로 통합?) | 사장님 | | O-08 | 가게 등록 페이지 | 사장님 | 사장님 가게 등록 | 가게 이름, 가게 주소, 가게 설명 입력 O-09 | 가게 수정 페이지 | 사장님 | 사장님 가게 수정 | 가게 이름, 가게 주소, 가게 설명 수정

src/app/ ├── globals.css ├── layout.tsx # 루트 레이아웃 ├── page.tsx # 메인 페이지 (사용자 분기 페이지) ├── (auth)/ # Route Group - 인증 관련 │ └── login/ # 카카오 로그인 │ └── page.tsx ├── customer/ # 손님 전용 페이지 │ ├── page.tsx # 손님 홈 │ ├── menu/ │ │ ├── page.tsx # 가게-메뉴 목록 │ │ └── [foodId]/ │ │ └── page.tsx # 메뉴 상세 │ ├── feedback/ │ │ └── add/ # 피드백 작성 │ │ └── page.tsx │ ├── mypage/ │ │ └── page.tsx # 마이페이지 │ ├── history/ # 피드백 내역 │ │ └── page.tsx │ └── rewards/ # 리워드 │ └── page.tsx └── owner/ # 사장님 전용 페이지 ├── page.tsx # 대시보드/홈 ├── onboarding/ # 온보딩 │ └── page.tsx ├── store/ │ ├── page.tsx # 가게 관리 │ ├── add/ # 가게 등록 │ │ └── page.tsx │ └── [storeId]/ │ └── page.tsx # 가게 상세 ├── menu/ │ ├── page.tsx # 메뉴 목록 │ ├── add/ # 메뉴 등록 │ │ └── page.tsx │ └── [foodId]/ │ ├── page.tsx # 메뉴 상세 │ ├── edit/ # 메뉴 수정 │ │ └── page.tsx │ └── analytics/ # 통계 분석 │ └── page.tsx ├── feedbacks/ # 피드백 관리 │ └── page.tsx └── mypage/ └── page.tsx # 마이페이지

src/components/ ├── ui/ # shadcn/ui 컴포넌트 ├── customer/ # 손님 전용 컴포넌트 ├── owner/ # 사장님 전용 컴포넌트 └── common/ # 공통 컴포넌트

src/lib/ ├── auth.ts # 인증 관련 유틸 ├── api.ts # API 클라이언트 ├── utils.ts # 공통 유틸리티 └── types.ts # TypeScript 타입 정의

src/stores/ ├── auth.ts # 공통 인증 상태 ├── customer.ts # 손님 관련 상태 ├── owner.ts # 사장님 관련 상태 └── survey.ts # 설문 진행 상태


페이지별 필요 데이터

🔵 공통 페이지 (Auth)

A-01 | 사용자 분기 페이지

  • 필요 데이터: 없음 (단순 선택 화면)
  • 사용자 입력: 역할 선택 (customer/owner)
  • 다음 동작: 선택한 역할에 따라 로그인 페이지로 이동

A-02 | 로그인 페이지

  • 필요 데이터: 카카오 앱 키, 리다이렉트 URI
  • 사용자 입력: 카카오 계정 인증
  • API: POST /auth/kakao/login
  • 응답 데이터: accessToken, refreshToken, 사용자 정보

A-03 | 온보딩/튜토리얼 페이지

  • 필요 데이터: 튜토리얼 단계별 콘텐츠 (제목, 설명, 이미지)
  • 사용자 입력: 다음/건너뛰기 버튼 클릭
  • 완료 시: isOnboarded 상태 업데이트

🟢 손님 페이지 (Customer)

C-01 | 사전 피드백 페이지

  • API:
    • GET /customer/taste-profile (기존 프로필 조회)
    • POST /customer/taste-profile (프로필 저장/수정)
  • 필요 데이터: 사용자의 기존 입맛 프로필 (있는 경우)
  • 사용자 입력:
    • 맵기 선호도 (1-5)
    • 식사량 (1-4)
    • 예산 범위 선택
  • 저장 위치: DB 저장 + 피드백 플로우 전달

C-02 | 가게(메뉴) 리스트 페이지

  • API: GET /customer/restaurants
  • 필요 데이터:
    • 가게 목록 (이름, 주소, 이미지)
    • 각 가게의 메뉴 리스트 (각각 보여주는 게 아닌 한꺼번에 여러 가게의 메뉴들 보여줌)
    • 피드백 가능 슬롯 수
    • 카테고리 목록
  • 사용자 입력: 검색어, 카테고리 필터

C-03 | 메뉴 세부 페이지

  • API: GET /customer/restaurants/{id}/menus/{menuId}
  • 필요 데이터:
    • 메뉴 상세 정보 (이름, 가격, 설명, 이미지)
    • 가게 정보
    • 배달 플랫폼 링크 (클라이언트에서 제공)
  • 사용자 액션: 피드백 신청, 배달앱 연결

C-04 | 주문 인증 페이지

  • 필요 데이터: 선택한 메뉴/가게 정보 (이전 단계에서 전달)
  • 사용자 입력:
    • 영수증 사진 업로드
  • API: POST /upload/image (영수증)

C-05 | 사후 피드백 페이지

  • 필요 데이터: 이전 단계 데이터 (메뉴, 가게, 사전 피드백)
  • 사용자 입력:
    • 맛 평가 (맵기, 짠맛, 단맛, 신맛)
    • 양, 가격 평가
    • 전반적 만족도
    • 재주문 의향 (0-10)
    • 추천 의향 (0-10)
  • API: POST /upload/image (음식 사진)

C-06 | 피드백 작성 마무리(한마디) 페이지

  • 필요 데이터: 이전 단계 모든 데이터
  • 사용자 입력: 텍스트 피드백 (30자 이상)
  • API: POST /customer/feedback/submit (전체 피드백 제출)

C-07 | 마이페이지

  • API: GET /customer/mypage
  • 필요 데이터:
    • 사용자 정보
    • 피드백 요약 (제출/승인/대기/반려 수)
    • 리워드 현황

C-08 | 피드백(선택한 메뉴) 내역 조회 페이지

  • API: GET /customer/feedbacks
  • 필요 데이터:
    • 피드백 목록
    • 피드백을 위해 선택한 메뉴 목록
    • 상태별 필터
  • 사용자 입력: 필터 선택, 페이지네이션

C-09 | 작성한 피드백 이력 확인

  • API: GET /customer/feedbacks (상세 보기)
  • 필요 데이터: C-08과 동일 (상세 뷰)

C-10 | 리워드 페이지

  • API:
    • GET /customer/rewards
    • POST /customer/rewards/redeem
  • 필요 데이터:
    • 적립 현황
    • 교환 가능 상품권 목록
    • 교환/적립 내역
  • 사용자 액션: 상품권 교환 신청

C-11 | 피드백 완료 페이지

  • 필요 데이터:
    • 제출된 피드백 정보
    • 적립된 리워드
    • 총 리워드 수
  • 사용자 액션: 홈으로 이동

🔴 사장님 페이지 (Owner)

O-01 | 사장님 대시보드/홈 페이지

  • API: GET /owner/dashboard
  • 필요 데이터:
    • 사장님 정보(등록된 메뉴, 가게 이름 등)
    • 전체 통계 (피드백 수, 고객 수)

O-02 | 가게(메뉴) 조회 페이지

  • API: GET /owner/restaurants
  • 필요 데이터:
    • 내 가게의 등록한 메뉴 목록

O-03 | (메뉴) 등록 페이지

  • 필요 데이터: 없음 (신규 등록)
  • 사용자 입력:
    • 메뉴: 이름, 가격, 설명, 이미지
  • API:
    • POST /owner/restaurants
    • POST /owner/restaurants/{id}/menus

O-04 | 가게(메뉴) 수정 페이지

  • API:
    • GET /owner/restaurants/{id} (기존 데이터 조회)
    • PUT /owner/restaurants/{id}
    • PUT /owner/menus/{menuId}
  • 필요 데이터: 기존 (메뉴) 정보
  • 사용자 입력: O-03과 동일 (수정 모드)

O-05 | 가게(메뉴) 세부 페이지

  • API: GET /owner/restaurants/{id}/menus
  • 필요 데이터:
    • 메뉴 상세 정보(사진, 이름, 가격, 설명)
    • 메뉴의 피드백 요약
  • 사용자 액션: 상세 통계(O-06)

O-06 | 음식 별 통계/분석 리포트 페이지

  • API: GET /owner/menus/{menuId}/analytics
  • 필요 데이터:
    • 통계 데이터

O-07 | 마이페이지

  • 필요 데이터: O-01 대시보드와 통합 예정

O-08 | 가게 등록 페이지

  • 필요 데이터: 없음
  • 사용자 입력: 가게 이름, 주소, 설명
  • API: POST /owner/restaurants

O-09 | 가게 수정 페이지

  • API:
    • GET /owner/restaurants/{id}
    • PUT /owner/restaurants/{id}
  • 필요 데이터: 기존 가게 정보
  • 사용자 입력: 가게 이름, 주소, 설명 수정