Skip to content

[RELEASE] v0.2.2 - #114

Merged
ydking0911 merged 24 commits into
productionfrom
develop
Jun 25, 2026
Merged

[RELEASE] v0.2.2#114
ydking0911 merged 24 commits into
productionfrom
develop

Conversation

@ydking0911

@ydking0911ydking0911 commented Jun 25, 2026

Copy link
Copy Markdown
Member

📝 Pull Request Template

📌 제목

Release 0.2.2


✅ PR 체크리스트

PR이 다음 요구 사항을 충족하는지 확인해주세요.

  • 🔹 커밋 메시지 컨벤션을 준수했습니다. (Commit message convention 참고)
  • 🔹 변경 사항에 대한 테스트를 수행했습니다. (버그 수정/기능 테스트)
  • 🔹 관련 문서를 업데이트했습니다. (필요한 경우)

📜 기타

리뷰어가 알면 좋을 추가 사항을 적어주세요.

  • 기능 개선 아이디어
  • 코드 리팩토링 필요 여부 등

Summary by CodeRabbit

  • New Features

    • 방 목록에 메모, 호스트 정보, 추가 속성을 포함하고, 페이지 응답에 전체 개수를 함께 제공합니다.
    • 추천 방 목록 조회가 추가되어 체크리스트 기반으로 맞춤 방을 보여줍니다.
    • 캘린더 이벤트에 내용, 시간, 유형 정보가 포함됩니다.
    • 비밀번호 재설정 이메일 발송, 코드 검증, 재설정 기능이 추가되었습니다.
  • Bug Fixes

    • 회원가입/비밀번호 재설정 시 이메일 인증 상태를 더 엄격하게 확인합니다.
    • 방 수정 시 제목과 메모가 함께 반영됩니다.

@ydking0911ydking0911 self-assigned this Jun 25, 2026
@coderabbitai

coderabbitaiBot commented Jun 25, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 039b45a1-87a7-416a-9a94-26fb10cd9ede

📥 Commits

Reviewing files that changed from the base of the PR and between 0c015be and 07ca492.

