You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
두 만남 목록을 공통 GroupMeetingResponse와 내부 GroupMeetingResult로 통일했습니다.
만남 항목에는 요청자 기준 isMeetingOwner, 참여자 항목에는 nickname과 해당 참여자 기준 isMeetingOwner를 제공합니다.
현재 만남장을 참여자 목록의 맨 앞에 배치하고, 나머지는 참여자 ID 오름차순을 유지합니다. 위임 이후에는 새 만남장을 기준으로 반환합니다.
두 목록의 참여자와 사용자를 일괄 조회하고, 만남장 관계를 fetch 조회해 N+1을 방지했습니다.
Swagger 스키마·응답 예시와 기존 서비스·MVC·JPA 테스트를 반영했습니다.
테스트
./gradlew ktlintCheck
./gradlew test --tests org.com.belog.group.service.GroupDetailServiceTest --tests org.com.belog.group.controller.GroupControllerTest
./gradlew test
결과: 모두 통과했습니다. 최종 전체 테스트 623개에서 실패·오류·건너뛴 테스트가 없습니다.
요청자와 참여자의 만남장 여부, 만남장 위임 후 정렬, 만남별 참여자 분리 및 참여자 수, 탈퇴 사용자 표시, JSON 필드 구조와 fetch 조회를 검증했습니다.
API 변경
대상: GET /api/v1/groups/{groupId}. URL·요청·상태 코드는 유지합니다.
schedulingMeetings[]와 activeMeetings[]는 동일하게 meetingId, name, isMeetingOwner, participants, participantCount를 반환합니다.
participants[]에는 nickname, isMeetingOwner를 반환하며 현재 만남장이 먼저 옵니다.
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.
📝 Walkthrough
그룹 상세 API의 조율 중·확정 만남 목록을 공통 응답 형식으로 변경했습니다. 각 만남에 요청자의 만남장 여부, 참여자별 닉네임과 만남장 여부, 참여자 수를 포함합니다. 만남장 및 사용자 조회와 관련 테스트도 갱신했습니다.
Changes: 그룹 상세 만남 정보
Layer / File(s)
Summary
만남 결과 구성 src/main/kotlin/org/com/belog/group/service/result/GroupDetailResult.kt, src/main/kotlin/org/com/belog/meeting/repository/MeetingRepository.kt, src/main/kotlin/org/com/belog/group/service/GroupService.kt, src/test/kotlin/org/com/belog/group/service/GroupDetailServiceTest.kt, src/test/kotlin/org/com/belog/meeting/repository/MeetingRepositoryTest.kt
조율 중·확정 만남 결과를 공통 타입으로 구성합니다. 참여자를 만남장 우선으로 정렬하고, 만남장과 사용자를 함께 조회합니다. 서비스 및 저장소 테스트는 요청자별 만남장 여부, 위임 이후 정렬과 역할, 탈퇴 사용자 표시, 관계 초기화를 검증합니다.
그룹 상세 응답과 검증 src/main/kotlin/org/com/belog/group/controller/dto/response/GroupDetailResponse.kt, src/main/kotlin/org/com/belog/group/controller/swagger/GroupSwagger.kt, src/test/kotlin/org/com/belog/group/controller/GroupControllerTest.kt
두 만남 목록을 공통 응답 DTO로 변환합니다. 기존 확정 만남의 시작일·종료일과 조율 중 만남의 닉네임 배열을 제거하고, 참여자 정보 객체를 반환합니다. Swagger 예시와 응답 테스트를 갱신합니다.
sequenceDiagram
participant GroupService
participant MeetingRepository
participant GroupDetailResponse
participant API Client
API Client->>GroupService: 그룹 상세 조회
GroupService->>MeetingRepository: 조율 중·확정 만남 조회
MeetingRepository-->>GroupService: owner와 user가 로드된 만남 목록
GroupService->>GroupService: 참여자별 정보와 공통 만남 결과 구성
GroupService->>GroupDetailResponse: GroupDetailResult 변환
GroupDetailResponse-->>API Client: 공통 만남 응답 반환
Loading
Merge Risk:⚪ Minimal · up to eebc1
The group-detail response changes are ready for normal merge checks. Frontend consumers still need the stated response-model update.
Pre-merge checks · 2 · 3
Failed checks (3 warnings)
Check name
Status
Explanation
Resolution
Linked Issues check
직접 연결된 #161은 두 목록 항목에 요청자 기준 isMeetingOwner와 meetingOwnerNickname을 추가하고 기존 응답 필드를 유지하도록 요구합니다. 현재 diff는 isMeetingOwner를 추가했지만 meetingOwnerNickname을 반환하지 않습니다. 대신 참여자별 nickname과 `isMeetingOwn…
#161의 현재 요구사항을 기준으로 두 목록 항목에 meetingOwnerNickname을 추가하고 기존 participantNicknames, startDate, endDate를 유지해야 합니다. 참여자별 응답 구조를 최종 계약으로 사용하려면 #161의 수용 기준과 API 예시를 먼저 그 계약에 맞게 갱신해야 합니다.
Out of Scope Changes check
#161의 범위는 만남장 정보 추가이며 기존 응답 필드와 조회 동작의 유지입니다. 이 PR은 해당 목적에 필요하지 않은 activeMeetings의 startDate·endDate 제거와 schedulingMeetings의 participantNicknames 교체를 포함합니다. 두 변경은 기존 API 계약을 깨며 직접 연결 이슈의 명시적…
만남장 정보 추가에 필요한 변경만 남기고 기존 응답 필드를 보존해야 합니다. 필드 제거와 참여자 구조 교체가 의도된 제품 요구사항이면 관련 이슈에 별도 범위를 명시한 뒤 해당 API 변경을 분리하거나 승인된 요구사항으로 갱신해야 합니다.
Docstring Coverage
Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 20 functions across 8 files.
Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed checks (2 passed)
Check name
Status
Explanation
Title check
제목은 그룹 조회 만남 목록에 참여자 정보와 만남장 여부를 제공하는 주요 변경을 정확하고 간결하게 설명합니다.
Description check
개요, 작업 내용, 테스트 결과, API 변경, DB 및 설정 변경, 리뷰 참고 사항, 체크리스트를 모두 작성했습니다. 응답 필드 추가·교체·제거와 호환성 영향을 명시했습니다.
Full details: Linked Issues check
Explanation
직접 연결된 #161은 두 목록 항목에 요청자 기준 isMeetingOwner와 meetingOwnerNickname을 추가하고 기존 응답 필드를 유지하도록 요구합니다. 현재 diff는 isMeetingOwner를 추가했지만 meetingOwnerNickname을 반환하지 않습니다. 대신 참여자별 nickname과 isMeetingOwner를 도입하고, participantNicknames, startDate, endDate를 제거했습니다. Meeting.isOwnedBy, 일괄 참여자 조회, fetch 조회, Swagger와 테스트 갱신은 요구사항 일부를 충족하지만 위 계약 변경을 충족하지 못합니다.
Full details: Out of Scope Changes check
Explanation
#161의 범위는 만남장 정보 추가이며 기존 응답 필드와 조회 동작의 유지입니다. 이 PR은 해당 목적에 필요하지 않은 activeMeetings의 startDate·endDate 제거와 schedulingMeetings의 participantNicknames 교체를 포함합니다. 두 변경은 기존 API 계약을 깨며 직접 연결 이슈의 명시적 범위를 벗어납니다.
Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
Commit to this branch
Create a new PR
🧪 Generate unit tests (beta)
Commit to this branch
Create a new PR
Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
개요
그룹 상세 화면에서 요청자의 만남장 여부에 따라 버튼을 표시하고, 참여자 닉네임 옆에 만남장 표시를 할 수 있도록 만남 목록에 필요한 정보를 제공합니다. 일정 조율 중인 만남과 진행 중인 만남은 동일한 응답 구조를 사용합니다.
작업 내용
GroupMeetingResponse와 내부GroupMeetingResult로 통일했습니다.isMeetingOwner, 참여자 항목에는nickname과 해당 참여자 기준isMeetingOwner를 제공합니다.테스트
API 변경
GET /api/v1/groups/{groupId}. URL·요청·상태 코드는 유지합니다.schedulingMeetings[]와activeMeetings[]는 동일하게meetingId,name,isMeetingOwner,participants,participantCount를 반환합니다.participants[]에는nickname,isMeetingOwner를 반환하며 현재 만남장이 먼저 옵니다.schedulingMeetings[].participantNicknames를participants로 교체했습니다.activeMeetings[]에 참여자 목록·참여자 수를 추가하고startDate,endDate는 제거했습니다.DB 및 설정 변경
리뷰 시 참고 사항
isMeetingOwner는 로그인 사용자 기준이며, 참여자 항목의 값은 각 참여자 기준입니다. 그룹 방장 여부나 최초 생성자가 아닌 현재Meeting.owner로 판단합니다.meetingOwnerNickname대신 참여자별 만남장 여부를 제공하도록 최종 요구사항을 반영했습니다.체크리스트
Summary by CodeRabbit