-
Notifications
You must be signed in to change notification settings - Fork 0
[Feat] 모임 관련 타입 및 목록 API를 V2 스펙으로 업데이트 #236
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the 워크스루이 변경사항은 그룹 서비스 API를 V2 버전으로 마이그레이션하고, 그룹 상태, 조인 정책, 멤버십 정보 등을 포함한 포괄적인 타입 시스템 업데이트를 도입합니다. API 클라이언트는 apiV2로 전환되었으며, 타입 정의는 새로운 필드 및 필터링 옵션으로 확장되었습니다. 변경사항
추정 코드 리뷰 노력🎯 3 (Moderate) | ⏱️ ~20 분 추천 리뷰어
시
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
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. Comment |
🎭 Playwright Report✨ E2E Test가 성공적으로 완료되었습니다. Test 요약 내용을 확인해주세요.
📊 Test Summary
📜 Test Details✅ Passed Tests (3)
|
🎨 Storybook Report✅ 변경 사항이 없습니다 모든 Story가 이전 빌드와 동일합니다.
|
📊 Coverage Report
📉 #236을 main에 병합하면 coverage가 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를 유지했습니다. |
🚀 PR Preview Report✨ Build가 성공적으로 완료되었습니다. Preview에서 변경사항을 확인하세요.
|
|
왓더... |
|
터짐 ㅅㄱ |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this 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
📒 Files selected for processing (3)
src/api/service/group-service/index.tssrc/app/page.tsxsrc/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인터페이스를 유지하면서, 사용 중인 파일 목록을 명시한 주석은 향후 정리 작업에 도움이 됩니다.
2551ade to
192e222
Compare
5f5c498 to
e2b1b49
Compare
Chiman2937
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨습니다~
📝 변경 사항
src/api/service/group-service/index.tsgetGroups,getMyGroups조회 API를apiV2기반의/api/v2/groups,/api/v2/groups/me엔드포인트로 변경src/types/service/group.tsGroupV2Status,GroupV2ListFilter,GroupV2Membership,GroupUserV2Status등 v2 전용 타입 추가소망님꺼 건들임.. 확인 필요...😀🔫😀🔫
🔗 관련 이슈
Closes #
🧪 테스트 방법
📸 스크린샷 (선택)
📋 체크리스트
💬 추가 코멘트
CodeRabbit Review는 자동으로 실행되지 않습니다.
Review를 실행하려면 comment에 아래와 같이 작성해주세요
Summary by CodeRabbit
릴리스 노트
새로운 기능
버그 수정
✏️ Tip: You can customize this high-level summary in your review settings.