📒 Files selected for processing (68)
  • .github/workflows/cicd.yml
  • src/main/java/com/project/dorumdorum/domain/calendar/application/dto/response/CalendarEventResponse.java
  • src/main/java/com/project/dorumdorum/domain/calendar/application/mapper/CalendarEventMapper.java
  • src/main/java/com/project/dorumdorum/domain/calendar/domain/entity/CalendarEvent.java
  • src/main/java/com/project/dorumdorum/domain/calendar/domain/entity/CalendarEventType.java
  • src/main/java/com/project/dorumdorum/domain/checklist/application/mapper/UserChecklistMapper.java
  • src/main/java/com/project/dorumdorum/domain/checklist/domain/repository/RoomRuleRepository.java
  • src/main/java/com/project/dorumdorum/domain/checklist/domain/repository/UserChecklistRepository.java
  • src/main/java/com/project/dorumdorum/domain/room/application/dto/request/RoomCreateRequest.java
  • src/main/java/com/project/dorumdorum/domain/room/application/dto/request/UpdateRoomTitleRequest.java
  • src/main/java/com/project/dorumdorum/domain/room/application/dto/response/FindRoomsPageResponse.java
  • src/main/java/com/project/dorumdorum/domain/room/application/dto/response/FindRoomsResponse.java
  • src/main/java/com/project/dorumdorum/domain/room/application/dto/response/RecommendedRoomResponse.java
  • src/main/java/com/project/dorumdorum/domain/room/application/dto/response/RecommendedRoomsPageResponse.java
  • src/main/java/com/project/dorumdorum/domain/room/application/usecase/FindRoomsUseCase.java
  • src/main/java/com/project/dorumdorum/domain/room/application/usecase/LoadRecommendedRoomsUseCase.java
  • src/main/java/com/project/dorumdorum/domain/room/application/usecase/UpdateRoomTitleUseCase.java
  • src/main/java/com/project/dorumdorum/domain/room/domain/entity/Room.java
  • src/main/java/com/project/dorumdorum/domain/room/domain/entity/RoomType.java
  • src/main/java/com/project/dorumdorum/domain/room/domain/repository/RoomQueryRepository.java
  • src/main/java/com/project/dorumdorum/domain/room/domain/service/RoomService.java
  • src/main/java/com/project/dorumdorum/domain/room/infra/repository/RoomRepositoryImpl.java
  • src/main/java/com/project/dorumdorum/domain/room/ui/FindRoomsController.java
  • src/main/java/com/project/dorumdorum/domain/room/ui/LoadRecommendedRoomsController.java
  • src/main/java/com/project/dorumdorum/domain/room/ui/spec/FindRoomsApiSpec.java
  • src/main/java/com/project/dorumdorum/domain/room/ui/spec/LoadRecommendedRoomsApiSpec.java
  • src/main/java/com/project/dorumdorum/domain/user/application/dto/request/ResetPasswordRequest.java
  • src/main/java/com/project/dorumdorum/domain/user/application/dto/request/SignUpRequest.java
  • src/main/java/com/project/dorumdorum/domain/user/application/usecase/ResetPasswordUseCase.java
  • src/main/java/com/project/dorumdorum/domain/user/application/usecase/SendPasswordResetEmailUseCase.java
  • src/main/java/com/project/dorumdorum/domain/user/application/usecase/SendVerificationEmailUseCase.java
  • src/main/java/com/project/dorumdorum/domain/user/application/usecase/SignUpUseCase.java
  • src/main/java/com/project/dorumdorum/domain/user/application/usecase/VerifyEmailUseCase.java
  • src/main/java/com/project/dorumdorum/domain/user/application/usecase/VerifyPasswordResetCodeUseCase.java
  • src/main/java/com/project/dorumdorum/domain/user/domain/entity/User.java
  • src/main/java/com/project/dorumdorum/domain/user/domain/repository/EmailVerifiedRepository.java
  • src/main/java/com/project/dorumdorum/domain/user/domain/repository/PasswordResetCodeRepository.java
  • src/main/java/com/project/dorumdorum/domain/user/domain/repository/PasswordResetVerifiedRepository.java
  • src/main/java/com/project/dorumdorum/domain/user/infra/repository/RedisEmailVerifiedRepository.java
  • src/main/java/com/project/dorumdorum/domain/user/infra/repository/RedisPasswordResetCodeRepository.java
  • src/main/java/com/project/dorumdorum/domain/user/infra/repository/RedisPasswordResetVerifiedRepository.java
  • src/main/java/com/project/dorumdorum/domain/user/ui/ResetPasswordController.java
  • src/main/java/com/project/dorumdorum/domain/user/ui/SendPasswordResetEmailController.java
  • src/main/java/com/project/dorumdorum/domain/user/ui/SendVerificationEmailController.java
  • src/main/java/com/project/dorumdorum/domain/user/ui/VerifyEmailController.java
  • src/main/java/com/project/dorumdorum/domain/user/ui/VerifyPasswordResetCodeController.java
  • src/main/java/com/project/dorumdorum/domain/user/ui/spec/ResetPasswordApiSpec.java
  • src/main/java/com/project/dorumdorum/domain/user/ui/spec/SendPasswordResetEmailApiSpec.java
  • src/main/java/com/project/dorumdorum/domain/user/ui/spec/VerifyPasswordResetCodeApiSpec.java
  • src/main/java/com/project/dorumdorum/global/alert/DiscordAlertSender.java
  • src/main/java/com/project/dorumdorum/global/exception/code/status/UserErrorStatus.java
  • src/main/resources/application-dev.yml
  • src/main/resources/application-prod.yml
  • src/main/resources/application.yml
  • src/test/java/com/project/dorumdorum/domain/calendar/unit/response/CalendarEventResponseTest.java
  • src/test/java/com/project/dorumdorum/domain/calendar/unit/ui/LoadCalendarEventsControllerTest.java
  • src/test/java/com/project/dorumdorum/domain/calendar/unit/usecase/LoadCalendarEventsUseCaseTest.java
  • src/test/java/com/project/dorumdorum/domain/room/unit/infra/repository/RoomRepositoryImplTest.java
  • src/test/java/com/project/dorumdorum/domain/room/unit/service/RoomServiceTest.java
  • src/test/java/com/project/dorumdorum/domain/room/unit/ui/CreateRoomControllerTest.java
  • src/test/java/com/project/dorumdorum/domain/room/unit/ui/FindRoomsControllerTest.java
  • src/test/java/com/project/dorumdorum/domain/room/unit/ui/UpdateRoomTitleControllerTest.java
  • src/test/java/com/project/dorumdorum/domain/room/unit/usecase/CreateRoomUseCaseTest.java
  • src/test/java/com/project/dorumdorum/domain/room/unit/usecase/FindRoomsUseCaseTest.java
  • src/test/java/com/project/dorumdorum/domain/room/unit/usecase/LoadMyRoomsUseCaseTest.java
  • src/test/java/com/project/dorumdorum/domain/room/unit/usecase/UpdateRoomTitleUseCaseTest.java
  • src/test/java/com/project/dorumdorum/domain/user/unit/usecase/SignUpUseCaseTest.java
  • src/test/java/com/project/dorumdorum/domain/user/unit/usecase/VerifyEmailUseCaseTest.java

