본문으로 건너뛰기

사주 입력 (/saju)

사주 정보를 입력하는 흐름입니다. 로그인 여부에 따라 서버 저장과 임시저장(draft) 경로가 나뉩니다.

관련 경로

app/(main)/saju/page.tsx
widgets/saju-input/
features/saju-input/
├── hooks/ ← 폼 상태, 스텝, 검증, 제출 로직
├── model/ ← 응답 가공, 파생 계산
├── type/
├── form/client/ ← 폼 UI (클라이언트 컴포넌트)
└── step/ ← 스텝별 UI
entities/saju/
app/api/saju/route.ts
app/api/saju/draft/route.ts

입력 흐름

/saju 진입

├── 로그인 상태 → POST /api/saju → 저장 후 /saju/result 이동

└── 미로그인 → POST /api/saju/draft → localStorage 임시저장
→ 로그인 후 draft 복원 → 서버 저장

폼 구조

사주 입력은 스텝 기반 폼입니다. 스텝 상태, 검증, 제출은 모두 features/saju-input/hooks에서 관리합니다.

// ✅ 올바른 구조
// hooks/useSajuInputForm.ts → 상태·검증·제출
// form/client/ → props 기반 렌더링만
// page.tsx → 위젯 조립

체크리스트

작업 전 확인 사항:

  • 서버 제출인지 로컬 draft 저장인지 구분했는가
  • /saju/result로 넘어가는 데이터 전달 방식을 확인했는가
  • 인증 쿠키(saju_access_token) 요구 여부를 확인했는가
  • API 응답 가공을 UI 컴포넌트에 직접 넣지 않았는가