Skip to content

Conversation

@claudia99503
Copy link
Member

@claudia99503 claudia99503 commented Dec 23, 2025

📝 변경 사항

  • src/api/service/group-service/index.ts

    • 모임 목록/현재 모임/나의 모임/모임 이력에서 사용하는 getGroups, getMyGroups 조회 API를 apiV2 기반의 /api/v2/groups, /api/v2/groups/me 엔드포인트로 변경
  • src/types/service/group.ts

    • 그룹 v2 명세에 맞춰 GroupV2Status, GroupV2ListFilter, GroupV2Membership, GroupUserV2Status 등 v2 전용 타입 추가
  • 소망님꺼 건들임.. 확인 필요...😀🔫😀🔫


🔗 관련 이슈

Closes #


🧪 테스트 방법

  • 수동 테스트 검증(로컬 환경)
  • 유닛 테스트 검증
  • 통합 테스트 검증

📸 스크린샷 (선택)


📋 체크리스트

  • 관련 문서를 업데이트했습니다 (필요한 경우)
  • 테스트를 추가/수정했습니다 (필요한 경우)
  • Breaking change가 있다면 명시했습니다

💬 추가 코멘트


CodeRabbit Review는 자동으로 실행되지 않습니다.

Review를 실행하려면 comment에 아래와 같이 작성해주세요

@coderabbitai review

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 그룹 목록 조회 시 필터링 옵션 추가 (상태별 포함/제외, 그룹 검색)
    • 그룹 정보에 상태, 참여 정책, 남은 자리 수 등 새로운 필드 추가
    • 그룹 멤버 정보 확장 (역할, 상태, 참여 시간 등)
  • 버그 수정

    • 마이너 포매팅 개선

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 23, 2025

Important

Review skipped

Auto reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

워크스루

이 변경사항은 그룹 서비스 API를 V2 버전으로 마이그레이션하고, 그룹 상태, 조인 정책, 멤버십 정보 등을 포함한 포괄적인 타입 시스템 업데이트를 도입합니다. API 클라이언트는 apiV2로 전환되었으며, 타입 정의는 새로운 필드 및 필터링 옵션으로 확장되었습니다.

변경사항

응집도 / 파일 변경 요약
API 서비스 업데이트
src/api/service/group-service/index.ts
API 클라이언트를 api에서 apiV2로 마이그레이션. getGroupsgetMyGroups 함수가 /api/v2 엔드포인트를 사용하도록 업데이트. 함수 서명 및 제어 흐름은 변경 없음.
타입 시스템 V2 확장
src/types/service/group.ts
5개의 새로운 V2 타입 추가(GroupV2Status, GroupV2JoinPolicy, GroupV2ListFilter, GroupUserV2Status, GroupV2Membership). 기존 인터페이스 확대: GroupListItemResponse에 조인 정책, 상태, 남은 좌석 수 필드 추가; GetGroupsPayloadGetMyGroupsPayload에 필터링 옵션 추가; CreateGroupPayloadCreateGroupResponse에서 V2 타입 적용; GetGroupDetailsResponse에서 멤버 필드 구조 및 nullable 속성 업데이트.
UI 컴포넌트 포매팅
src/app/page.tsx
GroupList 컴포넌트 이후 불필요한 세미콜론 제거. 렌더링 및 동작에 변화 없음.

추정 코드 리뷰 노력

🎯 3 (Moderate) | ⏱️ ~20 분

추천 리뷰어

  • HopeFullee
  • Chiman2937

