-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FIX/#300] 웹 어드민 푸시 알림 기능 수정 / 예약 기능 구현 수정 #306
Conversation
예약 알림 식별 기준 값을 `notificationId` -> `alarmId`으로 변경함에 따라 API 요구사항을 변경했습니다.
Content 관심사를 분리하여 관리할 수 있도록 Embedded Entity로 구현했습니다. - 생성자 팩토리 함수를 제공하여 필요한 링크 유형에 따른 객체 생성이 가능하도록 했습니다.
발송 대상에 대한 관심사를 분리하기 위해 Embedded Entity를 구현했습니다.
private static 팩토리 메서드를 제공했습니다. - `isSupportedAppLink` : 입력된 link가 지원되는 앱 링크 경로인지 검사합니다.
Util 클래스에 정의되어 있는 "앱링크 유효성 검사" 메서드를 통해 AppLink 컨텐츠 객체 생성자 메서드에서 유효성 검사를 진행합니다.
- Failure : 지원하지 않는 앱링크에 대한 에러 - Success : 상태값 업데이트에 대한 성공
개편된 Domain Entity로 변경했습니다.
쓰임에 따라 슈퍼 타입 Interface `AlarmRequest`를 구현한 후, `InstantAlarmRequest` / `ScheduleAlarmRequest` 구현체를 구현하여 관심사에 따른 관심사 분리 & 타입 안정적으로 사용하도록 했습니다. - 통일성 있는 행위에 대한 메서드를 정의 및 구현할 수 있습니다. - 알림 발송 역할을 담당하는 객체는 메서드는 `AlarmRequest` 타입 객체만 파라미터로 받을 수 있도록 합니다. - 알림 발송 구현체는 `InstantAlarmRequest` / `ScheduleAlarmRequest`만을 활용할 수 있습니다.
EventBridge의 경우, 다양한 도메인에서 활용될 수 있기 때문에 이름에 쓰임과 의도를 명확히 표현하기 위해 이름을 수정했습니다. - 이전 구현체 대비 코드 절약이 가능한 소스 코드는 편집했습니다.
|
기존 본 어플리케이션 서버 기준(`LocalDateTime.now()`) 등록되는 구조를 실제 알림서버에서 성공한 시점이 등록되는 구조로 변경했습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
중요한 리뷰가 하나 있어서 request changed 요청드립니다!!
operation-api/src/main/java/org/sopt/makers/operation/web/alarm/api/AlarmApiController.java
Outdated
Show resolved
Hide resolved
.../src/main/java/org/sopt/makers/operation/web/alarm/dto/request/AlarmScheduleSendRequest.java
Show resolved
Hide resolved
.../src/main/java/org/sopt/makers/operation/web/alarm/dto/request/AlarmScheduleSendRequest.java
Outdated
Show resolved
Hide resolved
...ion-api/src/main/java/org/sopt/makers/operation/web/alarm/dto/response/AlarmGetResponse.java
Outdated
Show resolved
Hide resolved
operation-api/src/main/java/org/sopt/makers/operation/web/alarm/service/AlarmServiceImpl.java
Show resolved
Hide resolved
...ation-external/src/main/java/org/sopt/makers/operation/client/alarm/ScheduleAlarmSender.java
Outdated
Show resolved
Hide resolved
...ation-external/src/main/java/org/sopt/makers/operation/client/alarm/ScheduleAlarmSender.java
Show resolved
Hide resolved
...ation-external/src/main/java/org/sopt/makers/operation/client/alarm/ScheduleAlarmSender.java
Show resolved
Hide resolved
...n-external/src/main/java/org/sopt/makers/operation/client/alarm/dto/InstantAlarmRequest.java
Show resolved
Hide resolved
operation-external/src/main/java/org/sopt/makers/operation/client/alarm/InstantAlarmSender.java
Outdated
Show resolved
Hide resolved
.../src/main/java/org/sopt/makers/operation/web/alarm/dto/request/AlarmScheduleSendRequest.java
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다아 ~
Related Issue 🚀
Work Description ✏️
PR Point 📸
※ Alarm 도메인 대규모 개편
1) Embedded 도입
2)
intendAt
개념 도입※ Alarm Web Hook API (from. Lambda Alarm Server)
"발송 상태"에 대한 상태 변경 기능 구현