Skip to content

[deploy] 운영서버로 배포 25/08/16#235

Merged
seongjunnoh merged 121 commits into
mainfrom
develop
Aug 16, 2025
Merged

[deploy] 운영서버로 배포 25/08/16#235
seongjunnoh merged 121 commits into
mainfrom
develop

Conversation

@seongjunnoh
Copy link
Copy Markdown
Collaborator

@seongjunnoh seongjunnoh commented Aug 16, 2025

#️⃣ 연관된 이슈

closes #이슈번호

📝 작업 내용

  • 오늘의 한마디 작성 api, 투표 삭제 api , 방 검색 api 등등 수정사항 운영서버에도 반영

📸 스크린샷

💬 리뷰 요구사항

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

📌 PR 진행 시 이러한 점들을 참고해 주세요

* P1 : 꼭 반영해 주세요 (Request Changes) - 이슈가 발생하거나 취약점이 발견되는 케이스 등
* P2 : 반영을 적극적으로 고려해 주시면 좋을 것 같아요 (Comment)
* P3 : 이런 방법도 있을 것 같아요~ 등의 사소한 의견입니다 (Chore)

Summary by CodeRabbit

  • 신기능
    • 방 “오늘의 한마디” 작성 API 추가(일일 작성 횟수 제한, 최초 작성 여부 반환).
    • 투표 삭제 API 추가(연관 좋아요/댓글 정리).
  • API 변경
    • 방 검색을 커서 기반으로 전환(요청 파라미터/응답 구조 변경, 다음 커서/마지막 여부 제공). 홈 참여 방 목록 항목 확장.
    • 피드/댓글 응답에 작성자 여부(isWriter) 추가. 기록 검색 응답에 요약여부(isOverview) 추가.
    • 투표 응답이 항목 목록 기반으로 확장.
    • 회원가입 닉네임: 필수, 소문자/한글/숫자만 허용.
  • 문서화
    • 프로필별 OpenAPI 서버 주소 동적 구성. 오류 코드/스웨거 응답 설명 추가.
  • 작업
    • CD 워크플로우 develop 브랜치 포함. 컨테이너 JVM 옵션 조정.

seongjunnoh and others added 30 commits August 9, 2025 03:39
- 방장에 해당하는 RoomParticipant create & DB save 하는 코드 추가
- RoomParticipantRepository 의존성 추가
- RoomParticipant DB save 되는지 확인하는 테스트 코드 추가
- 투표 생성한 사람의 userPercentage 값 수정
- 해당 방의 roomPercentage 값 수정 (기록 생성 서비스 코드 참고하였습니다)
buzz0331 and others added 21 commits August 15, 2025 13:52
[refactor] 기록장 조회 api 리팩토링
- 커서 기반 페이지네이션에 맞게 응답 데이터 수정
- 커서 기반 페이지네이션으로 수정
- 우선순위 조건 제거
- 반환타입으로 QueryProjection 도입
- 방 검색을 위해 Projection 생성자 추가
- 함수형 인터페이스 추가로 생성 (Integer를 커서로 활용할 수 있도록)
…65)

- room과 left join이 아니라, inner join을 강제할 수 있도록 (for 성능 개선)
- 카테고리, 정렬 조건 값에 따라서 분기처리 후 그에 맞는 query port 메서드 호출하도록 구현
…e-response

[hotfix] 피드 단일 조회 response 수정
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Aug 16, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

CD 트리거 브랜치에 develop 추가, Docker JVM 옵션 설정. OpenAPI 서버 구성이 profile 기반으로 변경. “오늘의 한마디” 기능을 room.*로 이관·구현(도메인/포트/어댑터/컨트롤러). 방 검색을 커서 기반 API로 전면 개편. 투표 삭제 API·도메인 검증·리포지토리 삭제 경로 추가. 댓글/피드/레코드 응답 확장(isWriter/isOverview). 기타 ACTIVE 상태 필터링, 유저 가입 검증 보강 등.

Changes

