본문으로 건너뛰기

커뮤니티 (/community)

사주 기반 커뮤니티 참가 관심 신청 및 기수 현황 조회 화면입니다.

관련 경로

app/(main)/community/page.tsx
widgets/community/
features/community/
├── hooks/
├── model/
└── ui/
├── community-hero.tsx ← 상단 히어로 배너
├── community-bottom-bar.tsx ← 하단 고정 행동 버튼 바
├── saju-recommendation.tsx ← 사주 기반 추천 섹션
├── step-topics.tsx ← 단계: 관심 주제 선택
├── step-contact-form.tsx ← 단계: 연락처 입력 폼
├── step-meeting-type.tsx ← 단계: 모임 유형 선택
└── step-progress.tsx ← 단계: 진행 상황 표시
entities/community/
├── server/ ← 기수 조회·관심신청·참가 (서버)
└── client/ ← 기수 조회·관심신청·참가 (클라이언트)
app/api/community/
├── cohorts/route.ts ← 기수 목록
├── interests/route.ts ← 관심 신청 목록
└── join/route.ts ← 참가 신청

단계별 UI 흐름

신청 과정은 step-* 컴포넌트로 나뉜 단계 기반 UI로 구성됩니다.

community-hero.tsx ← 페이지 상단: 기수 현황 + 타이틀

step-topics.tsx ← 단계 1: 관심 주제 선택 (다중 선택)
step-meeting-type.tsx ← 단계 2: 모임 유형 선택 (온라인/오프라인 등)
step-contact-form.tsx ← 단계 3: 연락처 입력 (이름, 연락처)
step-progress.tsx ← 단계 진행 상태 인디케이터

saju-recommendation.tsx ← 사주 기반 커뮤니티 추천 섹션
community-bottom-bar.tsx ← 하단 고정 CTA 버튼 바 (다음 / 신청 완료)

주요 API 흐름

/community 진입
→ GET /api/community/cohorts : 현재 기수 현황 조회
→ GET /api/community/interests: 내 관심 신청 목록

관심 신청 버튼 클릭
→ POST /api/community/interests

참가 신청
→ POST /api/community/join

Turnstile 복구

  • 커뮤니티 참가 신청은 Turnstile 보호 대상입니다.
  • 로그인은 유지되지만 Turnstile 검증 쿠키가 없거나 만료되면 POST /api/community/join403 TURNSTILE_REQUIRED를 반환합니다.
  • 이 경우 useCommunityFlow/verify?returnTo=/community 로 이동시키고, 재검증 성공 후 다시 커뮤니티 화면으로 복귀시킵니다.
  • 조회용 API(cohorts, interests)와 신청 API(join)의 실패 원인은 구분해서 봐야 합니다.