🐰 API를 V2로 업그레이드하니,
타입들이 춤을 춘다네,
그룹의 상태와 조인 정책도,
새로운 필드들이 반짝반짝,
마이그레이션의 길을 걸으며,
더욱 견고한 기초 위에 서다!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Description check ❓ Inconclusive PR 설명이 변경사항 섹션은 충분히 작성했으나, 관련 이슈 링크(Closes #)가 비어있고 테스트 방법이 체크되지 않았으며 비공식적인 메모('소망님꺼 건들임')가 포함되어 있습니다. 관련 이슈를 Closes # 형식으로 링크하고, 수행한 테스트를 명시하며, 비공식적인 메모를 제거하거나 정중하게 다시 작성해주세요.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 변경사항의 핵심을 정확히 반영합니다. 모임 관련 타입과 API를 V2 스펙으로 업데이트한다는 주요 변경사항을 명확하고 간결하게 표현합니다.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

github-actions bot commented Dec 23, 2025

🎭 Playwright Report

E2E Test가 성공적으로 완료되었습니다.

Test 요약 내용을 확인해주세요.

Status Build Log Updated (UTC)
✅ Ready View Build 2025-12-24 02:45:12

📊 Test Summary

  • ✅ Passed: 3
  • ❌ Failed: 0
  • ⏱️ Duration: 35.8s

📜 Test Details

✅ Passed Tests (3)
  • profile.test.ts (3)
    • [chromium] 존재하지 않는 프로필 페이지로 접속 시 404 redirect 되는 지 테스트
    • [firefox] 존재하지 않는 프로필 페이지로 접속 시 404 redirect 되는 지 테스트
    • [webkit] 존재하지 않는 프로필 페이지로 접속 시 404 redirect 되는 지 테스트

@github-actions
Copy link

github-actions bot commented Dec 23, 2025

🎨 Storybook Report

변경 사항이 없습니다

모든 Story가 이전 빌드와 동일합니다.

Status Storybook Build Log Updated (UTC)
✅ Unchanged View Storybook View Build 2025-12-24 02:44:04

@github-actions
Copy link

github-actions bot commented Dec 23, 2025

📊 Coverage Report

Status Build Log Updated (UTC)
✅ Ready View Build 2025-12-24 02:43:48

📉 #236main에 병합하면 coverage가 0.14% 감소합니다.

Coverage 요약

@@             Coverage Diff             @@
##             main     #236       +/-   ##
===========================================
- Coverage   38.13%   37.99%    -0.14%     
===========================================
  Files         181      181         0     
  Lines        7638     7667       +29     
  Branches      336      336         0     
===========================================
  Hits         2913     2913         0     
+ Misses       4725     4754       +29     

영향받은 파일

이 PR로 영향받은 파일이 없습니다

수정된 모든 파일이 현재 coverage를 유지했습니다.

@github-actions
Copy link

github-actions bot commented Dec 23, 2025

🚀 PR Preview Report

Build가 성공적으로 완료되었습니다.

Preview에서 변경사항을 확인하세요.

Status Preview Build Log Updated (UTC)
✅ Ready Visit Preview View Logs 2025-12-24 02:44:51

@claudia99503 claudia99503 added the Ready For Review! 리뷰 받을 준비가 되었습니다. label Dec 23, 2025
@claudia99503
Copy link
Member Author

왓더...

@HopeFullee
Copy link
Member

터짐 ㅅㄱ

@claudia99503
Copy link
Member Author

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 24, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/api/service/group-service/index.ts (2)

16-27: V2 필터 파라미터가 구현되지 않았습니다.

GetGroupsPayload 타입에 filter, includeStatuses, excludeStatuses 필드가 정의되어 있지만, 실제 쿼리 스트링 생성 로직에서 이 파라미터들이 처리되지 않고 있습니다.

🔎 V2 필터 파라미터 처리 추가 제안
  getGroups: async (payload: GetGroupsPayload): Promise<GetGroupsResponse> => {
    const params = new URLSearchParams();
    if (payload.keyword) {
      params.append('keyword', payload.keyword);
    }
    if (payload.cursor !== undefined) {
      params.append('cursor', payload.cursor.toString());
    }
    params.append('size', payload.size.toString());
+   if (payload.filter) {
+     params.append('filter', payload.filter);
+   }
+   if (payload.includeStatuses?.length) {
+     payload.includeStatuses.forEach(status => params.append('includeStatuses', status));
+   }
+   if (payload.excludeStatuses?.length) {
+     payload.excludeStatuses.forEach(status => params.append('excludeStatuses', status));
+   }

    return apiV2.get<GetGroupsResponse>(`/groups?${params.toString()}`);
  },

29-38: getMyGroups에서도 V2 필터 파라미터가 누락되었습니다.

GetMyGroupsPayload 타입에 정의된 filter, includeStatuses, excludeStatuses, myStatuses 필드들이 쿼리 스트링에 포함되지 않고 있습니다. 위의 getGroups와 동일하게 처리가 필요합니다.

🔎 V2 필터 파라미터 처리 추가 제안
  getMyGroups: async (payload: GetMyGroupsPayload): Promise<GetMyGroupsResponse> => {
    const params = new URLSearchParams();
    params.append('type', payload.type);
    if (payload.cursor !== undefined) {
      params.append('cursor', payload.cursor.toString());
    }
    params.append('size', payload.size.toString());
+   if (payload.filter) {
+     params.append('filter', payload.filter);
+   }
+   if (payload.includeStatuses?.length) {
+     payload.includeStatuses.forEach(status => params.append('includeStatuses', status));
+   }
+   if (payload.excludeStatuses?.length) {
+     payload.excludeStatuses.forEach(status => params.append('excludeStatuses', status));
+   }
+   if (payload.myStatuses?.length) {
+     payload.myStatuses.forEach(status => params.append('myStatuses', status));
+   }

    return apiV2.get<GetMyGroupsResponse>(`/groups/me?${params.toString()}`);
  },
🧹 Nitpick comments (1)
src/types/service/group.ts (1)

222-230: joinedMembers 항목 타입 추출을 고려해보세요.

joinedMembers 배열의 항목 구조가 GroupV2Membership과 유사하지만 nickName 필드가 추가되고 groupUserId 대신 userId를 사용합니다. 재사용성을 위해 별도의 인터페이스로 추출하는 것을 고려해볼 수 있습니다.

export interface GroupMemberInfo {
  userId: number;
  role: 'HOST' | 'MANAGER' | 'MEMBER';
  status: GroupUserV2Status;
  nickName: string;
  profileImage: string | null;
  joinedAt: string;
  leftAt: string | null;
}
📜 Review details

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4b2aba5 and b2cb85d.

📒 Files selected for processing (3)
  • src/api/service/group-service/index.ts
  • src/app/page.tsx
  • src/types/service/group.ts
🧰 Additional context used
🧬 Code graph analysis (2)
src/app/page.tsx (1)
src/components/pages/group-list/index.tsx (1)
  • GroupList (20-93)
src/api/service/group-service/index.ts (2)
src/api/core/index.ts (1)
  • apiV2 (116-116)
src/types/service/group.ts (2)
  • GetGroupsResponse (64-67)
  • GetMyGroupsResponse (82-85)
🔇 Additional comments (4)
src/app/page.tsx (1)

34-34: LGTM!

JSX 요소 뒤의 불필요한 세미콜론 제거는 올바른 포맷팅 수정입니다. 기능적 영향 없이 코드 품질이 개선되었습니다.

src/types/service/group.ts (3)

1-16: LGTM! V2 공통 타입이 잘 정의되었습니다.

Group V2 API 스펙에 맞는 상태값, 정책, 필터, 멤버십 타입들이 명확하게 정의되어 있습니다. 특히 GroupV2Membership 인터페이스가 역할과 상태를 포함하여 V2 멤버십 모델을 잘 반영하고 있습니다.


18-50: LGTM! V2 목록 응답 타입이 적절히 확장되었습니다.

joinPolicy, status, remainingSeats, joinable, myMembership 등 V2 필드들이 추가되었고, /api/v2/groups/me에서만 제공되는 myMembership이 선택적 필드로 올바르게 정의되어 있습니다.


87-114: 레거시 타입 유지에 대한 명확한 문서화가 좋습니다.

다른 파일에서 아직 사용 중인 레거시 Group 인터페이스를 유지하면서, 사용 중인 파일 목록을 명시한 주석은 향후 정리 작업에 도움이 됩니다.

Copy link
Member

@Chiman2937 Chiman2937 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~

@claudia99503 claudia99503 merged commit 7d31b9a into main Dec 24, 2025
7 checks passed
@claudia99503 claudia99503 deleted the minseo-feat/v2 branch December 24, 2025 02:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Ready For Review! 리뷰 받을 준비가 되었습니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants