From 9ffc46bbfb9035542c52ee5d20bffb0e47e72932 Mon Sep 17 00:00:00 2001 From: 1000hyehyang Date: Mon, 9 Feb 2026 17:22:21 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix(#343):=20=EC=A0=9C=EC=95=88=EC=9D=84=20?= =?UTF-8?q?=EB=B0=9B=EC=9C=BC=EB=A9=B4=20=EC=A6=89=EC=8B=9C=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=EC=9C=BC=EB=A1=9C=20=EC=9E=84=EC=8B=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/NotificationChannelResolver.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/example/RealMatch/notification/application/service/NotificationChannelResolver.java b/src/main/java/com/example/RealMatch/notification/application/service/NotificationChannelResolver.java index 0a268d11..4436c5f1 100644 --- a/src/main/java/com/example/RealMatch/notification/application/service/NotificationChannelResolver.java +++ b/src/main/java/com/example/RealMatch/notification/application/service/NotificationChannelResolver.java @@ -14,15 +14,20 @@ /** * NotificationKind별 즉시 발송 채널을 결정한다. * - * PRD §5.2 기준: - * - PROPOSAL_RECEIVED : PUSH만 (이메일은 1일 후 스케줄러에서 별도 처리) - * - PROPOSAL_SENT : PUSH만 - * - CAMPAIGN_APPLIED : PUSH만 - * - CAMPAIGN_MATCHED : PUSH + EMAIL (매칭 직후 즉시 이메일) - * - CAMPAIGN_COMPLETED: PUSH + EMAIL (데모데이 이후) - * - SETTLEMENT_READY : PUSH만 - * - AUTO_CONFIRMED : EMAIL만 (데모데이 이후) - * - CHAT_MESSAGE : PUSH만 + *

PRD §5.2 기준: + *

+ * + * TODO(데모데이 이후): PROPOSAL_RECEIVED 이메일은 즉시 발송 대신, 1일 경과 + 미읽음(isRead=false)인 건만 + * 스케줄러에서 조회 후 이메일 발송하도록 변경. (PRD §5.2 이메일 ①) */ @Component public class NotificationChannelResolver { @@ -32,8 +37,9 @@ public class NotificationChannelResolver { static { Map> map = new EnumMap<>(NotificationKind.class); + // 현재: 제안 수신 시 푸시 + 이메일 즉시 발송. 데모데이 이후 이메일은 1일 후 스케줄러로 전환 예정(TODO) map.put(NotificationKind.PROPOSAL_RECEIVED, - EnumSet.of(NotificationChannel.PUSH)); + EnumSet.of(NotificationChannel.PUSH, NotificationChannel.EMAIL)); map.put(NotificationKind.PROPOSAL_SENT, EnumSet.of(NotificationChannel.PUSH)); map.put(NotificationKind.CAMPAIGN_APPLIED, From 82beebdf20a3a1dfa282ce07f3221d0b1ed389f3 Mon Sep 17 00:00:00 2001 From: 1000hyehyang Date: Mon, 9 Feb 2026 17:26:43 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix(#343):=20=EC=BD=94=EB=93=9C=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/NotificationChannelResolverTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/example/RealMatch/notification/application/service/NotificationChannelResolverTest.java b/src/test/java/com/example/RealMatch/notification/application/service/NotificationChannelResolverTest.java index 693bbe53..6fd07a73 100644 --- a/src/test/java/com/example/RealMatch/notification/application/service/NotificationChannelResolverTest.java +++ b/src/test/java/com/example/RealMatch/notification/application/service/NotificationChannelResolverTest.java @@ -20,13 +20,13 @@ class NotificationChannelResolverTest { private final NotificationChannelResolver resolver = new NotificationChannelResolver(); @Test - @DisplayName("PROPOSAL_RECEIVED는 PUSH만 반환") - void resolveChannels_shouldReturnPushOnly_whenProposalReceived() { + @DisplayName("PROPOSAL_RECEIVED는 PUSH와 EMAIL을 반환") + void resolveChannels_shouldReturnPushAndEmail_whenProposalReceived() { // when Set channels = resolver.resolveChannels(NotificationKind.PROPOSAL_RECEIVED); // then - assertThat(channels).containsExactly(NotificationChannel.PUSH); + assertThat(channels).containsExactlyInAnyOrder(NotificationChannel.PUSH, NotificationChannel.EMAIL); } @Test