Conversation
|
Caution Review failedThe pull request is closed. WalkthroughV1 모임 API의 Swagger 태그를 버전별로 구분하고, 새로운 V2 모임 API 문서 인터페이스(GroupV2ControllerDocs, GroupImageV2ControllerDocs)를 추가했습니다. 컨트롤러들이 각각의 문서 인터페이스를 구현하도록 변경하고, MyMembership 레코드에서 isJoined 필드를 제거했습니다. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
추가 검토 고려사항:
Possibly related PRs
Poem
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro 📒 Files selected for processing (7)
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 |
There was a problem hiding this comment.
Pull request overview
This PR adds comprehensive Swagger/OpenAPI documentation for the V2 Group API endpoints. The documentation follows the interface-based pattern established in V1, providing clear API descriptions for group management operations including creation, retrieval, modification, and image handling.
Key changes:
- Created Swagger documentation interfaces for V2 group and group image endpoints
- Updated V1 API tags to include "V1" prefix for better version distinction
- Removed redundant
isJoinedfield fromMyMembershipDTO
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| GroupV2ControllerDocs.java | New Swagger documentation interface for V2 group operations (create, get, update, delete, attend, list) |
| GroupImageV2ControllerDocs.java | New Swagger documentation interface for V2 group image upload operations |
| GroupV2Controller.java | Implements the new GroupV2ControllerDocs interface and adds minor code formatting |
| GroupImageV2Controller.java | Implements the new GroupImageV2ControllerDocs interface and formats PostMapping spacing |
| MyMembership.java | Removes redundant isJoined boolean field, simplifies to 5 parameters |
| GroupImageControllerDocs.java | Updates Tag name from "모임 이미지 API" to "V1 모임 이미지 API" |
| GroupControllerDocs.java | Updates Tag name from "모임 API" to "V1 모임 API" |
Comments suppressed due to low confidence (7)
src/main/java/team/wego/wegobackend/group/v2/presentation/GroupV2Controller.java:161
- This method overrides GroupV2ControllerDocs.delete; it is advisable to add an Override annotation.
public ResponseEntity<Void> delete(
src/main/java/team/wego/wegobackend/group/v2/presentation/GroupV2Controller.java:130
- This method overrides GroupV2ControllerDocs.getMyGroups; it is advisable to add an Override annotation.
public ResponseEntity<ApiResponse<GetMyGroupListV2Response>> getMyGroups(
src/main/java/team/wego/wegobackend/group/v2/presentation/GroupV2Controller.java:119
- This method overrides GroupV2ControllerDocs.update; it is advisable to add an Override annotation.
public ResponseEntity<ApiResponse<UpdateGroupV2Response>> update(
src/main/java/team/wego/wegobackend/group/v2/presentation/GroupV2Controller.java:102
- This method overrides GroupV2ControllerDocs.getGroupList; it is advisable to add an Override annotation.
public ResponseEntity<ApiResponse<GetGroupListV2Response>> getGroupList(
src/main/java/team/wego/wegobackend/group/v2/presentation/GroupV2Controller.java:89
- This method overrides GroupV2ControllerDocs.left; it is advisable to add an Override annotation.
public ResponseEntity<ApiResponse<AttendGroupV2Response>> left(
src/main/java/team/wego/wegobackend/group/v2/presentation/GroupV2Controller.java:74
- This method overrides GroupV2ControllerDocs.attend; it is advisable to add an Override annotation.
public ResponseEntity<ApiResponse<AttendGroupV2Response>> attend(
src/main/java/team/wego/wegobackend/group/v2/presentation/GroupV2Controller.java:63
- This method overrides GroupV2ControllerDocs.getGroup; it is advisable to add an Override annotation.
public ResponseEntity<ApiResponse<GetGroupV2Response>> getGroup(
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| 모임에 사용할 이미지를 업로드하기 전에, S3 등의 스토리지에 미리 업로드하고 | ||
| 그 결과(이미지 URL, 키 등)를 응답으로 반환합니다. | ||
|
|
||
| - images(Arrays): 업로드할 이미지 파일 리스트 (최소 1개 이상) |
There was a problem hiding this comment.
The description uses "images(Arrays)" format to describe the parameter type, but this is inconsistent with the V1 GroupImageControllerDocs which simply uses "images:" without type annotation. For consistency with the existing codebase pattern (as seen in GroupImageControllerDocs.java:28), the parameter description should be "- images: 업로드할 이미지 파일 리스트 (최소 1개 이상)" without the "(Arrays)" suffix.
| - keyword: 모임 제목/내용 검색에 사용되는 선택값 | ||
| - cursor: 마지막으로 조회한 모임 ID(커서 기반 페이징) | ||
| - size: 한 번에 조회할 모임 개수 | ||
| - filter: 모임 상태 필터(ACTIVE, ARCHIVED, FULL) |
There was a problem hiding this comment.
The documentation states that the filter parameter accepts "ACTIVE, ARCHIVED, FULL", but according to the GroupListFilter enum (line 6-9), the valid values are "ACTIVE", "ARCHIVED", and "ALL" (not "FULL"). "FULL" is a GroupV2Status value, not a filter value. The documentation should list "ACTIVE, ARCHIVED, ALL" as valid filter options.
| - filter: 모임 상태 필터(ACTIVE, ARCHIVED, FULL) | |
| - filter: 모임 상태 필터(ACTIVE, ARCHIVED, ALL) |
|
|
||
| - cursor: 마지막으로 조회한 모임 ID(커서 기반 페이징) | ||
| - size: 한 번에 조회할 모임 개수 | ||
| - filter: 모임 상태 필터(ACTIVE, ARCHIVED, FULL) |
There was a problem hiding this comment.
The documentation states that the filter parameter accepts "ACTIVE, ARCHIVED, FULL", but according to the GroupListFilter enum (line 6-9), the valid values are "ACTIVE", "ARCHIVED", and "ALL" (not "FULL"). "FULL" is a GroupV2Status value, not a filter value. The documentation should list "ACTIVE, ARCHIVED, ALL" as valid filter options.
| - filter: 모임 상태 필터(ACTIVE, ARCHIVED, FULL) | |
| - filter: 모임 상태 필터(ACTIVE, ARCHIVED, ALL) |
| public interface GroupImageV2ControllerDocs { | ||
|
|
||
| @Operation( | ||
| summary = "V2 모임 이미지 사전 업로드 API", |
There was a problem hiding this comment.
The summary includes "V2" prefix ("V2 모임 이미지 사전 업로드 API"), but this is inconsistent with the V1 API documentation pattern where summaries don't include version prefixes. For example, V1 GroupImageControllerDocs uses "모임 이미지 사전 업로드 API" without the "V1" prefix. Since the @tag already indicates this is "V2 모임 이미지 API", the version prefix in individual operation summaries is redundant. Consider removing "V2" from the summary for consistency.
| type 값에 따라 조회 대상이 달라질 수 있습니다. | ||
| type: current / past / myPost | ||
| - current: 현재 참가 중인 모임 | ||
| - host: 내가 호스트인 모임 |
There was a problem hiding this comment.
The documentation describes type values as "current / past / myPost", but according to the MyGroupTypeV2 enum, the actual value should be "myPost" (camelCase), not "my_post" or another variant. However, there's an inconsistency: the enum defines MY_POST("myPost") but the documentation mentions "host" as one of the types on line 111, which doesn't exist in the MyGroupTypeV2 enum. The valid types are: "current", "myPost", and "past".
| - host: 내가 호스트인 모임 | |
| - myPost: 내가 호스트인 모임 |
| - includeStatuses가 있으면 filter의 기본 include는 무시됩니다. | ||
| - excludeStatuses가 있으면 해당 상태는 제외됩니다. | ||
| - include와 exclude가 동시에 충돌하면 exclude가 우선됩니다. | ||
| - myStatuses: 내 참여 상태(ATTEND, LEFT, KICKED,BANNED) |
There was a problem hiding this comment.
There's a spacing inconsistency in the myStatuses parameter description. On line 122, there's missing space between "KICKED," and "BANNED". It should be "ATTEND, LEFT, KICKED, BANNED" with spaces after commas for consistency.
| - myStatuses: 내 참여 상태(ATTEND, LEFT, KICKED,BANNED) | |
| - myStatuses: 내 참여 상태(ATTEND, LEFT, KICKED, BANNED) |
|
|
||
|
|
||
| @PostMapping(value="/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) | ||
| @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) |
There was a problem hiding this comment.
This method overrides GroupImageV2ControllerDocs.uploadImages; it is advisable to add an Override annotation.
| @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) | |
| @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) | |
| @Override |
| private final GroupV2DeleteService groupV2DeleteService; | ||
|
|
||
|
|
||
| @PostMapping("/create") |
There was a problem hiding this comment.
This method overrides GroupV2ControllerDocs.create; it is advisable to add an Override annotation.
| @PostMapping("/create") | |
| @PostMapping("/create") | |
| @Override |
📝 Pull Request
📌 PR 종류
해당하는 항목에 체크해주세요.
✨ 변경 내용
V2 모임 Swagger 작성
🔍 관련 이슈
🧪 테스트
변경된 기능에 대한 테스트 범위 또는 테스트 결과를 작성해주세요.
🚨 확인해야 할 사항 (Checklist)
PR을 제출하기 전에 아래 항목들을 확인해주세요.
🙋 기타 참고 사항
리뷰어가 참고하면 좋을 만한 추가 설명이 있다면 적어주세요.
Summary by CodeRabbit
릴리스 노트
문서화
새로운 기능
개선
✏️ Tip: You can customize this high-level summary in your review settings.