Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,23 @@ export default async function Page() {

`@/*`는 `./src/*`에 매핑됨 (tsconfig.json에서 설정)

## 프론트엔드 로직 수정 시 탐색 규칙

프론트엔드 로직(API 연동, 데이터 모델, 비즈니스 규칙)을 수정할 때는 **항상 프론트와 백엔드를 병렬로 탐색**한다.

- **프론트엔드**: 현재 프로젝트 (`./src/`)
- **백엔드**: `/Users/haseung/Documents/Dev/study-platform-mvp/src/` (Spring Boot)

병렬 탐색이 필요한 상황:
- API 요청/응답 타입 확인 (백엔드 DTO ↔ 프론트 타입 매핑)
- 에러 코드 의미 파악 (백엔드 exception 정의 확인)
- 비즈니스 규칙 검증 (백엔드 service/domain 로직 확인)
- 신규 API 연동 전 백엔드 엔드포인트 확인

탐색 방법: `Agent` 도구(subagent_type=Explore)를 두 개 병렬로 실행하거나, Grep/Glob을 동시에 호출.

---

## 주요 컨벤션

- **커밋 메시지**: `feat:`, `fix:`, `refactor:`, `style:`, `docs:`, `test:`, `chore:`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const StudyReviewModal = dynamic(

interface CompletedStudyReviewPageProps {
basePath: string;
studyType: 'GROUP_STUDY' | 'PREMIUM_STUDY' | 'ONE_ON_ONE_STUDY';
studyType: 'GROUP_STUDY' | 'MENTOR_STUDY' | 'ONE_ON_ONE_STUDY';
studyTypeName: string;
hideTabNav?: boolean;
hideEmptyMessage?: boolean;
Expand Down Expand Up @@ -65,7 +65,7 @@ function StudyRoleSection({
))}
</ul>
) : (
<div className="font-designer-14r text-text-subtle flex h-200 items-center justify-center rounded-100 border border-border-subtle text-center">
<div className="font-designer-14r text-text-subtle flex h-200 items-center justify-center rounded-100 text-center">
{emptyMessage}
</div>
)}
Expand Down
2 changes: 1 addition & 1 deletion src/app/(service)/(my)/my-study-review/mentor/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default function MentorReviewPage() {
return (
<CompletedStudyReviewPage
basePath="/my-study-review/mentor"
studyType="PREMIUM_STUDY"
studyType="MENTOR_STUDY"
studyTypeName="멘토스터디"
/>
);
Expand Down
2 changes: 1 addition & 1 deletion src/components/pages/premium-study-list-page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export default function PremiumStudyListPage() {
reviewStudyId,
reviewDetailInfo,
reviewBasicInfo,
} = useGroupStudyReviewReminder({ studyType: 'PREMIUM_STUDY' });
} = useGroupStudyReviewReminder({ studyType: 'MENTOR_STUDY' });

const {
searchQuery,
Expand Down
3 changes: 2 additions & 1 deletion src/components/section/my-participating-studies-section.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ export default function MyParticipatingStudiesSection({
// memberId가 없으면 enabled: false로 설정하여 실제 API 호출은 하지 않음
const { data: myStudiesData } = useMemberStudyListQuery({
memberId: memberId ?? 0,
studyType: classification,
studyType:
classification === 'PREMIUM_STUDY' ? 'MENTOR_STUDY' : classification,
studyStatus: 'NOT_COMPLETED', // 진행 중과 모집 중 모두 포함
inProgressPage: 1,
inProgressPageSize: 100, // 충분히 많이 가져오기
Expand Down
4 changes: 2 additions & 2 deletions src/hooks/common/use-group-study-review-reminder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import { groupStudyReviewQueryKeys } from '@/hooks/queries/group-study-review-ap
import { useMemberStudyListQuery } from '@/hooks/queries/use-member-study-list-query';

interface UseGroupStudyReviewReminderOptions {
/** 'GROUP_STUDY' | 'PREMIUM_STUDY' — 목록 페이지 유형에 맞게 지정 */
studyType: 'GROUP_STUDY' | 'PREMIUM_STUDY';
/** 'GROUP_STUDY' | 'MENTOR_STUDY' — 목록 페이지 유형에 맞게 지정 */
studyType: 'GROUP_STUDY' | 'MENTOR_STUDY';
}

const REVIEW_AVAILABLE_DAYS = 7;
Expand Down
2 changes: 1 addition & 1 deletion src/types/api/group-study.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ export interface GroupStudyMyStatusResponse {
// 회원의 스터디 리스트 조회 API 타입
export interface MemberStudyListRequest {
memberId: number;
studyType?: 'BOTH' | 'GROUP_STUDY' | 'ONE_ON_ONE_STUDY' | 'PREMIUM_STUDY';
studyType?: 'BOTH' | 'GROUP_STUDY' | 'ONE_ON_ONE_STUDY' | 'MENTOR_STUDY';
studyStatus?: 'BOTH' | 'NOT_COMPLETED' | 'COMPLETED';
inProgressPage?: number;
inProgressPageSize?: number;
Expand Down
Loading