Skip to content

Conversation

@Gyuhyeok99
Copy link
Contributor

기능 추가/변경 사항

  • 채팅방 신고 기능 추가
  • 매칭된 멘티/멘토 정보 조회 기능 구현
  • 채팅 이미지 전송 구현
  • DELE 어학 시험 추가
  • CODEOWNERS에 새로운 개발자 추가
  • 사용자 차단 관련 엔티티 및 DDL 작성
  • 차단 관련 api 구현

리팩토링 사항

  • 채팅방 n + 1 문제 개선
  • Token VO 적용, 제공과 저장 관심사 분리, 환경변수 사용하도록 수정
  • alloy 파일 경로 수정
  • 서브모듈 업데이트
  • Nginx가 WebSocket Handshake 요청을 올바르게 처리하도록

lsy1307 and others added 15 commits August 27, 2025 13:14
* feat: 채팅 신고 기능 추가

* feat: 테스트 코드 추가
* refactor: n + 1 문제 개선

- 1 + 3N + 1 -> 1 + 3 + 1로 쿼리 개선

* refactor: 함수 가독성 개선
* feat: 멘티의 매칭된 멘토 조회 관련 dto 추가

* feat: 멘티의 매칭된 멘토 조회 관련 repository 추가

* feat: 멘티의 매칭된 멘토 조회 관련 로직 추가

* test: 멘티의 매칭된 멘토 조회 관련 테스트 추구ㅏ

* refactor: 멘토링을 먼저 조회하도록 수정
* refactor: Token VO 패키지 이동

* refactor: Token VO의 구성을 단순화

- '토큰을 객체로 만들 때, 실제로 그 토큰이 가진 성질을 100% 반영해야 하는가?'에 대해서 고민이 되었다. 그런데 실제로 코드에서 토큰이 사용되는 것은 "문자열로 구성된 발급"이 대부분이므로, 토큰이 실제로 가지는 claim들을 100% 구현하는 것은 오히려 복잡도를 증가시킨다는 생각이 들었다.

* test: 변경된 토큰 객체를 테스트 코드에 반영

* refactor: 토큰 '저장소'와 '제공자' 클래스 분리

* refactor: TokenProvider가 jwt 의존하지 않도록 메서드 시그니처 변경

* test: TokenStorage와 TokenProvider 변경사항 테스트코드에 반영

- auth 하위의 테스트 코드에 'RedisTemplate' autowired 존재하지 않게
- io.jsonwebtoken.Claims 에 대한 참조는 반드시 필요한 곳에만 존재하게

* refactor: SignUpToken VO 생성, Token VO가 공통 인터페이스 구현하도록

* refactor: signup 관련 클래스 하나의 패키지로 위치

* refactor: signin 관련 클래스 하나의 패키지로 위치

* refactor: 토큰 관련 변수를 환경 변수로 관리

* refactor: 토큰 생성 시, TokenType을 사용하지 않도록

- 토큰과 관련된 설정 값은 TokenType이 아니라 환경변수를 사용하도록 점진적으로 변경한다.

* refactor: parseSubject함수의 반환 타입이 Subject가 되도록

* refactor: TokenStorage의 함수들이 값 객체를 인자로 갖도록

- 값 객체와 제네릭을 최대한 활용하여 코드에 의미를 전달하고 중복 코드를 줄인다.

* test: 메서드 시그니처 변경 테스트 코드에 반영

* test: 변수 분리로 중복 코드 제거

* refactor: TokenValue를 사용하지 않고, TokenProperties를 사용하도록

* refactor: 로그아웃 시, 액세스 토큰을 새로 만드는 부분 제거

* chore: 주석 보강

* refactor: 회원가입 토큰 검증 시, 서버에 저장된 값과 동일한지 검증 추가

- code rabbit 리뷰 반영: #479 (comment)

* refactor: 회원가입 토큰 검증 시, subject 존재 검증 추가

- code rabbit 리뷰 반영: #479 (comment)

* refactor: subject 추출 시, subject가 없으면 예외 발생하도록

- code rabbit 리뷰 반영: #479 (comment)

* refactor: blacklist token 저장 시 TTL 설정되도록

- code rabbit 리뷰 반영: #479 (comment)

* refactor: duration 사용으로 시간 단위 통일

- application.yml을 보면 알다시피 더 명시적이게 바뀐다는 장점도 있다.
- code rabbit 리뷰 반영: #479 (comment)
* chore: 토픽 주소 변경

