@Transactional(readOnly = true)
    public ReceivedReviewsResponse findReceivedReviews(String reviewRequestCode, String groupAccessCode) {
        ReviewGroup reviewGroup = reviewGroupRepository.findByReviewRequestCode(reviewRequestCode)
                .orElseThrow(() -> new ReviewGroupNotFoundByReviewRequestCodeException(reviewRequestCode));

        if (!reviewGroup.matchesGroupAccessCode(groupAccessCode)) {
            throw new ReviewGroupUnauthorizedException(reviewGroup.getId());
        }

        List<ReceivedReviewResponse> reviewResponses =
                reviewRepository.findReceivedReviewsByGroupId(reviewGroup.getId())
                        .stream()
                        .map(this::createReceivedReviewResponse)
                        .toList();

        return new ReceivedReviewsResponse(reviewGroup.getReviewee(), reviewGroup.getProjectName(), reviewResponses);
    }
@Test
    void 그룹_액세스_코드가_일치하지_않는_경우_예외가_발생한다() {
        // given
        String reviewRequestCode = "code";
        String groupAccessCode = "1234";
        reviewGroupRepository.save(new ReviewGroup("커비", "리뷰미", reviewRequestCode, groupAccessCode));

        // when, then
        assertThatThrownBy(() -> reviewService.findReceivedReviews(reviewRequestCode, "5678"))
                .isInstanceOf(ReviewGroupUnauthorizedException.class);
    }