본문으로 건너뛰기

마이페이지 (/mypage)

사용자 정보 확인과 관리 행동을 담당하는 섹션입니다.

관련 경로

app/(main)/mypage/
├── layout.tsx ← 인증 체크
├── (with-sidebar)/
│ ├── layout.tsx ← 사이드바 레이아웃
│ ├── page.tsx ← /mypage 메인
│ ├── account/ ← 계정 설정
│ ├── saju-manage/ ← 내 사주 정보 관리
│ ├── jeongtongsaju/ ← 정통사주
│ └── zodiac-compatibility/ ← 띠별 궁합
└── (fullscreen)/
├── traditional-fortune/ ← 정통사주 생성형 풀이
└── year-fortune/ ← 신년운세 생성형 풀이

widgets/mypage/
features/mypage/
├── hooks/
├── model/
├── type/
└── ui/
├── account/ ← 계정 관련 UI
├── jeongtongsaju/ ← 정통사주 컴포넌트 (hero, pillars, daewoon 등)
├── manage/ ← 사주 관리 (아래 참조)
└── mypage/ ← 마이페이지 메인 UI
entities/user/
entities/saju/
entities/partner/ ← 파트너 CRUD 서버·클라이언트 통신

features/mypage/ui/manage/ 구조

manage/
├── saju-card-list.tsx ← 나의 사주 + 파트너 카드 목록
├── partner-add-modal.tsx ← 1단계: 이름·관계 입력 모달
├── saju-manage-partner-panel.tsx ← 2단계: 파트너 사주 정보 입력 패널
├── saju-manage-form.tsx ← 사주 정보 입력 폼 (공용)
├── saju-manage-summary.tsx ← 나의 사주 요약
└── saju-manage-birth-date-fields.tsx

파트너 사주 등록 — 2단계 UX

파트너 추가는 모달(1단계) → 패널(2단계) 순서의 명확한 2단계 흐름으로 동작합니다.

1단계: partner-add-modal.tsx

  • SajuCardList 상단의 '사주 추가' 버튼 클릭으로 진입
  • 입력: 이름·관계 (FRIEND | ROMANTIC | FAMILY | OTHER)
  • 완료 버튼 라벨: "완료 · 사주 정보 입력하기 →"
  • 모달 상단에 단계 표시 칩이 있음 (① 기본 정보 → ② 사주 정보)

2단계: saju-manage-partner-panel.tsx

  • 1단계 완료 직후 자동으로 활성화되어 사주 정보 폼이 표시됨
  • 패널 상단 헤더에 ② 사주 정보 입력 뱃지 표시
  • 아직 진행 전이면 LockedPartnerPanel(잠금 안내)이 대신 표시됨

모바일 레이아웃 순서

SajuCardList (나 + 파트너 카드)

LockedPartnerPanel / SajuManagePartnerPanel ← 파트너 섹션이 먼저

SajuManageSummary + SajuManageForm ← 나의 사주 폼

파트너 패널을 나의 사주 폼보다 위에 배치해 모바일에서 2단계 안내가 바로 보이게 합니다.

서브 페이지

경로설명
/mypage사용자 정보·메뉴 메인
/mypage/account닉네임, 프로필, 회원탈퇴
/mypage/saju-manage내 사주 기본 정보 조회·수정
/mypage/jeongtongsaju정통사주 결과 조회
/mypage/zodiac-compatibility띠별 궁합 점수 조회
/mypage/year-fortune신년운세 생성형 풀이 (전체화면)
/mypage/traditional-fortune정통사주 풀이 (전체화면)

규칙

  • 메뉴·배너·관리 섹션의 역할을 명확히 분리합니다.
  • 사용자 프로필 변경과 사주 정보 변경의 API/상태 경계를 섞지 않습니다.
  • 반복 카드·메뉴는 데이터 배열 기반 렌더링을 사용합니다.
  • 인증이 필요한 모든 화면 — 미로그인 시 리다이렉트 처리를 확인합니다.

생성형 풀이 (fullscreen)

year-fortune, traditional-fortune은 생성형 AI 응답을 스트리밍 방식으로 보여줍니다.

  • 응답 상태: PENDINGCOMPLETE
  • parseGeneratedInterpretationResponsemeta.backendStatus 보존
  • 전체화면 레이아웃((fullscreen))을 사용해 네비게이션 없이 표시

Turnstile 복구

  • /mypage/year-fortune/mypage/traditional-fortune 는 로그인 체크 외에 Turnstile 보호도 받습니다.
  • Turnstile 검증 쿠키가 만료되면:
    • 신년운세 조회 실패 → /verify?returnTo=/mypage/year-fortune
    • 정통사주/풀이 조회 실패 → /verify?returnTo=/mypage/traditional-fortune
  • 로그인 만료(401)와 Turnstile 만료(403 TURNSTILE_REQUIRED)는 다른 복구 흐름으로 취급합니다.