- topic/{roomId} -> topic/chat/{roomId}
- 의미적 명확성을 위해

* feat: 메시지 전송 DTO 작성

* feat: 메시지 전송 Service 작성

* feat: 메시지 전송 Controller 작성

* chore: 메시지 전송에 대한 컨트롤러 어노테이션을 RestController에서 Controller로 변경

* chore: WebSocket 초기 연결을 위한 HTTP 핸드셰이크에서 인증을 수행하도록

* fix: 핸드셰이크 후 Principal을 WebSocket 세션에 전달하도록 수정

- 이에 컨트롤러 인자로 siteUserId를 받도록 하고, DTO에 senderId를 삭제한다.

* fix: 컨트롤러 파라미터 인자로 Principal를 받고, 이후 SiteUserDetails에서 siteUserId를 추출하도록 변경

* fix: DTO를 통해 순환참조 문제 해결

* chore: 실제 구독 권한 TODO 구현

- 검증 로직이 핸들러에서 사용됨에 따라 발생하는 순환 참조를 막기 위해 Lazy 어노테이션을 사용한 생성자를 직접 작성

* chore: 코드 리포매팅

* chore: 미사용 SiteUserPrincipal 제거 외

- 정규표현식을 사용하여 채팅방 ID 추출
- DTO 검증 추가
- 구체화 클래스가 아닌 인터페이스 사용하도록 (DIP)
- senderId가 siteUserId가 아니라 chatParticipantId로 설정되도록 변경

* feat: 이미지 업로드를 위한 S3 Controller 및 Service 추가, ImgType수정

* feat: DTO 추가, 수정 및 MessageType 추가

* feat: Controller, Service 구현

* feat: Test 코드 추가

* fix: 서브 모듈 커밋해시 수정

* refactor: addAttachment 메서드 추가

* refactor: 코드 포매팅

* refactor: 테스트 코드 컨벤션 수정

* refactor: setChatMessage 메서드 수정

---------

Co-authored-by: seonghyeok <chosh2001@naver.com>
* feat: DELE 어학 시험 enum 추가

- CEFR과 마찬가지로 A1 -> C2 순으로 높은 등급을 표현하므로 같은 비교자를 사용하도록

* feat: DELE 추가 DDL 작성
* fix: nginx가 웹소켓 핸드셰이크 요청을 제대로 처리하도록 수정

* chore: 변경된 nginx.conf가 cd 단계에서 개발 서버에 반영되도록

- 서버에 존재하는 default를 nginx.conf에 통합

* test: 테스트 코드 수정

- 초기 핸드셰이크는 ws가 아니라 http 프로토콜을 사용함
- 핸드셰이크를 테스트하므로 목적에 맞게 클래스 이름 변경

* chore: docker-compose down 시 명시적인 yml을 사용하도록

* chore: nginx conf 파일 환경 분리

* chore: prod 환경에서 cd 스크립트 수행 시 nginx conf 파일이 적용되도록

- docker compose down 시 명시적으로 yml 파일 지정
* feat: 사용자 차단 엔티티 작성

* feat: 사용자 차단 테이블 DDL 작성
* feat: 유저 차단 api 추가

- 커뮤니티 로직 수정 필요

* teat: 유저 차단 api 테스트 추가

* feat: 유저 차단 취소 api 추가

* test: 유저 차단 관련 fixture 추가

* test: 유저 차단 취소 api 테스트 추가

* feat: 유저 차단 조회 api 추가

* test: 유저 차단 조회 api 테스트 추가

* feat: 차단한 유저의 게시글은 보이지 않도록 수정

- 커뮤니티 목록은 로그인하지 않더라도 보이게 수정

* feat: 차단한 유저의 게시글 댓글도 보이지 않도록 수정

- 차단한 댓글이면 대댓글은 차단하지 않았더라도 보이지 않도록 함

* test: 코드리뷰 반영

- 인자 순서 변경

* style: 불필요한 개행 제거

* style: 불필요한 개행 제거

* style: 함수명 명확하게 변경

* style: 개행 컨벤션 준수

* refactor: validated 함수 분리

- 불필요한 지역변수 제거
[RELEASE] 250927 릴리즈
@coderabbitai
Copy link

coderabbitai bot commented Sep 28, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release

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 and usage tips.

# Conflicts:
#	docker-compose.dev.yml
fix: 충돌 해결
@Gyuhyeok99 Gyuhyeok99 merged commit 36738ac into master Sep 28, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants