-
Notifications
You must be signed in to change notification settings - Fork 2
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
[FEAT] 예외 발생 시, Slack 채널에 메세지를 보내는 기능 추가 #214
Merged
Merged
Conversation
This file contains 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
- BusinessException 발생 시, Slack의 #exception-log 채널에 메세지를 보내는 기능 추가 - GlobalException에 대한 추가 처리도 필요 - .yml 파일에 slack 정보 추가 필요 - 스택 트레이스 가독성 개선 필요
- Exception 발생 시 전송하는 Slack 메세지에 예외 발생 시각 데이터 추가
- Environment를 의존성 주입받아 prod(application-prod.yml) 프로파일이 활성화되어 있을 때에만 Slack 메세지를 보내도록 설정 - 각 ExceptionHandler가 MessageSender 인터페이스를 상속받고, sendSlackMessage() 메서드를 구현 - 테스트 및 개발 환경에서 Slack 메세지를 보내지 않는 점 확인
2 tasks
Test Results 47 files 47 suites 35s ⏱️ Results for commit ba69552. ♻️ This comment has been updated with latest results. |
kimdozzi
approved these changes
Jul 6, 2024
SSung023
added a commit
that referenced
this pull request
Jul 11, 2024
* 무중단배포 테스트 * 무중단 배포 테스트 * [FEAT] AWS S3 파일 저장 이슈 해결 (#181) * feat: aws s3 bucket access issue - @crossorigin 어노테이션 추가 * feat: aws 적용 테스트 * chore: main yml 수정 (#182) * [FEAT] nginx & docker-compose 무중단 배포 (#184) * 무중단배포 테스트 * 무중단 배포 테스트 * feat: main.yml 수정 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * feat: docker build and push script 작성 * git actions & docker TEST * git actions & docker TEST * git actions & docker TEST * self-hosted runners & docker compose test * self-hosted runners & docker compose test * self-hosted runners & docker compose test * self-hosted runners & docker compose test * docker compose & nginx test * 최종 테스트 * 최종 테스트 * 최종 테스트 * 최종 테스트 * 최종 테스트 * 테스트 * feat: 무중단 배포 적용 완료 * feat: 무중단 배포 적용 완료 * feat: 무중단 배포 적용 완료 * chore: yml conflict 해결 * [REFACTOR] 파일이 저장소에 존재하지 않을 때에 대한 응답 데이터 리팩토링 및 추가 예외 처리 (#183) * refactor: 파일이 존재하지 않을 때 반환 값 변경 - 저장소에 파일이 존재하지 않을 때 반환 값을 빈 문자열("")로 변경 - 주석 추가 * refactor: 예외 코드 추가 및 변경 - 예외 상황에 맞도록 예외 코드 추가 * feat: 파일 복사 시 예외 상황 추가 처리 - 원본 파일을 이용하는 파일 복사 로직에서, 원본 파일이 존재하지 않으면 예외 발생하는 코드 추가 * test: 예외 코드 추가에 따른 테스트 코드 변경 * [FEAT] Slack Webhook 적용 (#186) * feat: Slack Webhook 적용 * feat: yml 수정 * [FIX] 추천 챌린지가 제대로 전달되지 않는 버그 픽스 (#187) * fix: 추천 인스턴스가 제대로 뜨지 않는 버그 픽스 - 인스턴스의 태그의 개수 >= 사용자의 태그의 개수일 때, 추천 인스턴스가 제대로 뜨지 않는 버그 픽스 - 쿼리문을 in에서 like문으로 수정 * test: 추천 인스턴스 반환과 관련된 테스트 코드 작성 - 인스턴스가 여러 개의 태그를 가지고 있을 때, 제대로 반환하는지 확인 - 반환하는 데이터의 개수가 pageSize보다 적을 때/많을 때 페이징이 제대로 작동하는지 확인하는 테스트 코드 추가 * [FIX] FE에서 Item을 식별하는 코드가 제대로 설정되지 않는 버그 픽스 (#189) * refactor: Item 식별 전용 Column 생성 - Item 식별 시 사용할 전용 Column 생성 - 식별 전용으로 사용할 것이기 때문에 unique=true로 설정 * feat: data.sql의 insert문을 변경된 구조에 맞게 수정 * feat: 식별자를 통해 Item을 반환하는 코드 및 테스트 코드 추가 - ItemProvider, ItemService에 식별자(identifier)를 통해 Item 객체를 찾는 코드 추가 - ItemController에서 전달받은 값(식별자)를 통해 Item 객체를 받은 후 전달하는 코드 추가 - 관련 테스트 코드 추가 * refactor: topic과 관련된 파일 조작 코드 삭제 (#199) - 어드민의 Topic 생성 페이지에서 이미지를 받지 않기로 비지니스 로직을 수정함에 따라, FilesController 및 FilesService에서 Topic과 관련된 코드 삭제 * [FIX] 당일에 시작하는 챌린지에 참여할 수 있는 버그 픽스 (#198) * refactor: 챌린지 참여 취소 성공 응답 메세지 변경 - 챌린지 참여 취소 성공 시 응답 메세지가 "참여 성공"으로 설정되어 있던 것을 "참여 취소 성공"으로 변경 * fix: 인스턴스 시작일에도 참여할 수 있는 버그 픽스 - 현재의 날짜가 인스턴스의 시작일보다 이전일 때에만 인스턴스에 참여할 수 있도록 조건 추가 - 관련 테스트 코드 수정 * [FEAT] 프로필 프레임 아이템 추가 (#196) * feat: data.sql의 insert문에 프로필 프레임 3개 추가 * test: 테스트 코드 수정 * [FEAT] 배포 자동화 적용 (#195) * feat: 배포자동화 Github Actions 워크플로우 작성 * feat: appspec.yml 파일 추가 * fix: 감지 브랜치를 production으로 국한 * fix: 인스턴스 상세 조회 시 좋아요 개수 버그 픽스 (#200) - 사용자가 해당 인스턴스에 좋아요를 하지 않았을 때, 좋아요 개수를 0으로 보내던 문제 해결 * chore: 사용하지 않는 파일 삭제 * fix: 누락된 Slack webhook 설정 코드 추가 * fix: slack webhook 위치 조정 * fix: 챌린지 시작 당일이 되었을 때 상태가 업데이트 되도록 버그 픽스 (#203) - `ProgressService` - `updateToActivity()`의 조건문에서 챌린지 시작 당일일 때에도 상태 업데이트가 되도록 수정 - 챌린지 시작 당일에도 업데이트가 되는지 여부를 확인하는 테스트 코드 추가 * [FIX] 00시~오전 동안 PR 인식을 못하는 버그 픽스 (#206) * refactor: Date -> KST 변환 메서드 이름 변경 - Date를 LocalDate(KST)로 변환하는 메서드의 이름을 더 직관적으로 변경 * fix: 요청 인증 일자를 페이로드에서 받아와서 사용하도록 수정 - LocalDate는 서버의 타임 존에 영향을 받기 때문에, LocalDate.now()가 아닌, 페이로드에서 요청 일자를 받아와서 사용하도록 코드 수정 * fix: 시스템의 타임존에 상관없이 KST로 변환하는 로직으로 변경 시스템의 타임존에 상관없이 KST 기준 시간으로 변환하는 로직 추가 * fix: 인증 컨트롤러에서 현재 일자를 받는 부분 수정 - 인증 컨트롤러에서 LocalDate.now()를 호출하던 부분을 DateUtil의 convertToKST를 통해 KST로 변환된 값을 입력하도록 수정 - * fix: LocalDate.now()를 타임존에 영향받지 않는 코드로 변경 - LocalDate.now()를 DateUtil.convertToKST()로 변경하여 시스템 타임존에 영향받지 않도록 변경 * [FIX] 인스턴스 참가 취소 시 인스턴스 참여 인원, 상태 변화에 대한 버그 픽스 (#212) * fix: 참여자 수 갱신 시 음수가 될 수 있는 버그 픽스 - Instance 클래스 내에 참여자 수 갱신 메서드에서, 갱신된 값이 음수가 될 수 있는 경우에는 갱신시키지 않도록 처리 * fix: 인스턴스 참여 여부 확인 메서드 수정 - 인스턴스 참여 여부를 확인하는 로직에 오류가 있어 수정 - 참여 상태가 No일 때에도 참여로 간주하고 있어, No가 아닐 때에만 true를 반환하도록 수정 * fix: 진행 중인 챌린지 취소 시, 챌린지 현황의 시작 전 개수가 증가하는 버그 픽스 - JoinStatus가 NO(실패)일 때에, 챌린지 현황 조회에 포함되도록 로직 수정 - 챌린지 현황 조회에 사용하는 HashMap의 Key에 시작 전에 해당하는 READY 포함 - for문(반복문)을 Iterator로 변경 및 indent를 2에서 1로 감소 * [CHORE] GitGet Readme 업데이트 (#216) * Create README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * Update README.md * [CHORE] README 업데이트 * chore: README 업데이트 * [FEAT] 예외 발생 시, Slack 채널에 메세지를 보내는 기능 추가 (#214) * chore: slack 의존성 추가 및 불필요한 주석 제거 * chore: favicon error 해결을 위해 favicon.ico 추가 * feat: BusinessException 발생 시, Slack 채널에 메세지 보내는 기능 추가 - BusinessException 발생 시, Slack의 #exception-log 채널에 메세지를 보내는 기능 추가 - GlobalException에 대한 추가 처리도 필요 - .yml 파일에 slack 정보 추가 필요 - 스택 트레이스 가독성 개선 필요 * feat: Exception 발생 시 보내는 메세지 포멧 변경 - Exception 발생 시 전송하는 Slack 메세지에 예외 발생 시각 데이터 추가 * feat: 처리하지 않은 예외 외에 다른 예외 발생 시에도 Slack 메세지 보내도록 설정 * fix: prod 프로파일이 활성화되어 있을 때에만 메세지를 보내도록 설정 - Environment를 의존성 주입받아 prod(application-prod.yml) 프로파일이 활성화되어 있을 때에만 Slack 메세지를 보내도록 설정 - 각 ExceptionHandler가 MessageSender 인터페이스를 상속받고, sendSlackMessage() 메서드를 구현 - 테스트 및 개발 환경에서 Slack 메세지를 보내지 않는 점 확인 * chore: Deploy 조건 변경 - push, pull request에서 push로 변경 --------- Co-authored-by: kimdozzi <[email protected]>
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.
PR 타입(하나 이상의 PR 타입을 선택해주세요)
☑ 기능 추가
□ 기능 삭제
□ 버그 수정
□ 의존성, 환경 변수, 빌드 관련 코드 업데이트
반영 브랜치
feat/207-send-slack-when-exception
→main
변경 사항
SlackMessageUtil
: 예외 정보를 전달받아 메세지의 레이아웃/포멧을 설정하는 유틸 클래스 (정적 메서드로 구성)SlackServiceImpl
: 예외 발생 시 Slack의 특정 채널에 메세지를 전송하는 메서드 구현BusinessExceptionHandler
&GlobalExceptionHandler
: 처리한 예외&처리하지 않은 예외 발생 시, Slack의 채널에 메세지를 전송하도록 설정각
ExceptionHandler
가MessageSender
인터페이스를 상속받고, 메서드를 구현하도록 함main/resources/static
에favicon.ico
추가테스트 결과
연관된 이슈
#207
리뷰 요구사항(선택)