Cohort / File(s) Summary
CI/CD & Container
.github/workflows/cd-workflow-prod.yml, Dockerfile
CD 워크플로우 트리거 브랜치에 develop 추가. 컨테이너 JVM 기본 옵션 설정(Xms 512m, Xmx 2g, OOME 시 종료).
OpenAPI/Swagger 설정
src/main/java/konkuk/thip/config/OpenApiConfig.java, .../common/swagger/SwaggerResponseDescription.java, .../common/exception/code/ErrorCode.java
server.profile에 따라 서버 리스트 동적 구성. Swagger 응답 설명에 VOTE_DELETE, ATTENDANCE_CHECK_CREATE 추가 및 ROOM_SEARCH 오류코드 보강. ErrorCode에 VOTE_ACCESS_FORBIDDEN, ATTENDANCE_CHECK_WRITE_LIMIT_EXCEEDED 추가.
AttendanceCheck 패키지 이관 및 기능 추가
src/main/java/konkuk/thip/attendancecheck/...*, src/main/java/konkuk/thip/room/domain/AttendanceCheck.java, .../room/adapter/out/jpa/AttendanceCheckJpaEntity.java, .../room/adapter/out/mapper/AttendanceCheckMapper.java, .../room/adapter/out/persistence/AttendanceCheck*PersistenceAdapter.java, .../room/adapter/out/persistence/repository/attendancecheck/AttendanceCheckJpaRepository.java, .../room/application/port/in/*AttendanceCheck*, .../room/application/port/out/*AttendanceCheck*, .../room/application/service/AttendanceCheckCreateService.java, .../room/adapter/in/web/RoomCommandController.java, .../room/adapter/in/web/request/AttendanceCheckCreateRequest.java, .../room/adapter/in/web/response/AttendanceCheckCreateResponse.java
attendancecheck.* 제거 및 room.*로 이관. 도메인에 일일 작성 제한 검증 추가. 오늘 작성 수 조회/저장 어댑터·포트 구현. 컨트롤러에 POST /rooms/{roomId}/daily-greeting 추가.
방 검색 커서 기반 전환
.../room/adapter/in/web/RoomQueryController.java, .../room/adapter/in/web/response/RoomSearchResponse.java, .../room/application/port/in/RoomSearchUseCase.java, .../room/application/port/in/dto/RoomSearchQuery.java, .../room/application/port/in/dto/RoomSearchSortParam.java, .../room/application/service/RoomSearchService.java, .../room/application/mapper/RoomQueryMapper.java, .../room/application/port/out/RoomQueryPort.java, .../room/adapter/out/persistence/RoomQueryPersistenceAdapter.java, .../room/adapter/out/persistence/function/*CursorRoomQueryFunction.java, .../room/adapter/out/persistence/repository/RoomQueryRepository*.java, .../room/application/port/out/dto/RoomQueryDto.java
페이지 기반 API/리포지토리 제거. 커서(CursorBasedList) 기반 메서드 및 DTO 도입. 정렬(DEADLINE/MEMBER_COUNT)·카테고리별 분기 추가. 응답 스키마(nextCursor, isLast, isPublic)로 변경.
피드 응답/매퍼 isWriter 추가
.../feed/adapter/in/web/response/FeedShowAllResponse.java, .../FeedShowByUserResponse.java, .../FeedShowMineResponse.java, .../FeedShowSingleResponse.java, .../feed/application/mapper/FeedQueryMapper.java, .../feed/application/service/*Show*Service.java, .../feed/adapter/out/persistence/Feed*PersistenceAdapter.java, .../feed/adapter/out/persistence/repository/FeedQueryRepository*.java, .../feed/application/port/out/FeedQueryPort.java
각 응답 DTO에 isWriter 필드 추가 및 매퍼에 @context userId 전파. 단일 조회에 bookTitle 추가. 일부 리포지토리 파라미터명 정리 및 ACTIVE 상태 조회 적용.
댓글 응답/매퍼 isWriter 추가
.../comment/adapter/in/web/response/CommentForSinglePostResponse.java, .../comment/application/mapper/CommentQueryMapper.java, .../comment/application/service/CommentShowAllService.java
Root/Reply DTO에 isWriter 추가. 매퍼에 @context userId 도입 및 isWriter 계산 메서드 추가. 서비스에서 userId 전달.
레코드 검색 리팩터링
.../record/adapter/in/web/response/RecordSearchResponse.java, .../record/adapter/out/persistence/repository/RecordQueryRepositoryImpl.java, .../record/application/mapper/RecordQueryMapper.java, .../record/application/service/RecordSearchService.java, .../record/application/service/validator/RecordAccessValidator.java
PostDto에 isOverview 추가. dtype 기반 분기(Record/Vote)로 변경. 접근 검증/블러 처리 Validator 도입. 매퍼 신설로 응답 변환 일원화.
투표 삭제 기능 및 결과 구조 변경
.../vote/adapter/in/web/VoteCommandController.java, .../vote/adapter/in/web/response/VoteDeleteResponse.java, .../vote/adapter/in/web/response/VoteResponse.java, .../vote/application/port/in/*VoteDelete*, .../vote/application/port/in/dto/VoteDeleteCommand.java, .../vote/application/port/in/dto/VoteResult.java, .../vote/application/service/VoteDeleteService.java, .../vote/application/service/VoteService.java, .../vote/application/service/VoteCreateService.java, .../vote/application/port/out/Vote*Port.java, .../vote/adapter/out/persistence/*, .../vote/domain/Vote.java, .../vote/domain/VoteItem.java
DELETE 엔드포인트 추가. 삭제 도메인 검증/포트/리포지토리 삭제 메서드 추가. VoteResult를 다중 아이템 구조로 변경. 단건 투표 아이템 조회 추가. VoteItem 팩토리 시그니처 변경.
방 참여/생성·진행도 반영
.../room/application/service/RoomCreateService.java, .../room/application/service/RoomJoinService.java, .../roompost/application/service/helper/RoomProgressHelper.java, .../room/adapter/out/jpa/RoomJpaEntity.java, .../room/application/service/RecordCreateService.java, .../room/application/service/RoomGetHomeJoinedListService.java, .../room/adapter/in/web/response/RoomGetHomeJoinedListResponse.java
방 생성 시 호스트 참가자 저장. 참가자 팩토리(memberWithoutId/hostWithoutId)로 교체. 진행도 Helper 도입 및 사용. book_id NOT NULL. 홈 조인 응답 타입 확장(JoinedRoomInfo).
피드/레코드 ACTIVE 상태 처리
.../feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java, .../record/adapter/out/persistence/RecordCommandPersistenceAdapter.java
findById를 findByPostIdAndStatus(..., ACTIVE)로 변경하여 활성 상태 대상만 처리.
유저 가입 필드/도메인
.../user/adapter/in/web/request/UserSignupRequest.java, .../user/application/service/UserSignupService.java, .../user/domain/User.java, .../user/adapter/out/jpa/UserJpaEntity.java
닉네임 NotNull 및 소문자만 허용 정규식으로 변경. User.withoutId 시그니처에서 날짜 제거(닉네임 변경일 null). nickname_updated_at 컬럼 nullable=true.
테스트 및 기타
src/test/java/konkuk/thip/common/util/TestEntityFactory.java, src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteAPITest.java
팩토리 메서드 다수 추가(Book/Room/VoteItem/AttendanceCheck). 피드 삭제 테스트에 PostLike 삭제 검증 및 카운트 인라인 단언.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor U as User
  participant RC as RoomCommandController
  participant ACU as AttendanceCheckCreateUseCase
  participant AQS as AttendanceCheckQueryPort
  participant ACS as AttendanceCheckCommandPort

  U->>RC: POST /rooms/{roomId}/daily-greeting (content)
  RC->>ACU: create(command)
  ACU->>AQS: countAttendanceChecksOnTodayByUser(userId, roomId)
  AQS-->>ACU: count
  ACU->>ACS: save(AttendanceCheck.withoutId(..., count))
  ACS-->>ACU: attendanceCheckId
  ACU-->>RC: AttendanceCheckCreateResult
  RC-->>U: BaseResponse(AttendanceCheckCreateResponse)
Loading
sequenceDiagram
  autonumber
  actor U as User
  participant VC as VoteCommandController
  participant VDS as VoteDeleteService
  participant VP as VoteCommandPort
  participant CC as CommentCommandPort
  participant PLC as PostLikeCommandPort

  U->>VC: DELETE /rooms/{roomId}/vote/{voteId}
  VC->>VDS: deleteVote(command)
  VDS->>VP: getByIdOrThrow(voteId)
  VDS->>VP: (domain) validateDeletable(userId, roomId)
  VDS->>CC: softDeleteAllByPostId(voteId)
  VDS->>PLC: deleteAllByPostId(voteId)
  VDS->>VP: delete(vote)
  VDS-->>VC: roomId
  VC-->>U: BaseResponse(VoteDeleteResponse)
Loading
sequenceDiagram
  autonumber
  actor U as User
  participant RQ as RoomQueryController
  participant RS as RoomSearchUseCase
  participant RQP as RoomQueryPort
  participant RQM as RoomQueryMapper

  U->>RQ: GET /rooms/search?cursor=...
  RQ->>RS: searchRecruitingRooms(RoomSearchQuery)
  RS->>RQP: searchRecruitingRooms* (by sort/category, Cursor)
  RQP-->>RS: CursorBasedList<RoomQueryDto>
  RS->>RQM: toRoomSearchResponse(dtos)
  RQM-->>RS: List<RoomSearchDto>
  RS-->>RQ: RoomSearchResponse(nextCursor,isLast)
  RQ-->>U: Response
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120+ minutes

Possibly related PRs

Suggested labels

🧹 chore, 🚀 deploy

Poem

토끼 개발자 꼬물꼬물, 커서 들고 폴짝폴짝
오늘의 한마디 씨앗 심고, 투표 지우개 살짝삭
isWriter 깃발 펄럭, 응답에 솔직담백
데드라인 따라 방을 찾아, 다음 커서는 살짝 택
버니의 코드 정원에, 녹색 체크가 가득! 🐰✨

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • 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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

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

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions
Copy link
Copy Markdown

Test Results

399 tests  +16   399 ✅ +16   29s ⏱️ -2s
119 suites + 6     0 💤 ± 0 
119 files   + 6     0 ❌ ± 0 

Results for commit 9d3a218. ± Comparison against base commit 15a2e93.

@seongjunnoh seongjunnoh merged commit 723b8c8 into main Aug 16, 2025
7 of 9 checks passed
@buzz0331 buzz0331 changed the title [chore] 운영서버로 배포 25/08/16 [deploy] 운영서버로 배포 25/08/16 Aug 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants