Conversation
Dimo-2562
requested changes
May 10, 2026
| } | ||
| } | ||
|
|
||
| public void sendChatNotification(Member member, String title, String content, |
Contributor
There was a problem hiding this comment.
이거 커밋 후 트랜잭션으로 분리하면 좋을 것 같습니다.
만약에 채팅 트랜잭션이 롤백되면 FCM API는 외부 API이므로 트랜잭션의 대상이 아닙니다.
따라서 저장되지 않은 채팅 알람이 보내질 수 있다고 생각합니다!
안정성 측면에서 Transactional(AFTER_COMMIT),
속도 측면에서 Async로 분리하면 좋아보입니다!
Contributor
Author
There was a problem hiding this comment.
너무 좋은 피드백 감사합니다!! 반영해서 수정했습니당
Merged
kanghana1
added a commit
that referenced
this pull request
May 18, 2026
* [chore/#528] 서브도메인 명시 (#529) * [chore/#531] Nginx 설정 파일 수정 (#532) * chore: Nginx 프로토콜 설정을 Cloudflare에서 전달받아 설정하도록 변경 * chore: Nginx 웹소켓 타임아웃의 기본값이 1분이므로 60분으로 변경 * chore: Nginx gzip 설정을 통해 json 응답은 압축해서 보내도록 변경 * [Fix/#521] 채팅 이미지/파일 API 통합 및 테스트 코드 작성 (#526) * refact: image -> file로 통합 * refact: S3 -> GCS로 예외 코드 명칭 변경 * refact: 채팅 이미지 업로드/다운로드 코드 제거 * refact: 채팅 이미지 관련 코드 수정 * feat: 채팅 파일 통합테스트 * feat: 채팅 파일 단위테스트 * feat: 파일 도메인 통합테스트 * feat: 파일 도메인 단위테스트 * fix: dto의 필드명은 바뀌지 않도록 롤뱁 * chore: 사용하지 않는 ChatImageRepository 제거 * test: 채팅 도메인 통합 테스트 및 단위 테스트에 이미지 필드 테스트 추가 * fix: 기존 images dto 유지를 위해 필드명 롤백 * fix: 기존 필드명이 imageOrder가 아닌 imgOrder였으므로 롤백 --------- Co-authored-by: dmori <chosehoon2@naver.com> * [docs/#534] 이슈 템플릿 추가 (#535) * [chore/#536] FCM 구현을 위한 firebase 의존성 추가 (#537) * chore: firebase account 설정파일 주입 * chore: ci, cd에 firebase 주입 경로 추가 * chore: build.gradle에 의존성 추가 * fix: 테스트 이슈 라벨링 파싱 문제 해결 * [test/#516] Member 테스트코드 작성 (#533) * feat: Member 통합테스트 구현 * feat: Member 통합테스트 구현 * feat: 모든 필드를 커버하는 통합테스트 추가 * feat: 모든 필드를 커버하는 통합테스트 추가 * test: 중복되는 프로필 테스트 제거 * [test/#538] 운동 신청/취소, 게스트 초대/취소 API 테스트 작성 (#539) * test: 기존에 ExerciseParticipationService에서 Builder 대신 Fixture를 사용하도록 하여 가독성 향상 * test: 나이 조건 테스트를 위해 관련 MemberFixture 추가 * test: 운동 신청 API 단위 테스트 및 통합 테스트 코드 작성 * test: ExerciseCommandService에서 Builder를 쓰던 걸 Fixture를 사용하도록 변경 * test: 운동 신청 API에서 파사드 패턴의 CommandService의 단위 테스트 구현 * test: 운동 신청 취소 API의 통합 테스트 및 단위 테스트 코드 작성 * refactor: 운동 신청, 운동 신청 취소, 게스트 초대, 게스트 초대 취소 API를 ResponseEntity로 응답을 감싸 status도 정상적으로 반환할 수 있도록 변경 * chore: 불필요한 의존성 제거 및 줄바꿈 변경 * test: 게스트 초대 API 통합 테스트 및 CommandService 단위 테스트 코드, GusetService 단위 테스트 코드 작성 * test: 게스트 초대 취소 API 통합 테스트, CommandService 단위 테스트, GuestService 단위 테스트 코드 작성 * [feat/#540] FCM 의존성 추가 및 알림 기능 구현 (#541) * [feat/#540] Firebase 주입방식 변경 (#542) * chore: firebase 주입방식 변경 * chore: 설정파일 추가 * chore: firebase 키 재발급 * feat: firebaseConfig파일 생성 * feat: 설정파일 추가 * feat: FCM 알림 기능 구현 * test: 단위테스트 작성 * chore: valid추가 * test: 통합테스트 config에 mock 추가 * chore: 환경변수 주입 방식으로 변경 * [feat/#540] firebase 환경변수 주입방식으로 변경, docker-compose파일 수정 (#543) * chore: firebase 주입방식 변경 * chore: 설정파일 추가 * chore: firebase 키 재발급 * feat: firebaseConfig파일 생성 * feat: 설정파일 추가 * feat: FCM 알림 기능 구현 * test: 단위테스트 작성 * chore: valid추가 * test: 통합테스트 config에 mock 추가 * chore: 환경변수 주입 방식으로 변경 * chore: docker-compose 파일 수정 * [debug/#544] 모임 추천 조회 (콕플 추천 모드) 검색 기능 누락 해결 * [debug/#547] 프로필 이름 변경 시 내 채팅방 목록이 전부 내 이름으로 변경되는 버그 (#548) * debug: 프로필 이름 변경 시 상대방의 채팅방 목록에서 내 이름이 변경되도록 버그 수정 * test: 프로필 수정 메서드에서 채팅방 이름 변경 로직 단위 테스트 작성 * improve: 통합 테스트에서 실제 스토리지에 데이터를 넣는 건 적절하지 않으므로 mock과 stub으로 대체 * test: 프로필 수정 API 통합 테스트 작성 * [feat/#546] Flyway 도입을 위한 설정 추가 (#549) * chore: flyway설정파일 추가 * chore: flyway 설정 추가 * chore: test에서도 flyway설정이 되도록 수정 * [fix/#552] 모임 채팅방 멤버 누락 데이터 보정 (#553) * chore: MySQL 메모리가 database 두 개를 커버하기에는 부족하므로 1gb로 증가 * fix: 모임 채팅방 멤버 누락 마이그레이션 sql 쿼리 작성 * docs: 오픈코드 사용을 위한 .md 파일 추가 (#555) * [test/#518] Bookmark 테스트코드 작성 (#556) * test: 찜 통합테스트 테스트코드 작성 * test: 찜 단위테스트 작성 * test: 찜 목록 조회 누락된 부분추가 * test: order도 테스트 할 수 있도록 수정 * [test/#551] 운동 Query 테스트 코드 작성 (#557) * chore: opencode 사용을 위해서 AGENTS.md 파일은 gitignore 처리 * test: ExerciseQuery getExerciseDetail 테스트 정리 * test: 운동 수정용 상세 조회 테스트 코드 작성 * test: 내가 초대한 게스트 조회 API 테스트 코드 작성 * test: 모임 운동 캘린더 조회 API 테스트 코드 작성 * test: 모임 운동 캘린더 조회 API에서 기본 기간 테스트도 추가 * test: 내 운동 캘린더 조회 API 테스트 코드 작성 * chore: 테스트 환경의 시간 존을 Asia로 설정 * test: 내 모임 운동 조회 API 테스트 코드 작성 * chore: claude code와 omc 사용을 위해 깃 이그노어 처리 * test: 내 모임 운동 캘린더 조회 API 테스트 코드 작성 * test: 사용자 추천 운동 조회 API 테스트 코드 작성 * test: ExerciseFixture에서 오버로딩 호출 방식으로 구조 변경 * fix: 기존 모임 운동 캘린더 조회 통합 테스트에서 날짜가 같아 깨지던 테스트를 수정 * test: 내 참여 운동 조회 API 테스트 코드 작성 * test: 건물 운동 상세 조회 API 테스트 코드 작성 * test: 월간 운동 건물 지도 데이터 조회 API 테스트 코드 작성 * test: 추천 운동 캘린더 조회 API 테스트 코드 작성 * [test/#517] Notification 단위테스트 및 통합테스트 코드 작성 (#559) * test: 통합테스트 구현 * test: 단위테스트 코드 작성 * test: fcm 통합테스트코드 작성 * fix: 통합테스트 피드백 반영 * chore: 중복테스트 제거 * [test/#519] 모임 도메인 테스트코드 작성 (#558) * debug: 모임 추천 조회 (콕플 추천 모드) 검색 기능 누락 해결 * test: 내 모임 조회(/api/my/parties) API 테스트 코드 작성 * test: 내 모임 간략화 조회(/api/my/parties/simple) API 테스트 코드 작성 * test: 모임 추천 조회(/api/my/parties/suggestions) API 테스트 코드 작성 * test: 모임 상세조회(/api/parties/{partyId}) API 테스트 코드 작성 * test: 모임 멤버 조회(/api/parties/{partyId}/members) API 테스트 코드 작성 * test: 모임 탈퇴(/api/parties/{partyId}/members/my) API 테스트 코드 작성 * test: @DisplayName 컨벤션 맞추기 * test: 모임 가입 신청 (/api/parties/{partyId}/join-requests) API 테스트 코드 작성 * test: 모임 생성 (/api/parties) API 테스트 코드 작성 * test: 모임 통합/단위테스트 컨벤션 맞추기 및 정리 * test: 모임 정보 수정 (/api/parties/{partyId}) API 테스트 코드 작성 * test: 멤버 역할(부모임장) 설정 (/api/parties/{partyId}/members/{memberId}/role) API 테스트 코드 작성 * test: 메서드명 수정 * test: 모임 삭제 (/api/parties/{partyId}/status) API 테스트 코드 작성 * test: 모임 멤버 삭제(/api/parties/{partyId}/members/{memberId}) API 테스트 코드 작성 * test: 가입신청 멤버 조회 (/api/parties/{partyId}/join-requests) API 테스트 코드 작성 * test: 가입 신청 처리 (/api/parties/{partyId}/join-requests/{requestId}) API 테스트 코드 작성 * test: 가입 승인 멤버 조회 (/api/parties/{partyId}/join-requests) API 테스트 코드 작성 * test: 신규 멤버 추천받기 (/api/parties/{partyId}/members/suggestions) API 테스트 코드 작성 * test: 신규 멤버 초대 보내기(/api/parties/{partyId}/invitations) API 테스트 코드 작성 * test: 모임 초대 처리(/api/parties/invitations/{invitationId}) API 테스트 코드 작성 * test: 키워드 추가(/api/parties/{partyId}/keywords) API 테스트 코드 작성 * chore: 모임 역할 enum 대문자로 통일 * chore: import문 정리 및 줄맞춤 * TEST: 내 모임 조회 API 정렬 기준에 따른 테스트 케이스 추가 * TEST: 멤버 역할 설정 API 실패, 성공 테스트 케이스 추가 * test: 모임 가입 신청 처리 API 실패 케이스 추가 및 enum 수정 * test: 모임 상세조회 API 필드 추가 * test: 모임 멤버 삭제 API 성공, 실패 테스트 케이스 추가 * test: MEMBER_NOT_FOUND, PARTY_NOT_FOUND 실패 테스트 케이스 추가 * test: 내 모임 조회(/api/my/parties) API 테스트 코드 작성 * test: 내 모임 간략화 조회(/api/my/parties/simple) API 테스트 코드 작성 * test: 모임 추천 조회(/api/my/parties/suggestions) API 테스트 코드 작성 * test: 모임 상세조회(/api/parties/{partyId}) API 테스트 코드 작성 * test: 모임 멤버 조회(/api/parties/{partyId}/members) API 테스트 코드 작성 * test: 모임 탈퇴(/api/parties/{partyId}/members/my) API 테스트 코드 작성 * test: @DisplayName 컨벤션 맞추기 * test: 모임 가입 신청 (/api/parties/{partyId}/join-requests) API 테스트 코드 작성 * test: 모임 생성 (/api/parties) API 테스트 코드 작성 * test: 모임 통합/단위테스트 컨벤션 맞추기 및 정리 * test: 모임 정보 수정 (/api/parties/{partyId}) API 테스트 코드 작성 * test: 멤버 역할(부모임장) 설정 (/api/parties/{partyId}/members/{memberId}/role) API 테스트 코드 작성 * test: 메서드명 수정 * test: 모임 삭제 (/api/parties/{partyId}/status) API 테스트 코드 작성 * test: 모임 멤버 삭제(/api/parties/{partyId}/members/{memberId}) API 테스트 코드 작성 * test: 가입신청 멤버 조회 (/api/parties/{partyId}/join-requests) API 테스트 코드 작성 * test: 가입 신청 처리 (/api/parties/{partyId}/join-requests/{requestId}) API 테스트 코드 작성 * test: 가입 승인 멤버 조회 (/api/parties/{partyId}/join-requests) API 테스트 코드 작성 * test: 신규 멤버 추천받기 (/api/parties/{partyId}/members/suggestions) API 테스트 코드 작성 * test: 신규 멤버 초대 보내기(/api/parties/{partyId}/invitations) API 테스트 코드 작성 * test: 모임 초대 처리(/api/parties/invitations/{invitationId}) API 테스트 코드 작성 * test: 키워드 추가(/api/parties/{partyId}/keywords) API 테스트 코드 작성 * chore: 모임 역할 enum 대문자로 통일 * chore: import문 정리 및 줄맞춤 * TEST: 내 모임 조회 API 정렬 기준에 따른 테스트 케이스 추가 * TEST: 멤버 역할 설정 API 실패, 성공 테스트 케이스 추가 * test: 모임 가입 신청 처리 API 실패 케이스 추가 및 enum 수정 * test: 모임 상세조회 API 필드 추가 * test: 모임 멤버 삭제 API 성공, 실패 테스트 케이스 추가 * test: MEMBER_NOT_FOUND, PARTY_NOT_FOUND 실패 테스트 케이스 추가 * test: 내 모임 조회 API 정렬 기준 검증 수정, 추천 모임 조회 API 정렬 기준 및 검색 기능 검증 추가 * test: import 수행 * [chore/#563] flyway 파일 추가 (#564) * chore: flyway 파일 추가 (role 업데이트) * chore: 컬럼의 정렬 규칙을 BINARY로 변경 (대문자 인식 못하는 이슈로 인하여 추가) * [test/#565] Contest 도메인 테스트 코드 작성 (#566) * test: Contest 통합테스트 작성 * test: Contest 단위테스트 코드 작성 * chore: 코드 일부 수정 * fix: 불필요한 검증로직 제거 * chore: 카멜케이스로 수정 * [Test] 채팅 API 테스트 코드 작성 (#567) * test: 모임 채팅방 목록 조회 API 통합 테스트 및 서비스 단위 테스트 작성 * test: 모임 채팅방 이름 검색 API 통합 테스트 및 단위 테스트 작성 * test: 개인 채팅방 생성 및 참여 API 통합 테스트 및 서비스 단위 테스트 작성 * chore: .omx 및 dump 파일을 깃 이그노어 처리 * debug: ENUM 값 변경에 따른 테스트 코드 수정 * test: 개인 채팅방 목록 조회 API 통합 테스트 및 단위 테스트 작성 * test: 개인 채팅방 이름 검색 API 통합 테스트 및 단위 테스트 코드 작성 * debug: 통합 테스트에서 redis를 ServiceConnection이 아닌 RedisConfig 값을 사용하던 문제를 해결 * chore: static 컨테이너를 사용하므로 스프링이 빈을 종료하지 않도록 변경 * chore: 테스트 종료 후 Redis 연결 시도 관련 에러는 로깅 레벨을 낮춰서 제거 * [feat/#569] 채팅 푸시알림 기능 추가 및 테스트코드 작성 (#570) * feat: 채팅 알림 추가에 따른 ENUM 추가 * feat: 채팅용 알림로직 추가 * feat: 채팅용 푸시알림 service단 추가 및 채팅로직에 의존성 추가 * test: 단위 테스트 추가 * feat: 알림 enum 제거 * feat: 채팅 알림 비동기 이벤트 발행 * test: 코드 수정에 따른 테스트코드 수정 * [chore/#572] 알림 성능 측정용 로그 추가 (#573) * [chore/#572] 알림 테스트용 컨트롤러 추가 (#574) * chore: 로그추가 * chore: 테스트용 컨트롤러 추가 * [debug/#575] 동시 알림이 같은 알림 삭제하려는 경쟁조건 해결 (#576) * [chore/#572] FIrebase 직접 호출 대신 timesleep으로 대체 (#577) * chore: 로그추가 * chore: 테스트용 컨트롤러 추가 * [debug/#575] 동시 알림이 같은 알림 삭제하려는 경쟁조건 문제 해결 (#578) * debug: 동시 알림이 같은 알림 삭제하려는 경쟁조건 문제 해결 * test: 스레드 분리로 인한 테스트코드 수정 * [refactor/#571] 일반 알림 FCM 비동기 처리 전환 (#579) * feat: NotificationEvent 추가 * feat: 트랜잭션 분리 * test: 테스트코드 수정 * fix: Event에서 id로 받아오도록 수정 및 관련 테스트코드 추가 --------- Co-authored-by: Dmori <83327857+Dimo-2562@users.noreply.github.com> Co-authored-by: Yumin Kwon <dbalsrltk@naver.com> Co-authored-by: dmori <chosehoon2@naver.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
❤️ 기능 설명
기획단 요청에 따라 채팅 푸시알림 기능을 추가합니다.
연결된 issue
연결된 issue를 자동으로 닫기 위해 아래 {이슈넘버}를 입력해주세요.
close #569
🩷 Approve 하기 전 확인해주세요!
✅ 체크리스트