Skip to content

Conversation

@kanghana1
Copy link
Contributor

❤️ 기능 설명

프로필 조회에 키워드 추가

swagger 테스트 성공 결과 스크린샷 첨부
image


연결된 issue

연결된 issue를 자동으로 닫기 위해 아래 {이슈넘버}를 입력해주세요.

close #403



🩷 Approve 하기 전 확인해주세요!


✅ 체크리스트

  • PR 제목 규칙 잘 지켰는가?
  • 추가/수정사항을 설명하였는가?
  • 테스트 결과 사진을 넣었는가?
  • 이슈넘버를 적었는가?

@kanghana1 kanghana1 self-assigned this Aug 19, 2025
@kanghana1 kanghana1 added the 🛠️ FEAT This issue or pull request already exists label Aug 19, 2025
Copy link
Contributor

@dbalsk dbalsk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다!

@kanghana1 kanghana1 merged commit fe5956d into develop Aug 19, 2025
1 check passed
@kanghana1 kanghana1 deleted the feat/#403 branch August 20, 2025 01:34
kanghana1 added a commit that referenced this pull request Dec 27, 2025
* [feat/#46] 내 대회 기록 상세조회 API 구현 (#54)

* feat: 내 대회 기록 상세 조회 응답 DTO 구현

* feat: 내 대회 기록 상세 조회 컨버터 구현

* feat: 내 대회 기록 상세 조회 컨트롤러 구현

* feat: 내 대회 기록 상세 조회 서비스 구현

* refator: 이미지, 동영상 순서 정렬 기능 추가

* [feat/#55] 내 대회 기록 리스트 조회 (전체, 미입상) API 구현 (#58)

* refator: 미입상 NONE 추가

* feat: 내 대회 기록 심플 조회 응답 DTO 구현

* refator: GET 메서드 queryService로 옮기기

* feat: 내 대회 기록 심플 조회, 리스트로 변환 컨버터 구현

* feat: 내 대회 기록 리스트 조회 컨트롤러 구현

* feat: 내 대회 기록 리스트 조회(전체, 미입상) 서비스 구현

* refactor: 내 대회 기록 리스트 조회(전체, 미입상) 하나의 API로 수정

* fix: static 삭제

* refactor: 메서드 인라인

* chore: 주석

* chore: yml 고치기 (#63)

* [feat/#57] 운동 삭제 API 구현 (#60)

* feat: 컨트롤러 구현

* feat: 응답 DTO 구현

* feat: 멤버 권한 검증 로직 구현

* chore: Party 엔티티에서 운동 생성 메서드 위치 변경

* feat: 운동 삭제 로직 구현

* feat: 반환 로직 구현

* [feat/#43] 운동 게스트 삭제 API 구현 (#56)

* feat: 컨트롤러 구현

* feat: 검증 로직 구현

* feat: 게스트 삭제 로직 구현

* feat: 에러 코드 구현

* feat: 운동 시작 여부 검증 로직 추가

* [refactor/#61] 운동 참여자 수 계산 로직 수동 증가에서 사이즈 계산으로 변경 (#65)

* refactor: nowCapacity 필드 제거

* refactor: nowCapacity 필드 사용 메서드 수정

* refactor: 현재 인원 반환 메서드 추가

* refactor: 람다식 메서드 참조로 변경

* refactor: 다음 순번 계산 메서드 추가

* [feat/#34] 모임 가입 신청 멤버 조회 API 구현 (#68)

* refactor: 용어 혼용 방지를 위해 모임 가입신청 생성 API의 DTO 명칭 변경

* feat:모임 가입신청 조회 DTO 구현

* feat: 모임 가입신청 조회 서비스 인터페이스 추가

* feat: 모임 가입신청 조회 API 컨트롤러 구현

* feat: 모임 가입신청 리포지토리에 조회 메서드 추가

* feat: 모임 가입신청 조회 서비스 구현

* feat: 권한 없음 에러 코드 추가

* feat: 모임 가입신청 조회 API 컨버터 구현

* refactor: PartyJoinRequest를 BaseEntity에 상속받도록 수정

* feat: Member와 프로필 이미지 양방향 관계 설정

* refactor: 테스트 진행을 위해 memberId 임시값 변경

* feat: 모임 가입신청 목록을 최신순으로 정렬하도록 기본값 추가

* [feat/#59] 내 대회 메달 조회 API 구현 (#67)

* feat: 내 메달 개수 조회 응답 DTO 구현

* feat: 쿼리 메서드 구현

* feat: 메달 개수 조회 컨버터, 컨트롤러 구현

* feat: 메달 개수 조회 서비스 구현

* chore: log.info() 추가

* [feat/#70] 다른 회원의 대회 기록 상세조회 API 구현 (#71)

* feat: 다른 사람의 대회 기록 상세조회 응답 DTO 구현

* feat: {내/다른 사람}의 대회 기록 상세조회 통합 컨버터 구현

* feat: 다른 사람의 대회 기록 상세조회 컨트롤러 구현

* feat: {내/다른 사람}의 대회 기록 상세조회 통합 서비스 구현

* [feat/#73] 다른 회원의 대회 기록 리스트 (전체, 미입상) API 구현 (#74)

* feat: 다른 사람의 대회 기록 리스트 조회 API 컨트롤러 구현

* refactor: {내/다른 사람}의 대회 기록 리스트 조회 통합 서비스 구현

* chore: 주석 수정

* [feat/#75] 다른 회원의 대회 메달 조회 API 구현 (#76)

* chore: 주석 수정

* feat: 다른 사람의 대회 메달 개수 조회 API 컨트롤러 구현

* [feat/#66] 운동 수정 API 구현 (#69)

* feat: 컨트롤러 구현

* feat: 모임장 운동 취소 API에서 누락된 @Valid 어노테이션 추가

* feat: DTO 구현

* feat: 검증 로직 구현

* feat: dto 접근을 위한 command 패턴 도입

* feat: 운동 정보 수정 로직 구현

* feat: 운동 주소 정보 수정 로직 구현

* feat: 저장 및 반환 로직 구현

* feat: 에러 코드 정의

* fix: 컨트롤러 url 오타 수정

* feat: requestDTO 필드 수정

* [feat/#53] 모임 가입신청 처리 API 구현 (#77)

* feat: 승인 요청에 대한 응답을 담는 enum 추가 (RequestAction)

* feat: 모임 가입신청 처리 요청 DTO 구현

* feat: 모임 서비스 인터페이스에 가입신청 처리 메서드 추가

* feat: 모임 가입신청 처리 API 컨트롤러 구현

* feat: 모임 가입신청 처리 API 서비스 구현

* feat: 가입신청 처리를 위한 정적 팩토리 메서드 및 비즈니스 메서드 구현

* feat: 모임 가입신청 처리 API 에러 코드 추가

* fix: 스웨거 설명문 추가 및 오류 수정

* refactor: 사용하지않는 import 정리

* refactor: orderType 필드 제거

* refactor: 양방향 연결을 위해 member에 연관 관계 편의 메서드 추가

* [feat/#72] 프로필 수정 기능 구현 (#79)

* feat: 프로필 수정 기능 구현

* feat: 프로필 사진 재생성 관련 에러 처리

* chore: 스웨거 설명 수정

* refact: dto 클래스 -> record 변환

* [refactor/#81] 운동 DTO에 중첩 record 적용 (#82)

* chore: pull 관련 임시 에러처리

* refactor: 운동 생성 API에서 중첩 record 패턴 적용

* refactor: 운동 참여 API에서 중첩 record 패턴 적용

* refactor: 운동 게스트 초대 API에서 중첩 record 패턴 적용

* refactor: 운동 참여 취소 API에서 중첩 record 패턴 적용

* refactor: 게스트 초대 취소 API에서 중첩 record 패턴 적용

* docs: 게스트 초대 취소 API 로그 수정

* refactor: 특정 참여자 운동 취소 API에서 중첩 record 패턴 적용

* refactor: 운동 삭제 API에서 중첩 record 패턴 적용

* refactor: 운동 수정 API에서 중첩 record 패턴 적용

* [feat/#80] 회원주소 추가 API 구현 (#83)

* feat: 회원주소 추가 API 구현

* feat: 주소 개수 예외처리 추가

* [refactor/#84] 이미지 업로드 방식 변경 (#85)

* refactor: dto 어노테이션 수정

* [refactor/#88] 메달 도메인 DTO에 중첩 record 패턴 도입 (#90)

* [feat/#86] 대표 주소 변경API 구현 (#87)

* [feat/#94] 회원 주소 삭제 API 구현 (#97)

* [refactor/#98] 주소 추가 로직 수정 (#99)

* [feat/#100] 회원 탈퇴 기능 구현 (#101)

* [refactor/#89] 모임 생성 API 이미지 업로드 방식 변경 (#91)

refactor: 모임 생성 API 이미지 업로드 방식 변경

* [refactor/#92] 모임 도메인 DTO에 중첩 record 패턴 도입 (#93)

* refactor: 모임 도메인 DTO에 중첩 record 패턴 도입

* refactor: DTO 명칭 변경 및 임포트 정리

* [fix/#107] 병합 오류 해결 (#108)

* Revert "[refactor/#92] 모임 도메인 DTO에 중첩 record 패턴 도입 (#93)"

This reverts commit feaa902.

* fix: 병합 오류 해결 완료

* refactor: MemberExercise와 Guest에서 participantNum 필드 제거 (#105)

* [refactor/#109] 모임 생성 API 에러 처리 추가 (#112)

* feat: 모임 생성 DTO에 에러 처리 및 ENUM 변환 메서드 구현

* feat: 입력값 에러 코드 추가

* refactor: 에러 처리 관련 코드 수정

* [feat/#103] 운동 신청 API에서 검증 로직 추가 (#106)

* feat: 운동 급수 검증 로직 추가

* feat: 에러 코드 추가

* docs: Swagger docs에 급수 위반 추가

* refactor: Exercise와 연관된 엔티티들 fetch join으로 불러오기(N+1) 방지

* feat: 나이 계산 메서드 추가

* feat: 나이 검증 로직 추가

* feat: 에러 코드 추가

* refactor: 급수 및 나이 검증 로직 4XX 비즈니스 에러로 변경

* [feat/#95] 프로필 조회 관련 API 구현 (#118)

* feat: 다른 유저 프로필 조회

* chore: API URL 수정

* feat: 내 프로필 조회 API 구현

* chore: 컨트롤러 메서드 이름 수정

* [feat/#110] 모임 신청 API 검증 로직 추가 구현 (#117)

* feat: 모임 신청자가 모임의 급수 조건에 적합한지 검증하는 로직 구현

* feat: 급수 조건 검증 에러 코드 추가

* feat: 모임 신청자가 모임 유형에 맞는 성별인지 검증하는 로직 구현

* feat: 모임유형의 성별 조건 검증 에러 코드 추가

* feat: 모임 신청자가 모임 나이대에 적합한지 검증하는 로직 구현

* feat: 나이 조건 검증 에러 코드 추가

* [Feat/#96] 회원 주소 조회 관련 API 구현 (#119)

* refact: 대표주소 추출 메소드 분리

* feat: 내 현재 위치 조회 API 구현

* chore: 건물명 null여부 관련 수정

* chore: 프로필 조회시 건물명, 도로명 추가

* feat: 회원의 등록 주소 전체 조회

* feat: 대표 주소가 위로 올라오도록 기능 추가

* [feat/#113] 모임 생성 API 검증 로직 추가 구현 (#121)

* feat: 모임 생성자의 성별을 검증하는 로직 구현

* feat: 모임 생성자의 나이를 검증하는 로직 구현

* feat: 모임 생성자의 급수를 검증하는 로직 구현

* feat: 빈 리스트 방지를 위해 @notempty로 변경

* feat: 혼복인 경우, 남성의 급수가 빈 리스트로 입력되는 것을 방지하기 위한 로직 구현

* refactor: 문자열 입력값 검증 @notblank로 변경

* [feat/#123] 운동 멤버십 구분 기능 추가 (#126)

* feat: 운동 참여 멤버쉽 enum 추가

* refactor: 운동 정렬 enum 제거 및 필드 제거

* feat: 운동 신청 시 운동 멤버십 결정 로직 구현

* feat: 게스트 엔티티는 따로 필드 없이 GUEST를 반환하는 로직으로 구현

* refactor: MemberExercise joinedAt 필드 제거에 따라 createdAt을 반환하도록 변경

* fix: ExerciseBookmark 엔티티에서 잘못 삭제한 필드 복구

* fix: 운동 신청 시 운동 신청 엔티티 생성 시점 반환으로 로직 에러 수정

* [feat/#124] 모임 가입 승인 멤버 조회 API 구현 (#127)

* refactor: PartyJoinDTO에 생성일자 추가

* feat: status(상태) 파라메터에 추가

* refactor: 컨버터에 updatedAt 추가

* fix: record의 request 오류 @Schema로 해결

* feat: PENDING인 경우, uppdateAt에 null값을 넣고 DTO에서 생략되도록 구현

* feat: 상태 에러 코드 추가 및 유효성 검증 구현

* [feat/#78] 운동 상세 조회 API 구현 (#128)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 쿼리 서비스 틀 구현

* feat: 기본 검증 구현

* feat: 파티 내 위치 체크

* feat: 멤버 참가자 호출 로직 구현

* refactor: 외부 참여자 ENUM값 변경

* refactor: 메서드명 더 명확하게 변경

* feat: 게스트 참가자 호출 로직 구현, 배치 쿼리로 최적화

* feat: 정렬을 위해 Info record에 joinedAt 컬럼 추가

* feat: 운동 기본 정보 로직 구현

* feat: 참여자, 대기자 그룹의 참여자 정보 반환 타입 List로 변경

* feat: 전체 참여자를 참여자와 대기자로 구분하는 로직 구현

* feat: 그룹 정보 로직 구현

* feat: 반환 로직 구현

* fix: ENUM 값 변경에 따라 사용처도 변경

* [feat/#122] 모임 상세 조회 API 구현 (#129)

* feat: 모임 상세조회 DTO 구현

* feat: 모임 상세조회 인터페이스에 메서드 추가

* feat:모임 상세조회 컨트롤러 메서드 구현

* feat: 모임 상세조회 API 서비스 구현

* feat: 모임 상세 조회 API 컨버터 구현

* refactor: partyDetailDTO record 하나로 통일

* feat: ENUM에 한글 추가 및 getter 추가

* refactor: 급수를 리스트 형식으로 반환하도록 수정

* feat: 컨트롤러에 @apiresponse 추가

* [feat/#131] 내 모임 조회 (간략화) API 구현 (#134)

* feat: 내 모임 간략화 조회 DTO 구현

* feat: 내 모임 간략화 조회 서비스 메서드 추가

* feat: 모임 간략화 조회 컨트롤러 메서드 구현

* feat: 내 모임 간략화 조회 서비스 구현

* feat: 내 모임 조회 리포지토리 메서드 구현

* feat: 내 모임 간략화 조회 컨버터 구현

* refactor: 서비스에 로그 출력문 추가

* [feat/#132] 내가 초대한 운동 게스트 조회 API 구현 (#133)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 대기 상태 구분을 위해 isWating 필드 추가

* feat: 내가 초대한 게스트 목록 조회

* feat: 전체 참가자 목록 조회

* refactor: 운동 조회할 때 모임 정보와 함께 조회하도록 변경

* feat: 게스트 번호와 참여 여부 추출

* feat: 게스트 번호와 참여여부 record DTO로 이동 및 통계 record 추가

* feat: 통계 계산 로직 구현 및 반환 로직 구현

* docs: Swagger 성공 응답 설명 수정

* [feat/#130] 내 모임 조회 API 구현 (#135)

* feat: 내 모임 조회 DTO 구현

* feat: 내 모임 조회 서비스 메서드 추가

* feat: 내 모임 조회 컨트롤러 구현 및 정렬 로직 처리

* feat: 내 모임 조회 서비스 구현

* 모임 조회를 위한 비즈니스 메서드 및 운동 정보 record 구현

* feat: 내 모임 조회 컨버터 구현

* feat: 운동 정보를 담을 record 구현

* feat: 모임 조회 쿼리 구현

* refactor: 공백 제거 및 기본값 추가

* refactor: 정렬 기준 입력 한글로 입력 가능하도록 리팩토링 및 에러 처리

* [refactor/#138]  orphanRemoval 제거 (#139)

* [feat/#140] 모임 찜 관련 API 구현 (#141)

* feat: 모임 찜 관련 API 구현

* refactor: 중복 로직 삭제

* [docs#142] 운동 도메인 DTO의 Request 객체에 @Schema 어노테이션 추가 (#143)

* [feat/#145] 전역 에러 핸들러에서 Validation 과정에서 에러 응답을 1개만 던지는 대신 전체를 던지도록 변경 (#147)

* feat: RequestBody의 에러 메시지 1개가 아닌 전체 던지도록 변경

* feat: PathVariable, RequestParam의 에러 메시지가 1개가 아닌 전체를 던지도록 변경

* [feat/#144] 모임 운동 캘린더 조회 API 구현 (#148)

* feat: 컨트롤러 구현

* feat: 응답 DTO 구현

* fix: 운동 시작 시간 및 종료 시간 에러코드 1XX로 변환

* feat: 검증 로직 구현

* feat: 에러 코드 정의

* feat: 날짜 기간 내 운동 조회 로직 구현

* feat: 디폴트 날짜 계산 로직 구현

* feat: 멤버 여부와 파티 이름도 반환하도록 구현

* feat: 최상위 Response 객체 생성 로직 구현

* chore: 캘린더 스펠링 변경

* feat: 모임 성별 급수 정보 제외 반환 로직 구현

* feat: 성별 급수 정보 반환 로직 구현

* refactor: 성별 급수 1번만 계산하도록 변경

* refactor: 운동 주별로 그룹화 로직 메서드 추출로 리팩터링

* refactor: 운동 참여자 정보 fetch join 대신 네이티브 쿼리 Count로 따로 조회

* [feat/#125] 운동 찜 관련 기능 구현 (#150)

* feat: 운동 찜하기 구현

* feat: 운동 찜 해제 구현

* refactor: 예외처리 부분 수정

* 재배포

* test: 배포 테스트

* set: 배포 이후 yml파일 수정 및 S3 설정파일 추가

* [feat/#151] 운동 찜 조회 구현 (#155)

* feat: 운동 찜 조회 구현

* chore: 주석 오타 수정

* [feat/#153] 내 운동 캘린더 조회 API 구현 (#156)

* feat: 컨트롤러 구현

* feat: DTO 구현

* chore: 함수 Calendar 오타 수정

* feat: 서비스 로직 구현

* chore: Calendar 오타 수정

* feat: 최상위 Response 반환 로직 구현

* feat: 나머지 반환 로직 구현

* docs: .gitignore에 application-dev.yml 추가

* config: application.yml에 aws 관련 설정 추가

* [feat/#152] 찜한 모임 전체 조회 API 구현 (#157)

* feat: 찜한 모임 전체 조회

* chore: 코드 오타 수정

* [feat/#166] 모임 운동 캘린더 조회 API에 찜 여부 추가 (#167)

* feat: DTO에 찜 여부 필드 추가

* feat: 서비스와 리포지토리에 찜 여부 반환 로직 구현

* feat: 컨버터에 북마크 여부 반환 로직 추가

* [feat/#154] 내 모임 운동 조회 API 구현 (#163)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 내가 속한 모임 리스트 조회 및 빈 응답 반환 로직 구현

* docs: Swagger 설명에 누락된 큰 따옴표 추가

* feat: 내가 속한 모임의 운동 리스트 최대 6개까지 가져오는 로직 구현

* feat: 반환 로직 구현

* [feat/#149] 운동 도메인에 빈 응답 조기 반환(Early Return) 패턴 도입 (#170)

* feat: 모임 운동 캘린더 조회에서 빈 응답 조기 반환 패턴 도입

* feat: 내 운동 캘린더 조회에서 빈 응답 조기 반환 패턴 도입

* feat: 내가 초대한 게스트 조회에서 빈 응답 조기 반환 패턴 도입

* [feat/#160] 알림 전체 조회 API 구현 (#171)

* feat: 알림 관련 기본 파일세팅 완료

* feat: 알림 전체 조회 기능 구현

* chore: 세미콜론 누락 추가

* refact: 반환타입 수정

* [feat/#111] 모임 삭제 API 구현 (#174)

* feat: 모임 삭제 API 서비스 메서드 추가

* feat: 모임 삭제 API 컨트롤러 구현

* feat: 모임 삭제 API 서비스 구현

* feat: 모임 엔티티에 모임 삭제 비즈니스 메서드와 status 필드 추가

* feat: PartyStatus ENUM 추가

* [refactor/#175] 모임 활동상태 검증 메서드 추가 (#176)

* feat: 모임 활성화 관련 에러 코드 추가

* refactor: 모임 서비스에 모임 활성화 검증 로직 추가

* refactor: 모임 조회 서비스에 모임 활성화 검증 로직 추가

* refactor: 운동 서비스에 모임 활성화 검증 로직 추가

* refactor: 찜 서비스에 모임 활성화 검증 로직 추가

* refactor: 모임 찜 양방향 연결로 변경 및 모임 삭제 시 모임 찜 연결 해제

* refactor: 운동 조회 서비스에 모임 활성화 검증 로직 추가

* [feat/#165] 내 모임 운동 캘린더 조회 API 구현 (#179)

* feat: 내 모임 운동 정렬방식 ENUM 추가

* fix: 충돌 해결

* docs: Swagger 성공 및 실패 응답 작성

* feat: 응답 DTO 구현

* feat: 조회 로직 구현

* refactor: 컨버터 메서드들 네이밍 통일 및 위치 한 곳으로 모음

* fix: DTO의 잘못된 참조 변경

* feat: 북마크 여부 로직 추가

* feat: 반환 로직 추가

* feat: fetch join을 위해서 로직 개선

* feat: 날짜별 그룹핑 DTO 로직 추가

* feat: 날짜별로 정렬해야 하기에 전체 운동 정렬 로직 제거

* feat: 사람 수 미리 계산 후 Converter에서 정렬

* feat: 운동 참여 인원 수 반환 로직 추가

* [feat/#178] 모임 멤버 조회 API 구현 (#180)

* feat: 모임 멤버 조회 API DTO 구현

* feat: 모임 멤버 조회 API 서비스 메서드 추가

* feat: 모임 멤버 조회 API 컨트롤러 구현

* refactor: 잘못된 로그 출력문 수정

* feat: 모임 멤버 조회 API 서비스 구현

* feat: 모임 멤버 조회 쿼리 구현

* feat: 모임 멤버 조회 API 컨버터 구현

* refactor: 모임 활성화 검증 추가

* refactor: 부모임장 ENUM에 추가

* feat: 모임 멤버 조회 role에 따른 정렬 구현

* [feat/#177] 캘린더 조회 API에서 날짜별로 아이템 묶기 (#181)

* feat: 내 운동 캘린더 조회 DTO에서 날짜별 운동 DTO 추가

* feat: 내 운동 캘린더 조회 컨버터 로직 구현

* refactor: 불필요한 클래스 명시 제거

* feat: 모임 운동 캘린더 조회 DTO에서 날짜별 운동 DTO 추가

* feat: 모임 운동 캘린더 조회 컨버터 로직 구현

* [feat/#172] 대회 이미지 업로드 API 구현 (#173)

* [feat/#136] 모임 탈퇴 API 구현 (#182)

* feat: 모임 탈퇴 서비스 메서드 추가

* fix: 잘못된 요청 매핑 주소 수정

* feat: 모임 탈퇴 API 컨트롤러 구현

* feat: 모임 탈퇴 API 관련 에러코드 구현

* feat: 모임 탈퇴 API 서비스 구현

* refactor: 서비스 메서드 정리 및 코멘트 수정

* refact: 필요 없어진 배포 관련 파일 삭제

* [feat/#137] 모임 멤버 삭제 API 구현 (#187)

* feat: 모임 멤버 삭제 API 서비스 메서드 추가

* feat: 모임 멤버 삭제 API 컨트롤러 구현

* feat: 모임 멤버 삭제 API 서비스 구현

* feat: 모임 멤버 삭제 API 에러코드 추가

* feat: 읽지 않은 알림 여부 조회 (#184)

* [feat/#159] 특정 알림 읽음 처리 (#183)

* feat: 특정 알림 읽음처리

* refactor: 필요 없는 부분 삭제

* feat: 회원 검증 로직 및 타입 관련 Request DTO 추가

* [feat/#188] 모임 추천 조회 API 구현 (#190)

* feat: 모임 추천 조회 API 서비스 메서드 추가

* feat: 모임 추천 조회 API 컨트롤러 구현

* feat: 모임 추천 조회 API 서비스 구현

* feat: 모임 추천 조회 및 사용자 주소 조회 리포지토리 메서드 구현

* feat: 사용자가 이미 가입한 모임은 추천되지 않도록 구현

* [feat/#164] 추천 운동 조회 API 구현 (#191)

* feat: 컨트롤러 구현

* feat: 반환을 리스트로 변경

* feat: DTO 구현

* chore: 오탈자 수정

* feat: 운동 조회 로직 구현

* feat: 서비스에서 반환 로직 구현

* feat: ExerciseItem을 List로 반환하도록 변경

* feat: 10개만 조회할경우 거리가 가까운 운동 조회 못할 수 있으므로 전체 조회로 변경

* feat: 정렬 로직 구현

* chore: 로그 출력

* feat: 반환 로직 구현

* refactor: 운동 아이템 List 형태로 반환하는 메서드 제거

* feat: 에러 코드 추가

* docs: 스웨거 설명 추가

* [refactor/#194] 도메인별 ENUM 패키지 구조 개선 (#196)

* refactor: 활동 요일 ENUM을 PARTY DOMAIN 아래로 변경

* chore: ContestController에서 안 쓰는 import 제거

* refactor: MemberPartyStatus Member 도메인 아래로 변경

* refactor: ExerciseOrderType 사용처에 맞게 네이밍 변경 및 Bookmark 도메인 아래로 변경

* refactor: MemberStatus Enum을 Member 도메인 아래로 변경

* refactor: MyPartyExerciseOrderType Enum을 Exercise 도메인 아래로 변경

* refactor: NotificationType Enum을 Notification 도메인 아래로 변경

* refactor: PartyStatus를 Party 도메인 아래로 변경

* refactor: 모임 신청 관련 Enum들을 Party 도메인 아래로 변경

* refactor: 운동 참여 상태  Enum 운동 도메인으로 변경

* refactor: 메달 종류 Enum 대회 도메인으로 변경

* refactor: 활동 시간, 모임 운동 타입, 모임 정렬 타입 Enum 모임 도메인으로 변경

* [refactor/#189] 대회 등록 API에서 이미지 업로드 분리 (#197)

* refactor: 대회 등록 API에서 이미지 서비스 분리

* refactor: 날짜 데이터 형식 변경

* [refactor/#199] 대회 기록 수정 API에서 이미지 업로드 분리 (#200)

* refactor: 대회 기록 수정 API 에서 이미지 업로드 분리

* refactor: 대회 기록 수정 API 에서 이미지 업로드 분리

* refactor: 대회 기록 수정 API 에서 이미지 업로드 분리 및 메서드 통합

* fix: 안 쓰는 코드 삭제

* [feat/#193] 내 참여 운동 조회 API 구현 (#201)

* feat: 필터 및 정렬 Enum 구현

* feat: DTO 구현

* feat: 컨트롤러 구현

* feat: 필터 타입에 따른 정렬 로직 구현

* feat: 각 필터별 운동 조회 로직 구현

* feat: 빈 응답 조기 반환 로직 구현

* feat: 반환 로직까지 구현

* [feat/#198] 채팅 도메인 구현 (#203)

* Update issue templates

* [fix] cd 파일명 변경 gradle.yml to cd.yml

* [chore] ci 설정

* [fix] 파일이름 변경 ci to ci.yml

* [feat/#202] 특정 건물의 운동 상세 조회 API 구현 (#204)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 서비스 및 리포지토리 로직 구현

* feat: 날짜도 컨버터로 전달

* chore: DTO 네이밍 통일

* feat: 반환 로직 구현

* Update ci.yml

* debug: 충돌 해결 중 빠진 중괄호 추가

* Update ci.yml

* [feat/#205] 월간 운동 건물 지도 데이터 조회 API 구현 (#210)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 날짜 및 위치 정보 생성

* feat: 운동 조회 로직 구현

* feat: 필요없는 모임 조인 제거

* feat: 날짜별 건물 그룹핑 로직 및 반환 로직 추가

* feat: Addr의 위도 및 경도 필드 Float에서 Double로 자료형 변경

* fix: longitude 대신 latitude를 보내고 있던 로직 에러 해결

* feat: 날짜를 입력하지 않으면 오늘을 기본값으로 변경

* docs: 스웨거 수정

* feat: 위도와 경도 입력하지 않을 시 기본값으로 멤버 메인 주소를 사용

* feat: 거리 계산 로직을 위해 멤버 주소 또한 Double로 변경 + 사이드 이펙트 처리

* fix: 생성된 주소값을 반환하도록 변경

* docs: api 경로 변경 및 스웨거 설명 변경

* refactor: 클래스명 및 변수명 명확화

* docs: 스웨거 설명 추가

* [feat/#195] 모임 추천 조회 API 구현 (콕플 추천 / 필터) (#206)

* feat: QueryDSL 사용을 위해 의존성 추가 및 QuerydslConfig 구현

* fix: QueryDSL 추가로 인한 테스트 오류 방지를 위해 테스트용 yml 파일 추가

* feat: 모임 추천 조회 API 필터 요청을 담을 DTO 구현

* feat: 동적쿼리를 위한 리포지토리 추가 및 기존 리포지토리 상속

* feat: 동적쿼리를 처리하는 리포지토리 구현체 구현

* feat: 기존의 모임 추천 조회 컨트롤러에 필터 파라메터 및 정렬 조건 추가

* feat: 모임 추천 조회 서비스의 로직을 상황(콕플추천, 필터)에 따라 해당 로직을 사용하도록 구현

* feat: 동적쿼리가 정렬을 처리할 수 있도록 구현

* fix: record에서 불필요한 @Getter 제거 (에러발생)

* docs: 스웨거 요약문 변경

* fix: 삭제된 모임은 모임 추천 목록에 조회되지 않도록 수정

* refactor: PartyFilterDTO 객체 생성 빌더 패턴으로 리팩토링

* [feat/#120] 카카오 소셜로그인 구현 (#211)

* feat: SecurityConfig 일부 추가

* feat: 순수 회원가입 로직 작성

* feat: jwt 구현 완료

* feat: 카카오 소셜로그인 구현 및 테스트 완료

* fix: 로그인 한 사용자의 id를 가져올 수 있게 컨트롤러 수정

* fix: 테스트코드 삭제

* fix: 리다이렉트 uri 수정

* feat: cors 설정

* refact: 만료기간 상수로 분리

* [feat/#209] 모임 채팅방 목록 조회 API 구현 (#213)

* feat: 모임 채팅방 목록 조회 DTO 구현

* feat: 모임 채팅방 목록 조회 컨버터 구현

* feat: 모임 채팅방 목록 조회 컨트롤러 구현

* feat: 모임 채팅방 목록 조회 서비스 구현

* feat: 모임 채팅방 목록 조회 레포지토리 구현

* fix: 안쓰는 코드 삭제

* feat: 예외처리 구현

* refactor: 페이징 커서 방향 String에서 ENUM으로 교체

* refactor: getter 사용

* [refact/#214] 나이대 변수명 변경 (#219)

* refactor: 나이대 변수명 변경 (Age -> BirthYear)

* fix: SecurityConfig 파일 원복

* [feat/#217] 모임 생성 시 자동으로 모임 채팅방 생성 로직 구현 (#218)

* feat: 모임 생성 시 자동 채팅방 생성 및 모임장 채팅방에 자동 참여 로직 구현

* fix: 쿼리문 레포지토리 위치 수정

* [feat/#215] 모임 채팅방 이름 검색 API 구현 (#216)

* feat: 모임 채팅방 이름 검색 API 구현

* fix: 충돌 해결

* fix: 안 쓰는 임포트 제거

* feat: 모임 채팅방 이름 검색 쿼리 구현

* chore: 로그 추가

* fix: 레포지토리 수정

* [fix/#208] 모임 요청 파라미터 Enum 변환 및 검증 로직 수정  (#223)

* fix: 모임유형 한글로 입력을 받도록 수정

* fix: 활동시간 한글로 입력을 받도록 수정

* fix: 활동요일 한글로 입력을 받도록 수정

* docs: 급수 에러코드 설명문 변경

* feat: 키워드 한글 변환 로직 구현 및 에러코드 추가

* fix: 모임 추천 조회 필터의 입력값을 검증하도록 수정

* refactor: 급수 에러코드 CommonErrorCode 재활용

* [debug#225] 출생년도 비교로 변경 및 관련 필드명 변경

* [feat/#221] 모임 가입 수락 시 채팅방 자동 참여 로직 구현 (#226)

* [fix/#222] notification 테이블에 칼럼 추가 (#233)

* feat: notification 테이블에 칼럼 추가

* fix: memberId 방식 변경

* fix: Security Config 원상복구

* feat: 알림 이미지 전달 구현, key -> url 변환 구현

* feat: 로그인 후 상세정보 받기 구현

* [feat/#227] 모임 탈퇴 시, 자동으로 채팅방 퇴장 코드 구현 (#228)

* feat: 모임 탈퇴 시, 자동으로 채팅방 퇴장 코드 구현

* fix: 메세지 저장 방식 변경

* refactor: 채팅방 퇴장 메서드 추출

* fix: senderName 삭제

* [fix/#230] 모임 이미지 저장 방식 변경 및 imgKey 주소로 변환 (#234)

* fix: 모임 생성 시, imgKey를 전달받도록 변경

* debug: 모임 생성 시 이미지 null값 허용하여 에러 해결

* fix: 정적 팩토리 메서드와 모임 이미지 빌더 imgKey로 변경

* fix: PartyImg에서 imgUrl 필드 제거

* fix: 북마크 컨버터에 변경된 모임 imgUrl 호출 메서드 적용 및 static 제거

* fix: 채팅 컨버터에 변경된 모임 imgUrl 호출 메서드 적용

* fix: 운동 컨버터에 변경된 모임 imgUrl 호출 메서드 적용

* fix: 모임 컨버터에 변경된 모임 imgUrl 호출 메서드 적용

* refact: imageService 의존성 주입 및 변환 로직을 북마크 서비스로 이전

* refact: imageService 의존성 주입 및 변환 로직을 채팅 서비스로 이전

* refactor: imageService 의존성 주입 및 변환 로직을 모임 서비스로 이전

* [fix/#236] 대회 이미지 저장 방식 변경 (#237)

* fix: 대회 이미지 img_key만 저장하도록 수정

* refactor: 이미지 호출 관련 기존 컨버터에서 하던 로직을 서비스에서 하도록 리팩토링

* refactor: String으로 변결

* fix: 파라미터 조건 추가

* [feat/#192] 새로운 운동 추천 캘린더 조회 API 구현 (#229)

* feat: DTO 구현

* feat: 컨트롤러 구현

* feat: 멤버 정보 조회 및 기간 계산

* refactor: 기간 계산 로직 DateRange 안의 메서드로 변경

* feat: 콕플 추천 필터링된 운동 조회 로직 구현

* fix: 정렬 로직을 컨버터에서 진행하므로 메서드 제거

* feat: 기본 where절 구현

* refactor: 조인할 예정이므로 exercise.party를 party로 수정

* feat: 필터 where절 구현

* feat: 쿼리 전체 로직 구현

* refactor: 모임 레벨 조인 대신에 Exists절로 변경

* refactor: 콕플 추천 조회 로직 EXISTS절로 급수 비교하도록 변경

* feat: 운동 리포지토리에서 커스텀 인터페이스를 상속받도록 변경

* feat: 동적 쿼리 로직 호출

* feat: 추가 정보 조회 로직 구현

* feat: Response 반환 로직 구현

* feat: 정렬 로직 구현을 위해 정렬 필드도 넘기기

* feat: 주별 그룹화 로직 구현

* feat: 거리 정렬 로직을 위해 필드 추가

* feat: 콕플 추천 정렬 로직 구현

* feat: 필터 정렬 로직 구현

* feat: 데일리 아이템 생성 로직 구현

* feat: 위클리 생성 로직 구현

* fix: Party 필드명 변경에 따른 변경사항 적용

* fix: 나이 대신 생일년도로 비교하도록 변경

* feat: 참여인원이 많은 순으로 정렬을 위해 역방향으로 정렬

* [fix/#235] 운동 도메인에 이미지 로직 변경 적용 (#244)

* feat: 컨버터에 이미지 키 변환 메서드 추가

* fix: 새로운 운동 추천 캘린더 조회 API에 로직 반영

* fix: 운동 추천 조회 API에 로직 반영

* fix: 내 모임 운동 캘린더 조회 API에 로직 반영

* fix: 내 모임 운동 전체 조회 API에 로직 반영

* fix: 내 참여 운동 캘린더 조회 API에 로직 반영

* fix: 건물 운동 상세 조회 API에 로직 반영

* feat: 멤버 이미지 url 받아오는 메서드 추가

* fix: 운동 상세 조회 API에 로직 반영

* [feat/#232] 신규 멤버 추천 API 구현 (#246)

* feat: 추천 멤버 DTO 구현

* feat: 추천 멤버 조회 API 서비스 메서드 추가

* feat: 추천 멤버 조회 API 서비스 컨트롤러 구현

* feat: 추천 멤버 조회 API 커스텀 리포지토리 추가

* refact: 사용자의 id가 필요없기에 제거 및 오타 수정

* feat: 추천 멤버 조회 API 서비스 구현

* feat: 추천 멤버 조회 API 컨버터 구현

* fix: 프로필 이미지 key -> url 변환 로직 구현 및 적용

* feat: 추천 멤버 조회 동적 쿼리 구현

* fix: 검색 조건을 적용하는 경우도 기본적으로 모임 급수로 필터링하도록 수정

* [fix/#239] 로그인 후 상세 정보 받기 API 로직 수정 (#240)

* fix: 일부 로직 에러 수정

* fix: 시큐리티 원래대로

* feat: 찜 개수 제한 관련 로직 추가 (#242)

* [feat/#248] 웹소켓 기본 설정 및 연결 관리 구현 (#249)

* feat: WebSocket 의존성 추가

* feat: WebSocket 설정 구현

* feat: WebSocket 메시지 Enum 구현

* feat: 웹소켓 핸들러 틀 구현

* feat: 웹소켓 연결 완료 후 로직 구현

* feat: 웹소켓 종료 후 로직 구현

* feat: 웹소켓 전송 에러 로직 구현

* [feat/#243] 개인 채팅방 생성 및 참여 API 구현 (#245)

* feat: 개인 채팅방 생성 및 참여 API 응답 구현

* feat: 컨버터 구현

* feat: 컨트롤러 구현

* feat: 서비스 및 레포지토리 구현

* fix: 칼럼 수정 및 추가

* chore: 예외처리 추가

* chore: 자동 정렬

* feat: 사용자 이름 바뀌었을때, displayName 동기화 구현

* fix: senderName 삭제

* feat: 개인 채팅방 목록 조회 API 응답 구현

* feat: 컨버터 구현

* feat: 컨트롤러 구현

* feat: 서비스 구현

* [feat/#252] 개인 채팅방 이름으로 검색 API 구현 (#254)

* fix: 오타 수정

* feat: 컨트롤러 구현

* feat: 서비스 구현

* feat: 레포지토리 구현

* feat: 클라이언트에서 서버로 보내는 Request DTO 구현

* feat: Request 객체와 세션에서 필요한 정보 추출

* feat: 에러 처리 로직 구현

* feat: 메시지 반환 DTO 구현

* fix: develop 브랜치 rebase

* feat: 메시지 생성 및 저장 로직 구현

* fix: rebase 충돌 해결

* fix: Request 객체를 직접 받는 걸로 변경

* chore: 오타 수정

* fix: 필요없는 필드 제거

* feat: 반환 로직 구현

* feat: 메시지 전송 로직 호출 및 에러 처리 로직 구현

* feat: Request 객체 검증 로직 구현

* chore: 조건문 순서 변경

* refactor: 서비스로 Request 객체 넘기는 것은 안티패턴이므로 제거

* feat: 브로드캐스트 로직 구현

* refactor: 에러 처리 서비스 단에서 진행하도록 변경

* fix: 브로드캐스트 동시성 문제 해결

* feat: 브로드캐스트 병렬 실행 로직 구현

* chore: 파일 들여쓰기 및 import 정리

* fix: 조회 로직 에러 수정

* feat: 테스트 의존성 추가

* feat: 핸들러 테스트 초기 세팅 구현

* feat: 웹소켓 연결 성공 테스트 구현

* feat: 웹소켓 연결 실패 테스트 구현

* feat: 메시지 전송 성공 테스트 구현 - 브로드캐스트 제외

* fix: 잘못된 필드명 변경

* feat: 여러 사용자 테스트를 위해서 @InjectedMocks 대신 수동 생성으로 변경

* fix: package-private 메서드에 접근하기 위해 패키지 경로 동일화

* chore: 코드 순서 변경

* feat: 브로드캐스트 로직 테스트 구현

* feat: 완전한 메시지 전송 플로우 테스트 구현

* [feat/#162] 알림 추가 로직 구현 (#253)

* feat: 알림 추가 로직 구현

* feat: 알림 추가 로직 개발

* fix: bookmark컨트롤러 시큐리티 활성화

* feat: 개수 제한  추가

* feat: title 추가

* [fix/#255] 알림 전체 조회 응답에 data 필드 추가 (#263)

* [feat/#247] 신규 멤버 초대 보내기 API 구현  (#257)

* feat: PartyInvitation 엔티티 구현

* feat: 멤버 초대 보내기 API DTO 구현

* feat: 멤버 초대 보내기 API 서비스 메서드 추가

* feat: 멤버 초대 보내기 API 컨트롤러 구현

* feat: 멤버 초대 보내기 API 서비스 구현

* feat: 멤버 초대 리포지토리 구현

* feat: 대기 중인 초대 검증 에러코드 추가

* feat: 멤버 초대 보내기 API 컨버터 구현

* [feat/#264] 개발자 테스트용 토큰 발급 (#266)

* fix: 운동 도메인 id값 로그인한 사용자 id로 변경 (#268)

* [feat/#262] 모임 초대 처리 API 구현 (#270)

* feat: 모임 초대 처리 API DTO 구현

* feat: 모임 초대 처리 API 서비스 메서드 추가

* feat: 모임 초대 처리 API 컨트롤러 구현

* feat: 모임 초대 처리 API 서비스 구현

* feat: 모임 초대 상태 변경 비즈니스 메서드 구현

* feat: 모임 초대 처리 API 에러코드 추가

* fix: 모임 초대 시 채팅 참여 메서드 추가 및 JoinPartyChatRoom 범용적으로 사용 가능하도록 리팩토링

* [fix] cors 수정

* [fix/#238] 모임 유형을 오후 또는 오전으로 조회 시, 상시도 조회되도록 수정 (#272)

* fix: 모임 유형 오전, 오후 조회 시 상시도 조회되도록 로직 구현

* [fix] cors 수정

* chore: 안 쓰는 import문 제거

* feat: 모임 유형이 오전, 오후인지 체크하는 Utils 클래스 생성

* fix: 모임 유형 오전 or 오후 조회 시 상시도 조회되도록 변경

* refactor: 조건 로직을 Utils 메서드를 사용하도록 변경

---------

Co-authored-by: kanghana1 <qazplm12093@naver.com>
Co-authored-by: dmori <chosehoon2@naver.com>

* [chore/#274] 운동 도메인에서 이미지 url 필드명을 profileImageUrl로 통일 (#275)

* chore: 운동 상세 조회 API에서 필드명 변경

* chore: 운동 추천 조회 API에서 필드명 변경

* chore: 건물 운동 상세 조회 API에서 필드명 변경

* feat: DTO에 필드 추가 및 프로필도 같이 조회하도록 변경

* feat: 이미지 url도 반환하도록 변경

* fix: 테스트에서도 이미지 url 추가

* [refactor/#276] 운동 도메인 커맨드 서비스 분리 (#277)

* refactor: 운동 생성 검증 로직 이동

* refactor: 운동 신청 검증 로직 이동

* refactor: 게스트 초대 로직 검증 이동

* refactor: 운동 참여 취소 로직 검증 이동

* refactor: 게스트 초대 취소 로직 검증 이동

* refactor: 매니저에 의한 운동 참여 취소 로직 검증 이동

* refactor: 운동 삭제 로직 검증 이동

* refactor: 운동 업데이트 로직 검증 이동

* refactor: 운동 신청 메서드 참여 서비스로 이동

* refactor: 운동 참여 취소 메서드 참여 서비스로 이동

* refactor: 매니저에 의한 운동 참여 취소 메서드 참여 서비스로 이동

* refactor: 게스트 초대 메서드 게스트 서비스로 이동

* refactor: 게스트 초대 취소 메서드 게스트 서비스로 이동

* chore: 커맨드 서비스 이름 생명주기 서비스로 변경

* chore: 메서드 파일 내 순서 변경

* refactor: 운동 생성 로직 CommandService에서 호출하도록 변경

* refactor: 운동 삭제 로직 CommandService에서 호출하도록 변경

* refactor: 운동 업데이트 로직 CommandService에서 호출하도록 변경

* refactor: 운동 신청 로직 CommandService에서 호출하도록 변경

* refactor: 운동 신청 취소 로직 CommandService에서 호출하도록 변경

* refactor: 특정 참여자 운동 취소 로직 CommandService에서 호출하도록 변경

* refactor: 게스트 초대 로직 CommandService에서 호출하도록 변경

* refactor: 게스트 초대 취소 로직 CommandService에서 호출하도록 변경

* refactor: 패키지 구조 변경

* [feat/#231] 모임 정보 수정 API 구현 (#278)

* feat: 모임 정보 수정 DTO 구현

* feat: 모임 정보 수정 API 서비스 메서드 추가

* feat: 모임 정보 수정 API 컨트롤러 구현

* feat: 모임 정보 수정 API 서비스 구현

* feat: 정보 수정 비즈니스 로직 및 연관관계 편의 메서드 구현

* fix: 모임 정보 수정 DTO 검증 추가

* [feat/#279] 초기 채팅방 조회 API 구현 (#281)

* feat: 컨트롤러 구현

* fix: 메시지 중 이모지는 TEXT로 통합되어서 보내짐, 입장 및 퇴장을 처리하는 SYSTEM 필드로 수정

* feat: DTO 구현(채팅방 정보, 메시지 리스트, 참여자 리스트로 구분)

* chore: 메서드 명 명확화

* feat: 서비스 틀 구현

* feat: 채팅방 및 채팅방 참여 권한 검증

* feat: 채팅방 유형에 따라 가져오는 정보 분기 로직 구현

* refactor: 상대방 조회하는 로직이 N+1 문제를 불러일으키므로 이를 DB 조회 방식으로 해결

* refactor: 조회한 상대방 정보에서 멤버까지 접근하여 이름 필드 사용하도록 변경

* refactor: 모임 프로필 조회 시 N+1 문제가 발생하므로 이를 FETCH JOIN으로 해결

* fix: 잘못된 네이밍 변경

* feat: ChatInfo 생성 로직 구현

* feat: 최신 50개 메시지 조회 로직 구현

* feat: 메시지 정보 생성 로직 구현

* refactor: stream 로직 개선

* fix: 메시지 조회할 때 멤버도 조인하도록 변경

* feat: 메시지 정보 반환 로직 구현

* fix: 채팅방 멤버 조회할 때 멤버와 멤버 프로필까지 조회하도록 변경 + 이름순 정렬

* refactor: stream 로직 메서드 추출

* feat: 멤버 정보 반환 로직 구현

* feat: 마지막 메시지까지 읽음 처리

* feat: Response 반환 로직 구현

* fix: 메서드명 명확화

* chore: 개행 제거

* [debug/#289] 전송 이미지 크기 설정 (#293)

* [feat/#280] 과거 메시지 조회 API 구현 (#282)

* feat: 컨트롤러 구현

* feat: DTO 구현

* fix: Slice로 반환받기 위해 Response 객체 대신 MessageInfo를 직접 반환

* feat: 채팅방 멤버 검증 로직 구현

* feat: 커서 기반 메시지 조회 로직 구현

* fix: Transactional 어노테이션 잘못된 import 정정

* refactor: 정렬 로직이 필요없으므로 Pageable 대신 필요한 필드만 사용하도록 변경 + List로 반환

* feat: hasNext 판별 로직 구현

* feat: 오래된 순으로 조회했으므로 다시 반전

* feat: 메시지 정보 반환 로직 구현

* feat: 다음 커서 반환 로직 구현

* feat: 응답 반환 로직 구현

* fix: JPQL에서는 LIMIT를 지원하지 않으므로 Pageable로 데이터 크기 제한

* [feat/#256] 모임 채팅방 목록 조회 slice 기반 무한스크롤 구현 (#261)

* [fix/#291] 모임 id값 로그인한 사용자 id로 변경

* [fix/#294] 초대 알림 추가시 invitationId 넘겨주기 (#295)

* fix: 이미지 요청 크기 늘리기

* fix: data필드에 invitationId 추가

* [feat/#260] 모임 관련 알림 생성 로직 추가 (#290)

* feat: 모임 관련 알림 생성 로직 추가

* fix: INVITE일 경우, invitationId도 알림생성요청 dto에 포함

* debug: 에러 코드 변경

* [feat/#250] 메시지 전송 기능 구현 (#259)

* feat: 클라이언트에서 서버로 보내는 Request DTO 구현

* feat: Request 객체와 세션에서 필요한 정보 추출

* feat: 에러 처리 로직 구현

* feat: 메시지 반환 DTO 구현

* fix: develop 브랜치 rebase

* feat: 메시지 생성 및 저장 로직 구현

* fix: rebase 충돌 해결

* fix: Request 객체를 직접 받는 걸로 변경

* chore: 오타 수정

* fix: 필요없는 필드 제거

* feat: 반환 로직 구현

* feat: 메시지 전송 로직 호출 및 에러 처리 로직 구현

* feat: Request 객체 검증 로직 구현

* chore: 조건문 순서 변경

* refactor: 서비스로 Request 객체 넘기는 것은 안티패턴이므로 제거

* feat: 브로드캐스트 로직 구현

* refactor: 에러 처리 서비스 단에서 진행하도록 변경

* fix: 브로드캐스트 동시성 문제 해결

* feat: 브로드캐스트 병렬 실행 로직 구현

* chore: 파일 들여쓰기 및 import 정리

* fix: 조회 로직 에러 수정

* feat: 테스트 의존성 추가

* feat: 핸들러 테스트 초기 세팅 구현

* feat: 웹소켓 연결 성공 테스트 구현

* feat: 웹소켓 연결 실패 테스트 구현

* feat: 메시지 전송 성공 테스트 구현 - 브로드캐스트 제외

* fix: 잘못된 필드명 변경

* feat: 여러 사용자 테스트를 위해서 @InjectedMocks 대신 수동 생성으로 변경

* fix: package-private 메서드에 접근하기 위해 패키지 경로 동일화

* chore: 코드 순서 변경

* feat: 브로드캐스트 로직 테스트 구현

* feat: 완전한 메시지 전송 플로우 테스트 구현

* feat: DTO에 필드 추가 및 프로필도 같이 조회하도록 변경

* feat: 이미지 url도 반환하도록 변경

* fix: 테스트에서도 이미지 url 추가

* debug: rebase 과정 중 빌드 에러 해결

* fix: 채팅룸 네임 필드 삭제 (#304)

* [fix/#302] 하드코딩->로그인 아이디로 변경 (#303)

* fix: AWS 배포 과정에서 gradle 의존성 캐싱하도록 변경

* [feat/#283] 모임 채팅방 나가고 들어올 때 시스템 메시지 보내는 로직 구현 (#308)

* feat: 모임 입출입 ENUM 구현

* feat: 모임 입출입 이벤트 구현

* feat: 모임 입출입 이벤트 리스너 구현

* fix: 메시지 타입 중 이미지 제거

* feat: 이벤트 리스너에서 웹소켓 서비스를 호출하여 시스템 메시지 전송 로직 시작

* chore: 패키지명 변경

* feat: 핸들러와 서비스의 순환 참조 방지를 위해 시스템메시지 이벤트 구현

* fix: 웹소켓 서비스에서 시스템 메시지 이벤트 발행

* feat: 시스템 메시지 이벤트 리스너 구현 - 브로드캐스트 진행

* feat: 모임 채팅방 참여 이벤트 발행

* feat: 모임 채팅방 퇴장 이벤트 발행

* feat: Async 어노테이션 활성화를 위해 Config 구현

* chore: WebSockeetMessageDTO 객체 위치 변경

* refactor: 웹 소켓 연결도 enum값으로 처리하도록 변경

* refactor: 브로드캐스트 서비스 분리(1) - 웹소켓 연결

* refactor: 브로드캐스트 서비스 분리(2) - 웹소켓 종료

* refactor: 브로드캐스트 서비스 분리(3) - 브로드캐스트

* refactor: 테스트 메서드 이동

* refactor: 채팅방 멤버 변경 이벤트 발행

* fix: 모임에서 나가고 들어오는 것과 채팅방 나가고 들어오는 걸 하나의 트랜잭션에서 처리

* fix: 채팅방 나가고 들어오는 이벤트 리스너 구현

* feat: 채팅방 나가고 들어오는 로직 및 메시지 전송 로직 ChatRoomService에 구현

* fix: 필요없는 메서드들 제거

* fix: 세션 추가 메서드 네이밍 명확화

* fix: 웹소켓 핸들러만 테스트하도록 변경

* refactor: 시스템 메시지 보내는 로직을 웹소켓 서비스로 이동

* fix: 핸들러 테스트 제외하고 포스트맨으로 테스트하도록 변경

* refactor: 웹소켓 서비스에서 브로드캐스트 로직 처리하도록 변경

* [feat/#284] 개인 채팅 slice기반 목록 조회 구현 (#309)

* [feat/#305] redis 기본 설정 추가 및 도입 (#313)

* debug: 임시로 웹소켓 경로 허용 (#316)

* [feat/#265] 채팅방 구독 로직 구현 (#314)

* feat: 채팅방 구독 로직 틀 구현

* chore: 브로드캐스트 서비스 구독 서비스로 이름 변경

* feat: 채팅 메시지 전송 이벤트 구현

* refactor: 메시지 전송을 이벤트 발행으로 처리하도록 변경

* feat: 채팅 구독 이벤트 레코드 구현

* refactor: 채팅방 멤버 전체 브로드캐스트 대신 구독자만 브로드캐스트 하기 위해 구독 관리 방식 변경

* refactor: 네트워크 I/O는 성능에 별로 영향을 주지 않으므로 for문으로 변경

* fix: 실패한 사용자 처리 로직 구현

* fix: 구독 로직을 ChatWebSocketService 대신 SubscriptionService에서 진행

* feat: 구독 반환 DTO 구현

* feat: 구독 이벤트 발행 로직 및 성공 메시지 반환 로직 구현

* feat: 구독 이벤트 리스너 구현

* feat: 발신자 제외 브로드캐스트 기능 추가 - 자기 메시지 중복 수신 방지

* fix: 웹소켓 연결 시 멤버 이름 설정 안하는 에러 해결

* [feat/#306] JWT를 활용해 웹소켓 연결 인증 단계 구현 (#317)

* feat: HandShakeInterceptor 구현체 틀 구현

* feat: 에러 처리 로직 틀 구현

* feat: URL에서 JWT 토큰 추출

* feat: 멤버 id를 jwt에서 추출하여 세션에 넣어두기

* feat: 인터셉터 단계 추가하고 프론트 url만 허용하도록 변경

* develop 브랜치와 충돌 해결

* [feat/#287] 다운로드 토큰 발급 구현 (#310)

* feat: DownloadToken 엔티티 구현

* feat: 다운로드 토큰 발급 DTO 구현

* feat: 다운로드 토큰 발급 API 서비스 메서드 추가

* feat: 다운로드 토큰 발급 API 컨트롤러 구현

* refact: ChatFileService로 파일 관련 로직 구현하도록 변경

* ChatMessageFile 엔티티 구현

* feat: 다운로드 토큰 발급 API 서비스 구현

* feat: DownloadToken 정적 팩토리 메서드 구현

* feat: 다운로드 토큰 발급 API 리포지토리 추가

* feat: 다운로드 토큰 발급 API 에러코드 추가

* feat: 다운로드 토큰 발급 API 컨버터 구현

* feat: 양방향 연결을 위해 chatMessageFile 필드 추가

* [feat/#288] 파일 다운로드 구현 (#318)

* feat: 다운로드 토큰 발급 API 서비스 메서드 추가

* refact: ChatFileService로 파일 관련 로직 구현하도록 변경

* feat: 채팅 파일 다운로드 API 서비스 메서드 추가

* feat: 채팅 파일 다운로드 API 컨트롤러 구현

* feat: 채팅 파일 다운로드 API 서비스 구현

* feat: 채팅 파일 다운로드 API 에러코드 추가

* feat: 채팅 파일 다운로드 API 리포지토리 메서드 추가

* feat: 이미지 서비스에 파일 다운로드 메서드 구현

* fix: 토큰 유효시간 3분으로 수정

* fix: cors 프론트엔드 url 반영

* [feat/#319] 개발자용 토큰 발급 API(다른 사용자) 구현 (#320)

* feat: 컨트롤러 구현

* feat: 메서드 구현

* feat: 다른 사용자 개발자 토큰 발급도 스프링 시큐리티에서 허용하도록 변경

* [fix/#324] 모임 주소 중복 유니크 제약조건 추가 (#325)

fix: 모임 주소 중복 유니크 제약조건 추가

* [feat/#300] 채팅방 구독 해제 로직 (#321)

* feat: 구독 해제 핸들러 구현

* feat: 구독해제 이벤트 생성 메서드 구현

* feat: 이벤트 리스너 로직 구현

* feat: 구독 해제 로직 구현

* [feat/#311] 파일 다운로드 리팩토링 / 파일 업로드 API 구현 (#323)

* bug: 잘못된 다운로드 토큰 url 생성 로직 수정

* fix: Pre-signed URL로 임시 마스터키 발급

* refact: 직접 s3 object를 가져오도록 리팩토링하여 성능항샹 및 문제 해결

* refact: 파일 업로드에서도 통일된 enum타입을 사용하기 위해 ImgType -> DomainType으로 명칭 변경

* feat: 파일 업로드 API 컨트롤러 구현

* feat: 파일 업로드 API 서비스 구현

* refact: enum에 해당 도메인 경로 저장하도록 리팩토링

* refact: 중복 로직을 공통 메서드로 구현 및 파일/이미지 업로드하는 uploadToS3 메서드 구현

* refact: 불필요한 extractKeyFromUrl 메서드 제거

* refact: UploadDTO 형식 통일

* [feat/#322] 탈퇴 회원 시큐리티 필터에서 검증 (#327)

* feat: 탈퇴 회원 시큐리티 필터에서 검증

* fix: 에러메시지  수정

* [feat/#328]  JWT null인 경우 예외처리 (#329)

* [feat/#296] 키워드 추가 API 구현 (#330)

* feat: 키워드 추가 API DTO 구현

* feat: 키워드 추가 API 서비스 메서드 추가

* feat: 키워드 추가 API 컨트롤러 구현

* feat: 키워드 추가 API 서비스 구현

* feat: 키워드 추가 검증 에러코드 추가

* feat: 키워드 추가 API 리포지토리 구현

* [feat/#335] 키워드 삭제 API 구현 (#336)

* feat: 키워드 삭제 API 컨트롤러 구현

* feat: 키워드 삭제 API 서비스 메서드 추가 및 서비스 구현

* feat: 키워드 삭제 비즈니스 로직 구현

* feat: 키워드 삭제 에러코드 추가

* feat: 키워드 삭제 API 리포지토리 구현

* [feat/#301] 채팅방 자동 읽음 로직 구현 (#331)

* feat: 핸들러 구현

* feat: 웹소켓 Request DTO에 마지막으로 읽은 메시지 ID 넣기

* feat: 채팅 메시지 읽기 이벤트 구현

* refactor: 이벤트 트랜잭션 최적화

* feat: 이벤트 리스너 구현

* feat: 마지막으로 읽은 메시지 업데이트

* feat: 브로드캐스트할 읽음 반환 레코드 구현

* feat: 브로드캐스트할 메시지 생성 로직 구현 및 브로드캐스트 호출

* fix: 브로드캐스트 메시지 변수명 변경

* refactor: 브로드캐스트 오버로딩을 위해 Sealed 인터페이스 구현

* feat: 읽음 메시지 브로드캐스트 로직 구현

* refactor: 메시지 브로드캐스트 메서드명 변경

* fix: 필드명 통일

* debug: 메시지 업데이트 쿼리 에러 해결

* fix: 읽음 메시지 브로드캐스트 할 때 마지막으로 읽은 메시지 정보 반환하지 않도록 변경

* fix: 구독된 채팅방 자동읽음 처리를 위해 기존 로직 전부 삭제

* feat: 메시지 자동 읽음 이벤트 로직 구현

* feat: 읽음 처리 로직 구현

* fix: 사용하지 않도록 변경한 메서드 제거

* debug: LEFT JOIN으로 개인 채팅 조회 안 되는 에러 해결 (#338)

* [fix/#297] 여복인 경우 MaleLevel 추가 불가능하도록 수정 (#340)

* fix: 여복인 경우, 남자 급수를 방지하는 검증 로직 추가

* feat: 에러코드 추가

* [fix/#326] 특정 지역으로 조회 시, addr2가 전체인 모임도 조회되도록 수정 (#341)

* [fix/#334] 개인 채팅에서 처음 메시지 보내면 채팅방 초대 로직으로 변경 (#342)

* feat: 채팅방 멤버 엔티티에 상태 추가

* fix: 모임 생성 및 모임 참여 시 채팅방 멤버 상태도 JOINED로 설정하도록 추가

* refactor: 모임 채팅방 생성 로직 채팅 도메인으로 이동

* refactor: 채팅방 생성 + 자동 참여 로직 엔티티 메서드로 리팩터링

* refactor: 모임 채팅방 자동 참여 시 null인지 체크하도록 검증 추가

* chore: 더이상 파티 서비스에서 사용하지 않는 채팅 리포지토리들 제거

* refactor: 모임 채팅방 생성 메서드명 명확화

* refactor: 파티 채팅방 생성 메서드 메서드명 및 인자 리팩터링

* refactor: 멤버 조회 메서드 네이밍 명확화

* fix: 채팅방 멤버 나는 참가 상태로, 상대방은 대기 상태로 생성

* fix: 개인 채팅방 목록 조회 및 검색 시 JOINED 상태인 경우만 조회하도록 변경

* feat: 개인 채팅방에서 첫 메시지 전송일경우 상대방도 초대하도록 변경

* fix: @Builder.Default 어노테이션으로 일대다 필드를 생성하지 않아도 기본값으로 생성하도록 변경

* docs: 개인 채팅방 생성 및 참여 api 설명 명확화

* chore: api 클래스 내 순서 변경

* refactor: /chats는 RequestMapping으로 처리

* [fix/#345] 급수 조건이 맞지 않더라도 모임의 멤버가 될 수 있도록 수정 (#346)

* fix: 모임 가입신청 시, 급수 조건에 적합한지 검증하는 로직 제거

* refact: 기존 나이대 조건, 성별 조건 검증 메서드를 모임 생성에도 활용할 수 있도록 리팩토링

* fix: 운동 신청 시 급수 조건 검증 로직 주석처리 (#349)

* fix: 임시 url -> 실제 메달 이미지 url (#351)

* [feat/#355] 운동 수정을 위한 조회 API 구현 (#356)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 서비스 구현

* feat: 컨버터 구현

* docs: 조회 조건 삭제

* fix: 모임 운동 캘린더 조회 API에서 운동 참여 여부도 반환하도록 변경 (#354)

* [feat/#350] 모임 id로 roomid 조회 API 구현 (#352)

* feat: 채팅방 id 조회 API DTO 추가

* feat: 채팅방 id 조회 API 컨트롤러 구현

* feat: 채팅방 id 조회 API 서비스 구현

* feat: 채팅방 id 조회 API 컨버터 구현

* feat: 멤버 검증을 위한 리포지토리 메서드 추가

* feat: 채팅방 id 조회 API 에러코드 추가

* docs: README 작성 (#358)

* [fix/#361] 모임 관련 검증 수정사항 반영 (#363)

* fix: 가입신청 처리 시, 이미 멤버인지 검증 로직 추가

* fix: 모임 생성 시, 급수 조건에 적합한지 검증하는 로직 제거

* [fix/#362] 현재 (목록/개인) 채팅방 목록 조회 및 검색 API에서 채팅방이 없을 때 에러 던지는 걸 빈 배열 던지는 걸로 반환 (#364)

* fix: 모임 채팅방 조회 시 아무것도 없으면 빈 배열 반환하도록 변경

* fix: 개인 채팅방 조회 시 아무것도 없으면 빈 배열 반환하도록 변경

* debug: 웹소켓 설정에서 프론트 배포 주소 CORS 허용 (#360)

* [fix/#332] 채팅 메시지 조회할 때 읽지않은 멤버 수도 반환하도록 변경 (#344)

* fix: 모임 생성 및 모임 참여 시 채팅방 멤버 상태도 JOINED로 설정하도록 추가

* chore: 더이상 파티 서비스에서 사용하지 않는 채팅 리포지토리들 제거

* refactor: 파티 채팅방 생성 메서드 메서드명 및 인자 리팩터링

* feat: 메시지 읽음 상태 엔티티 구현

* feat: 채팅 보낼 시 채팅방 읽음 상태 생성 후 저장

* feat: 채팅 구독자들 메시지 읽음으로 변경

* feat: 마지막으로 읽은 메시지 id도 업데이트 하도록 구현

* refactor: 채팅방 목록 조회 시 안 읽은 메시지 카운트를 메시지 읽음 상태 테이블에서 조회하도록 리팩터링

* feat: 브로드캐스트 할 DTO에 안 읽은 멤버 필드 추가

* feat: 메시지 보낼 때 지금 구독자 수 체크하는 메서드 구현

* feat: 구독자들 읽음 상태로 변경 및 안읽은 메시지 수 반환하기

* feat: 안 읽은 사람 수도 반환하도록 변경

* refactor: 이벤트 구조로 처리하는 대신 활성 구독자 수 체크하며 한 번에 읽음 상태 업데이트

* feat: 구독 시 메시지마다 안 읽은 수 업데이트 정보 틀 구현

* feat: 안 읽은 메시지 id 리스트 조회

* feat: 안 읽은 메시지가 없을 때 로직 구현

* feat: 메시지마다 안 읽은 사람 수 카운트 로직 구현

* feat: 채팅방 구독할 때 마지막 메시지 업데이트 하도록 변경

* feat: 구독 시 메시지 업데이트 브로드캐스트 로직 구현

* debug: Long으로 반환하기 위해 Query문 사용

* chore: 사용하지 않는 메서드 정리

* feat: 구독하는 사람은 업데이트 메시지 받지 않도록 변경

* [debug/#365] 잘못된 사용자id를 넘겨주어 생기던 로직 오류 해결 (#366)

* [docs] 리드미 약간 수정

* [feat/#367] 채팅 보낼 때 이미지와 파일도 같이 보낼 수 있도록 로직 추가 (#373)

* fix: 메시지 전송 시 파일과 이미지들도 보낼 수 있도록 DTO 필드 추가

* fix: 이벤트 생성 시 파일과 이미지들도 보내도록 변경

* chore: 사용하지 않는 서비스 제거

* fix: 리스너와 서비스에서 파일과 이미지들 받도록 변경

* refactor: dirty checking으로 불필요한 저장 로직 제거

* feat: 메시지 저장할 때 이미지와 파일도 저장

* refactor: 브로드캐스트 응답과 분리하기 위해 중첩 record로 변경

* fix: 브로드캐스트 할 때 파일 정보와 이미지 정보를 담을 DTO 구현

* feat: 브로드캐스트할 파일 및 이미지 DTO 생성 로직 구현

* feat: 브로드캐스트 DTO에 누락된 필드 추가

* fix: 브로드캐스트 DTO 생성 로직에 이미지와 파일 필드 추가

* fix: 채팅 이미지 엔티티 다운로드를 위해 수정

* fix: 채팅 이미지 Request 필드 수정

* fix: 채팅 이미지 생성 필드 수정

* fix: 내용, 이미지, 파일 모두 없을경우 에러를 던지도록 변경

* fix: 일대다 매핑에서 Builder.Default 추가

* chore: 필요없는 엔터 제거

* [feat/#370] 이미지 다운로드 API 구현  (#371)

* fix: ChatMessageImg 수정

* feat: 채팅 이미지 다운로드 API 서비스 추가

* feat: 채팅 이미지 다운로드 API 서비스 구현

* debug: 오타 수정

* fix: 파일 업로드 시에도 파일 이름, 크기, 타입을 반환하도록 수정

* [fix/#339] 급수 검색에서 포함된 글자만으로도 조회되도록 수정 (#374)

* fix: 급수 검색에서 포함된 글자만으로도 조회되도록 수정

* [fix/#375] 모임 상세 조회 응답 필드 추가 (#377)

* fix: 모임 상세정보 DTO에 필드 추가

* feat: 대기중인 가입신청 여부를 확인하는 비즈니스 로직 구현

* feat: 수정사항 반영하여 컨버터에 추가

* debug: 운동 상세 조회 API에서 멤버 ID값이 아닌 멤버 운동 참여 ID값을 반환하던 로직 에러 해결 (#381)

* debug: CD 최신 이미지 반영 문제 해결 (#383)

* debug: 남아있는 컨테이너 강제 제거하는 스크립트 추가 (#384)

* [fix/#385] 채팅방 목록에서 마지막 메시지 표시 로직 개선 (#386)

* feat: 엔티티에 마지막 메시지 내용 반환하는 메서드 구현

* fix: content대신 마지막 메시지 내용 반환 메서드 사용

* [fix/#388] 키워드 추가를 다중 선택이 가능하도록 수정 (#389)

* fix: 키워드 추가 DTO 리스트로 수정

* fix: 키워드 추가 API 수정 및 연관관계 편의 메서드 추가

* fix: 키워드 삭제 및 사용하지 않는 에러코드 제거

* debug: content가 비어있을 때 hasContent가 true가 되는 에러 해결 (#391)

* [fix/#392] 모임 목록 조회 시, 응답에 찜 여부 추가 (#394)

* fix: 찜 여부를 모임 목록, 모임 상세 조회 DTO에 추가

* fix: 서비스 메서드에 북마크 여부를 확인하는 로직 추가

* fix: 찜한 모임들의 ID을 조회하는 메서드 리포지토리에 추가

* fix: 찜 여부 필드 컨버터에 추가

* [fix/#379] 프로필 이미지 관련 오류 수정 (#393)

* [feat/#372] WebSocket 요청마다 에러를 반환하도록 개선 (#395)

* feat: 구독 시 에러 메시지 반환을 위해 메서드 분리

* feat: 구독 해제 시 에러 메시지 반환을 위해 메서드 분리

* feat: 메시지 전송 시 에러 메시지 반환을 위해 메서드 분리

* fix: 에러 메시지 전송할 때 채팅방 ID 반환 로직 제거

* refactor: 메시지 전송 시 즉시 검증으로 리팩토링

* feat: 구독 및 구독 해제 검증 로직 구현

* refactor: 같은 의미를 담고 있는 에러 코드 통합

* fix: 에러 응답에 채팅방 id 미포함으로 변경

* fix: 에러 응답시 메시지 제대로 포함되도록 변경

* refactor: 웹소켓 연결 성공 시 멤버 정보 조회 메서드를 멤버 쿼리 서비스로 이동

* refactor: 웹소켓 서비스 네이밍 내부 코드에 따라 채팅 송신 서비스로 명확화

* refactor: 웹소켓 서비스들 패키지 분리

* refactor: 웹소켓 메세지 응답 로직 별도 서비스로 분리

* chore: import문 및 코드 스타일 정리

* [fix/#379] 프로필 사진 수정 오류 (#396)

* [fix/#398] 토큰 재발급 경로 permitAll 처리 (#399)

* fix: 토큰 재발급 경로 permitAll 처리

* fix: 리프레시토큰 null 예외처리

* fix: 리프레시토큰 null 예외처리

* [feat/#400] 채팅 메시지에서 이모티콘과 일반 이미지 구분 기능 구현 (#402)

* feat: 채팅 메시지 이미지 엔티티에서 이모티콘 여부 필드 추가

* feat: 초기 채팅방 조회 API에서 이미지 필드 List를 이미지 객체로 변환

* refactor: 이미지 정보와 멤버 정보 공통 DTO로 분리 -> 추후 같은 기능을 하는 메서드를 합치기 위함

* refactor: 메시지 조회 로직에서 중복된 코드를 CommonDTO를 활용해 제거

* refactor: 컨버터 로직 구현

* refactor: 메시지 보낼 때도 이모지 필드 반환하도록 변경

* [fix/#397] 모임 초대, 가입신청 처리 알림 추가  (#401)

* feat: 알림 dto의 필드 및 enum 추가

* fix: 알림 생성자 메서드 추가

* fix: 모임 초대 처리 시, 알림 생성 코드 구현

* fix: enum 명칭 변경 (모임 초대 승인)

* fix: 가입 신청 처리 알림 생성자 및 enum 추가

* fix: 가입 신청 처리 시, 알림 생성 코드 구현

* fix: 알림 내용에 모임 이름 제거

* [feat/#403] 마이프로필 키워드 조회 추가 (#404)

* [chore/#405] 리프레시 토큰 재발급 텀 줄이기 (#406)

* fix: 내 운동 리스트 조회 API에 레벨 필드 추가 (#408)

* [feat/#343] Redis 기반 채팅방 구독 관리 시스템 구축 (#409)

* feat: Redis 설정 중 lettuce 클라이언트 도입…
kanghana1 added a commit that referenced this pull request Dec 27, 2025
* [feat/#46] 내 대회 기록 상세조회 API 구현 (#54)

* feat: 내 대회 기록 상세 조회 응답 DTO 구현

* feat: 내 대회 기록 상세 조회 컨버터 구현

* feat: 내 대회 기록 상세 조회 컨트롤러 구현

* feat: 내 대회 기록 상세 조회 서비스 구현

* refator: 이미지, 동영상 순서 정렬 기능 추가

* [feat/#55] 내 대회 기록 리스트 조회 (전체, 미입상) API 구현 (#58)

* refator: 미입상 NONE 추가

* feat: 내 대회 기록 심플 조회 응답 DTO 구현

* refator: GET 메서드 queryService로 옮기기

* feat: 내 대회 기록 심플 조회, 리스트로 변환 컨버터 구현

* feat: 내 대회 기록 리스트 조회 컨트롤러 구현

* feat: 내 대회 기록 리스트 조회(전체, 미입상) 서비스 구현

* refactor: 내 대회 기록 리스트 조회(전체, 미입상) 하나의 API로 수정

* fix: static 삭제

* refactor: 메서드 인라인

* chore: 주석

* chore: yml 고치기 (#63)

* [feat/#57] 운동 삭제 API 구현 (#60)

* feat: 컨트롤러 구현

* feat: 응답 DTO 구현

* feat: 멤버 권한 검증 로직 구현

* chore: Party 엔티티에서 운동 생성 메서드 위치 변경

* feat: 운동 삭제 로직 구현

* feat: 반환 로직 구현

* [feat/#43] 운동 게스트 삭제 API 구현 (#56)

* feat: 컨트롤러 구현

* feat: 검증 로직 구현

* feat: 게스트 삭제 로직 구현

* feat: 에러 코드 구현

* feat: 운동 시작 여부 검증 로직 추가

* [refactor/#61] 운동 참여자 수 계산 로직 수동 증가에서 사이즈 계산으로 변경 (#65)

* refactor: nowCapacity 필드 제거

* refactor: nowCapacity 필드 사용 메서드 수정

* refactor: 현재 인원 반환 메서드 추가

* refactor: 람다식 메서드 참조로 변경

* refactor: 다음 순번 계산 메서드 추가

* [feat/#34] 모임 가입 신청 멤버 조회 API 구현 (#68)

* refactor: 용어 혼용 방지를 위해 모임 가입신청 생성 API의 DTO 명칭 변경

* feat:모임 가입신청 조회 DTO 구현

* feat: 모임 가입신청 조회 서비스 인터페이스 추가

* feat: 모임 가입신청 조회 API 컨트롤러 구현

* feat: 모임 가입신청 리포지토리에 조회 메서드 추가

* feat: 모임 가입신청 조회 서비스 구현

* feat: 권한 없음 에러 코드 추가

* feat: 모임 가입신청 조회 API 컨버터 구현

* refactor: PartyJoinRequest를 BaseEntity에 상속받도록 수정

* feat: Member와 프로필 이미지 양방향 관계 설정

* refactor: 테스트 진행을 위해 memberId 임시값 변경

* feat: 모임 가입신청 목록을 최신순으로 정렬하도록 기본값 추가

* [feat/#59] 내 대회 메달 조회 API 구현 (#67)

* feat: 내 메달 개수 조회 응답 DTO 구현

* feat: 쿼리 메서드 구현

* feat: 메달 개수 조회 컨버터, 컨트롤러 구현

* feat: 메달 개수 조회 서비스 구현

* chore: log.info() 추가

* [feat/#70] 다른 회원의 대회 기록 상세조회 API 구현 (#71)

* feat: 다른 사람의 대회 기록 상세조회 응답 DTO 구현

* feat: {내/다른 사람}의 대회 기록 상세조회 통합 컨버터 구현

* feat: 다른 사람의 대회 기록 상세조회 컨트롤러 구현

* feat: {내/다른 사람}의 대회 기록 상세조회 통합 서비스 구현

* [feat/#73] 다른 회원의 대회 기록 리스트 (전체, 미입상) API 구현 (#74)

* feat: 다른 사람의 대회 기록 리스트 조회 API 컨트롤러 구현

* refactor: {내/다른 사람}의 대회 기록 리스트 조회 통합 서비스 구현

* chore: 주석 수정

* [feat/#75] 다른 회원의 대회 메달 조회 API 구현 (#76)

* chore: 주석 수정

* feat: 다른 사람의 대회 메달 개수 조회 API 컨트롤러 구현

* [feat/#66] 운동 수정 API 구현 (#69)

* feat: 컨트롤러 구현

* feat: 모임장 운동 취소 API에서 누락된 @Valid 어노테이션 추가

* feat: DTO 구현

* feat: 검증 로직 구현

* feat: dto 접근을 위한 command 패턴 도입

* feat: 운동 정보 수정 로직 구현

* feat: 운동 주소 정보 수정 로직 구현

* feat: 저장 및 반환 로직 구현

* feat: 에러 코드 정의

* fix: 컨트롤러 url 오타 수정

* feat: requestDTO 필드 수정

* [feat/#53] 모임 가입신청 처리 API 구현 (#77)

* feat: 승인 요청에 대한 응답을 담는 enum 추가 (RequestAction)

* feat: 모임 가입신청 처리 요청 DTO 구현

* feat: 모임 서비스 인터페이스에 가입신청 처리 메서드 추가

* feat: 모임 가입신청 처리 API 컨트롤러 구현

* feat: 모임 가입신청 처리 API 서비스 구현

* feat: 가입신청 처리를 위한 정적 팩토리 메서드 및 비즈니스 메서드 구현

* feat: 모임 가입신청 처리 API 에러 코드 추가

* fix: 스웨거 설명문 추가 및 오류 수정

* refactor: 사용하지않는 import 정리

* refactor: orderType 필드 제거

* refactor: 양방향 연결을 위해 member에 연관 관계 편의 메서드 추가

* [feat/#72] 프로필 수정 기능 구현 (#79)

* feat: 프로필 수정 기능 구현

* feat: 프로필 사진 재생성 관련 에러 처리

* chore: 스웨거 설명 수정

* refact: dto 클래스 -> record 변환

* [refactor/#81] 운동 DTO에 중첩 record 적용 (#82)

* chore: pull 관련 임시 에러처리

* refactor: 운동 생성 API에서 중첩 record 패턴 적용

* refactor: 운동 참여 API에서 중첩 record 패턴 적용

* refactor: 운동 게스트 초대 API에서 중첩 record 패턴 적용

* refactor: 운동 참여 취소 API에서 중첩 record 패턴 적용

* refactor: 게스트 초대 취소 API에서 중첩 record 패턴 적용

* docs: 게스트 초대 취소 API 로그 수정

* refactor: 특정 참여자 운동 취소 API에서 중첩 record 패턴 적용

* refactor: 운동 삭제 API에서 중첩 record 패턴 적용

* refactor: 운동 수정 API에서 중첩 record 패턴 적용

* [feat/#80] 회원주소 추가 API 구현 (#83)

* feat: 회원주소 추가 API 구현

* feat: 주소 개수 예외처리 추가

* [refactor/#84] 이미지 업로드 방식 변경 (#85)

* refactor: dto 어노테이션 수정

* [refactor/#88] 메달 도메인 DTO에 중첩 record 패턴 도입 (#90)

* [feat/#86] 대표 주소 변경API 구현 (#87)

* [feat/#94] 회원 주소 삭제 API 구현 (#97)

* [refactor/#98] 주소 추가 로직 수정 (#99)

* [feat/#100] 회원 탈퇴 기능 구현 (#101)

* [refactor/#89] 모임 생성 API 이미지 업로드 방식 변경 (#91)

refactor: 모임 생성 API 이미지 업로드 방식 변경

* [refactor/#92] 모임 도메인 DTO에 중첩 record 패턴 도입 (#93)

* refactor: 모임 도메인 DTO에 중첩 record 패턴 도입

* refactor: DTO 명칭 변경 및 임포트 정리

* [fix/#107] 병합 오류 해결 (#108)

* Revert "[refactor/#92] 모임 도메인 DTO에 중첩 record 패턴 도입 (#93)"

This reverts commit feaa902.

* fix: 병합 오류 해결 완료

* refactor: MemberExercise와 Guest에서 participantNum 필드 제거 (#105)

* [refactor/#109] 모임 생성 API 에러 처리 추가 (#112)

* feat: 모임 생성 DTO에 에러 처리 및 ENUM 변환 메서드 구현

* feat: 입력값 에러 코드 추가

* refactor: 에러 처리 관련 코드 수정

* [feat/#103] 운동 신청 API에서 검증 로직 추가 (#106)

* feat: 운동 급수 검증 로직 추가

* feat: 에러 코드 추가

* docs: Swagger docs에 급수 위반 추가

* refactor: Exercise와 연관된 엔티티들 fetch join으로 불러오기(N+1) 방지

* feat: 나이 계산 메서드 추가

* feat: 나이 검증 로직 추가

* feat: 에러 코드 추가

* refactor: 급수 및 나이 검증 로직 4XX 비즈니스 에러로 변경

* [feat/#95] 프로필 조회 관련 API 구현 (#118)

* feat: 다른 유저 프로필 조회

* chore: API URL 수정

* feat: 내 프로필 조회 API 구현

* chore: 컨트롤러 메서드 이름 수정

* [feat/#110] 모임 신청 API 검증 로직 추가 구현 (#117)

* feat: 모임 신청자가 모임의 급수 조건에 적합한지 검증하는 로직 구현

* feat: 급수 조건 검증 에러 코드 추가

* feat: 모임 신청자가 모임 유형에 맞는 성별인지 검증하는 로직 구현

* feat: 모임유형의 성별 조건 검증 에러 코드 추가

* feat: 모임 신청자가 모임 나이대에 적합한지 검증하는 로직 구현

* feat: 나이 조건 검증 에러 코드 추가

* [Feat/#96] 회원 주소 조회 관련 API 구현 (#119)

* refact: 대표주소 추출 메소드 분리

* feat: 내 현재 위치 조회 API 구현

* chore: 건물명 null여부 관련 수정

* chore: 프로필 조회시 건물명, 도로명 추가

* feat: 회원의 등록 주소 전체 조회

* feat: 대표 주소가 위로 올라오도록 기능 추가

* [feat/#113] 모임 생성 API 검증 로직 추가 구현 (#121)

* feat: 모임 생성자의 성별을 검증하는 로직 구현

* feat: 모임 생성자의 나이를 검증하는 로직 구현

* feat: 모임 생성자의 급수를 검증하는 로직 구현

* feat: 빈 리스트 방지를 위해 @notempty로 변경

* feat: 혼복인 경우, 남성의 급수가 빈 리스트로 입력되는 것을 방지하기 위한 로직 구현

* refactor: 문자열 입력값 검증 @notblank로 변경

* [feat/#123] 운동 멤버십 구분 기능 추가 (#126)

* feat: 운동 참여 멤버쉽 enum 추가

* refactor: 운동 정렬 enum 제거 및 필드 제거

* feat: 운동 신청 시 운동 멤버십 결정 로직 구현

* feat: 게스트 엔티티는 따로 필드 없이 GUEST를 반환하는 로직으로 구현

* refactor: MemberExercise joinedAt 필드 제거에 따라 createdAt을 반환하도록 변경

* fix: ExerciseBookmark 엔티티에서 잘못 삭제한 필드 복구

* fix: 운동 신청 시 운동 신청 엔티티 생성 시점 반환으로 로직 에러 수정

* [feat/#124] 모임 가입 승인 멤버 조회 API 구현 (#127)

* refactor: PartyJoinDTO에 생성일자 추가

* feat: status(상태) 파라메터에 추가

* refactor: 컨버터에 updatedAt 추가

* fix: record의 request 오류 @Schema로 해결

* feat: PENDING인 경우, uppdateAt에 null값을 넣고 DTO에서 생략되도록 구현

* feat: 상태 에러 코드 추가 및 유효성 검증 구현

* [feat/#78] 운동 상세 조회 API 구현 (#128)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 쿼리 서비스 틀 구현

* feat: 기본 검증 구현

* feat: 파티 내 위치 체크

* feat: 멤버 참가자 호출 로직 구현

* refactor: 외부 참여자 ENUM값 변경

* refactor: 메서드명 더 명확하게 변경

* feat: 게스트 참가자 호출 로직 구현, 배치 쿼리로 최적화

* feat: 정렬을 위해 Info record에 joinedAt 컬럼 추가

* feat: 운동 기본 정보 로직 구현

* feat: 참여자, 대기자 그룹의 참여자 정보 반환 타입 List로 변경

* feat: 전체 참여자를 참여자와 대기자로 구분하는 로직 구현

* feat: 그룹 정보 로직 구현

* feat: 반환 로직 구현

* fix: ENUM 값 변경에 따라 사용처도 변경

* [feat/#122] 모임 상세 조회 API 구현 (#129)

* feat: 모임 상세조회 DTO 구현

* feat: 모임 상세조회 인터페이스에 메서드 추가

* feat:모임 상세조회 컨트롤러 메서드 구현

* feat: 모임 상세조회 API 서비스 구현

* feat: 모임 상세 조회 API 컨버터 구현

* refactor: partyDetailDTO record 하나로 통일

* feat: ENUM에 한글 추가 및 getter 추가

* refactor: 급수를 리스트 형식으로 반환하도록 수정

* feat: 컨트롤러에 @apiresponse 추가

* [feat/#131] 내 모임 조회 (간략화) API 구현 (#134)

* feat: 내 모임 간략화 조회 DTO 구현

* feat: 내 모임 간략화 조회 서비스 메서드 추가

* feat: 모임 간략화 조회 컨트롤러 메서드 구현

* feat: 내 모임 간략화 조회 서비스 구현

* feat: 내 모임 조회 리포지토리 메서드 구현

* feat: 내 모임 간략화 조회 컨버터 구현

* refactor: 서비스에 로그 출력문 추가

* [feat/#132] 내가 초대한 운동 게스트 조회 API 구현 (#133)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 대기 상태 구분을 위해 isWating 필드 추가

* feat: 내가 초대한 게스트 목록 조회

* feat: 전체 참가자 목록 조회

* refactor: 운동 조회할 때 모임 정보와 함께 조회하도록 변경

* feat: 게스트 번호와 참여 여부 추출

* feat: 게스트 번호와 참여여부 record DTO로 이동 및 통계 record 추가

* feat: 통계 계산 로직 구현 및 반환 로직 구현

* docs: Swagger 성공 응답 설명 수정

* [feat/#130] 내 모임 조회 API 구현 (#135)

* feat: 내 모임 조회 DTO 구현

* feat: 내 모임 조회 서비스 메서드 추가

* feat: 내 모임 조회 컨트롤러 구현 및 정렬 로직 처리

* feat: 내 모임 조회 서비스 구현

* 모임 조회를 위한 비즈니스 메서드 및 운동 정보 record 구현

* feat: 내 모임 조회 컨버터 구현

* feat: 운동 정보를 담을 record 구현

* feat: 모임 조회 쿼리 구현

* refactor: 공백 제거 및 기본값 추가

* refactor: 정렬 기준 입력 한글로 입력 가능하도록 리팩토링 및 에러 처리

* [refactor/#138]  orphanRemoval 제거 (#139)

* [feat/#140] 모임 찜 관련 API 구현 (#141)

* feat: 모임 찜 관련 API 구현

* refactor: 중복 로직 삭제

* [docs#142] 운동 도메인 DTO의 Request 객체에 @Schema 어노테이션 추가 (#143)

* [feat/#145] 전역 에러 핸들러에서 Validation 과정에서 에러 응답을 1개만 던지는 대신 전체를 던지도록 변경 (#147)

* feat: RequestBody의 에러 메시지 1개가 아닌 전체 던지도록 변경

* feat: PathVariable, RequestParam의 에러 메시지가 1개가 아닌 전체를 던지도록 변경

* [feat/#144] 모임 운동 캘린더 조회 API 구현 (#148)

* feat: 컨트롤러 구현

* feat: 응답 DTO 구현

* fix: 운동 시작 시간 및 종료 시간 에러코드 1XX로 변환

* feat: 검증 로직 구현

* feat: 에러 코드 정의

* feat: 날짜 기간 내 운동 조회 로직 구현

* feat: 디폴트 날짜 계산 로직 구현

* feat: 멤버 여부와 파티 이름도 반환하도록 구현

* feat: 최상위 Response 객체 생성 로직 구현

* chore: 캘린더 스펠링 변경

* feat: 모임 성별 급수 정보 제외 반환 로직 구현

* feat: 성별 급수 정보 반환 로직 구현

* refactor: 성별 급수 1번만 계산하도록 변경

* refactor: 운동 주별로 그룹화 로직 메서드 추출로 리팩터링

* refactor: 운동 참여자 정보 fetch join 대신 네이티브 쿼리 Count로 따로 조회

* [feat/#125] 운동 찜 관련 기능 구현 (#150)

* feat: 운동 찜하기 구현

* feat: 운동 찜 해제 구현

* refactor: 예외처리 부분 수정

* 재배포

* test: 배포 테스트

* set: 배포 이후 yml파일 수정 및 S3 설정파일 추가

* [feat/#151] 운동 찜 조회 구현 (#155)

* feat: 운동 찜 조회 구현

* chore: 주석 오타 수정

* [feat/#153] 내 운동 캘린더 조회 API 구현 (#156)

* feat: 컨트롤러 구현

* feat: DTO 구현

* chore: 함수 Calendar 오타 수정

* feat: 서비스 로직 구현

* chore: Calendar 오타 수정

* feat: 최상위 Response 반환 로직 구현

* feat: 나머지 반환 로직 구현

* docs: .gitignore에 application-dev.yml 추가

* config: application.yml에 aws 관련 설정 추가

* [feat/#152] 찜한 모임 전체 조회 API 구현 (#157)

* feat: 찜한 모임 전체 조회

* chore: 코드 오타 수정

* [feat/#166] 모임 운동 캘린더 조회 API에 찜 여부 추가 (#167)

* feat: DTO에 찜 여부 필드 추가

* feat: 서비스와 리포지토리에 찜 여부 반환 로직 구현

* feat: 컨버터에 북마크 여부 반환 로직 추가

* [feat/#154] 내 모임 운동 조회 API 구현 (#163)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 내가 속한 모임 리스트 조회 및 빈 응답 반환 로직 구현

* docs: Swagger 설명에 누락된 큰 따옴표 추가

* feat: 내가 속한 모임의 운동 리스트 최대 6개까지 가져오는 로직 구현

* feat: 반환 로직 구현

* [feat/#149] 운동 도메인에 빈 응답 조기 반환(Early Return) 패턴 도입 (#170)

* feat: 모임 운동 캘린더 조회에서 빈 응답 조기 반환 패턴 도입

* feat: 내 운동 캘린더 조회에서 빈 응답 조기 반환 패턴 도입

* feat: 내가 초대한 게스트 조회에서 빈 응답 조기 반환 패턴 도입

* [feat/#160] 알림 전체 조회 API 구현 (#171)

* feat: 알림 관련 기본 파일세팅 완료

* feat: 알림 전체 조회 기능 구현

* chore: 세미콜론 누락 추가

* refact: 반환타입 수정

* [feat/#111] 모임 삭제 API 구현 (#174)

* feat: 모임 삭제 API 서비스 메서드 추가

* feat: 모임 삭제 API 컨트롤러 구현

* feat: 모임 삭제 API 서비스 구현

* feat: 모임 엔티티에 모임 삭제 비즈니스 메서드와 status 필드 추가

* feat: PartyStatus ENUM 추가

* [refactor/#175] 모임 활동상태 검증 메서드 추가 (#176)

* feat: 모임 활성화 관련 에러 코드 추가

* refactor: 모임 서비스에 모임 활성화 검증 로직 추가

* refactor: 모임 조회 서비스에 모임 활성화 검증 로직 추가

* refactor: 운동 서비스에 모임 활성화 검증 로직 추가

* refactor: 찜 서비스에 모임 활성화 검증 로직 추가

* refactor: 모임 찜 양방향 연결로 변경 및 모임 삭제 시 모임 찜 연결 해제

* refactor: 운동 조회 서비스에 모임 활성화 검증 로직 추가

* [feat/#165] 내 모임 운동 캘린더 조회 API 구현 (#179)

* feat: 내 모임 운동 정렬방식 ENUM 추가

* fix: 충돌 해결

* docs: Swagger 성공 및 실패 응답 작성

* feat: 응답 DTO 구현

* feat: 조회 로직 구현

* refactor: 컨버터 메서드들 네이밍 통일 및 위치 한 곳으로 모음

* fix: DTO의 잘못된 참조 변경

* feat: 북마크 여부 로직 추가

* feat: 반환 로직 추가

* feat: fetch join을 위해서 로직 개선

* feat: 날짜별 그룹핑 DTO 로직 추가

* feat: 날짜별로 정렬해야 하기에 전체 운동 정렬 로직 제거

* feat: 사람 수 미리 계산 후 Converter에서 정렬

* feat: 운동 참여 인원 수 반환 로직 추가

* [feat/#178] 모임 멤버 조회 API 구현 (#180)

* feat: 모임 멤버 조회 API DTO 구현

* feat: 모임 멤버 조회 API 서비스 메서드 추가

* feat: 모임 멤버 조회 API 컨트롤러 구현

* refactor: 잘못된 로그 출력문 수정

* feat: 모임 멤버 조회 API 서비스 구현

* feat: 모임 멤버 조회 쿼리 구현

* feat: 모임 멤버 조회 API 컨버터 구현

* refactor: 모임 활성화 검증 추가

* refactor: 부모임장 ENUM에 추가

* feat: 모임 멤버 조회 role에 따른 정렬 구현

* [feat/#177] 캘린더 조회 API에서 날짜별로 아이템 묶기 (#181)

* feat: 내 운동 캘린더 조회 DTO에서 날짜별 운동 DTO 추가

* feat: 내 운동 캘린더 조회 컨버터 로직 구현

* refactor: 불필요한 클래스 명시 제거

* feat: 모임 운동 캘린더 조회 DTO에서 날짜별 운동 DTO 추가

* feat: 모임 운동 캘린더 조회 컨버터 로직 구현

* [feat/#172] 대회 이미지 업로드 API 구현 (#173)

* [feat/#136] 모임 탈퇴 API 구현 (#182)

* feat: 모임 탈퇴 서비스 메서드 추가

* fix: 잘못된 요청 매핑 주소 수정

* feat: 모임 탈퇴 API 컨트롤러 구현

* feat: 모임 탈퇴 API 관련 에러코드 구현

* feat: 모임 탈퇴 API 서비스 구현

* refactor: 서비스 메서드 정리 및 코멘트 수정

* refact: 필요 없어진 배포 관련 파일 삭제

* [feat/#137] 모임 멤버 삭제 API 구현 (#187)

* feat: 모임 멤버 삭제 API 서비스 메서드 추가

* feat: 모임 멤버 삭제 API 컨트롤러 구현

* feat: 모임 멤버 삭제 API 서비스 구현

* feat: 모임 멤버 삭제 API 에러코드 추가

* feat: 읽지 않은 알림 여부 조회 (#184)

* [feat/#159] 특정 알림 읽음 처리 (#183)

* feat: 특정 알림 읽음처리

* refactor: 필요 없는 부분 삭제

* feat: 회원 검증 로직 및 타입 관련 Request DTO 추가

* [feat/#188] 모임 추천 조회 API 구현 (#190)

* feat: 모임 추천 조회 API 서비스 메서드 추가

* feat: 모임 추천 조회 API 컨트롤러 구현

* feat: 모임 추천 조회 API 서비스 구현

* feat: 모임 추천 조회 및 사용자 주소 조회 리포지토리 메서드 구현

* feat: 사용자가 이미 가입한 모임은 추천되지 않도록 구현

* [feat/#164] 추천 운동 조회 API 구현 (#191)

* feat: 컨트롤러 구현

* feat: 반환을 리스트로 변경

* feat: DTO 구현

* chore: 오탈자 수정

* feat: 운동 조회 로직 구현

* feat: 서비스에서 반환 로직 구현

* feat: ExerciseItem을 List로 반환하도록 변경

* feat: 10개만 조회할경우 거리가 가까운 운동 조회 못할 수 있으므로 전체 조회로 변경

* feat: 정렬 로직 구현

* chore: 로그 출력

* feat: 반환 로직 구현

* refactor: 운동 아이템 List 형태로 반환하는 메서드 제거

* feat: 에러 코드 추가

* docs: 스웨거 설명 추가

* [refactor/#194] 도메인별 ENUM 패키지 구조 개선 (#196)

* refactor: 활동 요일 ENUM을 PARTY DOMAIN 아래로 변경

* chore: ContestController에서 안 쓰는 import 제거

* refactor: MemberPartyStatus Member 도메인 아래로 변경

* refactor: ExerciseOrderType 사용처에 맞게 네이밍 변경 및 Bookmark 도메인 아래로 변경

* refactor: MemberStatus Enum을 Member 도메인 아래로 변경

* refactor: MyPartyExerciseOrderType Enum을 Exercise 도메인 아래로 변경

* refactor: NotificationType Enum을 Notification 도메인 아래로 변경

* refactor: PartyStatus를 Party 도메인 아래로 변경

* refactor: 모임 신청 관련 Enum들을 Party 도메인 아래로 변경

* refactor: 운동 참여 상태  Enum 운동 도메인으로 변경

* refactor: 메달 종류 Enum 대회 도메인으로 변경

* refactor: 활동 시간, 모임 운동 타입, 모임 정렬 타입 Enum 모임 도메인으로 변경

* [refactor/#189] 대회 등록 API에서 이미지 업로드 분리 (#197)

* refactor: 대회 등록 API에서 이미지 서비스 분리

* refactor: 날짜 데이터 형식 변경

* [refactor/#199] 대회 기록 수정 API에서 이미지 업로드 분리 (#200)

* refactor: 대회 기록 수정 API 에서 이미지 업로드 분리

* refactor: 대회 기록 수정 API 에서 이미지 업로드 분리

* refactor: 대회 기록 수정 API 에서 이미지 업로드 분리 및 메서드 통합

* fix: 안 쓰는 코드 삭제

* [feat/#193] 내 참여 운동 조회 API 구현 (#201)

* feat: 필터 및 정렬 Enum 구현

* feat: DTO 구현

* feat: 컨트롤러 구현

* feat: 필터 타입에 따른 정렬 로직 구현

* feat: 각 필터별 운동 조회 로직 구현

* feat: 빈 응답 조기 반환 로직 구현

* feat: 반환 로직까지 구현

* [feat/#198] 채팅 도메인 구현 (#203)

* Update issue templates

* [fix] cd 파일명 변경 gradle.yml to cd.yml

* [chore] ci 설정

* [fix] 파일이름 변경 ci to ci.yml

* [feat/#202] 특정 건물의 운동 상세 조회 API 구현 (#204)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 서비스 및 리포지토리 로직 구현

* feat: 날짜도 컨버터로 전달

* chore: DTO 네이밍 통일

* feat: 반환 로직 구현

* Update ci.yml

* debug: 충돌 해결 중 빠진 중괄호 추가

* Update ci.yml

* [feat/#205] 월간 운동 건물 지도 데이터 조회 API 구현 (#210)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 날짜 및 위치 정보 생성

* feat: 운동 조회 로직 구현

* feat: 필요없는 모임 조인 제거

* feat: 날짜별 건물 그룹핑 로직 및 반환 로직 추가

* feat: Addr의 위도 및 경도 필드 Float에서 Double로 자료형 변경

* fix: longitude 대신 latitude를 보내고 있던 로직 에러 해결

* feat: 날짜를 입력하지 않으면 오늘을 기본값으로 변경

* docs: 스웨거 수정

* feat: 위도와 경도 입력하지 않을 시 기본값으로 멤버 메인 주소를 사용

* feat: 거리 계산 로직을 위해 멤버 주소 또한 Double로 변경 + 사이드 이펙트 처리

* fix: 생성된 주소값을 반환하도록 변경

* docs: api 경로 변경 및 스웨거 설명 변경

* refactor: 클래스명 및 변수명 명확화

* docs: 스웨거 설명 추가

* [feat/#195] 모임 추천 조회 API 구현 (콕플 추천 / 필터) (#206)

* feat: QueryDSL 사용을 위해 의존성 추가 및 QuerydslConfig 구현

* fix: QueryDSL 추가로 인한 테스트 오류 방지를 위해 테스트용 yml 파일 추가

* feat: 모임 추천 조회 API 필터 요청을 담을 DTO 구현

* feat: 동적쿼리를 위한 리포지토리 추가 및 기존 리포지토리 상속

* feat: 동적쿼리를 처리하는 리포지토리 구현체 구현

* feat: 기존의 모임 추천 조회 컨트롤러에 필터 파라메터 및 정렬 조건 추가

* feat: 모임 추천 조회 서비스의 로직을 상황(콕플추천, 필터)에 따라 해당 로직을 사용하도록 구현

* feat: 동적쿼리가 정렬을 처리할 수 있도록 구현

* fix: record에서 불필요한 @Getter 제거 (에러발생)

* docs: 스웨거 요약문 변경

* fix: 삭제된 모임은 모임 추천 목록에 조회되지 않도록 수정

* refactor: PartyFilterDTO 객체 생성 빌더 패턴으로 리팩토링

* [feat/#120] 카카오 소셜로그인 구현 (#211)

* feat: SecurityConfig 일부 추가

* feat: 순수 회원가입 로직 작성

* feat: jwt 구현 완료

* feat: 카카오 소셜로그인 구현 및 테스트 완료

* fix: 로그인 한 사용자의 id를 가져올 수 있게 컨트롤러 수정

* fix: 테스트코드 삭제

* fix: 리다이렉트 uri 수정

* feat: cors 설정

* refact: 만료기간 상수로 분리

* [feat/#209] 모임 채팅방 목록 조회 API 구현 (#213)

* feat: 모임 채팅방 목록 조회 DTO 구현

* feat: 모임 채팅방 목록 조회 컨버터 구현

* feat: 모임 채팅방 목록 조회 컨트롤러 구현

* feat: 모임 채팅방 목록 조회 서비스 구현

* feat: 모임 채팅방 목록 조회 레포지토리 구현

* fix: 안쓰는 코드 삭제

* feat: 예외처리 구현

* refactor: 페이징 커서 방향 String에서 ENUM으로 교체

* refactor: getter 사용

* [refact/#214] 나이대 변수명 변경 (#219)

* refactor: 나이대 변수명 변경 (Age -> BirthYear)

* fix: SecurityConfig 파일 원복

* [feat/#217] 모임 생성 시 자동으로 모임 채팅방 생성 로직 구현 (#218)

* feat: 모임 생성 시 자동 채팅방 생성 및 모임장 채팅방에 자동 참여 로직 구현

* fix: 쿼리문 레포지토리 위치 수정

* [feat/#215] 모임 채팅방 이름 검색 API 구현 (#216)

* feat: 모임 채팅방 이름 검색 API 구현

* fix: 충돌 해결

* fix: 안 쓰는 임포트 제거

* feat: 모임 채팅방 이름 검색 쿼리 구현

* chore: 로그 추가

* fix: 레포지토리 수정

* [fix/#208] 모임 요청 파라미터 Enum 변환 및 검증 로직 수정  (#223)

* fix: 모임유형 한글로 입력을 받도록 수정

* fix: 활동시간 한글로 입력을 받도록 수정

* fix: 활동요일 한글로 입력을 받도록 수정

* docs: 급수 에러코드 설명문 변경

* feat: 키워드 한글 변환 로직 구현 및 에러코드 추가

* fix: 모임 추천 조회 필터의 입력값을 검증하도록 수정

* refactor: 급수 에러코드 CommonErrorCode 재활용

* [debug#225] 출생년도 비교로 변경 및 관련 필드명 변경

* [feat/#221] 모임 가입 수락 시 채팅방 자동 참여 로직 구현 (#226)

* [fix/#222] notification 테이블에 칼럼 추가 (#233)

* feat: notification 테이블에 칼럼 추가

* fix: memberId 방식 변경

* fix: Security Config 원상복구

* feat: 알림 이미지 전달 구현, key -> url 변환 구현

* feat: 로그인 후 상세정보 받기 구현

* [feat/#227] 모임 탈퇴 시, 자동으로 채팅방 퇴장 코드 구현 (#228)

* feat: 모임 탈퇴 시, 자동으로 채팅방 퇴장 코드 구현

* fix: 메세지 저장 방식 변경

* refactor: 채팅방 퇴장 메서드 추출

* fix: senderName 삭제

* [fix/#230] 모임 이미지 저장 방식 변경 및 imgKey 주소로 변환 (#234)

* fix: 모임 생성 시, imgKey를 전달받도록 변경

* debug: 모임 생성 시 이미지 null값 허용하여 에러 해결

* fix: 정적 팩토리 메서드와 모임 이미지 빌더 imgKey로 변경

* fix: PartyImg에서 imgUrl 필드 제거

* fix: 북마크 컨버터에 변경된 모임 imgUrl 호출 메서드 적용 및 static 제거

* fix: 채팅 컨버터에 변경된 모임 imgUrl 호출 메서드 적용

* fix: 운동 컨버터에 변경된 모임 imgUrl 호출 메서드 적용

* fix: 모임 컨버터에 변경된 모임 imgUrl 호출 메서드 적용

* refact: imageService 의존성 주입 및 변환 로직을 북마크 서비스로 이전

* refact: imageService 의존성 주입 및 변환 로직을 채팅 서비스로 이전

* refactor: imageService 의존성 주입 및 변환 로직을 모임 서비스로 이전

* [fix/#236] 대회 이미지 저장 방식 변경 (#237)

* fix: 대회 이미지 img_key만 저장하도록 수정

* refactor: 이미지 호출 관련 기존 컨버터에서 하던 로직을 서비스에서 하도록 리팩토링

* refactor: String으로 변결

* fix: 파라미터 조건 추가

* [feat/#192] 새로운 운동 추천 캘린더 조회 API 구현 (#229)

* feat: DTO 구현

* feat: 컨트롤러 구현

* feat: 멤버 정보 조회 및 기간 계산

* refactor: 기간 계산 로직 DateRange 안의 메서드로 변경

* feat: 콕플 추천 필터링된 운동 조회 로직 구현

* fix: 정렬 로직을 컨버터에서 진행하므로 메서드 제거

* feat: 기본 where절 구현

* refactor: 조인할 예정이므로 exercise.party를 party로 수정

* feat: 필터 where절 구현

* feat: 쿼리 전체 로직 구현

* refactor: 모임 레벨 조인 대신에 Exists절로 변경

* refactor: 콕플 추천 조회 로직 EXISTS절로 급수 비교하도록 변경

* feat: 운동 리포지토리에서 커스텀 인터페이스를 상속받도록 변경

* feat: 동적 쿼리 로직 호출

* feat: 추가 정보 조회 로직 구현

* feat: Response 반환 로직 구현

* feat: 정렬 로직 구현을 위해 정렬 필드도 넘기기

* feat: 주별 그룹화 로직 구현

* feat: 거리 정렬 로직을 위해 필드 추가

* feat: 콕플 추천 정렬 로직 구현

* feat: 필터 정렬 로직 구현

* feat: 데일리 아이템 생성 로직 구현

* feat: 위클리 생성 로직 구현

* fix: Party 필드명 변경에 따른 변경사항 적용

* fix: 나이 대신 생일년도로 비교하도록 변경

* feat: 참여인원이 많은 순으로 정렬을 위해 역방향으로 정렬

* [fix/#235] 운동 도메인에 이미지 로직 변경 적용 (#244)

* feat: 컨버터에 이미지 키 변환 메서드 추가

* fix: 새로운 운동 추천 캘린더 조회 API에 로직 반영

* fix: 운동 추천 조회 API에 로직 반영

* fix: 내 모임 운동 캘린더 조회 API에 로직 반영

* fix: 내 모임 운동 전체 조회 API에 로직 반영

* fix: 내 참여 운동 캘린더 조회 API에 로직 반영

* fix: 건물 운동 상세 조회 API에 로직 반영

* feat: 멤버 이미지 url 받아오는 메서드 추가

* fix: 운동 상세 조회 API에 로직 반영

* [feat/#232] 신규 멤버 추천 API 구현 (#246)

* feat: 추천 멤버 DTO 구현

* feat: 추천 멤버 조회 API 서비스 메서드 추가

* feat: 추천 멤버 조회 API 서비스 컨트롤러 구현

* feat: 추천 멤버 조회 API 커스텀 리포지토리 추가

* refact: 사용자의 id가 필요없기에 제거 및 오타 수정

* feat: 추천 멤버 조회 API 서비스 구현

* feat: 추천 멤버 조회 API 컨버터 구현

* fix: 프로필 이미지 key -> url 변환 로직 구현 및 적용

* feat: 추천 멤버 조회 동적 쿼리 구현

* fix: 검색 조건을 적용하는 경우도 기본적으로 모임 급수로 필터링하도록 수정

* [fix/#239] 로그인 후 상세 정보 받기 API 로직 수정 (#240)

* fix: 일부 로직 에러 수정

* fix: 시큐리티 원래대로

* feat: 찜 개수 제한 관련 로직 추가 (#242)

* [feat/#248] 웹소켓 기본 설정 및 연결 관리 구현 (#249)

* feat: WebSocket 의존성 추가

* feat: WebSocket 설정 구현

* feat: WebSocket 메시지 Enum 구현

* feat: 웹소켓 핸들러 틀 구현

* feat: 웹소켓 연결 완료 후 로직 구현

* feat: 웹소켓 종료 후 로직 구현

* feat: 웹소켓 전송 에러 로직 구현

* [feat/#243] 개인 채팅방 생성 및 참여 API 구현 (#245)

* feat: 개인 채팅방 생성 및 참여 API 응답 구현

* feat: 컨버터 구현

* feat: 컨트롤러 구현

* feat: 서비스 및 레포지토리 구현

* fix: 칼럼 수정 및 추가

* chore: 예외처리 추가

* chore: 자동 정렬

* feat: 사용자 이름 바뀌었을때, displayName 동기화 구현

* fix: senderName 삭제

* feat: 개인 채팅방 목록 조회 API 응답 구현

* feat: 컨버터 구현

* feat: 컨트롤러 구현

* feat: 서비스 구현

* [feat/#252] 개인 채팅방 이름으로 검색 API 구현 (#254)

* fix: 오타 수정

* feat: 컨트롤러 구현

* feat: 서비스 구현

* feat: 레포지토리 구현

* feat: 클라이언트에서 서버로 보내는 Request DTO 구현

* feat: Request 객체와 세션에서 필요한 정보 추출

* feat: 에러 처리 로직 구현

* feat: 메시지 반환 DTO 구현

* fix: develop 브랜치 rebase

* feat: 메시지 생성 및 저장 로직 구현

* fix: rebase 충돌 해결

* fix: Request 객체를 직접 받는 걸로 변경

* chore: 오타 수정

* fix: 필요없는 필드 제거

* feat: 반환 로직 구현

* feat: 메시지 전송 로직 호출 및 에러 처리 로직 구현

* feat: Request 객체 검증 로직 구현

* chore: 조건문 순서 변경

* refactor: 서비스로 Request 객체 넘기는 것은 안티패턴이므로 제거

* feat: 브로드캐스트 로직 구현

* refactor: 에러 처리 서비스 단에서 진행하도록 변경

* fix: 브로드캐스트 동시성 문제 해결

* feat: 브로드캐스트 병렬 실행 로직 구현

* chore: 파일 들여쓰기 및 import 정리

* fix: 조회 로직 에러 수정

* feat: 테스트 의존성 추가

* feat: 핸들러 테스트 초기 세팅 구현

* feat: 웹소켓 연결 성공 테스트 구현

* feat: 웹소켓 연결 실패 테스트 구현

* feat: 메시지 전송 성공 테스트 구현 - 브로드캐스트 제외

* fix: 잘못된 필드명 변경

* feat: 여러 사용자 테스트를 위해서 @InjectedMocks 대신 수동 생성으로 변경

* fix: package-private 메서드에 접근하기 위해 패키지 경로 동일화

* chore: 코드 순서 변경

* feat: 브로드캐스트 로직 테스트 구현

* feat: 완전한 메시지 전송 플로우 테스트 구현

* [feat/#162] 알림 추가 로직 구현 (#253)

* feat: 알림 추가 로직 구현

* feat: 알림 추가 로직 개발

* fix: bookmark컨트롤러 시큐리티 활성화

* feat: 개수 제한  추가

* feat: title 추가

* [fix/#255] 알림 전체 조회 응답에 data 필드 추가 (#263)

* [feat/#247] 신규 멤버 초대 보내기 API 구현  (#257)

* feat: PartyInvitation 엔티티 구현

* feat: 멤버 초대 보내기 API DTO 구현

* feat: 멤버 초대 보내기 API 서비스 메서드 추가

* feat: 멤버 초대 보내기 API 컨트롤러 구현

* feat: 멤버 초대 보내기 API 서비스 구현

* feat: 멤버 초대 리포지토리 구현

* feat: 대기 중인 초대 검증 에러코드 추가

* feat: 멤버 초대 보내기 API 컨버터 구현

* [feat/#264] 개발자 테스트용 토큰 발급 (#266)

* fix: 운동 도메인 id값 로그인한 사용자 id로 변경 (#268)

* [feat/#262] 모임 초대 처리 API 구현 (#270)

* feat: 모임 초대 처리 API DTO 구현

* feat: 모임 초대 처리 API 서비스 메서드 추가

* feat: 모임 초대 처리 API 컨트롤러 구현

* feat: 모임 초대 처리 API 서비스 구현

* feat: 모임 초대 상태 변경 비즈니스 메서드 구현

* feat: 모임 초대 처리 API 에러코드 추가

* fix: 모임 초대 시 채팅 참여 메서드 추가 및 JoinPartyChatRoom 범용적으로 사용 가능하도록 리팩토링

* [fix] cors 수정

* [fix/#238] 모임 유형을 오후 또는 오전으로 조회 시, 상시도 조회되도록 수정 (#272)

* fix: 모임 유형 오전, 오후 조회 시 상시도 조회되도록 로직 구현

* [fix] cors 수정

* chore: 안 쓰는 import문 제거

* feat: 모임 유형이 오전, 오후인지 체크하는 Utils 클래스 생성

* fix: 모임 유형 오전 or 오후 조회 시 상시도 조회되도록 변경

* refactor: 조건 로직을 Utils 메서드를 사용하도록 변경

---------

Co-authored-by: kanghana1 <qazplm12093@naver.com>
Co-authored-by: dmori <chosehoon2@naver.com>

* [chore/#274] 운동 도메인에서 이미지 url 필드명을 profileImageUrl로 통일 (#275)

* chore: 운동 상세 조회 API에서 필드명 변경

* chore: 운동 추천 조회 API에서 필드명 변경

* chore: 건물 운동 상세 조회 API에서 필드명 변경

* feat: DTO에 필드 추가 및 프로필도 같이 조회하도록 변경

* feat: 이미지 url도 반환하도록 변경

* fix: 테스트에서도 이미지 url 추가

* [refactor/#276] 운동 도메인 커맨드 서비스 분리 (#277)

* refactor: 운동 생성 검증 로직 이동

* refactor: 운동 신청 검증 로직 이동

* refactor: 게스트 초대 로직 검증 이동

* refactor: 운동 참여 취소 로직 검증 이동

* refactor: 게스트 초대 취소 로직 검증 이동

* refactor: 매니저에 의한 운동 참여 취소 로직 검증 이동

* refactor: 운동 삭제 로직 검증 이동

* refactor: 운동 업데이트 로직 검증 이동

* refactor: 운동 신청 메서드 참여 서비스로 이동

* refactor: 운동 참여 취소 메서드 참여 서비스로 이동

* refactor: 매니저에 의한 운동 참여 취소 메서드 참여 서비스로 이동

* refactor: 게스트 초대 메서드 게스트 서비스로 이동

* refactor: 게스트 초대 취소 메서드 게스트 서비스로 이동

* chore: 커맨드 서비스 이름 생명주기 서비스로 변경

* chore: 메서드 파일 내 순서 변경

* refactor: 운동 생성 로직 CommandService에서 호출하도록 변경

* refactor: 운동 삭제 로직 CommandService에서 호출하도록 변경

* refactor: 운동 업데이트 로직 CommandService에서 호출하도록 변경

* refactor: 운동 신청 로직 CommandService에서 호출하도록 변경

* refactor: 운동 신청 취소 로직 CommandService에서 호출하도록 변경

* refactor: 특정 참여자 운동 취소 로직 CommandService에서 호출하도록 변경

* refactor: 게스트 초대 로직 CommandService에서 호출하도록 변경

* refactor: 게스트 초대 취소 로직 CommandService에서 호출하도록 변경

* refactor: 패키지 구조 변경

* [feat/#231] 모임 정보 수정 API 구현 (#278)

* feat: 모임 정보 수정 DTO 구현

* feat: 모임 정보 수정 API 서비스 메서드 추가

* feat: 모임 정보 수정 API 컨트롤러 구현

* feat: 모임 정보 수정 API 서비스 구현

* feat: 정보 수정 비즈니스 로직 및 연관관계 편의 메서드 구현

* fix: 모임 정보 수정 DTO 검증 추가

* [feat/#279] 초기 채팅방 조회 API 구현 (#281)

* feat: 컨트롤러 구현

* fix: 메시지 중 이모지는 TEXT로 통합되어서 보내짐, 입장 및 퇴장을 처리하는 SYSTEM 필드로 수정

* feat: DTO 구현(채팅방 정보, 메시지 리스트, 참여자 리스트로 구분)

* chore: 메서드 명 명확화

* feat: 서비스 틀 구현

* feat: 채팅방 및 채팅방 참여 권한 검증

* feat: 채팅방 유형에 따라 가져오는 정보 분기 로직 구현

* refactor: 상대방 조회하는 로직이 N+1 문제를 불러일으키므로 이를 DB 조회 방식으로 해결

* refactor: 조회한 상대방 정보에서 멤버까지 접근하여 이름 필드 사용하도록 변경

* refactor: 모임 프로필 조회 시 N+1 문제가 발생하므로 이를 FETCH JOIN으로 해결

* fix: 잘못된 네이밍 변경

* feat: ChatInfo 생성 로직 구현

* feat: 최신 50개 메시지 조회 로직 구현

* feat: 메시지 정보 생성 로직 구현

* refactor: stream 로직 개선

* fix: 메시지 조회할 때 멤버도 조인하도록 변경

* feat: 메시지 정보 반환 로직 구현

* fix: 채팅방 멤버 조회할 때 멤버와 멤버 프로필까지 조회하도록 변경 + 이름순 정렬

* refactor: stream 로직 메서드 추출

* feat: 멤버 정보 반환 로직 구현

* feat: 마지막 메시지까지 읽음 처리

* feat: Response 반환 로직 구현

* fix: 메서드명 명확화

* chore: 개행 제거

* [debug/#289] 전송 이미지 크기 설정 (#293)

* [feat/#280] 과거 메시지 조회 API 구현 (#282)

* feat: 컨트롤러 구현

* feat: DTO 구현

* fix: Slice로 반환받기 위해 Response 객체 대신 MessageInfo를 직접 반환

* feat: 채팅방 멤버 검증 로직 구현

* feat: 커서 기반 메시지 조회 로직 구현

* fix: Transactional 어노테이션 잘못된 import 정정

* refactor: 정렬 로직이 필요없으므로 Pageable 대신 필요한 필드만 사용하도록 변경 + List로 반환

* feat: hasNext 판별 로직 구현

* feat: 오래된 순으로 조회했으므로 다시 반전

* feat: 메시지 정보 반환 로직 구현

* feat: 다음 커서 반환 로직 구현

* feat: 응답 반환 로직 구현

* fix: JPQL에서는 LIMIT를 지원하지 않으므로 Pageable로 데이터 크기 제한

* [feat/#256] 모임 채팅방 목록 조회 slice 기반 무한스크롤 구현 (#261)

* [fix/#291] 모임 id값 로그인한 사용자 id로 변경

* [fix/#294] 초대 알림 추가시 invitationId 넘겨주기 (#295)

* fix: 이미지 요청 크기 늘리기

* fix: data필드에 invitationId 추가

* [feat/#260] 모임 관련 알림 생성 로직 추가 (#290)

* feat: 모임 관련 알림 생성 로직 추가

* fix: INVITE일 경우, invitationId도 알림생성요청 dto에 포함

* debug: 에러 코드 변경

* [feat/#250] 메시지 전송 기능 구현 (#259)

* feat: 클라이언트에서 서버로 보내는 Request DTO 구현

* feat: Request 객체와 세션에서 필요한 정보 추출

* feat: 에러 처리 로직 구현

* feat: 메시지 반환 DTO 구현

* fix: develop 브랜치 rebase

* feat: 메시지 생성 및 저장 로직 구현

* fix: rebase 충돌 해결

* fix: Request 객체를 직접 받는 걸로 변경

* chore: 오타 수정

* fix: 필요없는 필드 제거

* feat: 반환 로직 구현

* feat: 메시지 전송 로직 호출 및 에러 처리 로직 구현

* feat: Request 객체 검증 로직 구현

* chore: 조건문 순서 변경

* refactor: 서비스로 Request 객체 넘기는 것은 안티패턴이므로 제거

* feat: 브로드캐스트 로직 구현

* refactor: 에러 처리 서비스 단에서 진행하도록 변경

* fix: 브로드캐스트 동시성 문제 해결

* feat: 브로드캐스트 병렬 실행 로직 구현

* chore: 파일 들여쓰기 및 import 정리

* fix: 조회 로직 에러 수정

* feat: 테스트 의존성 추가

* feat: 핸들러 테스트 초기 세팅 구현

* feat: 웹소켓 연결 성공 테스트 구현

* feat: 웹소켓 연결 실패 테스트 구현

* feat: 메시지 전송 성공 테스트 구현 - 브로드캐스트 제외

* fix: 잘못된 필드명 변경

* feat: 여러 사용자 테스트를 위해서 @InjectedMocks 대신 수동 생성으로 변경

* fix: package-private 메서드에 접근하기 위해 패키지 경로 동일화

* chore: 코드 순서 변경

* feat: 브로드캐스트 로직 테스트 구현

* feat: 완전한 메시지 전송 플로우 테스트 구현

* feat: DTO에 필드 추가 및 프로필도 같이 조회하도록 변경

* feat: 이미지 url도 반환하도록 변경

* fix: 테스트에서도 이미지 url 추가

* debug: rebase 과정 중 빌드 에러 해결

* fix: 채팅룸 네임 필드 삭제 (#304)

* [fix/#302] 하드코딩->로그인 아이디로 변경 (#303)

* fix: AWS 배포 과정에서 gradle 의존성 캐싱하도록 변경

* [feat/#283] 모임 채팅방 나가고 들어올 때 시스템 메시지 보내는 로직 구현 (#308)

* feat: 모임 입출입 ENUM 구현

* feat: 모임 입출입 이벤트 구현

* feat: 모임 입출입 이벤트 리스너 구현

* fix: 메시지 타입 중 이미지 제거

* feat: 이벤트 리스너에서 웹소켓 서비스를 호출하여 시스템 메시지 전송 로직 시작

* chore: 패키지명 변경

* feat: 핸들러와 서비스의 순환 참조 방지를 위해 시스템메시지 이벤트 구현

* fix: 웹소켓 서비스에서 시스템 메시지 이벤트 발행

* feat: 시스템 메시지 이벤트 리스너 구현 - 브로드캐스트 진행

* feat: 모임 채팅방 참여 이벤트 발행

* feat: 모임 채팅방 퇴장 이벤트 발행

* feat: Async 어노테이션 활성화를 위해 Config 구현

* chore: WebSockeetMessageDTO 객체 위치 변경

* refactor: 웹 소켓 연결도 enum값으로 처리하도록 변경

* refactor: 브로드캐스트 서비스 분리(1) - 웹소켓 연결

* refactor: 브로드캐스트 서비스 분리(2) - 웹소켓 종료

* refactor: 브로드캐스트 서비스 분리(3) - 브로드캐스트

* refactor: 테스트 메서드 이동

* refactor: 채팅방 멤버 변경 이벤트 발행

* fix: 모임에서 나가고 들어오는 것과 채팅방 나가고 들어오는 걸 하나의 트랜잭션에서 처리

* fix: 채팅방 나가고 들어오는 이벤트 리스너 구현

* feat: 채팅방 나가고 들어오는 로직 및 메시지 전송 로직 ChatRoomService에 구현

* fix: 필요없는 메서드들 제거

* fix: 세션 추가 메서드 네이밍 명확화

* fix: 웹소켓 핸들러만 테스트하도록 변경

* refactor: 시스템 메시지 보내는 로직을 웹소켓 서비스로 이동

* fix: 핸들러 테스트 제외하고 포스트맨으로 테스트하도록 변경

* refactor: 웹소켓 서비스에서 브로드캐스트 로직 처리하도록 변경

* [feat/#284] 개인 채팅 slice기반 목록 조회 구현 (#309)

* [feat/#305] redis 기본 설정 추가 및 도입 (#313)

* debug: 임시로 웹소켓 경로 허용 (#316)

* [feat/#265] 채팅방 구독 로직 구현 (#314)

* feat: 채팅방 구독 로직 틀 구현

* chore: 브로드캐스트 서비스 구독 서비스로 이름 변경

* feat: 채팅 메시지 전송 이벤트 구현

* refactor: 메시지 전송을 이벤트 발행으로 처리하도록 변경

* feat: 채팅 구독 이벤트 레코드 구현

* refactor: 채팅방 멤버 전체 브로드캐스트 대신 구독자만 브로드캐스트 하기 위해 구독 관리 방식 변경

* refactor: 네트워크 I/O는 성능에 별로 영향을 주지 않으므로 for문으로 변경

* fix: 실패한 사용자 처리 로직 구현

* fix: 구독 로직을 ChatWebSocketService 대신 SubscriptionService에서 진행

* feat: 구독 반환 DTO 구현

* feat: 구독 이벤트 발행 로직 및 성공 메시지 반환 로직 구현

* feat: 구독 이벤트 리스너 구현

* feat: 발신자 제외 브로드캐스트 기능 추가 - 자기 메시지 중복 수신 방지

* fix: 웹소켓 연결 시 멤버 이름 설정 안하는 에러 해결

* [feat/#306] JWT를 활용해 웹소켓 연결 인증 단계 구현 (#317)

* feat: HandShakeInterceptor 구현체 틀 구현

* feat: 에러 처리 로직 틀 구현

* feat: URL에서 JWT 토큰 추출

* feat: 멤버 id를 jwt에서 추출하여 세션에 넣어두기

* feat: 인터셉터 단계 추가하고 프론트 url만 허용하도록 변경

* develop 브랜치와 충돌 해결

* [feat/#287] 다운로드 토큰 발급 구현 (#310)

* feat: DownloadToken 엔티티 구현

* feat: 다운로드 토큰 발급 DTO 구현

* feat: 다운로드 토큰 발급 API 서비스 메서드 추가

* feat: 다운로드 토큰 발급 API 컨트롤러 구현

* refact: ChatFileService로 파일 관련 로직 구현하도록 변경

* ChatMessageFile 엔티티 구현

* feat: 다운로드 토큰 발급 API 서비스 구현

* feat: DownloadToken 정적 팩토리 메서드 구현

* feat: 다운로드 토큰 발급 API 리포지토리 추가

* feat: 다운로드 토큰 발급 API 에러코드 추가

* feat: 다운로드 토큰 발급 API 컨버터 구현

* feat: 양방향 연결을 위해 chatMessageFile 필드 추가

* [feat/#288] 파일 다운로드 구현 (#318)

* feat: 다운로드 토큰 발급 API 서비스 메서드 추가

* refact: ChatFileService로 파일 관련 로직 구현하도록 변경

* feat: 채팅 파일 다운로드 API 서비스 메서드 추가

* feat: 채팅 파일 다운로드 API 컨트롤러 구현

* feat: 채팅 파일 다운로드 API 서비스 구현

* feat: 채팅 파일 다운로드 API 에러코드 추가

* feat: 채팅 파일 다운로드 API 리포지토리 메서드 추가

* feat: 이미지 서비스에 파일 다운로드 메서드 구현

* fix: 토큰 유효시간 3분으로 수정

* fix: cors 프론트엔드 url 반영

* [feat/#319] 개발자용 토큰 발급 API(다른 사용자) 구현 (#320)

* feat: 컨트롤러 구현

* feat: 메서드 구현

* feat: 다른 사용자 개발자 토큰 발급도 스프링 시큐리티에서 허용하도록 변경

* [fix/#324] 모임 주소 중복 유니크 제약조건 추가 (#325)

fix: 모임 주소 중복 유니크 제약조건 추가

* [feat/#300] 채팅방 구독 해제 로직 (#321)

* feat: 구독 해제 핸들러 구현

* feat: 구독해제 이벤트 생성 메서드 구현

* feat: 이벤트 리스너 로직 구현

* feat: 구독 해제 로직 구현

* [feat/#311] 파일 다운로드 리팩토링 / 파일 업로드 API 구현 (#323)

* bug: 잘못된 다운로드 토큰 url 생성 로직 수정

* fix: Pre-signed URL로 임시 마스터키 발급

* refact: 직접 s3 object를 가져오도록 리팩토링하여 성능항샹 및 문제 해결

* refact: 파일 업로드에서도 통일된 enum타입을 사용하기 위해 ImgType -> DomainType으로 명칭 변경

* feat: 파일 업로드 API 컨트롤러 구현

* feat: 파일 업로드 API 서비스 구현

* refact: enum에 해당 도메인 경로 저장하도록 리팩토링

* refact: 중복 로직을 공통 메서드로 구현 및 파일/이미지 업로드하는 uploadToS3 메서드 구현

* refact: 불필요한 extractKeyFromUrl 메서드 제거

* refact: UploadDTO 형식 통일

* [feat/#322] 탈퇴 회원 시큐리티 필터에서 검증 (#327)

* feat: 탈퇴 회원 시큐리티 필터에서 검증

* fix: 에러메시지  수정

* [feat/#328]  JWT null인 경우 예외처리 (#329)

* [feat/#296] 키워드 추가 API 구현 (#330)

* feat: 키워드 추가 API DTO 구현

* feat: 키워드 추가 API 서비스 메서드 추가

* feat: 키워드 추가 API 컨트롤러 구현

* feat: 키워드 추가 API 서비스 구현

* feat: 키워드 추가 검증 에러코드 추가

* feat: 키워드 추가 API 리포지토리 구현

* [feat/#335] 키워드 삭제 API 구현 (#336)

* feat: 키워드 삭제 API 컨트롤러 구현

* feat: 키워드 삭제 API 서비스 메서드 추가 및 서비스 구현

* feat: 키워드 삭제 비즈니스 로직 구현

* feat: 키워드 삭제 에러코드 추가

* feat: 키워드 삭제 API 리포지토리 구현

* [feat/#301] 채팅방 자동 읽음 로직 구현 (#331)

* feat: 핸들러 구현

* feat: 웹소켓 Request DTO에 마지막으로 읽은 메시지 ID 넣기

* feat: 채팅 메시지 읽기 이벤트 구현

* refactor: 이벤트 트랜잭션 최적화

* feat: 이벤트 리스너 구현

* feat: 마지막으로 읽은 메시지 업데이트

* feat: 브로드캐스트할 읽음 반환 레코드 구현

* feat: 브로드캐스트할 메시지 생성 로직 구현 및 브로드캐스트 호출

* fix: 브로드캐스트 메시지 변수명 변경

* refactor: 브로드캐스트 오버로딩을 위해 Sealed 인터페이스 구현

* feat: 읽음 메시지 브로드캐스트 로직 구현

* refactor: 메시지 브로드캐스트 메서드명 변경

* fix: 필드명 통일

* debug: 메시지 업데이트 쿼리 에러 해결

* fix: 읽음 메시지 브로드캐스트 할 때 마지막으로 읽은 메시지 정보 반환하지 않도록 변경

* fix: 구독된 채팅방 자동읽음 처리를 위해 기존 로직 전부 삭제

* feat: 메시지 자동 읽음 이벤트 로직 구현

* feat: 읽음 처리 로직 구현

* fix: 사용하지 않도록 변경한 메서드 제거

* debug: LEFT JOIN으로 개인 채팅 조회 안 되는 에러 해결 (#338)

* [fix/#297] 여복인 경우 MaleLevel 추가 불가능하도록 수정 (#340)

* fix: 여복인 경우, 남자 급수를 방지하는 검증 로직 추가

* feat: 에러코드 추가

* [fix/#326] 특정 지역으로 조회 시, addr2가 전체인 모임도 조회되도록 수정 (#341)

* [fix/#334] 개인 채팅에서 처음 메시지 보내면 채팅방 초대 로직으로 변경 (#342)

* feat: 채팅방 멤버 엔티티에 상태 추가

* fix: 모임 생성 및 모임 참여 시 채팅방 멤버 상태도 JOINED로 설정하도록 추가

* refactor: 모임 채팅방 생성 로직 채팅 도메인으로 이동

* refactor: 채팅방 생성 + 자동 참여 로직 엔티티 메서드로 리팩터링

* refactor: 모임 채팅방 자동 참여 시 null인지 체크하도록 검증 추가

* chore: 더이상 파티 서비스에서 사용하지 않는 채팅 리포지토리들 제거

* refactor: 모임 채팅방 생성 메서드명 명확화

* refactor: 파티 채팅방 생성 메서드 메서드명 및 인자 리팩터링

* refactor: 멤버 조회 메서드 네이밍 명확화

* fix: 채팅방 멤버 나는 참가 상태로, 상대방은 대기 상태로 생성

* fix: 개인 채팅방 목록 조회 및 검색 시 JOINED 상태인 경우만 조회하도록 변경

* feat: 개인 채팅방에서 첫 메시지 전송일경우 상대방도 초대하도록 변경

* fix: @Builder.Default 어노테이션으로 일대다 필드를 생성하지 않아도 기본값으로 생성하도록 변경

* docs: 개인 채팅방 생성 및 참여 api 설명 명확화

* chore: api 클래스 내 순서 변경

* refactor: /chats는 RequestMapping으로 처리

* [fix/#345] 급수 조건이 맞지 않더라도 모임의 멤버가 될 수 있도록 수정 (#346)

* fix: 모임 가입신청 시, 급수 조건에 적합한지 검증하는 로직 제거

* refact: 기존 나이대 조건, 성별 조건 검증 메서드를 모임 생성에도 활용할 수 있도록 리팩토링

* fix: 운동 신청 시 급수 조건 검증 로직 주석처리 (#349)

* fix: 임시 url -> 실제 메달 이미지 url (#351)

* [feat/#355] 운동 수정을 위한 조회 API 구현 (#356)

* feat: 컨트롤러 구현

* feat: DTO 구현

* feat: 서비스 구현

* feat: 컨버터 구현

* docs: 조회 조건 삭제

* fix: 모임 운동 캘린더 조회 API에서 운동 참여 여부도 반환하도록 변경 (#354)

* [feat/#350] 모임 id로 roomid 조회 API 구현 (#352)

* feat: 채팅방 id 조회 API DTO 추가

* feat: 채팅방 id 조회 API 컨트롤러 구현

* feat: 채팅방 id 조회 API 서비스 구현

* feat: 채팅방 id 조회 API 컨버터 구현

* feat: 멤버 검증을 위한 리포지토리 메서드 추가

* feat: 채팅방 id 조회 API 에러코드 추가

* docs: README 작성 (#358)

* [fix/#361] 모임 관련 검증 수정사항 반영 (#363)

* fix: 가입신청 처리 시, 이미 멤버인지 검증 로직 추가

* fix: 모임 생성 시, 급수 조건에 적합한지 검증하는 로직 제거

* [fix/#362] 현재 (목록/개인) 채팅방 목록 조회 및 검색 API에서 채팅방이 없을 때 에러 던지는 걸 빈 배열 던지는 걸로 반환 (#364)

* fix: 모임 채팅방 조회 시 아무것도 없으면 빈 배열 반환하도록 변경

* fix: 개인 채팅방 조회 시 아무것도 없으면 빈 배열 반환하도록 변경

* debug: 웹소켓 설정에서 프론트 배포 주소 CORS 허용 (#360)

* [fix/#332] 채팅 메시지 조회할 때 읽지않은 멤버 수도 반환하도록 변경 (#344)

* fix: 모임 생성 및 모임 참여 시 채팅방 멤버 상태도 JOINED로 설정하도록 추가

* chore: 더이상 파티 서비스에서 사용하지 않는 채팅 리포지토리들 제거

* refactor: 파티 채팅방 생성 메서드 메서드명 및 인자 리팩터링

* feat: 메시지 읽음 상태 엔티티 구현

* feat: 채팅 보낼 시 채팅방 읽음 상태 생성 후 저장

* feat: 채팅 구독자들 메시지 읽음으로 변경

* feat: 마지막으로 읽은 메시지 id도 업데이트 하도록 구현

* refactor: 채팅방 목록 조회 시 안 읽은 메시지 카운트를 메시지 읽음 상태 테이블에서 조회하도록 리팩터링

* feat: 브로드캐스트 할 DTO에 안 읽은 멤버 필드 추가

* feat: 메시지 보낼 때 지금 구독자 수 체크하는 메서드 구현

* feat: 구독자들 읽음 상태로 변경 및 안읽은 메시지 수 반환하기

* feat: 안 읽은 사람 수도 반환하도록 변경

* refactor: 이벤트 구조로 처리하는 대신 활성 구독자 수 체크하며 한 번에 읽음 상태 업데이트

* feat: 구독 시 메시지마다 안 읽은 수 업데이트 정보 틀 구현

* feat: 안 읽은 메시지 id 리스트 조회

* feat: 안 읽은 메시지가 없을 때 로직 구현

* feat: 메시지마다 안 읽은 사람 수 카운트 로직 구현

* feat: 채팅방 구독할 때 마지막 메시지 업데이트 하도록 변경

* feat: 구독 시 메시지 업데이트 브로드캐스트 로직 구현

* debug: Long으로 반환하기 위해 Query문 사용

* chore: 사용하지 않는 메서드 정리

* feat: 구독하는 사람은 업데이트 메시지 받지 않도록 변경

* [debug/#365] 잘못된 사용자id를 넘겨주어 생기던 로직 오류 해결 (#366)

* [docs] 리드미 약간 수정

* [feat/#367] 채팅 보낼 때 이미지와 파일도 같이 보낼 수 있도록 로직 추가 (#373)

* fix: 메시지 전송 시 파일과 이미지들도 보낼 수 있도록 DTO 필드 추가

* fix: 이벤트 생성 시 파일과 이미지들도 보내도록 변경

* chore: 사용하지 않는 서비스 제거

* fix: 리스너와 서비스에서 파일과 이미지들 받도록 변경

* refactor: dirty checking으로 불필요한 저장 로직 제거

* feat: 메시지 저장할 때 이미지와 파일도 저장

* refactor: 브로드캐스트 응답과 분리하기 위해 중첩 record로 변경

* fix: 브로드캐스트 할 때 파일 정보와 이미지 정보를 담을 DTO 구현

* feat: 브로드캐스트할 파일 및 이미지 DTO 생성 로직 구현

* feat: 브로드캐스트 DTO에 누락된 필드 추가

* fix: 브로드캐스트 DTO 생성 로직에 이미지와 파일 필드 추가

* fix: 채팅 이미지 엔티티 다운로드를 위해 수정

* fix: 채팅 이미지 Request 필드 수정

* fix: 채팅 이미지 생성 필드 수정

* fix: 내용, 이미지, 파일 모두 없을경우 에러를 던지도록 변경

* fix: 일대다 매핑에서 Builder.Default 추가

* chore: 필요없는 엔터 제거

* [feat/#370] 이미지 다운로드 API 구현  (#371)

* fix: ChatMessageImg 수정

* feat: 채팅 이미지 다운로드 API 서비스 추가

* feat: 채팅 이미지 다운로드 API 서비스 구현

* debug: 오타 수정

* fix: 파일 업로드 시에도 파일 이름, 크기, 타입을 반환하도록 수정

* [fix/#339] 급수 검색에서 포함된 글자만으로도 조회되도록 수정 (#374)

* fix: 급수 검색에서 포함된 글자만으로도 조회되도록 수정

* [fix/#375] 모임 상세 조회 응답 필드 추가 (#377)

* fix: 모임 상세정보 DTO에 필드 추가

* feat: 대기중인 가입신청 여부를 확인하는 비즈니스 로직 구현

* feat: 수정사항 반영하여 컨버터에 추가

* debug: 운동 상세 조회 API에서 멤버 ID값이 아닌 멤버 운동 참여 ID값을 반환하던 로직 에러 해결 (#381)

* debug: CD 최신 이미지 반영 문제 해결 (#383)

* debug: 남아있는 컨테이너 강제 제거하는 스크립트 추가 (#384)

* [fix/#385] 채팅방 목록에서 마지막 메시지 표시 로직 개선 (#386)

* feat: 엔티티에 마지막 메시지 내용 반환하는 메서드 구현

* fix: content대신 마지막 메시지 내용 반환 메서드 사용

* [fix/#388] 키워드 추가를 다중 선택이 가능하도록 수정 (#389)

* fix: 키워드 추가 DTO 리스트로 수정

* fix: 키워드 추가 API 수정 및 연관관계 편의 메서드 추가

* fix: 키워드 삭제 및 사용하지 않는 에러코드 제거

* debug: content가 비어있을 때 hasContent가 true가 되는 에러 해결 (#391)

* [fix/#392] 모임 목록 조회 시, 응답에 찜 여부 추가 (#394)

* fix: 찜 여부를 모임 목록, 모임 상세 조회 DTO에 추가

* fix: 서비스 메서드에 북마크 여부를 확인하는 로직 추가

* fix: 찜한 모임들의 ID을 조회하는 메서드 리포지토리에 추가

* fix: 찜 여부 필드 컨버터에 추가

* [fix/#379] 프로필 이미지 관련 오류 수정 (#393)

* [feat/#372] WebSocket 요청마다 에러를 반환하도록 개선 (#395)

* feat: 구독 시 에러 메시지 반환을 위해 메서드 분리

* feat: 구독 해제 시 에러 메시지 반환을 위해 메서드 분리

* feat: 메시지 전송 시 에러 메시지 반환을 위해 메서드 분리

* fix: 에러 메시지 전송할 때 채팅방 ID 반환 로직 제거

* refactor: 메시지 전송 시 즉시 검증으로 리팩토링

* feat: 구독 및 구독 해제 검증 로직 구현

* refactor: 같은 의미를 담고 있는 에러 코드 통합

* fix: 에러 응답에 채팅방 id 미포함으로 변경

* fix: 에러 응답시 메시지 제대로 포함되도록 변경

* refactor: 웹소켓 연결 성공 시 멤버 정보 조회 메서드를 멤버 쿼리 서비스로 이동

* refactor: 웹소켓 서비스 네이밍 내부 코드에 따라 채팅 송신 서비스로 명확화

* refactor: 웹소켓 서비스들 패키지 분리

* refactor: 웹소켓 메세지 응답 로직 별도 서비스로 분리

* chore: import문 및 코드 스타일 정리

* [fix/#379] 프로필 사진 수정 오류 (#396)

* [fix/#398] 토큰 재발급 경로 permitAll 처리 (#399)

* fix: 토큰 재발급 경로 permitAll 처리

* fix: 리프레시토큰 null 예외처리

* fix: 리프레시토큰 null 예외처리

* [feat/#400] 채팅 메시지에서 이모티콘과 일반 이미지 구분 기능 구현 (#402)

* feat: 채팅 메시지 이미지 엔티티에서 이모티콘 여부 필드 추가

* feat: 초기 채팅방 조회 API에서 이미지 필드 List를 이미지 객체로 변환

* refactor: 이미지 정보와 멤버 정보 공통 DTO로 분리 -> 추후 같은 기능을 하는 메서드를 합치기 위함

* refactor: 메시지 조회 로직에서 중복된 코드를 CommonDTO를 활용해 제거

* refactor: 컨버터 로직 구현

* refactor: 메시지 보낼 때도 이모지 필드 반환하도록 변경

* [fix/#397] 모임 초대, 가입신청 처리 알림 추가  (#401)

* feat: 알림 dto의 필드 및 enum 추가

* fix: 알림 생성자 메서드 추가

* fix: 모임 초대 처리 시, 알림 생성 코드 구현

* fix: enum 명칭 변경 (모임 초대 승인)

* fix: 가입 신청 처리 알림 생성자 및 enum 추가

* fix: 가입 신청 처리 시, 알림 생성 코드 구현

* fix: 알림 내용에 모임 이름 제거

* [feat/#403] 마이프로필 키워드 조회 추가 (#404)

* [chore/#405] 리프레시 토큰 재발급 텀 줄이기 (#406)

* fix: 내 운동 리스트 조회 API에 레벨 필드 추가 (#408)

* [feat/#343] Redis 기반 채팅방 구독 관리 시스템 구축 (#409)

* feat: Redis 설정 중 lettuce 클라이언트 …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🛠️ FEAT This issue or pull request already exists

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 프로필 조회에 키워드 추가

3 participants