Skip to content
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

[BE] 매칭 완료 알람 기능 구현(#761) #768

Merged
merged 8 commits into from
Nov 21, 2024
Merged

[BE] 매칭 완료 알람 기능 구현(#761) #768

merged 8 commits into from
Nov 21, 2024

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Nov 15, 2024

📌 관련 이슈

✨ PR 세부 내용

스케줄러에 등록된 매칭이 완료되면 결과에 해당하는 알람을 생성합니다.

  • 성공: MATCH_COMPLETE
  • 실패: MATCH_FAIL

P2

MatchingExecutorTest 마지막 테스트가 자꾸 깨지는데(제가 추가했어요)
아무래도 트랜잭션 문제 같아요... 🤔 근데 몇 시간 고민해도 해결책을 잘 모르겠네요
집단 지성을 구하고 싶어 일단 @Disabled 해두고 PR 올렸습니다. 백엔드 분들 도움요.

P4

현재 user -> user로 가는 알람과 달리 매칭 완료 로직은 server -> user로 가는 알람입니다.

따라서 Alarm 인터페이스를 사용하고 두 가지의 알람 도메인을 해당 인터페이스의 구현체로 만들었는데요.

생각보다 기존 로직에 손댄 부분이 조금 있어서 이 부분도 잘 작성된 게 맞는지? 잘 돌아가는지? 함께 확인해주시면 감사하겠습니다.
우선 테스트는 다 돌아감.

P4

매칭 로직이 스케줄러에 의존하고 있다보니 알람 생성을 어느 단에서 해야할지 조금 고민했습니다.
MatchingExecutor가 다른 서비스들을 의존하고 있는 클래스길래 얘가 알람 서비스도 사용하도록 짜봤어요.

그런데 정확히 저 부분에 들어가는 게 맞는지는 조금 아리까리하네요. P2 질문과 함께 봐주시면 감사합니다.

@github-actions github-actions bot added BE 백엔드 개발 관련 작업 기능 기능 구현 작업 labels Nov 15, 2024
Copy link
Contributor Author

github-actions bot commented Nov 15, 2024

Test Results

 65 files   65 suites   7s ⏱️
205 tests 185 ✅ 20 💤 0 ❌
220 runs  200 ✅ 20 💤 0 ❌

Results for commit f4eec6b.

♻️ This comment has been updated with latest results.

Copy link
Contributor

@hjk0761 hjk0761 left a comment

Choose a reason for hiding this comment

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

새로운 알람이 생기면서 인터페이스로 분리 고생하셨네요!
궁금한 점이 있어 코멘트 달아두었습니다.
기능적으로 괜찮은 것 같아 approve 합니다!

}

public static AlarmResponse of(ServerToUserAlarm alarm, Room room) {
return new AlarmResponse(alarm.getId(), alarm.getActionType(), null,
Copy link
Contributor

Choose a reason for hiding this comment

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

👍

Comment on lines 24 to 31
if (alarm instanceof UserToUserAlarm userAlarm) {
return AlarmResponse.of(userAlarm, members.get(userAlarm.getActorId()), userAlarmRooms.get(userAlarm.getInteractionId()));
}
if (alarm instanceof ServerToUserAlarm serverAlarm){
return AlarmResponse.of(serverAlarm, serverAlarmRooms.get(serverAlarm.getInteractionId()));
}
throw new CoreaException(ExceptionType.UNDEFINED_ALARM_TYPE);
})
Copy link
Contributor

Choose a reason for hiding this comment

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

instanceof 를 이용하여 외부에서 타입을 검사하는 것 대신,
Alarm 객체가 isUserToUser 과 같은 메서드를 가지는건 어떻게 생각하세요?

둘 다 종류가 많아질수록 길어지는 건 매한가지 일 것 같긴한데, 지금 타입이 2개밖에 없는 상황에서 type 을 정의하는 Enum 으로 분리하는 것도 과한작업 같다고 느껴지긴하네요.

}

private List<Alarm> mergeAlarms(AlarmsByActionType userAlarms, AlarmsByActionType serverAlarms) {
return Stream.concat(
Copy link
Contributor

Choose a reason for hiding this comment

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

stream.concat 을 하면, 두 스트림이 순서대로 합쳐지는 거로 알고 있는데,
그럼 유저알람이 먼저 보이고 아래에 서버알람이 보이게 될 것 같아요.
혹시 시간 순으로 정렬은 어떤가요?
근데 할꺼면 모든 알람 객체들에게 생성 시간이 들어가야해서 쉽지 않겠네요,, 다른 분들 의견도 궁금하네요

Copy link
Contributor

@jcoding-play jcoding-play left a comment

Choose a reason for hiding this comment

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

수고하셨씁니당~~! 👍

Copy link
Contributor

@youngsu5582 youngsu5582 left a comment

Choose a reason for hiding this comment

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

애쉬 구두로 말한대로
실제 올리고 QA 하는 방안도 괜찮을 거 같아요.
TransactionTemplate 때문인지 코드가 조금 꼬인거 같아서 당장 테스트하기 어려우면 미뤄도 될듯용 🙂

}

@Override
public boolean isStatus(boolean status) {
Copy link
Contributor

Choose a reason for hiding this comment

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

isRead 대신 isStatus 를 한 이유가 있나요?

@ashsty ashsty merged commit bdd82ac into develop Nov 21, 2024
1 check failed
@ashsty ashsty deleted the feat/#761 branch November 21, 2024 05:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드 개발 관련 작업 기능 기능 구현 작업
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BE] 매칭 완료 알람 기능 구현
4 participants