@Transactional
    public MeetingConfirmResponse create(String uuid, long attendeeId, MeetingConfirmRequest request) {
        LocalDateTime startDateTime = request.toStartDateTime();
        LocalDateTime endDateTime = request.toEndDateTime();

        Meeting meeting = meetingRepository.findByUuid(uuid)
                .orElseThrow(() -> new MomoException(MeetingErrorCode.INVALID_UUID));

        Attendee attendee = attendeeRepository.findByIdAndMeeting(attendeeId, meeting)
                .orElseThrow(() -> new MomoException(AttendeeErrorCode.INVALID_ATTENDEE));

        validateHostPermission(attendee);
        validateNotAlreadyConfirmed(meeting);
        validateMeetingLocked(meeting);
        validateTimeRange(meeting, startDateTime, endDateTime);
        validateDateRange(meeting, startDateTime, endDateTime);

        ConfirmedMeeting confirmedMeeting = new ConfirmedMeeting(meeting, startDateTime, endDateTime);
        confirmedMeetingRepository.save(confirmedMeeting);
        return MeetingConfirmResponse.from(confirmedMeeting);
    }
@DisplayName("약속에 포함되지 않은 시간의 일정을 확정 시 예외가 발생한다.")
    @Test
    void confirmScheduleThrowsExceptionWhen_InvalidTime() {
        MeetingConfirmRequest request = new MeetingConfirmRequest(
                today.getDate(),
                Timeslot.TIME_2200.startTime(),
                today.getDate(),
                Timeslot.TIME_2300.startTime()
        );

        assertThatThrownBy(() -> meetingConfirmService.create(meeting.getUuid(), attendee.getId(), request))
                .isInstanceOf(MomoException.class)
                .hasMessage(MeetingErrorCode.INVALID_DATETIME_RANGE.message());
    }