Conversation
Summary of ChangesHello @1000hyehyang, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 이 PR은 RealMatch 플랫폼에 포괄적인 알림 시스템을 도입합니다. 제안 수신, 캠페인 매칭과 같은 다양한 비즈니스 이벤트에 대해 사용자에게 웹 푸시(FCM) 및 이메일 알림을 보낼 수 있는 기능을 제공합니다. 시스템은 Outbox 패턴을 활용하여 핵심 비즈니스 로직과 알림 발송을 분리하고, 실패 시 재시도 메커니즘과 개별 발송 건에 대한 장애 격리를 통해 높은 신뢰성을 보장하도록 설계되었습니다. 또한, 사용자별 FCM 토큰 관리 API와 알림 목록 조회 API를 포함하여 알림 기능의 완전한 생명주기를 지원합니다. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
이 PR은 이벤트 기반 알림 시스템의 기본 설계를 훌륭하게 구현했습니다. Outbox 패턴, 재시도 정책, 장애 격리 등 안정적인 시스템을 위한 주요 요소들이 잘 고려되었습니다. 특히 NotificationDeliveryProcessor와 NotificationDeliveryWorker의 설계는 매우 견고해 보입니다. 잠재적 버그 수정과 관련하여 한 가지 개선점을 제안드렸으며, 코드 중복 제거에 대한 리팩토링 제안은 향후 과제로 고려해 볼 수 있습니다.
src/main/java/com/example/RealMatch/notification/application/service/FcmTokenService.java
Outdated
Show resolved
Hide resolved
|
/gemini review @gemini-code-assist 잼민아 코드리뷰 해줘. 심각한 장애나 기능 구현에 문제가 생길만한 지점을 짚어줘. |
There was a problem hiding this comment.
Code Review
이 PR은 비즈니스 이벤트에 기반한 알림 시스템의 기본 설계를 구현하며, Outbox 패턴을 사용하여 비즈니스 로직과 알림 발송을 분리하고 FCM 웹 푸시와 이메일 두 가지 채널을 지원합니다. 재시도 정책, 장애 격리, 비정상 종료된 워커 복구 로직 등 시스템 안정성을 높이기 위한 고민이 돋보이며, 확장 가능하고 견고한 알림 시스템의 좋은 기반을 마련한 것으로 보입니다. 하지만, 이메일 발신자에서 출력 이스케이프 부족으로 인한 HTML Injection 취약점이 발견되었습니다. 잠재적인 피싱/추적을 방지하기 위해 이 문제를 해결해야 합니다. 또한, 코드 중복 개선 및 가독성 향상에 대한 몇 가지 제안이 있으며, 이 중 일부는 향후 리팩토링 과제로 고려될 수 있습니다.
Summary
비즈니스 이벤트 기반 알림 시스템을 구현했습니다. 제안 수신, 캠페인 매칭 등 이벤트 발생 시 웹 푸시(FCM) 및 이메일 알림을 발송하고, 알림 페이지 API를 제공합니다. Outbox 패턴을 사용하여 비즈니스 트랜잭션과 완전히 분리되었으며, 재시도 정책과 장애 격리 메커니즘이 포함되어 있습니다.
Changes
도메인 레이어
애플리케이션 레이어
인프라스트럭처 레이어
@TransactionalEventListener(AFTER_COMMIT))@Scheduled, 30초마다 실행)프레젠테이션 레이어
이벤트 정의 (데모데이 이후용)
설정 파일
Type of Change
Related Issues
Closes #218
Closes #219
참고 사항