From 019555ef4d72e66accffdaf9e5e2c7d22ccf5661 Mon Sep 17 00:00:00 2001 From: choigiwoong Date: Thu, 19 Dec 2024 16:04:56 +0900 Subject: [PATCH] Main Push (#246) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Feat(#29): 어노테이션 구현 * Refactor(#29): 클래스 이름 수정 * Test(#18): BlockControllerTest Restdocs 적용 * Refeactor(#6): 커스텀 예외처리 추가 구현 * Feat(#11): Block 상태별 전체 조회, 단건 조회 기능 구현 * Feat(#11): Block 상태별 전체 조회, 단건 조회 기능 구현 * Test(#18): Block 상태별 전체 조회, 단건 조회 테스트 코드 구현 * Refactor(#11): 불필요 코드 제거 * Test(#20): AuthService 테스트코드 작성 * Test(#20): AuthService 테스트코드 작성 * Test(#20): AuthController 테스트코드 작성 * Test(44): LoginCheckFilter 테스트코드 작성 * Test(#44): LoginCheckFilter 테스트코드 작성 * Test(#20): GoogleAuthService 테스트코드 수정 * Test(#44): LoginCheckFilter 테스트코드 주석 수정 * Test(#44): urrentUserEmailArgumentResolver 테스트코드 작성 * Feat(#11): Block 논리 삭제 기능 구현, Block 상태별 전체조회 Query 수정 * Test(#18): Block 논리 삭제 테스트 코드 구현 * Test(#18): Block 논리 삭제 Restdocs 수정 * Test(#18): Block 테스트 코드 구현 * Test(#18): Repository 테스트를 위한 h2 의존성 추가 * Test(#18): BlockRepository 테스트 코드 구현 * Refactor: 중복 클레스 제거 * Test: TokenProvider 목킹 의존성 주입 추가 * Feat(#48): 프로필 정보 조회 기능 구현 * Refactor(#48): MemberController 위치 변경 * Refactor(#48): mypage 반환 값 변경 * Feat(#48): 프로필 정보 수정 구현 * Feat(#52): 프로필 정보 조회 테스트 * Feat(#52): 프로필 정보 변경 테스트 * Refactor(#52): 프로필 조회 관련 url 수정 * Feat(#50): Validation 의존성 추가 * Refactor: RestTemplate 의존성 주입으로 수정 * Feat(#50): Challenge 구현 * Feat(#50): Cycle 구현 * Feat(#50): CycleDetail 구현 * Feat(#48): 회원가입시 랜덤 닉네임 부여 * Refactor(#50): 생성자에 status 추가 * Feat(#50): ChallengeSaveReqDto 구현 * Feat(#50): ChallengeInfoResDto 구현 * Feat(#50):CycleList를 json 배열로 저장하기 위한 CycleDetailsConverter 구현 * Feat(#50): ChallengeRepository 구현 * Feat(#50): customException 구현 * Feat(#50): customException 구현 * Feat(#50): ChallengeService 구현 * Feat(#50): ChallengeController 구현 * Test(#50): ChallengeTest 작성 * Test(#50): CycleDetailsConverterTest 작성 * Test(#50): ChallengeServiceTest 작성 * Refactor(#48): 닉네임 관련 객체들 빈으로 등록 * Refactor(#48): 닉네임 중복 확인 로직 데이터베이스 접근 방법으로 수정 * Refactor(#48): 닉네임 중복 확인 로직 로직 추가 * Refactor(#48): 닉네임 부여 방식 수정 * Refactor(#50): 날짜 타입을 String에서 LocalDate타입으로 변경 * Refactor(#50):생성 요청 dto 날짜 타입을 String에서 LocalDate타입으로 변경 * Feat(#50): ChallengeController.class 추가 * Refactor(#48): 닉네임 타임아웃 예외처리 수정 * Refacor(): Staus 필드 명 변경 * Refactor():챌린지 생성 메서드 명 변경 * Refactor():챌린지 생성 메서드 명 변경 * Feat(): MemberNotFoundException 추가 * Refactor(#50): Status.ACTIVE로 변경 * Refactor(#50): Status.ACTIVE로 변경 * Feat(#50): challengeService 추가 * Feat(#50): DELETED로 변경 * Refactor(#48): 회원가입시 닉네임 이름 동일화 코드 수정 * Refactor: status 수정 * Refactor: status 수정 * Refactor: MockBean 수정 * Refactor(#48): 닉네임 중복 가능하게 로직 수정 * Refactor(#11): RequestParam에 name 속성 추가 * Refactor: 닉네임 반환 테스트코드 수정 * Refactor: 쓰지 않는 timeout 예외처리 삭제 * Refactor: 쓰지 않는 timeout 예외처리 삭제 * Refactor(#48): 닉네임 중복 가능명사, 형용사 주입 오류 수정 * Refactor(#52): 닉네임 생성 테스트코드 * Update README.md * Feat(#48): 회원가입시 랜덤 태그 부여 * Feat(#48): 랜덤 태그 중복 처리 * Feat(#48): 랜덤 태그 중복 처리 * Refactor(#48): return 개행 수정 * Refactor(#52): tag 생성 테스트코드 * Refactor(#52): MemberController 테스트코드 작성 * Refactor(#52): 개행 수정 * Refactor(#11): Block 사용자 선언, dto 정적 팩토리 메소드 수정 * Refactor(#18): ControllerTest Header 추가, mockMvc 설정 * Refactor(#48): MemberCustomRepository 이름 수정 * Feat(#62): Dashboard 도메인 구현, Block에 dashboard 연관 관계 추가 * Feat(#62): PersonalDashboard 저장, 수정 기능 구현 * Test(#62): PersonalDashboardService 저장, 수정 테스트코드 구현 * Refactor(#62): PersonalDashboard 수정 요청값 추가 * Refactor(#62): 개인 대시보드 Save DTO에 Validation 예외 추가 * Refactor(#62): 블록 생성 수정(대시보드 요청 추가) * Test(#62): 블록 생성 수정(대시보드 요청 추가) * Test(#62): 개인 대시보드 생성, 수정 테스트 코드 구현, 블록 컨트롤러 어노테이션 수정, Dto 어노테이션 수정 * Refactor(#48): MemberCustomRepositoryImpl 이름 수정 * Feat(#62): 개인 대시보드 삭제 기능 구현 * Refactor(#48): config 위치 수정 * Test(#62): 개인 대시보드 삭제 테스트 코드 구현 * Refactor(#62): 블록 리스트 요청시 대시보드 아이디 추가 구현 * Test(#62): 블록 리스트 요청시 대시보드 아이디 추가 테스트 구현 * Feat(#62): 개인 대시보드 전체, 상세 조회 기능 구현 * Test(#62): 개인 대시보드 전체, 상세 조회 테스트 코드 구현 * Docs(#62): 개인 대시보드 Restdocs 정적 페이지 구현 * Feat(#62): 개인 대시보드 상세 보기에 블록 진행도 추가 * Test(#62): 개인 대시보드 상세 보기 테스트에 블록 진행도 추가 * Test(#62): 개인 대시보드 Entity, Repository 테스트 코드 구현 * Refactor(#62): 개인 대시보드 queryDSL 코드 수정 * Test(#62): 개인 대시보드 ControllerTest 반환 추가 * Docs(#52): 내 프로필 정보 조회 API 문서 작성 * Docs(#52): 로그인, 토큰 재발급 API 문서 작성 * Refactor(#11): 블록 삭제 기능 메시지 변경 * Refactor(#18): 블록 삭제 테스트 DisplayName 수정 * Refactor(#11): 블록 Type 추가 * Feat(#67 #62): 팀 대시보드 기능 구현, 테스트 코드 구현, 개인 대시보드 삭제 메시지, queryDSL 수정 (#68) * Feat(#67): 팀 대시보드 도메인 구현 * Feat(#67): 팀 대시보드 저장 기능 구현 * Feat(#67): 팀 대시보드 수정 기능 구현 * Refactor(#62): 개인 대시보드 삭제 기능 메시지 변경 * Refactor(#62): 개인 대시보드 삭제 예외 처리 추가 * Refactor(#62): 개인 대시보드 queryDSL 수정 * Test(#62): 개인 대시보드 삭제 테스트 DisplayName 수정 * Feat(#67): 팀 대시보드 삭제 기능 구현 * Feat(#67): 팀 대시보드 전체, 상세 조회 기능 구현 * Refactor(#62): 개인 대시보드 정적 팩토리 메소드명 수정 * Feat(#67): 팀 대시보드 참여, 탈퇴 기능 구현 * Feat(#67): 팀 대시보드 초대 멤버 리스트 불러오는 기능 구현 * Test(#67): 팀 대시보드 컨트롤러 테스트 코드 구현 * Test(#67): 팀 대시보드 테스트 코드 구현 * Test(#67): 팀 대시보드 서비스 테스트 코드 구현 * Test(#67): 팀 대시보드 레포지토리 테스트 코드 구현 * Test(#62): 개인 대시보드 서비스 테스트 코드 수정 * Test(#67): 팀 대시보드 서비스 테스트 코드 수정 * Docs(#67): 팀 대시보드 Restdocs 정적 페이지 추가 * Refactor(#11 #18): 블록 반환 값 추가, 반환 값 추가로 인한 테스트 코드 수정 (#71) * Refactor(#11): 블록 반환 값 추가 * Refactor(#18): 블록 반환 값 추가로 인한 테스트 코드 수정 * Feat(#50): 챌린지 전체 조회, 상세 조회, 삭제, 검색 기능 추가 (#64) * Feat(#50): 수정 메서드, 상태 변경 메서드 추가 * Feat(#50): 멤버-챌린지 연관관계 설정 * Feat(#50): 챌린지 커스텀 레포지토리 인터페이스 추가 * Feat(#50): 챌린지 커스텀 레포지토리 구현체 추가 * Feat(#50): 챌린지 커스텀 레포지토리 상속받도록 추가 * Refactor(#50): dto단에서 예외처리하도록 변경 * Refactor(#50): 정적 팩토리 메서드 네이밍, 매개변수 변경 * Feat(#50): ChallengeListResDto 추가 * Feat(#50): ChallengeListResDto 추가 * Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 기능 추가 * Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 api 추가 * Feat(#50): ChallengeAccessDeniedException 추가 * Feat(#50): ChallengeNotFoundException 추가 * Refactor(#50): 메서드 추가 * Refactor(#50): 메서드 추가 * Refactor(#50): 커스텀 예외에서 메시지 처리하도록 변경 * Test(#50): 수정, 상태 변경 로직 테스트 추가 * Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 메서드 테스트 추가 * Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 api 테스트 및 레스트독스 적용 * Docs(#50): challenge.adoc 추가 * Docs(#50): index.adoc 추가 * Test(#50): ControllerTest ChallengeController.class 추가 * Feat(#50): Valid 어노테이션 추가 * Style(#50): 코즈 포맷팅 수정 * Refactor(#50): startDate, endDate @NotNull 적용 * Style(#50): 경로변수 카멜케이스로 변경 * Style(#50): 메서드 명 변경 * Style(#50): 매개변수명 변경 * Refactor(#50): 상세조회에 readOnly옵션 설정 * Feat(#50): cycle 필드 저장하도록 변경 * Feat(#50): 블록 엔티티에 챌린지 매핑 및 상태 수정 메서드 추가 * Feat(#50): CycleDetail value 추가 * Feat(#50): status 계산을 위한 ChallengeBlockStatusUtil 추가 * Feat(#50): 매일 자정에 챌린지 블록 상태를 업데이트 하기 위한 스케줄러 설정 * Feat(#50): 챌린지 참여 메서드 추가 * Feat(#50): 챌린지 참여 메서드 추가 * Test(#50): ChallengeBlockStatusUtilTest 추가 * Test(#50): 챌린지 참여 메서드 테스트 추가 * Feat(#50): findByType 추가 * Docs(#50): 챌린지 참여 문서화 * Style(#50): 불필요한 공백 라인 제거 * Test(#50): 블록 도메인에 타입 필드 추가에 따른 챌린지 컨트롤러 테스트 코드 수정 (#72) * Feat(#50): 수정 메서드, 상태 변경 메서드 추가 * Feat(#50): 멤버-챌린지 연관관계 설정 * Feat(#50): 챌린지 커스텀 레포지토리 인터페이스 추가 * Feat(#50): 챌린지 커스텀 레포지토리 구현체 추가 * Feat(#50): 챌린지 커스텀 레포지토리 상속받도록 추가 * Refactor(#50): dto단에서 예외처리하도록 변경 * Refactor(#50): 정적 팩토리 메서드 네이밍, 매개변수 변경 * Feat(#50): ChallengeListResDto 추가 * Feat(#50): ChallengeListResDto 추가 * Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 기능 추가 * Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 api 추가 * Feat(#50): ChallengeAccessDeniedException 추가 * Feat(#50): ChallengeNotFoundException 추가 * Refactor(#50): 메서드 추가 * Refactor(#50): 메서드 추가 * Refactor(#50): 커스텀 예외에서 메시지 처리하도록 변경 * Test(#50): 수정, 상태 변경 로직 테스트 추가 * Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 메서드 테스트 추가 * Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 api 테스트 및 레스트독스 적용 * Docs(#50): challenge.adoc 추가 * Docs(#50): index.adoc 추가 * Test(#50): ControllerTest ChallengeController.class 추가 * Feat(#50): Valid 어노테이션 추가 * Style(#50): 코즈 포맷팅 수정 * Refactor(#50): startDate, endDate @NotNull 적용 * Style(#50): 경로변수 카멜케이스로 변경 * Style(#50): 메서드 명 변경 * Style(#50): 매개변수명 변경 * Refactor(#50): 상세조회에 readOnly옵션 설정 * Feat(#50): cycle 필드 저장하도록 변경 * Feat(#50): 블록 엔티티에 챌린지 매핑 및 상태 수정 메서드 추가 * Feat(#50): CycleDetail value 추가 * Feat(#50): status 계산을 위한 ChallengeBlockStatusUtil 추가 * Feat(#50): 매일 자정에 챌린지 블록 상태를 업데이트 하기 위한 스케줄러 설정 * Feat(#50): 챌린지 참여 메서드 추가 * Feat(#50): 챌린지 참여 메서드 추가 * Test(#50): ChallengeBlockStatusUtilTest 추가 * Test(#50): 챌린지 참여 메서드 테스트 추가 * Feat(#50): findByType 추가 * Docs(#50): 챌린지 참여 문서화 * Style(#50): 불필요한 공백 라인 제거 * feat(#50): 블록 도메인에 타입 추가에 따른 테스트 코드 수정 * Refactor(#11 #18): 블록 시작 시간 속성 추가 (#75) * Refactor(#11): 블록 반환 값 추가 * Refactor(#18): 블록 반환 값 추가로 인한 테스트 코드 수정 * Refactor(#11): 블록 시작 시간 속성 추가 * Test(#18): 블록 시작 시간 속성이 추가됨으로써 테스트 코드 수정 * Feat(#67 #62): 팀 대시보드 기능 구현, 테스트 코드 구현, 개인 대시보드 삭제 메시지, queryDSL 수정 (#68) * Feat(#67): 팀 대시보드 도메인 구현 * Feat(#67): 팀 대시보드 저장 기능 구현 * Feat(#67): 팀 대시보드 수정 기능 구현 * Refactor(#62): 개인 대시보드 삭제 기능 메시지 변경 * Refactor(#62): 개인 대시보드 삭제 예외 처리 추가 * Refactor(#62): 개인 대시보드 queryDSL 수정 * Test(#62): 개인 대시보드 삭제 테스트 DisplayName 수정 * Feat(#67): 팀 대시보드 삭제 기능 구현 * Feat(#67): 팀 대시보드 전체, 상세 조회 기능 구현 * Refactor(#62): 개인 대시보드 정적 팩토리 메소드명 수정 * Feat(#67): 팀 대시보드 참여, 탈퇴 기능 구현 * Feat(#67): 팀 대시보드 초대 멤버 리스트 불러오는 기능 구현 * Test(#67): 팀 대시보드 컨트롤러 테스트 코드 구현 * Test(#67): 팀 대시보드 테스트 코드 구현 * Test(#67): 팀 대시보드 서비스 테스트 코드 구현 * Test(#67): 팀 대시보드 레포지토리 테스트 코드 구현 * Test(#62): 개인 대시보드 서비스 테스트 코드 수정 * Test(#67): 팀 대시보드 서비스 테스트 코드 수정 * Docs(#67): 팀 대시보드 Restdocs 정적 페이지 추가 * Refactor(#11 #18): 블록 반환 값 추가, 반환 값 추가로 인한 테스트 코드 수정 (#71) * Refactor(#11): 블록 반환 값 추가 * Refactor(#18): 블록 반환 값 추가로 인한 테스트 코드 수정 * Feat(#50): 챌린지 전체 조회, 상세 조회, 삭제, 검색 기능 추가 (#64) * Feat(#50): 수정 메서드, 상태 변경 메서드 추가 * Feat(#50): 멤버-챌린지 연관관계 설정 * Feat(#50): 챌린지 커스텀 레포지토리 인터페이스 추가 * Feat(#50): 챌린지 커스텀 레포지토리 구현체 추가 * Feat(#50): 챌린지 커스텀 레포지토리 상속받도록 추가 * Refactor(#50): dto단에서 예외처리하도록 변경 * Refactor(#50): 정적 팩토리 메서드 네이밍, 매개변수 변경 * Feat(#50): ChallengeListResDto 추가 * Feat(#50): ChallengeListResDto 추가 * Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 기능 추가 * Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 api 추가 * Feat(#50): ChallengeAccessDeniedException 추가 * Feat(#50): ChallengeNotFoundException 추가 * Refactor(#50): 메서드 추가 * Refactor(#50): 메서드 추가 * Refactor(#50): 커스텀 예외에서 메시지 처리하도록 변경 * Test(#50): 수정, 상태 변경 로직 테스트 추가 * Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 메서드 테스트 추가 * Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 api 테스트 및 레스트독스 적용 * Docs(#50): challenge.adoc 추가 * Docs(#50): index.adoc 추가 * Test(#50): ControllerTest ChallengeController.class 추가 * Feat(#50): Valid 어노테이션 추가 * Style(#50): 코즈 포맷팅 수정 * Refactor(#50): startDate, endDate @NotNull 적용 * Style(#50): 경로변수 카멜케이스로 변경 * Style(#50): 메서드 명 변경 * Style(#50): 매개변수명 변경 * Refactor(#50): 상세조회에 readOnly옵션 설정 * Feat(#50): cycle 필드 저장하도록 변경 * Feat(#50): 블록 엔티티에 챌린지 매핑 및 상태 수정 메서드 추가 * Feat(#50): CycleDetail value 추가 * Feat(#50): status 계산을 위한 ChallengeBlockStatusUtil 추가 * Feat(#50): 매일 자정에 챌린지 블록 상태를 업데이트 하기 위한 스케줄러 설정 * Feat(#50): 챌린지 참여 메서드 추가 * Feat(#50): 챌린지 참여 메서드 추가 * Test(#50): ChallengeBlockStatusUtilTest 추가 * Test(#50): 챌린지 참여 메서드 테스트 추가 * Feat(#50): findByType 추가 * Docs(#50): 챌린지 참여 문서화 * Style(#50): 불필요한 공백 라인 제거 * Test(#50): 블록 도메인에 타입 필드 추가에 따른 챌린지 컨트롤러 테스트 코드 수정 (#72) * Feat(#50): 수정 메서드, 상태 변경 메서드 추가 * Feat(#50): 멤버-챌린지 연관관계 설정 * Feat(#50): 챌린지 커스텀 레포지토리 인터페이스 추가 * Feat(#50): 챌린지 커스텀 레포지토리 구현체 추가 * Feat(#50): 챌린지 커스텀 레포지토리 상속받도록 추가 * Refactor(#50): dto단에서 예외처리하도록 변경 * Refactor(#50): 정적 팩토리 메서드 네이밍, 매개변수 변경 * Feat(#50): ChallengeListResDto 추가 * Feat(#50): ChallengeListResDto 추가 * Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 기능 추가 * Feat(#50): 조회, 상세조회, 수정, 삭제, 검색 api 추가 * Feat(#50): ChallengeAccessDeniedException 추가 * Feat(#50): ChallengeNotFoundException 추가 * Refactor(#50): 메서드 추가 * Refactor(#50): 메서드 추가 * Refactor(#50): 커스텀 예외에서 메시지 처리하도록 변경 * Test(#50): 수정, 상태 변경 로직 테스트 추가 * Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 메서드 테스트 추가 * Test(#50): ChallengeServiceTest 조회, 수정, 삭제, 검색 api 테스트 및 레스트독스 적용 * Docs(#50): challenge.adoc 추가 * Docs(#50): index.adoc 추가 * Test(#50): ControllerTest ChallengeController.class 추가 * Feat(#50): Valid 어노테이션 추가 * Style(#50): 코즈 포맷팅 수정 * Refactor(#50): startDate, endDate @NotNull 적용 * Style(#50): 경로변수 카멜케이스로 변경 * Style(#50): 메서드 명 변경 * Style(#50): 매개변수명 변경 * Refactor(#50): 상세조회에 readOnly옵션 설정 * Feat(#50): cycle 필드 저장하도록 변경 * Feat(#50): 블록 엔티티에 챌린지 매핑 및 상태 수정 메서드 추가 * Feat(#50): CycleDetail value 추가 * Feat(#50): status 계산을 위한 ChallengeBlockStatusUtil 추가 * Feat(#50): 매일 자정에 챌린지 블록 상태를 업데이트 하기 위한 스케줄러 설정 * Feat(#50): 챌린지 참여 메서드 추가 * Feat(#50): 챌린지 참여 메서드 추가 * Test(#50): ChallengeBlockStatusUtilTest 추가 * Test(#50): 챌린지 참여 메서드 테스트 추가 * Feat(#50): findByType 추가 * Docs(#50): 챌린지 참여 문서화 * Style(#50): 불필요한 공백 라인 제거 * feat(#50): 블록 도메인에 타입 추가에 따른 테스트 코드 수정 * Refactor(#11): 블록 시작 시간 속성 추가 * Fix: 컨플릭 수정 * Fix: 컨플릭 수정 --------- Co-authored-by: DongkyunKim <134477764+dongkyun0713@users.noreply.github.com> * Test (#76) * Feat(#67): 팀 대시보드 도메인 구현 * Feat(#67): 팀 대시보드 저장 기능 구현 * Feat(#67): 팀 대시보드 수정 기능 구현 * Refactor(#62): 개인 대시보드 삭제 기능 메시지 변경 * Refactor(#62): 개인 대시보드 삭제 예외 처리 추가 * Refactor(#62): 개인 대시보드 queryDSL 수정 * Test(#62): 개인 대시보드 삭제 테스트 DisplayName 수정 * Feat(#67): 팀 대시보드 삭제 기능 구현 * Feat(#67): 팀 대시보드 전체, 상세 조회 기능 구현 * Refactor(#62): 개인 대시보드 정적 팩토리 메소드명 수정 * Feat(#67): 팀 대시보드 참여, 탈퇴 기능 구현 * Feat(#67): 팀 대시보드 초대 멤버 리스트 불러오는 기능 구현 * Test(#67): 팀 대시보드 컨트롤러 테스트 코드 구현 * Test(#67): 팀 대시보드 테스트 코드 구현 * Test(#67): 팀 대시보드 서비스 테스트 코드 구현 * Test(#67): 팀 대시보드 레포지토리 테스트 코드 구현 * Test(#62): 개인 대시보드 서비스 테스트 코드 수정 * Test(#67): 팀 대시보드 서비스 테스트 코드 수정 * Docs(#67): 팀 대시보드 Restdocs 정적 페이지 추가 * Feat(#70): 팀 문서, 팀 파일 CRUD 구현 (#73) * Feat(#70): 팀 문서, 팀 파일 CRUD 구현 초안 * Test(#70): 팀 파일 repositoryTest 구현 * Test(#70): 팀 파일 Controller, Service, domain 구현 * Test(#70): 레스트독스 적용 * Feat(#70): 팀 문서 CRUD 완성 * Test(#70): DocumentRepository Test 구현 * Test(#70): DocumentRepositoryTest 구현 * Refactor(#70): Document 주석 삭제 * Test(#70): DocumentTest 구현 * Test(#70): DocumentServiceTest 구현 * Test(#70): DocumentControllerTest 구현 * Refactor(#70): document update 전용 dto 생성 * Refactor(#70): 컨밴션 수정 * Refactor(#70): 띄어쓰기 컨밴션 수정 * Refactor(#70): 띄어쓰기 컨밴션 수정 * Feature(#74): 알림 기능 구현 (#77) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Feat(#81): 챌린지 카테고리 추가 (#83) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Refactor: 컨벤션에 맞게 수정 (#80) * Feat(#70): 팀 문서, 팀 파일 CRUD 구현 초안 * Test(#70): 팀 파일 repositoryTest 구현 * Test(#70): 팀 파일 Controller, Service, domain 구현 * Test(#70): 레스트독스 적용 * Feat(#70): 팀 문서 CRUD 완성 * Test(#70): DocumentRepository Test 구현 * Test(#70): DocumentRepositoryTest 구현 * Refactor(#70): Document 주석 삭제 * Test(#70): DocumentTest 구현 * Test(#70): DocumentServiceTest 구현 * Test(#70): DocumentControllerTest 구현 * Refactor(#70): document update 전용 dto 생성 * Refactor(#70): 컨밴션 수정 * Refactor(#70): 띄어쓰기 컨밴션 수정 * Refactor(#70): 띄어쓰기 컨밴션 수정 * Refactor: 컨벤션에 맞게 수정 * Refactor: 컨벤션에 맞게 수정 * Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 (#82) * Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 어노테이션 순서 수정 * Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가 * Refactor(#48): 줄바꿈 수정 * Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업 * Feat(#62): 사용자의 개인 대시보드 카테고리 조회 기능 구현 (#84) * Feat(#62): 사용자의 개인 대시보드 카테고리 조회 기능 구현 * Test(#62): 사용자의 개인 대시보드 카테고리 조회 테스트 코드 구현 * Feat(#86): 블록 순번 속성 추가, 순번 지정, 순번 변경 api 기능 구현, 테스트 코드 구현 (#87) * Feat(#86): 블록 순번 속성 추가, 순번 지정, 순번 변경 api 기능 구현 * Test(#86): 블록 순번 속성 추가와 지정함으로써 테스트 코드 구현 * Docs(#86): restdocs 문서 추가 * Docs(#86): restdocs 문서 수정을 위한 테스트 코드 수정 * Refactor(#86): 블록의 대시보드 반환을 위한 dType 속성, 반환 값 추가 * Style: 끝 줄 추가 * Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 (#89) * Feat(#62): 사용자의 개인 대시보드 카테고리 조회 기능 구현 * Test(#62): 사용자의 개인 대시보드 카테고리 조회 테스트 코드 구현 * Feature(#74): 알림 기능 구현 (#77) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Feat(#81): 챌린지 카테고리 추가 (#83) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Refactor: 컨벤션에 맞게 수정 (#80) * Feat(#70): 팀 문서, 팀 파일 CRUD 구현 초안 * Test(#70): 팀 파일 repositoryTest 구현 * Test(#70): 팀 파일 Controller, Service, domain 구현 * Test(#70): 레스트독스 적용 * Feat(#70): 팀 문서 CRUD 완성 * Test(#70): DocumentRepository Test 구현 * Test(#70): DocumentRepositoryTest 구현 * Refactor(#70): Document 주석 삭제 * Test(#70): DocumentTest 구현 * Test(#70): DocumentServiceTest 구현 * Test(#70): DocumentControllerTest 구현 * Refactor(#70): document update 전용 dto 생성 * Refactor(#70): 컨밴션 수정 * Refactor(#70): 띄어쓰기 컨밴션 수정 * Refactor(#70): 띄어쓰기 컨밴션 수정 * Refactor: 컨벤션에 맞게 수정 * Refactor: 컨벤션에 맞게 수정 * Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 (#82) * Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 어노테이션 순서 수정 * Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가 * Refactor(#48): 줄바꿈 수정 * Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업 * Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 --------- Co-authored-by: DongkyunKim <134477764+dongkyun0713@users.noreply.github.com> Co-authored-by: choi inho <129029251+inhooo00@users.noreply.github.com> * Fix(#92): Build시에 Q클래스 생성되지 않는 버그 (#93) * Revert "Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 (#89)" (#94) This reverts commit dc3dd78f1e0b9ba8ef4c1efccb8417b2fe512cfc. * Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 (#95) * Revert "Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 (#89)" This reverts commit dc3dd78f1e0b9ba8ef4c1efccb8417b2fe512cfc. * Refactor(#88): 개인, 팀 대시보드 전체 조회 페이지네이션 제거 * Docs(#90): api 명세서에 enum 항목 설명 추가 (#91) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#18): 테스트 코드 페이지, 사이즈 파라미터 추가 (#98) * Refactor(#74): 팀 대시보드 초대 시 알림 발송 API 추가 (#99) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 및 수정 시 팀 초대 알림 가도록 변경 (#102) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Feat(#100): 삭제된 블록 조회, 영구 삭제 기능, 테스트 코드 구현 (#101) * Refactor(#18): 테스트 코드 페이지, 사이즈 파라미터 추가 * Feat(#100): 삭제된 블록 조회, 영구 삭제 기능 구현 * Test(#100): 삭제된 블록 조회, 영구 삭제 테스트 코드 구현 * Test(#100): 영구 삭제 테스트 코드 수정 * Docs(#100): 삭제된 블록, 영구 삭제 문서화 * Refactor(#104): Response에 챌린지 id 추가 (#105) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor: authServiceFactory로 id토큰 반환하는 로직 수정, JsonNode 반환 방법 DTO 사용 (#103) * Refactor: authServiceFactory로 id토큰 반환하는 로직 수정, JsonNode 반환 방법 DTO 사용 방법으로 변경 * Refactor: authServices로 매개변수 이름 수정 * Docs: 내 정보 수정 api 문서 작업 (#108) * Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 어노테이션 순서 수정 * Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가 * Refactor(#48): 줄바꿈 수정 * Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업 * Test: mypage 수정 테스트 코드 작성(아직 미완성) * Docs: 내 정보 수정 api 문서 작업 * Feat(#106): 팀 문서 전체적인 작업 (#107) * Feat(#106): 팀 문서 전체적인 작업 * Feat(#106): 팀 문서 상세 조회 로직 구현 * Test(#106): 팀 문서 컨트롤러 작성 * Test(#106): 팀 문서 컨트롤러 수정 중.. * Refactor(#106): DTO 정적 팩토링 메서드 이름 변경 * Docs(#106): 팀 문서 관전 api docs 파일로 구현 * Refactor(#106): 카테고리 dto 풀어서 전달 * Refactor(#112): 사용자 사진 반환 값 추가 (#113) * Refactor(#112): 사용자 사진 반환 값 추가 * Refactor(#112): 사용자 사진 반환 값 추가로 인한 테스트 코드 수정 * Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정 (#111) * Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정 * Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정 * Refactor(#106): 카테고리로 팀문서 조회하는 로직 수정 (#109) * Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 어노테이션 순서 수정 * Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가 * Refactor(#48): 줄바꿈 수정 * Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업 * Test: mypage 수정 테스트 코드 작성(아직 미완성) * Docs: 내 정보 수정 api 문서 작업 * Test(#106): 팀 문서 post 테스트코드 수정 * Refactor(#106): 카테고리로 팀문서 조회하는 로직 수정 * Docs: teamDocument api 문서 수정 * Test(#106): 팀 문서 post 테스트코드 수정 (#114) * Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 어노테이션 순서 수정 * Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가 * Refactor(#48): 줄바꿈 수정 * Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업 * Test: mypage 수정 테스트 코드 작성(아직 미완성) * Docs: 내 정보 수정 api 문서 작업 * Test(#106): 팀 문서 post 테스트코드 수정 * Refactor(#106): 카테고리로 팀문서 조회하는 로직 수정 * Docs: teamDocument api 문서 수정 * Test(#106): 팀 문서 post 테스트코드 수정 * Refactor: mypage 챌랜지, 팀 대시보드 조회 페이지네이션 수정 (#115) * Feat(#48): 마이페이지 챌린지, 팀 대시보드 조회 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 컨벤션 리팩토링 * Refactor(#48): 어노테이션 순서 수정 * Feat(#48): 챌린지 이메일로 조회하는 로직 추가, 마이페이지에서 조회하기 로직 추가 * Refactor(#48): 줄바꿈 수정 * Test(#48): 마이페이지 팀 대시보드, 챌린지 조회 테스트코드, 문서 작업 * Test: mypage 수정 테스트 코드 작성(아직 미완성) * Docs: 내 정보 수정 api 문서 작업 * Test(#106): 팀 문서 post 테스트코드 수정 * Refactor(#106): 카테고리로 팀문서 조회하는 로직 수정 * Docs: teamDocument api 문서 수정 * Test(#106): 팀 문서 post 테스트코드 수정 * Refactor: mypage 챌랜지, 팀 대시보드 조회 페이지네이션 수정 * Docs: 팀 대시보드와 챌린지 정보 조회 API 쿼리 정보 추가 * Fix(#110): 404에러 발생 수정 (#118) * Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정 * Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정 * Fix(#110): 404에러 발생 수정 * Fix(#110): 404에러 발생 수정 (#119) * Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정 * Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정 * Fix(#110): 404에러 발생 수정 * Fix(#110): 404에러 발생 수정 * Refactor(#10): 팀 대시보드 팀원에 대시보드 생성자 추가 (#125) * Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정 * Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정 * Fix(#110): 404에러 발생 수정 * Fix(#110): 404에러 발생 수정 * Refactor(#10): 팀 대시보드 팀원에 대시보드 생성자 추가 * Test(#10): 팀 대시보드 팀원에 대시보드 생성자 추가로 인한 테스트 코드 수정 (#126) * Refactor(#110): 대시보드 접근 권한 수정, 카테고리 중복 수정 * Test(#110): 카테고리 중복 수정으로 인한 테스트 코드 수정 * Fix(#110): 404에러 발생 수정 * Fix(#110): 404에러 발생 수정 * Refactor(#10): 팀 대시보드 팀원에 대시보드 생성자 추가 * Test(#10): 팀 대시보드 팀원에 대시보드 생성자 추가로 인한 테스트 코드 수정 * Refacotr(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 (#128) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 (#129) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refactor: 알림 이름 안보내도록 수정 (#130) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 (#132) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 알림 로직 변경에 따른 테스트 코드 수정 (#133) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#97): 챌린지 코드 리펙토링 (#135) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Docs(#139): 카테고리 별 검색 문서에 추가 및 쿼리 파라미터 추가 (#140) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feature(#141): 이미지 업로드 기능 추가 (#142) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refcator(#141): url 고유하도록 변경 (#143) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 (#145) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 (#147) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 (#149) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 (#151) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * Refactor: 마이페이지 내에서 개인 대시보드 조회 기능 추가 & 상대방 프로필은 isPublic이 true인 것만 보이도록 수정 (#152) * Refactor: 마이페이지 내에서 개인 대시보드 조회 기능 추가 & 상대방 프로필은 isPublic이 true인 것만 보이도록 수정 * Docs: mypage 대시보드 & 챌린지 목록 조회 문서 수정 * Test: mypage 개인 대시보드 확인 로직 추가 수정 * Refactor(#153): 챌린지 상세조회 반환값 수정 (#154) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#155): 팀 대시보드 중복 참여, 참여하지 않았지만 탈퇴하려는 사용자 예외 처리, 참가자 팀 대시보드 리스트 수정 (#156) * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 (#157) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Fix(#158): 이전 팀 문서 삭제 (#159) * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 (#160) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Fix(#161): 이미지 수정 시 null 반환하는 오류 해결 (#162) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결 * Fix(#163): 매개변수 순서 수정 (#164) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결 * Fix(#163): 매개변수 수정 * Feat(#165): 챌린지 탈퇴 api 추가" (#166) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결 * Fix(#163): 매개변수 수정 * Feat(#165): 챌린지 탈퇴 api 추가 * Refactor(#168): 블록 디데이 시작날짜부터 계산, 삭제된 블록 진행도 불포함 (#169) * Fix(#170): 챌린지 생성 안되는 오류 해결" (#171) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결 * Fix(#163): 매개변수 수정 * Feat(#165): 챌린지 탈퇴 api 추가 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성안되는 오류 해결 (#172) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결 * Fix(#163): 매개변수 수정 * Feat(#165): 챌린지 탈퇴 api 추가 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성 안되는 오류 해결 (#173) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결 * Fix(#163): 매개변수 수정 * Feat(#165): 챌린지 탈퇴 api 추가 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성 안되는 오류 해결 * Refactor: 마이페이지에서 챌린지 조회할 때 참여한 챌린지들 보이도록 수정 (#174) * Refactor: 마이페이지에서 챌린지 조회할 때 참여한 챌린지들 보이도록 수정 * Docs: 사용하지 않는 문서 삭제 * Refactor: 팀 대시보드 참여 사용자 아이디 반환 (#178) * 챌린지 및 개인대시보드 삭제 시 연관 매핑 테이블도 제거 및 검색 시 역순 반환 (#179) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결 * Fix(#163): 매개변수 수정 * Feat(#165): 챌린지 탈퇴 api 추가 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성 안되는 오류 해결 * Refactor: 역순으로 반환하도록 변경 * Refactor(#177): 개인 대시보드 삭제 시 챌린지 매핑 연관관계 제거 * Refactor(#177): 챌린지 삭제 시 챌린지 매핑 연관관계 제거 * Refactor(#177): 챌린지 삭제 시 챌린지 매핑 연관관계 제거 * Refactor(#177): 줄바꿈 수정 * Refactor(#177): 메시지 수정 * Refactor(#177): 개인 대시보드 삭제 시 챌린지 매핑 연관관계 제거 * Refactor: 알림 메시지 수정 * Refactor(#177): 챌린지 검색 및 전체 조회 시 역순으로 반환하도록 변경 (#180) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결 * Fix(#163): 매개변수 수정 * Feat(#165): 챌린지 탈퇴 api 추가 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성 안되는 오류 해결 * Refactor: 역순으로 반환하도록 변경 * Refactor(#177): 개인 대시보드 삭제 시 챌린지 매핑 연관관계 제거 * Refactor(#177): 챌린지 삭제 시 챌린지 매핑 연관관계 제거 * Refactor(#177): 챌린지 삭제 시 챌린지 매핑 연관관계 제거 * Refactor(#177): 줄바꿈 수정 * Refactor(#177): 메시지 수정 * Refactor(#177): 개인 대시보드 삭제 시 챌린지 매핑 연관관계 제거 * Refactor: 알림 메시지 수정 * Refactor(#177): 역순으로 반환하도록 변경 * Refactor(#168): 블록 디데이 코드 수정 (#187) * Refactor(#168): 블록 디데이 코드 수정으로 인한 테스트 코드 수정 (#188) * Refactor(#168): 블록 디데이 코드 수정 * Refactor(#168): 블록 디데이 코드 수정으로 인한 테스트 코드 수정 * Refactor: 마이페이지에서 챌린지 조회할 때 참여한 챌린지들 보이도록 수정 (#189) * Refactor: 마이페이지에서 챌린지 조회할 때 참여한 챌린지들 보이도록 수정 * Docs: 사용하지 않는 문서 삭제 * Refector: 자기소개 입력 공백으로 처리 * Refactor(#168): 블록 디데이 코드 수정 (#190) * Refactor(#168): 블록 디데이 코드 수정 * Refactor(#168): 블록 디데이 코드 수정으로 인한 테스트 코드 수정 * Refactor(#168): 블록 디데이 코드 수정 * Refactor(#183): 챌린지에 참여하고 그 당일이 챌린지 생성되는 날이면 알림 보낸다 (#184) * Feat(#74): 카테고리 검색 메서드 추가 * Test(#81): * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 클래스 추가 * Feat(#81): 챌린지 엔티티에 카테고리 필드 추가 * Feat(#81): 카테고리 필드 추가 * Feat(#81): 카테고리 검색 메서드 추가 * Feat(#81): 카테고리 필드 추가 * Test(#81): 챌린지 카테고리 검색 테스트 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Fix(#81): 카테고리 타입 변경 * Docs(#90): enum 항목 설명 추가 * Refactor(#97): 매직 넘버 상수로 변환 * Refactor(#104): responseDto에 challengeId 추가 * Refactor(#97): 메서드 분리 * Refacor(#97): 싱글턴 패턴으로 변경 * Test(#97): 싱글턴 패턴으로 변경 * Refacor(#97): cycle 검증을 도메인 계층에서 하도록 변경 * Test(#97): 테스트 코드 오류 수정 * Refactor(#138): 챌린지 생성 시 생성 날짜 자동 주입 및 블록 이름 추가 * Test(#139): 쿼리 파라미터 추가 * Docs(#139): 쿼리 파라미터 추가 및 카테거리 검색 API 추가 * Feat(#141): 이미지 업로드 기능 추가 * Feat(#141): 의존성 추가 * Test(#141): 이미지 업로드 테스트 * Docs(#141): 문서 업데이트 * Test(#141): 이미지 업로드 테스트 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): url 고유하도록 변경 * Refactor(#141): 불필요한 주석 제거 * Feat: 카테고리와 키워드를 통해 챌린지 검색하는 기능 추가 * Refactor(#148): 챌린지 카테고리 및 키워드 검색 api 하나로 통합 * Refactor(#153): 챌린지 상세조회 반환값 수정 * Refactor(#153): 챌린지 실시간 완료자 반환하도록 수정 * Refactor(#153): 챌린지 주기마다 블록이 새로 생성되도록 변경 * Refactor(#153): 필요없는 주석 제거 * Refacotr(#161): 이미지 수정 시 null 반환하는 오류 해결 * Fix(#163): 매개변수 수정 * Feat(#165): 챌린지 탈퇴 api 추가 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성 안되는 오류 해결 * Fix(#170): 챌린지 추가 시 챌린지 블록 생성 안되는 오류 해결 * Refactor: 역순으로 반환하도록 변경 * Refactor(#177): 개인 대시보드 삭제 시 챌린지 매핑 연관관계 제거 * Refactor(#177): 챌린지 삭제 시 챌린지 매핑 연관관계 제거 * Refactor(#177): 챌린지 삭제 시 챌린지 매핑 연관관계 제거 * Refactor(#177): 줄바꿈 수정 * Refactor(#177): 메시지 수정 * Refactor(#177): 개인 대시보드 삭제 시 챌린지 매핑 연관관계 제거 * Refactor: 알림 메시지 수정 * Refactor(#177): 역순으로 반환하도록 변경 * Refactor(#183): 챌린지에 참여하고 그 당일이 챌린지 생성되는 날이면 알림 보낸다 * Refactor(#185): 삭제된 대시보드 접근 불가 예외 처리 (#186) * Refactor: 팀 대시보드 참여 사용자 아이디 반환 * Refactor(#185): 삭제된 대시보드 접근 불가 예외 처리 * Refactor(#194): 블록 순번 수정 (#195) * Refactor: 챌린지 블록 생성 시 챌린지 참여한 멤버한테 알림가도록 수정 (#198) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * Feat(#194): redis 의존성, config 파일 추가 (#196) * Refactor(#194): 블록 순번 수정 * Feat(#194): redis 의존성, config 파일 추가 * Feat(#197): 친구 추가 요청, 수락, 예외처리 로직 (#197) * Feat(#197): 친구 entity 생성 (#197) * Feat(#197): 친구 추가 요청 로직 구현 (#197) * Feat(#197): 친구 추가 중복시 예외처리, 같은 멤버들끼리 반대로 요청시 예외처리 (#197) * Feat(#197): 친구 추가 수락 로직 (#197) * Refactor(#197): 친구 추가 신청, 수락 코드 리뷰 관련 리펙터링 (#197) * Feat(#197): 내 친구 목록 보기 기능 구현 (#197) * Feat(#197): 추천 친구 목록 보기 기능 구현 (#197) * Feat(#197): 멤버 정보로 친구 삭제 기능 구현(delete삭제) (#197) * Feat(#197): 이메일로 추천 친구 검색 (#197) * Test(#197): 컨트롤러 테스트코드를 통한 레스트독스 제공 (#197) * docs(#197): 요청 값에 헤더 추가 (#197) * Refactor: 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 (#202) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * refactor(#201): 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 * Feat: 친구 신청 시 알림 전송 기능 추가 (#204) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * refactor(#201): 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 * feat(#203): 친구 요청 알림 기능 추가 * Refactor: 친구 신청 알림 메시지 수정 (#205) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * refactor(#201): 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 * feat(#203): 친구 요청 알림 기능 추가 * refactor(#203): 친구 알림 메시지 수정 * 프론트 요청에 따라 친구 수락 알림 메시지 수정 (#206) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * refactor(#201): 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 * feat(#203): 친구 요청 알림 기능 추가 * refactor(#203): 친구 알림 메시지 수정 * refactor(#201): 프론트 요청에 따라 알림 메시지 수정 * Refactor: 프론트 요청에 따라 친구 초대 알림 메시지 변경 (#207) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * refactor(#201): 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 * feat(#203): 친구 요청 알림 기능 추가 * refactor(#203): 친구 알림 메시지 수정 * refactor(#201): 프론트 요청에 따라 알림 메시지 수정 * refactor(#202): 프론트 요청에 따라 친구 초대 알림 메시지 변경 * Refactor: 팀 대시보드 친구 초대 알림 메시지 수정 (#208) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * refactor(#201): 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 * feat(#203): 친구 요청 알림 기능 추가 * refactor(#203): 친구 알림 메시지 수정 * refactor(#201): 프론트 요청에 따라 알림 메시지 수정 * refactor(#202): 프론트 요청에 따라 친구 초대 알림 메시지 변경 * refactor: 알림 메시지 수정 * Feat(#197): 전체 친구 키워드로 조회하는 로직 추가 (#209) * Feat(#197): 친구 entity 생성 (#197) * Feat(#197): 친구 추가 요청 로직 구현 (#197) * Feat(#197): 친구 추가 중복시 예외처리, 같은 멤버들끼리 반대로 요청시 예외처리 (#197) * Feat(#197): 친구 추가 수락 로직 (#197) * Refactor(#197): 친구 추가 신청, 수락 코드 리뷰 관련 리펙터링 (#197) * Feat(#197): 내 친구 목록 보기 기능 구현 (#197) * Feat(#197): 추천 친구 목록 보기 기능 구현 (#197) * Feat(#197): 멤버 정보로 친구 삭제 기능 구현(delete삭제) (#197) * Feat(#197): 이메일로 추천 친구 검색 (#197) * Test(#197): 컨트롤러 테스트코드를 통한 레스트독스 제공 (#197) * docs(#197): 요청 값에 헤더 추가 (#197) * Feat(#197): 친구 로직 구현할 내용 리스트업  (#197) * Feat(#197): 전체 멤버 키워드로 조회 로직 추가(본인은 제회) (#197) * Test(#197): 전체 친구 조회 테스트코드 구현  (#197) * Refactor(#197): 내 친구 목록 조건 수정 (#210) * Refactor(#197): 내 친구 목록 isFollow 값 반환 , 내 친구 숫자 반환 api 생성 (#211) * Feat(#197): 친구 entity 생성 (#197) * Feat(#197): 친구 추가 요청 로직 구현 (#197) * Feat(#197): 친구 추가 중복시 예외처리, 같은 멤버들끼리 반대로 요청시 예외처리 (#197) * Feat(#197): 친구 추가 수락 로직 (#197) * Refactor(#197): 친구 추가 신청, 수락 코드 리뷰 관련 리펙터링 (#197) * Feat(#197): 내 친구 목록 보기 기능 구현 (#197) * Feat(#197): 추천 친구 목록 보기 기능 구현 (#197) * Feat(#197): 멤버 정보로 친구 삭제 기능 구현(delete삭제) (#197) * Feat(#197): 이메일로 추천 친구 검색 (#197) * Test(#197): 컨트롤러 테스트코드를 통한 레스트독스 제공 (#197) * docs(#197): 요청 값에 헤더 추가 (#197) * Feat(#197): 친구 로직 구현할 내용 리스트업  (#197) * Feat(#197): 전체 멤버 키워드로 조회 로직 추가(본인은 제회) (#197) * Test(#197): 전체 친구 조회 테스트코드 구현  (#197) * Feat(#197): 나의 친구 수 조회 api 구현  (#197) * Test(#197): 내 친구 수 조회 테스트 코드 구현  (#197) * Feat(#197): 모든 친구 정보에 isFollow 값 추가 (#197) * Refactor(#197): 개인 대시보드 상세 조회 예외 검증 수정, 블록 권한 제어, 휴지통 전체 삭제 기능 추가, 삭제된 블록 30일 이후 영구 삭제 기능 추가 (#216) * Refactor(#197): 개인 대시보드 상세 조회 예외 검증 수정, 블록 권한 제어, 휴지통 전체 삭제 기능 추가, 삭제된 블록 30일 이후 영구 삭제 기능 추가 - 개인 대시보드 상태가 private 일 때만 검증, public 이라면 친구, 모든 사람이 조회 가능하게 변경합니다. - 본인 또는 팀의 블록이 아니면 제어 불가능합니다. - 휴지통에 있는 블록은 30일이 지나면 영구삭제됩니다. - 휴지통 전체 삭제 API를 추가합니다. * Refactor: 조회 로직 트랜젝션 어노테이션 제거 * Refactor: 검증 로직 컨벤션 수정 * Refactor(#197): 친구 수락 중복시 에러처리, 친구 검색 이름으로도 가능하게, 친구 마이페이지 조회 api 구현 (#215) * Feat(#197): 이미 수락한 친구신청 오류 반환 로직 추가 (#197) * Feat(#197): 키워드로 조회할 때 이메일,이름으로 가능하도록 수정 (#197) * Feat: 친구 조회 로직 추가 (팀대시보드, 챌린지 정보는 아직 보류) * Test: 친구 조회 로직 추가 (팀대시보드, 챌린지 정보는 아직 보류) Test * Refactor: 개행 삭제 * Feat: 친구 마이페이지 public 개인 대시보드, 챌린지 목록 조회 추가 * Test: 친구 public 개인 대시보드와 챌린지 정보 조회 test 코드 작성 * Refactor: 파라미터로 넘어가는 memberId -> friendId로 변수명 변경 * Feat(#197): isFollow true로 뜨는 오류 수정, 이미 친구이면 에러 처리 되도록 수정 (#218) * Feat(#197): 이미 친구이면 에러 처리 되도록 수정 * Feat(#197): 전체 사람들 조회할 때 친구 신청 보낸 사람이 isFollow true로 뜨는 오류 수정 * Feat(#197): validateFollowStatusIsAccept 메서드 분리 * Refactor: 친구 수락 알림 메시지 형식 수정 (#222) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * refactor(#201): 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 * feat(#203): 친구 요청 알림 기능 추가 * refactor(#203): 친구 알림 메시지 수정 * refactor(#201): 프론트 요청에 따라 알림 메시지 수정 * refactor(#202): 프론트 요청에 따라 친구 초대 알림 메시지 변경 * refactor: 알림 메시지 수정 * refactor: 알림 요청 메시지 수정 * Feature: 친구 수락 알림 메시지 수정 (#223) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * refactor(#201): 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 * feat(#203): 친구 요청 알림 기능 추가 * refactor(#203): 친구 알림 메시지 수정 * refactor(#201): 프론트 요청에 따라 알림 메시지 수정 * refactor(#202): 프론트 요청에 따라 친구 초대 알림 메시지 변경 * refactor: 알림 메시지 수정 * refactor: 알림 요청 메시지 수정 * refactor: 알림 요청 메시지 수정 * Test: 친구 로직 수정에 따른 테스트 코드 수정 (#224) * Feat(#74): 알림 엔티티 구현 * Feat(#74): 알림 레포지토리 구현 * Feat(#74): NotificationInfoResDto 구현 * Feat(#74): NotificationListResDto 구현 * Feat(#74): NotificationNotFoundException 구현 * Feat(#74): service 로직 구현 * Feat(#74): controller 로직 구현 * Feat(#74): spring-boot-starter-web-services 의존성 추가 * Feat(#74): 알림-멤버 매핑 * Feat(#74): 챌린지 참여 할 때 알림가도록 추가 * Feat(#74): 챌린지 생성될때마다 알림가도록 변경 * Style(#74): RequiredArgsConstructor 어노테이션 사용하도록 변경 * Feat(#74):notificationService 추가 * Style(#74):notification 객체 생성 빌더 패턴 방식으로 변경 * Refactor(#74): emitter를 SseEmitterManager 에서 관리하도록 변경 * Style(#74): 불필요한 공백 라인 제거 * Style(#74): 줄바꿈 추가 * Style(#74): 마지막 공백 라인 추가 * Style(#74): SseEmitterManager 추가 * Fix(#74): 챌린지를_개인_대시보드에_추가할_수_있다 테스트 안되는 오류 해결 * Test(#74): NotificationServiceTest 구현 * Feat(#74): 파라미터 name 설정 * Feat(#74): JsonIgnore 어노테이션 삽입 * Feat(#74): isRead 필드 업데이트 메서드 로직 수정 * Test(#74): NotificationController 추가 * Feat(#74): JsonIgnore 어노테이션 삭제 * Fix(#74): Member 필드 삭제 * Test(#74): NotificationController 테스트 구현 * Test(#74): 문서 생성 경로 변경 * Test(#74): 알림 조회 문서 헤더 필드 생성 * Docs(#74): 알림 문서화 * Refactor(#74): 어노테이션 변경 * Refactor(#74): 팀 대시보드 초대 시 알림 메시지 전송 구현 * Refactor(#74): 매직 넘버 상수화 * Test(#74): notificationService 필드 추가 * Feat(#74): 팀원 초대 api 추가 * Refactor(#74): 쿼리스트링으로 입력받도록 변경 및 예외처리 추가 * Test(#74): 팀원 초대 테스트 * Refactor(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Test(#74): 팀 대시보드 생성 시 초대 알림 가도록 변경 * Fix(#74): 충돌 수정 * Refactor(#74): 메서드 분리 * Feat(): 매직 넘버 상수화 * Refactor(#127): 팀원이 팀 초대 수락하면 팀장한테 알람가도록 구현 및 팀 초대 api 로직 수정 * Refacor: 알림 연결 성공시 더미데이터 반환 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor: 알림 이름 안보내도록 수정 * Refacor(#131): 알림 전체 조회 시 읽은 여부 true로 변경 * Test(#131): 로직 변경에 따른 테스트 코드 수정 * Refactor(#131): 코드 리펙토링 * Refactor(#144): 알림 전체조회 페이지네이션 삭제 * Feat(#146): 모든 알림 읽음으로 표시하는 api 추가 * Refactor(#150): 팀 초대 메시지에 대시보드 아이디 추가 * refactor: 챌린지 참여 시 참여한 멤버한테 알림가도록 수정 * refactor(#201): 블록 마감기함 하루 남았을 때 알림 보내는 기능 추가 * feat(#203): 친구 요청 알림 기능 추가 * refactor(#203): 친구 알림 메시지 수정 * refactor(#201): 프론트 요청에 따라 알림 메시지 수정 * refactor(#202): 프론트 요청에 따라 친구 초대 알림 메시지 변경 * refactor: 알림 메시지 수정 * refactor: 알림 요청 메시지 수정 * refactor: 알림 요청 메시지 수정 * test: 친구 로직 수정에 따른 테스트 코드 수정 * Feature: 챌린지 블록이 시작전에 5개 이상 쌓이면 탈퇴하도록 변경 (#220) * Refactor: 리펙토링 * refactor(#217): 챌린지 블록이 시작전에 5개 이상 쌓이면 탈퇴하도록 변경 * Feat(#197): 내 정보 조회할 때 memeberId도 나오도록 수정 (#225) * Refactor: 챌린지 반환 타입에 챌린지 작성자 추가 (#227) * Refactor: 리펙토링 * refactor(#217): 챌린지 블록이 시작전에 5개 이상 쌓이면 탈퇴하도록 변경 * refactor: 챌린지 반환 타입에 챌린지 작성자 추가 * Feat(#197): 추천친구 이미 친구일 때 안 나오도록 수정 (#226) * Feat(#229): 마이페이지에서 팀 대시보드 내가 참여한 것도 보이도록 수정 (#230) * Feat(#229): 마이페이지에서 팀 대시보드 내가 참여한 것도 보이도록 수정 (#231) * Feat(#229): 마이페이지에서 팀 대시보드 내가 참여한 것도 보이도록 수정 * Feat(#229): 마이페이지에서 팀 대시보드 내가 참여한 것도 보이도록 수정 * Refactor(#233): 팀 대시보드 초대 조건 수정 (#234) 기존에는 email만 가능했다면, 닉네임 + 고유번호 조합도 가능하게 합니다. * Refactor(#235): 상태별 블록 조회 수정 (#236) * Refactor(#197): 개인 대시보드 상세 조회 예외 검증 수정, 블록 권한 제어, 휴지통 전체 삭제 기능 추가, 삭제된 블록 30일 이후 영구 삭제 기능 추가 - 개인 대시보드 상태가 private 일 때만 검증, public 이라면 친구, 모든 사람이 조회 가능하게 변경합니다. - 본인 또는 팀의 블록이 아니면 제어 불가능합니다. - 휴지통에 있는 블록은 30일이 지나면 영구삭제됩니다. - 휴지통 전체 삭제 API를 추가합니다. * Refactor: 조회 로직 트랜젝션 어노테이션 제거 * Refactor: 검증 로직 컨벤션 수정 * Refactor: 블록 상태별 조회 쿼리 수정 성능 최적화를 위한 쿼리를 수정합니다. * Refactor(#235): 상태별 블록 조회 수정 쿼리 로직을 수정하여 성능을 최적화합니다. D-Day 계산을 util로 분리합니다. * Refactor: 내 프로필 정보 반환 값 수정 (#237) * Refactor: 내 프로필 정보 반환 값 수정 (#238) * Refactor: 내 프로필 정보 반환 값 수정 * Test: 내 프로필 정보 반환 값 수정에 따른 테스트 코드 수정 * fix: 챌린지 주기 수정 안되는 오류 해결 (#240) * Refactor: 리펙토링 * fix(#239): 챌린지 주기 수정 안되는 오류 해결 * fix(#239): 챌린지 주기 수정 안되는 오류 해결 (#241) * Refactor: 리펙토링 * refactor(#217): 챌린지 블록이 시작전에 5개 이상 쌓이면 탈퇴하도록 변경 * refactor: 챌린지 반환 타입에 챌린지 작성자 추가 * fix: 챌린지 주기 수정 안되는 오류 해결 (#242) * Refactor: 리펙토링 * fix(#239): 챌린지 주기 수정 안되는 오류 해결 * fix(#239): 챌린지 주기 수정 안되는 오류 해결 * fix(#239): 챌린지 주기 수정 안되는 오류 해결 * Refactor: 블록 상태 변경 로직 수정 (#244) 상태 변경시에 순서도 함께 변경합니다. * Chore: .gitignore 수정 --------- Co-authored-by: inhooo00 Co-authored-by: choi inho <129029251+inhooo00@users.noreply.github.com> Co-authored-by: dongkyunKim Co-authored-by: DongkyunKim <134477764+dongkyun0713@users.noreply.github.com> --- .gitignore | 2 +- .../block/api/BlockController.java | 7 ++- .../block/application/BlockService.java | 11 +++- .../auth/api/AuthControllerTest.java | 33 +++++++----- .../block/api/BlockControllerTest.java | 22 ++++++-- .../block/application/BlockServiceTest.java | 17 +++--- .../team/api/TeamDashboardControllerTest.java | 4 +- .../application/TeamDashboardServiceTest.java | 2 +- src/test/resources/application.yml | 52 +------------------ 9 files changed, 66 insertions(+), 84 deletions(-) diff --git a/.gitignore b/.gitignore index b48c65e5..80969aba 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ out/ !**/src/test/**/out/ src/**/application-prod.yml -src/docs/* +src/docs ### NetBeans ### /nbproject/private/ diff --git a/src/main/java/shop/kkeujeok/kkeujeokbackend/block/api/BlockController.java b/src/main/java/shop/kkeujeok/kkeujeokbackend/block/api/BlockController.java index b7db87bd..55a0488c 100644 --- a/src/main/java/shop/kkeujeok/kkeujeokbackend/block/api/BlockController.java +++ b/src/main/java/shop/kkeujeok/kkeujeokbackend/block/api/BlockController.java @@ -44,8 +44,11 @@ public RspTemplate update(@CurrentUserEmail String email, @PatchMapping("/{blockId}/progress") public RspTemplate progressUpdate(@CurrentUserEmail String email, @PathVariable(name = "blockId") Long blockId, - @RequestParam(name = "progress") String progress) { - return new RspTemplate<>(HttpStatus.OK, "블록 상태 수정", blockService.progressUpdate(email, blockId, progress)); + @RequestParam(name = "progress") String progress, + @RequestBody BlockSequenceUpdateReqDto blockSequenceUpdateReqDto) { + return new RspTemplate<>(HttpStatus.OK, + "블록 상태 수정", + blockService.progressUpdate(email, blockId, progress, blockSequenceUpdateReqDto)); } @GetMapping("") diff --git a/src/main/java/shop/kkeujeok/kkeujeokbackend/block/application/BlockService.java b/src/main/java/shop/kkeujeok/kkeujeokbackend/block/application/BlockService.java index c1f79a91..937289d5 100644 --- a/src/main/java/shop/kkeujeok/kkeujeokbackend/block/application/BlockService.java +++ b/src/main/java/shop/kkeujeok/kkeujeokbackend/block/application/BlockService.java @@ -102,13 +102,14 @@ public BlockInfoResDto update(String email, Long blockId, BlockUpdateReqDto bloc // 블록 상태 업데이트 (Progress) @Transactional - public BlockInfoResDto progressUpdate(String email, Long blockId, String progressString) { + public BlockInfoResDto progressUpdate(String email, Long blockId, String progressString, + BlockSequenceUpdateReqDto blockSequenceUpdateReqDto) { Member member = memberRepository.findByEmail(email).orElseThrow(MemberNotFoundException::new); Block block = blockRepository.findById(blockId).orElseThrow(BlockNotFoundException::new); Progress progress = parseProgress(progressString); - Dashboard dashboard = dashboardRepository.findById(block.getDashboard().getId()) + Dashboard dashboard = dashboardRepository.findById(blockSequenceUpdateReqDto.dashboardId()) .orElseThrow(DashboardNotFoundException::new); validateDashboardAccess(dashboard, member); @@ -117,6 +118,12 @@ public BlockInfoResDto progressUpdate(String email, Long blockId, String progres updateChallengeCompletedMemberByProgress(block, member, progress); + updateBlockSequence(member, blockSequenceUpdateReqDto.notStartedList(), dashboard.getId(), + Progress.NOT_STARTED); + updateBlockSequence(member, blockSequenceUpdateReqDto.inProgressList(), dashboard.getId(), + Progress.IN_PROGRESS); + updateBlockSequence(member, blockSequenceUpdateReqDto.completedList(), dashboard.getId(), Progress.COMPLETED); + return BlockInfoResDto.from(block, DDayCalculator.calculate(block.getDeadLine())); } diff --git a/src/test/java/shop/kkeujeok/kkeujeokbackend/auth/api/AuthControllerTest.java b/src/test/java/shop/kkeujeok/kkeujeokbackend/auth/api/AuthControllerTest.java index cacafa18..fd6551ab 100644 --- a/src/test/java/shop/kkeujeok/kkeujeokbackend/auth/api/AuthControllerTest.java +++ b/src/test/java/shop/kkeujeok/kkeujeokbackend/auth/api/AuthControllerTest.java @@ -1,25 +1,14 @@ package shop.kkeujeok.kkeujeokbackend.auth.api; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.BDDMockito.given; -import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessRequest; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse; -import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; -import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import static shop.kkeujeok.kkeujeokbackend.global.restdocs.RestDocsHandler.requestFields; -import static shop.kkeujeok.kkeujeokbackend.global.restdocs.RestDocsHandler.responseFields; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; import org.mockito.MockitoAnnotations; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; +import org.springframework.restdocs.RestDocumentationContextProvider; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; import shop.kkeujeok.kkeujeokbackend.auth.api.dto.request.RefreshTokenReqDto; import shop.kkeujeok.kkeujeokbackend.auth.api.dto.request.TokenReqDto; import shop.kkeujeok.kkeujeokbackend.auth.api.dto.response.MemberLoginResDto; @@ -29,6 +18,22 @@ import shop.kkeujeok.kkeujeokbackend.member.domain.Member; import shop.kkeujeok.kkeujeokbackend.member.domain.SocialType; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.BDDMockito.given; +import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; +import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders; +import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; +import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.*; +import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static shop.kkeujeok.kkeujeokbackend.global.restdocs.RestDocsHandler.requestFields; +import static shop.kkeujeok.kkeujeokbackend.global.restdocs.RestDocsHandler.responseFields; + public class AuthControllerTest extends ControllerTest { private Member member; diff --git a/src/test/java/shop/kkeujeok/kkeujeokbackend/block/api/BlockControllerTest.java b/src/test/java/shop/kkeujeok/kkeujeokbackend/block/api/BlockControllerTest.java index d6fa0da1..1a97c2e9 100644 --- a/src/test/java/shop/kkeujeok/kkeujeokbackend/block/api/BlockControllerTest.java +++ b/src/test/java/shop/kkeujeok/kkeujeokbackend/block/api/BlockControllerTest.java @@ -219,12 +219,13 @@ void setUp(RestDocumentationContextProvider restDocumentation) { String progressString = "IN_PROGRESS"; BlockInfoResDto response = BlockInfoResDto.from(block, DDayCalculator.calculate(block.getDeadLine())); - given(blockService.progressUpdate(anyString(), anyLong(), anyString())).willReturn(response); + given(blockService.progressUpdate(anyString(), anyLong(), anyString(), any())).willReturn(response); // when & then mockMvc.perform(patch(String.format("/api/blocks/{blockId}/progress?progress=%s", progressString), blockId) .header("Authorization", "Bearer valid-token") - .accept(MediaType.APPLICATION_JSON)) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(blockSequenceUpdateReqDto))) .andDo(print()) .andDo(document("block/progress/update", preprocessRequest(prettyPrint()), @@ -236,6 +237,12 @@ void setUp(RestDocumentationContextProvider restDocumentation) { parameterWithName("progress") .description("블록 상태 문자열(NOT_STARTED, IN_PROGRESS, COMPLETED)") ), + requestFields( + fieldWithPath("dashboardId").description("대시보드 ID"), + fieldWithPath("notStartedList").description("시작 전 블록 아이디 리스트"), + fieldWithPath("inProgressList").description("진행 중 블록 아이디 리스트"), + fieldWithPath("completedList").description("완료 블록 아이디 리스트") + ), responseFields( fieldWithPath("statusCode").description("상태 코드"), fieldWithPath("message").description("응답 메시지"), @@ -263,13 +270,14 @@ void setUp(RestDocumentationContextProvider restDocumentation) { Long blockId = 1L; String progressString = "STATUS_PROGRESS"; - given(blockService.progressUpdate(anyString(), anyLong(), anyString())).willThrow( + given(blockService.progressUpdate(anyString(), anyLong(), anyString(), any())).willThrow( new InvalidProgressException()); // when & then mockMvc.perform(patch(String.format("/api/blocks/{blockId}/progress?progress=%s", progressString), blockId) .header("Authorization", "Bearer valid-token") - .accept(MediaType.APPLICATION_JSON)) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(blockSequenceUpdateReqDto))) .andDo(print()) .andDo(document("block/progress/update/failure", preprocessRequest(prettyPrint()), @@ -280,6 +288,12 @@ void setUp(RestDocumentationContextProvider restDocumentation) { queryParameters( parameterWithName("progress") .description("블록 상태 문자열(NOT_STARTED, IN_PROGRESS, COMPLETED)") + ), + requestFields( + fieldWithPath("dashboardId").description("대시보드 ID"), + fieldWithPath("notStartedList").description("시작 전 블록 아이디 리스트"), + fieldWithPath("inProgressList").description("진행 중 블록 아이디 리스트"), + fieldWithPath("completedList").description("완료 블록 아이디 리스트") ) )) .andExpect(status().isBadRequest()); diff --git a/src/test/java/shop/kkeujeok/kkeujeokbackend/block/application/BlockServiceTest.java b/src/test/java/shop/kkeujeok/kkeujeokbackend/block/application/BlockServiceTest.java index 31c60bdd..a4503fe4 100644 --- a/src/test/java/shop/kkeujeok/kkeujeokbackend/block/application/BlockServiceTest.java +++ b/src/test/java/shop/kkeujeok/kkeujeokbackend/block/application/BlockServiceTest.java @@ -93,9 +93,9 @@ void setUp() { blockSequenceUpdateReqDto = new BlockSequenceUpdateReqDto( dashboard.getId(), - List.of(1L, 2L), - List.of(3L, 4L), - List.of(5L, 6L) + List.of(1L), + List.of(), + List.of() ); block = Block.builder() @@ -190,7 +190,10 @@ void setUp() { when(dashboardRepository.findById(block.getDashboard().getId())).thenReturn(Optional.of(dashboard)); // when - BlockInfoResDto result = blockService.progressUpdate("email", blockId, "IN_PROGRESS"); + BlockInfoResDto result = blockService.progressUpdate("email", + blockId, + "IN_PROGRESS", + blockSequenceUpdateReqDto); // then assertAll(() -> { @@ -208,7 +211,7 @@ void setUp() { when(blockRepository.findById(blockId)).thenReturn(Optional.of(block)); // when & then - assertThatThrownBy(() -> blockService.progressUpdate("email", blockId, "String")) + assertThatThrownBy(() -> blockService.progressUpdate("email", blockId, "String", blockSequenceUpdateReqDto)) .isInstanceOf(InvalidProgressException.class); } @@ -277,7 +280,7 @@ void setUp() { blockService.changeBlocksSequence("email", blockSequenceUpdateReqDto); // then - verify(blockRepository, times(6)).findById(anyLong()); // 6번 블록 조회가 이루어졌는지 검증 + verify(blockRepository, times(1)).findById(anyLong()); // 6번 블록 조회가 이루어졌는지 검증 } @DisplayName("블록을 영구 삭제 합니다.") @@ -311,4 +314,4 @@ void setUp() { verify(blockRepository).deleteAll(deletedBlocks); } -} +} \ No newline at end of file diff --git a/src/test/java/shop/kkeujeok/kkeujeokbackend/dashboard/team/api/TeamDashboardControllerTest.java b/src/test/java/shop/kkeujeok/kkeujeokbackend/dashboard/team/api/TeamDashboardControllerTest.java index 395db7ec..5e4f6b7d 100644 --- a/src/test/java/shop/kkeujeok/kkeujeokbackend/dashboard/team/api/TeamDashboardControllerTest.java +++ b/src/test/java/shop/kkeujeok/kkeujeokbackend/dashboard/team/api/TeamDashboardControllerTest.java @@ -18,13 +18,13 @@ import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse; import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint; import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; -import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; -import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; import static org.springframework.restdocs.request.RequestDocumentation.queryParameters; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static shop.kkeujeok.kkeujeokbackend.global.restdocs.RestDocsHandler.requestFields; +import static shop.kkeujeok.kkeujeokbackend.global.restdocs.RestDocsHandler.responseFields; import java.util.Collections; import java.util.List; diff --git a/src/test/java/shop/kkeujeok/kkeujeokbackend/dashboard/team/application/TeamDashboardServiceTest.java b/src/test/java/shop/kkeujeok/kkeujeokbackend/dashboard/team/application/TeamDashboardServiceTest.java index 38473145..17364243 100644 --- a/src/test/java/shop/kkeujeok/kkeujeokbackend/dashboard/team/application/TeamDashboardServiceTest.java +++ b/src/test/java/shop/kkeujeok/kkeujeokbackend/dashboard/team/application/TeamDashboardServiceTest.java @@ -307,4 +307,4 @@ void setUp() { }); } -} +} \ No newline at end of file diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml index 81e27e37..03c30d37 100644 --- a/src/test/resources/application.yml +++ b/src/test/resources/application.yml @@ -1,53 +1,3 @@ spring: profiles: - active: prod - - data: - redis: - host: ${spring.data.redis.host} - port: ${spring.data.redis.port} - - datasource: - url: ${spring.datasource.url} - username: ${spring.datasource.username} - password: ${spring.datasource.password} - driver-class-name: ${spring.datasource.driver-class-name} - - jpa: - hibernate: - ddl-auto: update - properties: - hibernate: - show_sql: true - format_sql: true - open-in-view: false - -logging: - level: - org.hibernate.sql: debug - org.hibernate.type: trace - - discord: - webhook-uri: ${logging.discord.webhook-uri} - config: ${logging.config} - -jwt: - secret: ${jwt.secret} -token: - expire: - time: - access: ${token.expire.time.access} - refresh: ${token.expire.time.refresh} - -google: - client: - id: ${google.client.id} - - secret: ${google.client.secret} - redirect: - uri: ${google.redirect.uri} - -oauth: - kakao: - rest-api-key: ${oauth.kakao.rest-api-key} - redirect-url: ${oauth.kakao.redirect-url} + active: test