Walkthrough

캘린더 이벤트 응답과 매핑이 확장되고, 방 생성·검색·추천 흐름과 저장소 계약이 바뀌었으며, 이메일 인증·비밀번호 재설정 API와 Redis 기반 상태 저장이 추가되었습니다. CI Redis 서비스, 일부 런타임 설정, 그리고 알림 중복 처리도 함께 변경되었습니다.

Changes

Calendar Event Schema

Layer / File(s)Summary
이벤트 엔티티와 응답 필드 확장
src/main/java/com/project/dorumdorum/domain/calendar/domain/entity/*, src/main/java/com/project/dorumdorum/domain/calendar/application/dto/response/CalendarEventResponse.java, src/main/java/com/project/dorumdorum/domain/calendar/application/mapper/CalendarEventMapper.java
CalendarEventcontent, eventTime, eventType이 추가되고, CalendarEventResponseCalendarEventMapper가 새 필드를 노출합니다.
캘린더 응답 테스트 갱신
src/test/java/com/project/dorumdorum/domain/calendar/unit/response/CalendarEventResponseTest.java, src/test/java/com/project/dorumdorum/domain/calendar/unit/ui/LoadCalendarEventsControllerTest.java, src/test/java/com/project/dorumdorum/domain/calendar/unit/usecase/LoadCalendarEventsUseCaseTest.java
캘린더 응답 테스트가 확장된 CalendarEventResponse 생성자 시그니처를 사용하도록 바뀝니다.

Room Domain Updates

Layer / File(s)Summary
방 생성·수정 노트 반영
src/main/java/com/project/dorumdorum/domain/room/application/dto/request/*, src/main/java/com/project/dorumdorum/domain/room/domain/entity/*, src/main/java/com/project/dorumdorum/domain/room/domain/service/RoomService.java, src/main/java/com/project/dorumdorum/domain/room/application/usecase/UpdateRoomTitleUseCase.java, src/test/java/com/project/dorumdorum/domain/room/unit/ui/CreateRoomControllerTest.java, src/test/java/com/project/dorumdorum/domain/room/unit/usecase/CreateRoomUseCaseTest.java, src/test/java/com/project/dorumdorum/domain/room/unit/ui/UpdateRoomTitleControllerTest.java, src/test/java/com/project/dorumdorum/domain/room/unit/usecase/UpdateRoomTitleUseCaseTest.java, src/test/java/com/project/dorumdorum/domain/room/unit/service/RoomServiceTest.java
Room 생성/수정 요청에 notes가 추가되고, Room과 수정 유스케이스가 notes를 저장하며, 관련 테스트가 새 시그니처로 맞춰집니다.
방 목록 검색 응답과 페이지 계약
src/main/java/com/project/dorumdorum/domain/room/application/dto/response/*, src/main/java/com/project/dorumdorum/domain/room/application/usecase/FindRoomsUseCase.java, src/main/java/com/project/dorumdorum/domain/room/domain/repository/RoomQueryRepository.java, src/main/java/com/project/dorumdorum/domain/room/ui/*, src/test/java/com/project/dorumdorum/domain/room/unit/usecase/FindRoomsUseCaseTest.java, src/test/java/com/project/dorumdorum/domain/room/unit/ui/FindRoomsControllerTest.java, src/test/java/com/project/dorumdorum/domain/room/unit/service/RoomServiceTest.java
방 목록 조회가 FindRoomsPageResponse로 바뀌고, 첫 페이지에서 totalCount를 계산하는 흐름과 관련 API/테스트가 갱신됩니다.
방 조회 리포지토리와 검색 집계
src/main/java/com/project/dorumdorum/domain/room/domain/service/RoomService.java, src/main/java/com/project/dorumdorum/domain/room/infra/repository/RoomRepositoryImpl.java, src/test/java/com/project/dorumdorum/domain/room/unit/infra/repository/RoomRepositoryImplTest.java, src/test/java/com/project/dorumdorum/domain/room/unit/service/RoomServiceTest.java, src/test/java/com/project/dorumdorum/domain/room/unit/usecase/LoadMyRoomsUseCaseTest.java
RoomRepositoryImpl이 검색/내 방/좋아요/신청 목록 프로젝션과 체크리스트 카운트 로직을 바꾸고, RoomService와 테스트가 새 반환 형태를 반영합니다.
추천 방 조회와 체크리스트 연동
src/main/java/com/project/dorumdorum/domain/checklist/..., src/main/java/com/project/dorumdorum/domain/room/application/dto/response/*, src/main/java/com/project/dorumdorum/domain/room/application/usecase/LoadRecommendedRoomsUseCase.java, src/main/java/com/project/dorumdorum/domain/room/ui/*
활성 룸룰과 체크리스트 상태를 읽어 추천 방 응답을 만들고, 추천 API 계약과 DTO가 추가됩니다.

User Verification and Password Reset

Layer / File(s)Summary
이메일 인증 저장과 회원가입 검증
src/main/java/com/project/dorumdorum/domain/user/application/dto/request/SignUpRequest.java, src/main/java/com/project/dorumdorum/domain/user/application/usecase/SendVerificationEmailUseCase.java, src/main/java/com/project/dorumdorum/domain/user/application/usecase/VerifyEmailUseCase.java, src/main/java/com/project/dorumdorum/domain/user/application/usecase/SignUpUseCase.java, src/main/java/com/project/dorumdorum/domain/user/domain/*, src/main/java/com/project/dorumdorum/domain/user/infra/repository/RedisEmailVerifiedRepository.java, src/main/java/com/project/dorumdorum/domain/user/ui/*, src/main/java/com/project/dorumdorum/global/exception/code/status/UserErrorStatus.java, src/test/java/com/project/dorumdorum/domain/user/unit/usecase/SignUpUseCaseTest.java, src/test/java/com/project/dorumdorum/domain/user/unit/usecase/VerifyEmailUseCaseTest.java
EmailVerifiedRepository가 추가되고, 회원가입이 인증 완료 여부를 검사한 뒤 인증 기록을 정리하도록 바뀝니다.
비밀번호 재설정 흐름
src/main/java/com/project/dorumdorum/domain/user/application/dto/request/ResetPasswordRequest.java, src/main/java/com/project/dorumdorum/domain/user/application/usecase/SendPasswordResetEmailUseCase.java, src/main/java/com/project/dorumdorum/domain/user/application/usecase/VerifyPasswordResetCodeUseCase.java, src/main/java/com/project/dorumdorum/domain/user/application/usecase/ResetPasswordUseCase.java, src/main/java/com/project/dorumdorum/domain/user/domain/*, src/main/java/com/project/dorumdorum/domain/user/infra/repository/*, src/main/java/com/project/dorumdorum/domain/user/ui/*, src/main/resources/application.yml
비밀번호 재설정 요청, 코드 검증, Redis 상태 저장, 재설정 실행, 그리고 관련 경로/레이트리밋 설정이 추가됩니다.

CI/runtime Configuration

Layer / File(s)Summary
CI와 런타임 설정
.github/workflows/cicd.yml, src/main/resources/application-dev.yml, src/main/resources/application-prod.yml
테스트 워크플로에 Redis 서비스가 추가되고, dev/prod 설정의 Hibernate ddl-auto와 Firebase 서비스 계정 경로가 변경됩니다.

Alert Delivery

Layer / File(s)Summary
알림 중복 검사 예외 처리
src/main/java/com/project/dorumdorum/global/alert/DiscordAlertSender.java
Discord 알림 전송에서 중복 검사 실패를 잡아 경고를 남기고 전송을 계속합니다.

Sequence Diagram(s)

이메일 인증과 회원가입

sequenceDiagram
participant Client
participant SendVerificationEmailController
participant SendVerificationEmailUseCase
participant EmailVerificationService
participant VerifyEmailController
participant VerifyEmailUseCase
participant EmailVerifiedRepository
participant SignUpUseCase
participant UserService
Client->>SendVerificationEmailController: send(email)
SendVerificationEmailController->>SendVerificationEmailUseCase: send(email)
SendVerificationEmailUseCase->>EmailVerificationService: isAllowedUniversityEmail(email)
SendVerificationEmailUseCase->>EmailVerificationService: sendCode(email, code)
Client->>VerifyEmailController: verifyEmail(email, code)
VerifyEmailController->>VerifyEmailUseCase: execute(email, code)
VerifyEmailUseCase->>EmailVerificationService: verifyCode(email, code)
VerifyEmailUseCase->>EmailVerifiedRepository: save(email)
Client->>SignUpUseCase: execute(SignUpRequest)
SignUpUseCase->>EmailVerifiedRepository: existsByEmail(email)
SignUpUseCase->>UserService: save(request)
SignUpUseCase->>EmailVerifiedRepository: delete(email)
Loading

비밀번호 재설정

sequenceDiagram
participant Client
participant SendPasswordResetEmailController
participant SendPasswordResetEmailUseCase
participant UserService
participant EmailVerificationService
participant VerifyPasswordResetCodeController
participant VerifyPasswordResetCodeUseCase
participant PasswordResetVerifiedRepository
participant ResetPasswordController
participant ResetPasswordUseCase
participant User
Client->>SendPasswordResetEmailController: send(email)
SendPasswordResetEmailController->>SendPasswordResetEmailUseCase: send(email)
SendPasswordResetEmailUseCase->>EmailVerificationService: isAllowedUniversityEmail(email)
SendPasswordResetEmailUseCase->>UserService: isAlreadyRegistered(email)
alt email not registered
SendPasswordResetEmailUseCase-->>SendPasswordResetEmailController: return
else email registered
SendPasswordResetEmailUseCase->>EmailVerificationService: sendCode(email, code)
end
Client->>VerifyPasswordResetCodeController: verify(email, code)
VerifyPasswordResetCodeController->>VerifyPasswordResetCodeUseCase: execute(email, code)
VerifyPasswordResetCodeUseCase->>EmailVerificationService: verifyCode(email, code)
VerifyPasswordResetCodeUseCase->>PasswordResetVerifiedRepository: save(email)
Client->>ResetPasswordController: reset(request)
ResetPasswordController->>ResetPasswordUseCase: execute(request)
ResetPasswordUseCase->>PasswordResetVerifiedRepository: existsByEmail(email)
ResetPasswordUseCase->>UserService: findByEmail(email)
ResetPasswordUseCase->>User: updatePassword(encodedPassword)
ResetPasswordUseCase->>PasswordResetVerifiedRepository: delete(email)
Loading

추천 방 조회

sequenceDiagram
participant Client
participant LoadRecommendedRoomsController
participant LoadRecommendedRoomsUseCase
participant UserChecklistRepository
participant RoomRuleRepository
Client->>LoadRecommendedRoomsController: GET /api/rooms/recommended
LoadRecommendedRoomsController->>LoadRecommendedRoomsUseCase: execute(userNo)
LoadRecommendedRoomsUseCase->>UserChecklistRepository: existsByUserNo(userNo)
alt checklist missing
LoadRecommendedRoomsUseCase-->>LoadRecommendedRoomsController: RecommendedRoomsPageResponse(false, [])
else checklist present
LoadRecommendedRoomsUseCase->>RoomRuleRepository: findAllActiveWithRoom()
LoadRecommendedRoomsUseCase-->>LoadRecommendedRoomsController: RecommendedRoomsPageResponse(true, items)
end
LoadRecommendedRoomsController-->>Client: 200 OK
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

  • DorumDorum/BE#110: 비밀번호 재설정 요청/검증/실행과 이메일 인증 상태 저장이 같은 사용자 인증 경로를 다룹니다.

Suggested labels

feature

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ydking0911
ydking0911 merged commit 75ce9ab into productionJun 25, 2026
4 of 5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ydking0911@KoungQ