-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature/BE] WebClient를 HttpClient로 변경 #684
Conversation
* [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경
* feat: WebClient를 HttpClient로 교체 * feat: WebClient를 HttpClient로 변경 * chore: webflux 의존성 제거
🚧 Analysis ResultsF12-684 Bugs : 0 ✅ |
🚧 Analysis ResultsF12-684 Bugs : 0 ❌ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아주 좋은 PR이네요! 고생하셨습니다 클레이!
} | ||
} | ||
|
||
private void validateStatus(final HttpResponse<String> response) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
validateStatusSuccess()
라는 메서드 명은 어떨까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
반영하겠습니다.
🚧 Analysis ResultsF12-684 Bugs : 0 ✅ |
🚧 Analysis ResultsF12-684 Bugs : 1 ✅ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다!!
🚧 Analysis ResultsF12-684 Bugs : 0 ✅ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨습니다 끌레이 👍🏻
private HttpRequest buildAccessTokenRequest(final String requestBody) { | ||
return HttpRequest.newBuilder() | ||
.uri(toURI(accessTokenUrl)) | ||
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) | ||
.POST(HttpRequest.BodyPublishers.ofString(requestBody)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
메소드 순서 호출 순으로 정리하는게 나을 것 같다는 생각입니다 !!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
메서드 순서 호출 순서 순으로 메서드를 정의하겠습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨습니다 몇가지 생각해볼 부분 남겼으니 RC날릴게요^^
@@ -30,7 +30,6 @@ dependencies { | |||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' | |||
implementation 'org.springframework.boot:spring-boot-starter-web' | |||
implementation 'org.springframework.boot:spring-boot-starter-validation' | |||
implementation 'org.springframework.boot:spring-boot-starter-webflux' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
@@ -21,6 +32,13 @@ public class GitHubOauthClient { | |||
private final String accessTokenUrl; | |||
private final String profileUrl; | |||
|
|||
private final ObjectMapper objectMapper = new ObjectMapper(); | |||
private final HttpClient httpClient = HttpClient.newBuilder() | |||
.version(Version.HTTP_1_1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
HttpClient는 HTTP2도 지원하는 것으로 알고 있는데, HTTP2를 사용하는 것은 어떨까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
일단 HTTP 2.0으로 사용해보고 테스트 서버에서 QA 해보는게 좋을 것 같습니다.
@@ -21,6 +32,13 @@ public class GitHubOauthClient { | |||
private final String accessTokenUrl; | |||
private final String profileUrl; | |||
|
|||
private final ObjectMapper objectMapper = new ObjectMapper(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기 윗 줄 공백 불필요하지 않을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
공백 기준으로 생성자에서 주입받는 인스턴스 필드와 클래스 내부에서 인스턴스를 생성해서 초기화하는 인스턴스 필드 두가지로 나누기 위해서 공백을 두었습니다. 오찌는 어떻게 생각하나용
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그럼 그렇게 하시죠
return HttpRequest.newBuilder() | ||
.uri(toURI(accessTokenUrl)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
빌더 생성할 때 파라미터로 URI 들어갈 수 있습니다!
아래에서는 빌더에 넣었네요 👀
return HttpRequest.newBuilder() | |
.uri(toURI(accessTokenUrl)) | |
return HttpRequest.newBuilder(accessTokenUrl) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
빌더에 uri를 인자로 전달하도록 수정하겠습니다.
@@ -33,7 +33,7 @@ class AuthServiceTest { | |||
private AuthService authService; | |||
|
|||
@Mock | |||
private GitHubOauthClient gitHubOauthClient; | |||
private GitHubOauthClient oauthClient; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
굳이 변수명을 바꾼 이유가 뭐죠??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다시 돌려놓겠습니다.
🚧 Analysis ResultsF12-684 Bugs : 0 ✅ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
좋습니다
@@ -21,6 +32,13 @@ public class GitHubOauthClient { | |||
private final String accessTokenUrl; | |||
private final String profileUrl; | |||
|
|||
private final ObjectMapper objectMapper = new ObjectMapper(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그럼 그렇게 하시죠
🚧 Analysis ResultsF12-684 Bugs : 0 ✅ |
* [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * [Bugfix/BE] DatabaseCleanup SQL 생성 방식 변경 (#687) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * [BE] DatabaseCleanup sql 생성 방식 변경 (#685) test: DatabaseCleanup sql 생성 방식 변경 * [Feature/BE] WebClient를 HttpClient로 변경 (#684) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * feat: WebClient를 HttpClient로 교체 (#683) * feat: WebClient를 HttpClient로 교체 * feat: WebClient를 HttpClient로 변경 * chore: webflux 의존성 제거 * refactor: InterruptedException 예외처리 구현 * refactor: InterruptedException 예외 처리 구현 * docs: rest docs 문서 수정 * refactor: 코드 리뷰 반영 * refactor: 디미터의 법칙 적용 Co-authored-by: tiki <[email protected]> * [BugFix/BE] Github Oauth 요청 시 Accept 헤더를 추가한다. (#703) [BE] Github Oauth 요청 시 Accept 헤더를 추가한다. (#702) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * fix: accept 헤더 추가 * refactor: 디미터의 법칙 적용 Co-authored-by: tiki <[email protected]> Co-authored-by: tiki <[email protected]> * [BugFix/BE] Github Oauth의 응답값이 DTO 필드에 존재하지 않는 경우 매핑 될 수 있도록 수정 (#705) * [BE] Github Oauth 요청 시 Accept 헤더를 추가한다. (#702) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * fix: accept 헤더 추가 * refactor: 디미터의 법칙 적용 Co-authored-by: tiki <[email protected]> * fix: JSON 데이터를 DTO로 매핑할 때DTO 필드에 포함되지 않는 값은 무시하도록 수정 * refactor: JSON 파싱 실패할 경우 예외 처리 되도록 수정 Co-authored-by: tiki <[email protected]> * [Feature/BE] 각 도메인 테이블에 unique 제약 조건을 추가한다 (#689) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * [BE] 각 도메인 테이블에 unique 제약 조건을 추가한다 (#688) * feat: Following에 제약조건 추가 * feat: Member에 제약조건 추가 * feat: Review에 제약조건 추가 * feat: InventoryProduct에 제약조건 추가 * feat: GlobalExceptionHandler에 DataIntegrityViolationException 추가 및 rest docs 수정 * refactor: printStackTrace 제거 * refactor: 제약조건 이름 추가 * refactor: 네이밍, 순서 피드백 반영 * test: 개행 추가 Co-authored-by: tiki <[email protected]> * [Feature/be] 인증 인가 수정 (#699) * [BE] JWT 생성 방식 변경 (#697) * [Hotfix/FE] 깃허브 프로필 링크 오류 수정 (#692) fix: 깃허브 프로필 링크 오류 수정 * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * fix: Jwt의 subject와 claim을 분리 * refactor: 토큰이 유효한지 반환하는 메서드 명 수정 Co-authored-by: Yo Wook Kim <[email protected]> Co-authored-by: tiki <[email protected]> * [BE] 회원에게 Role 부여 (#698) * feat: Member에 Role 필드 추가 * refactor: token 관련된 클래스들 패키지 집약 * feat: id와 Role을 합친 Payload 사용 * refactor: @VerifiedMember로 사용하는 객체를 MemberPayload로 변경 * refactor: JWT의 claim에 들어가는 id 형태를 String에서 Long으로 변경 * test: 테스트 패키지 조정 * refactor: 코드리뷰 반영 Co-authored-by: Yo Wook Kim <[email protected]> Co-authored-by: tiki <[email protected]> * [BugFix/BE] UniqueConstraint 어노테이션 import (#707) * fix: UniqueConstraint 어노테이션 import * fix: 테스트 깨지는 오류 수정 * [Bugfix/BE] local 환경에서 Repository 테스트시 쿼리 로그가 2번 남는 현상 해결 (#696) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * [BE] local 환경에서 repository test 시 쿼리 로그가 2번 남는 현상 수정 (#695) * fix: local 상황에서 DB query에 대한 로그 레벨 변경 * test: DataJpaTest를 활용한 테스트에서 SQL 쿼리가 2번 남는 현상 수정 * test: RepositoryTest 어노테이션 생성 * [Feature/BE] 어드민 API 구현 (#710) * [BE] 어드민 API 구현 (#709) * feat: 제품 추가 서비스 구현 * feat: 제품 수정 서비스 구현 * feat: 제품 삭제 서비스 구현 * feat: 제품 추가 기능 구현 * feat: 제품 수정 기능 구현 * feat: 제품 삭제 기능 구현 Co-authored-by: Ohzzi <[email protected]> * refactor: 오타 및 final 키워드 적용 * refactor: Product update 로직 null 체크 및 메서드 순서 정리 * refactor: 에러 코드 및 예외 변경 * test: 관리자 접근 권한 체크하는 테스트 수정 * refactor: deleteByProduct 쿼리문 변경 및 테스트 추가 * test: final 키워드 제거 Co-authored-by: Ohzzi <[email protected]> Co-authored-by: corinne <[email protected]> * [BugFix/BE] 제품 수정, 삭제 API DTO 카테고리 enum을 DTO용 Constant로 수정 (#713) [BugFix/BE] 제품 수정, 삭제 API DTO 카테고리 enum을 DTO용 Constant로 수정 (#712) * feat: 제품 수정, 삭제 API DTO 카테고리 enum을 DTO용 Constant로 수정 * refactor: static import 추가 * [Feature/BE] 어드민 로그인 api 구현 (#717) [BE] 어드민 로그인 api 구현 (#716) feat: 어드민 로그인 api 구현 * [Feature/BE] 프로덕션 인증 기능과 어드민 인증 기능 분리 (#719) feat: 프로덕션 인증 기능과 어드민 인증 기능 분리 Co-authored-by: yh20studio <[email protected]> Co-authored-by: yangdongjue5510 <[email protected]> Co-authored-by: hamcheeseburger <[email protected]> Co-authored-by: Youngyoon-1 <[email protected]> * [Bug-fix/FE] dev 환경 github client id 변경 (#723) [Bug-fix/FE] dev 환경 github client id 변경 (#722) fix: dev 환경 github client id 변경 * [Bug-fix/FE] dev 환경 github client id 변경 (#726) [Bug-fix/FE] dev 환경 github client id 변경 (#725) fix: dev 환경 github client id 변경 * [FE] 반응형 디자인을 구현한다. (#740) * style: breakpoint 설정 추가 * style: 홈 페이지에서 제품 목록과 리뷰 목록 반응형 적용 * style: 헤더 구성과 로고 스타일 반응형 적용 * style: 섹션 헤더 글자 크기 반응형 적용 * feat: 하단 메뉴바 형식 구현 * style: 리뷰 카드 반응형 적용 * style: 상단 로고가 sticky 하지 않도록 스타일 수정 * fix: breakpoint 수정으로 인한 고장 수정 * refactor: useDevice 훅으로 device 정보 전역에서 관리 * [FE] 프로필 페이지, 팔로잉, 프로필 검색 반응형 디자인을 적용 (#729) * feat: 팔로잉, 프로필 검색 페이지 반응형 적용 * refactor: console.log 제거 * feat: 프로필 페이지 반응형 적용 * style: inventory 상품 카드 grid gap 수정 * feat: 기기에 따라 프로필 페이지의 버튼 텍스트 크기 조정 * feat: 모바일에서 데스크 셋업 영역 크기 조정 * feat: 프로필 페이지 요소 간격 직접 지정 * refactor: main layout top margin 조정 * refactor: 불필요한 코드 삭제 * [FE] 제품 목록 및 제품 상세 페이지에 대한 반응형 디자인 (#735) * style: 제품 검색 페이지에 대한 반응형 디자인 적용 * style: 제품 상세 페이지에 대한 반응형 디자인 적용 * style: 홈 페이지용 제품 리스트 컨테이너 스타일드 컴포넌트 구현 * style: 홈 페이지에 섹션 구분용 컨테이너 추가 Co-authored-by: Youngmin Hong <[email protected]> * [Bugfix/FE] 누락된 오류 코드와 메시지 추가 (#742) fix: 누락된 오류 코드와 메시지 추가 * [Feature/BE] Objects 의 null 체크 메서드를 제거 (#733) * feat: Objects.isNull() 제거 * feat: Objects.nonNull() 제거 * [Feature/BE] Objects 의 null 체크 메서드를 제거 (#732) * feat: Objects.isNull() 제거 * feat: Objects.nonNull() 제거 * feat: null, blank 체크 시 StringUtils.hasText() 사용 * fix: StringUtils.hasText() 부정 연산자 추가 * [BugFix/BE] 액세스 토큰 요청 시 에러코드를 수정하고 에러코드 방식을 수정한다. (#750) * [BE] 액세스 토큰 요청 시 에러코드를 수정하고 에러코드 방식을 수정한다. (#749) * test: ErrorCode를 문서화를 도와주는 Support 클래스 구현 * test: AuthControllerTest 에러코드 수정 * docs: auth 문서 수정 * docs: 커스텀 스니펫 적용 * docs: InventoryProduct API 예외코드 문서화 방식 수정 * docs: Member API 예외코드 문서화 방식 수정 * docs: Product API 예외코드 문서화 방식 수정 * docs: Review API 예외코드 문서화 방식 수정 * docs: Auth API 예외코드 수정 * refactor: 사용하지 않는 클래스와 메서드 제거 * chore: ds_store 제거 * chore: 모든 디렉토리의 ds_store 제거 * [Feature/BE] 인메모리 저장소 대신 DB에 저장하도록 변경 (#747) * [BE] 인메모리 저장소 대신 DB에 저장하도록 변경 (#746) feat: 인메모리 저장소 대신 DB에 저장하도록 변경 * [BE] 리프레시 토큰 DB 저장 PR의 리뷰를 반영한다 (#754) * fix: refreshTokenDDL.sql datetime을 timestamp로 수정 * feat: refreshTokenRepository findToken 인터페이스 구현 및 예외 처리 * test: 리프레시 토큰 중복되서 저장된 경우 예외 처리 컨트롤러 테스트 추가 * docs: 리프레시 토큰 예외코드 문서 추가 * [BugFix/BE] 액세스 토큰 요청 시 에러코드를 수정하고 에러코드 방식을 수정한다. (#750) * [BE] 액세스 토큰 요청 시 에러코드를 수정하고 에러코드 방식을 수정한다. (#749) * test: ErrorCode를 문서화를 도와주는 Support 클래스 구현 * test: AuthControllerTest 에러코드 수정 * docs: auth 문서 수정 * docs: 커스텀 스니펫 적용 * docs: InventoryProduct API 예외코드 문서화 방식 수정 * docs: Member API 예외코드 문서화 방식 수정 * docs: Product API 예외코드 문서화 방식 수정 * docs: Review API 예외코드 문서화 방식 수정 * docs: Auth API 예외코드 수정 * refactor: 사용하지 않는 클래스와 메서드 제거 * chore: ds_store 제거 * chore: 모든 디렉토리의 ds_store 제거 * [BE] 인메모리 저장소 대신 DB에 저장하도록 변경 (#746) feat: 인메모리 저장소 대신 DB에 저장하도록 변경 * feat: conflict 해결 * fix: IllegalArgumentException을 커스텀 예외로 바꿔서 처리 * docs: 지나치게 영향 받은 리프레시 토큰 예외 문서화 * refactor: 코드 리뷰 반영 * refactor: 코드 리뷰 반영 * [Feature/FE] 모바일 환경의 반응형 디자인 개선 (#753) * [FE] 모바일 환경의 반응형 디자인을 개선 (#752) * refactor: 프로필 카드의 왼쪽 화살표 기호를 교체한다. * feat: 모바일 navbar 하단 간격 추가 * style: layout margin 조정 * style: search filter 폰트 사이즈를 조정한다. * fix: 로그인 모킹 오류 수정 * feat: BototmNavigation 로그아웃 버튼 추가 * style: 모바일 환경에서 프로필 카드 요소의 비율을 조정한다. * fix: 누락된 relative position 추가 * fix: 로그인 모킹 오류 수정 * style: 데스크 셋업이 없는 경우 출력되는 문구가 왼쪽으로 쏠려 나오는 것을 수정 * refactor: 리뷰를 작성한 제품이 없다는 문구 형식 수정 * style: productTitle 폰트 사이즈 조정 * refactor: 피드백 반영 * refactor: 빈 장비 문구 수정 * style: 이미지 aspect ratio 적용 * [Feature/FE] 모바일 하단바 디자인 및 구성 변경 (#760) * feat: 하단바 구성과 디자인 변경 * feat: 상단바에 로그인 버튼과 프로필 페이지 링크 추가 * feat: 프로필 페이지에 팔로워 페이지 링크 및 로그아웃 버튼 추가 * feat: 팔로잉 페이지 링크 이름 수정 * [BugFix/BE] 액세스 토큰 발급 시 read only 커넥션 500 에러 수정 (#761) fix: 트랜잭션 read only 적용되던 메서드 read only 제거 * [Feature/BE] 인기 제품 조회 API 구현 (#738) * [BE] 인기 제품 조회 API 구현 (#737) * feat: 카테고리, 리뷰 개수, 평점, 튜플 개수로 랜덤하게 제품을 조회한다. * refactor: 서브쿼리 적용 * refactor: 인기 제품 조회에 사용되는 메서드 수정 * feat: ProductService 인기 제품 조회 기능 구현 * feat: ProductController 인기 제품 조회 기능 구현 * [FE] 반응형 디자인을 구현한다. (#740) * style: breakpoint 설정 추가 * style: 홈 페이지에서 제품 목록과 리뷰 목록 반응형 적용 * style: 헤더 구성과 로고 스타일 반응형 적용 * style: 섹션 헤더 글자 크기 반응형 적용 * feat: 하단 메뉴바 형식 구현 * style: 리뷰 카드 반응형 적용 * style: 상단 로고가 sticky 하지 않도록 스타일 수정 * fix: breakpoint 수정으로 인한 고장 수정 * refactor: useDevice 훅으로 device 정보 전역에서 관리 * [FE] 프로필 페이지, 팔로잉, 프로필 검색 반응형 디자인을 적용 (#729) * feat: 팔로잉, 프로필 검색 페이지 반응형 적용 * refactor: console.log 제거 * feat: 프로필 페이지 반응형 적용 * style: inventory 상품 카드 grid gap 수정 * feat: 기기에 따라 프로필 페이지의 버튼 텍스트 크기 조정 * feat: 모바일에서 데스크 셋업 영역 크기 조정 * feat: 프로필 페이지 요소 간격 직접 지정 * refactor: main layout top margin 조정 * refactor: 불필요한 코드 삭제 * [FE] 제품 목록 및 제품 상세 페이지에 대한 반응형 디자인 (#735) * style: 제품 검색 페이지에 대한 반응형 디자인 적용 * style: 제품 상세 페이지에 대한 반응형 디자인 적용 * style: 홈 페이지용 제품 리스트 컨테이너 스타일드 컴포넌트 구현 * style: 홈 페이지에 섹션 구분용 컨테이너 추가 Co-authored-by: Youngmin Hong <[email protected]> * [Bugfix/FE] 누락된 오류 코드와 메시지 추가 (#742) fix: 누락된 오류 코드와 메시지 추가 * [Feature/BE] Objects 의 null 체크 메서드를 제거 (#733) * feat: Objects.isNull() 제거 * feat: Objects.nonNull() 제거 * [Feature/BE] Objects 의 null 체크 메서드를 제거 (#732) * feat: Objects.isNull() 제거 * feat: Objects.nonNull() 제거 * feat: null, blank 체크 시 StringUtils.hasText() 사용 * fix: StringUtils.hasText() 부정 연산자 추가 * refactor: QueryDSL 대신 쿼리 메소드 기능 사용 * refactor: 리뷰 개수, 별점을 yml 파일에서 설정하도록 변경 * refactor: FindPopularProductCallback 대신 BiFunction 적용 * refactor: 인기 제품 개수를 외부에서 받을 수 있도록 변경 * refactor: 전략 패턴 제거 * [BugFix/BE] 액세스 토큰 요청 시 에러코드를 수정하고 에러코드 방식을 수정한다. (#750) * [BE] 액세스 토큰 요청 시 에러코드를 수정하고 에러코드 방식을 수정한다. (#749) * test: ErrorCode를 문서화를 도와주는 Support 클래스 구현 * test: AuthControllerTest 에러코드 수정 * docs: auth 문서 수정 * docs: 커스텀 스니펫 적용 * docs: InventoryProduct API 예외코드 문서화 방식 수정 * docs: Member API 예외코드 문서화 방식 수정 * docs: Product API 예외코드 문서화 방식 수정 * docs: Review API 예외코드 문서화 방식 수정 * docs: Auth API 예외코드 수정 * refactor: 사용하지 않는 클래스와 메서드 제거 * chore: ds_store 제거 * chore: 모든 디렉토리의 ds_store 제거 * [Feature/BE] 인메모리 저장소 대신 DB에 저장하도록 변경 (#747) * [BE] 인메모리 저장소 대신 DB에 저장하도록 변경 (#746) feat: 인메모리 저장소 대신 DB에 저장하도록 변경 * [BE] 리프레시 토큰 DB 저장 PR의 리뷰를 반영한다 (#754) * fix: refreshTokenDDL.sql datetime을 timestamp로 수정 * feat: refreshTokenRepository findToken 인터페이스 구현 및 예외 처리 * test: 리프레시 토큰 중복되서 저장된 경우 예외 처리 컨트롤러 테스트 추가 * docs: 리프레시 토큰 예외코드 문서 추가 * [BugFix/BE] 액세스 토큰 요청 시 에러코드를 수정하고 에러코드 방식을 수정한다. (#750) * [BE] 액세스 토큰 요청 시 에러코드를 수정하고 에러코드 방식을 수정한다. (#749) * test: ErrorCode를 문서화를 도와주는 Support 클래스 구현 * test: AuthControllerTest 에러코드 수정 * docs: auth 문서 수정 * docs: 커스텀 스니펫 적용 * docs: InventoryProduct API 예외코드 문서화 방식 수정 * docs: Member API 예외코드 문서화 방식 수정 * docs: Product API 예외코드 문서화 방식 수정 * docs: Review API 예외코드 문서화 방식 수정 * docs: Auth API 예외코드 수정 * refactor: 사용하지 않는 클래스와 메서드 제거 * chore: ds_store 제거 * chore: 모든 디렉토리의 ds_store 제거 * [BE] 인메모리 저장소 대신 DB에 저장하도록 변경 (#746) feat: 인메모리 저장소 대신 DB에 저장하도록 변경 * feat: conflict 해결 * fix: IllegalArgumentException을 커스텀 예외로 바꿔서 처리 * docs: 지나치게 영향 받은 리프레시 토큰 예외 문서화 * refactor: 코드 리뷰 반영 * refactor: 코드 리뷰 반영 * [Feature/FE] 모바일 환경의 반응형 디자인 개선 (#753) * [FE] 모바일 환경의 반응형 디자인을 개선 (#752) * refactor: 프로필 카드의 왼쪽 화살표 기호를 교체한다. * feat: 모바일 navbar 하단 간격 추가 * style: layout margin 조정 * style: search filter 폰트 사이즈를 조정한다. * fix: 로그인 모킹 오류 수정 * feat: BototmNavigation 로그아웃 버튼 추가 * style: 모바일 환경에서 프로필 카드 요소의 비율을 조정한다. * fix: 누락된 relative position 추가 * fix: 로그인 모킹 오류 수정 * style: 데스크 셋업이 없는 경우 출력되는 문구가 왼쪽으로 쏠려 나오는 것을 수정 * refactor: 리뷰를 작성한 제품이 없다는 문구 형식 수정 * style: productTitle 폰트 사이즈 조정 * refactor: 피드백 반영 * refactor: 빈 장비 문구 수정 * style: 이미지 aspect ratio 적용 * [BE] 인기 제품 조회 API 구현 (#737) * feat: 카테고리, 리뷰 개수, 평점, 튜플 개수로 랜덤하게 제품을 조회한다. * refactor: 서브쿼리 적용 * refactor: 인기 제품 조회에 사용되는 메서드 수정 * feat: ProductService 인기 제품 조회 기능 구현 * feat: ProductController 인기 제품 조회 기능 구현 * refactor: QueryDSL 대신 쿼리 메소드 기능 사용 * refactor: 리뷰 개수, 별점을 yml 파일에서 설정하도록 변경 * refactor: FindPopularProductCallback 대신 BiFunction 적용 * refactor: 인기 제품 개수를 외부에서 받을 수 있도록 변경 * refactor: 전략 패턴 제거 * test: fixture 정적 팩토리 메서드 생성 * feat: 인기 제품의 개수에 대한 유효성 검증 추가 * fix: 잘못 사용된 쿼리 메서드 기능 수정 * feat: REST Docs 에 인기 제품 조회 에러 코드 추가 Co-authored-by: Yo Wook Kim <[email protected]> Co-authored-by: Youngmin Hong <[email protected]> Co-authored-by: Dongjue Yang <[email protected]> * [BugFix/FE] 사파리 브라우저에서 좌우측 프로필 카드 버튼이 동일하게 렌더링되는 문제를 수정 (#772) fix: 화살표 이미지 교체 * [Feature/BE] DB 형상관리 툴 Flyway를 도입 (#779) * [BE] DB 형상관리 툴을 적용한다 (#778) * feat: flyway 적용 * feat: submodule 최신화 * feat: submodule 오타 수정 Co-authored-by: corinne <[email protected]> * test: 필요없는 Yml 설정 제거 Co-authored-by: corinne <[email protected]> Co-authored-by: HyeonJi Yoo <[email protected]> * [Feature/FE] 웹 접근성을 개선. (#788) * [FE] 제품 탐색 및 검색 로직에 접근성 구현 (#776) * feat: 검색어 입력란 접근성 개선 * feat: 카테고리 선택 필터 접근성 개선 * feat: 아이콘을 숨길 수 있도록 빈 버튼에서 div로 변경 * fix: 제품 목록을 Masonry => Grid로 변경 접근성 개선 * feat: lazy image에 alt 속성을 추가할 수 있도록 수정 * feat: 헤더 로고 링크 레이블 추가 * style: grid 레이아웃에서 각 항목을 가운데 정렬하도록 수정 * feat: 제품 목록 로딩, 추가 로딩 시 로딩 상태에 대해서 알려주는 로직 추가 * style: 모바일 제품 목록 페이지에서 링크가 전체 너비를 차지하는 현상 수정 * feat: 포커스를 이용해서 무한 스크롤을 이용할 수 있도록 수정 * feat: 평점 및 리뷰 접근성 개선 * feat: 섹션 탐색 용이하도록 article 대신 div 사용, 제품 카드 접근성 개선 * feat: 리뷰 카드를 랜드마크 탐색에 잡히지 않도록 article에서 div로 변경 * feat: 평점 컴포넌트에 평점 레이블 추가 * test: 변경된 태그에 맞도록 테스트 수정 * fix: 스크린리더에게만 읽히는 요소에 대한 스타일 적용 변경 * feat: 제품 검색, 카테고리 적용 시 접근성 개선 * feat: 정렬 기준 select 요소 레이블 추가 * feat: 검색 시 검색 키워드가 섹션의 제목에 반영되도록 수정 * fix: navbar 배치 스타일 문제 해결 * style: 누락된 제품 목록 스타일 추가 * refactor: 이미지와 내용을 내용과 단위로 읽어주는 기능 구현 방식 통일 * fix: 키보드 상태 기본값 적용 오류 수정 * [FE] 상하단 메뉴바 접근성 개선 (#777) * feat: 하단 메뉴바에 접근성을 위해 목록 추가, 레이블 추가 * feat: 상단 메뉴바에 프로필 버튼 레이블 추가 * refactor: 모바일 상단 메뉴바 컴포넌트 위치 headerNav로 이동, 레이블 추가 * 무한 스크롤 로딩정보 관련 메시지 추가 (#781) feat: 무한 스크롤 로딩정보 관련 메시지 추가 * [FE] 제품 목록 불러오기 실패나 항목 없을 때 스크린 리더 alert 추가 (#783) feat: 제품 목록 불러오기 실패나 항목 없을 때 스크린 리더 alert 추가 * [FE] 상품 상세 조회 + 리뷰 작성 플로우의 웹 접근성을 개선 (#787) * feat: 제품 이미지 aria-label 적용 * feat: ReviewCount 접근성 적용 * feat: Rating 접근성 적용 * feat: BarGraph 접근성 적용 * feat: 리뷰 목록에서 평점 읽어주도록 접근성 개선 * feat: 바텀 시트 표시될 경우 시트 내부로 포커스 이동 * [BugFix/FE] 사파리 브라우저에서 좌우측 프로필 카드 버튼이 동일하게 렌더링되는 문제를 수정 (#772) fix: 화살표 이미지 교체 * fix: 메뉴바 사라지는 현상 수정 * feat: 모달이 띄워지는 경우 모달 내부로 포커스 이동 * feat: 리뷰 작성 시 리뷰 목록 focus * feat: 평점 입력 접근성 향상 * feat: 리뷰 1000자 입력시 스크린리더 알림 * [FE] 제품 탐색 및 검색 로직에 접근성 구현 (#776) * feat: 검색어 입력란 접근성 개선 * feat: 카테고리 선택 필터 접근성 개선 * feat: 아이콘을 숨길 수 있도록 빈 버튼에서 div로 변경 * fix: 제품 목록을 Masonry => Grid로 변경 접근성 개선 * feat: lazy image에 alt 속성을 추가할 수 있도록 수정 * feat: 헤더 로고 링크 레이블 추가 * style: grid 레이아웃에서 각 항목을 가운데 정렬하도록 수정 * feat: 제품 목록 로딩, 추가 로딩 시 로딩 상태에 대해서 알려주는 로직 추가 * style: 모바일 제품 목록 페이지에서 링크가 전체 너비를 차지하는 현상 수정 * feat: 포커스를 이용해서 무한 스크롤을 이용할 수 있도록 수정 * feat: 평점 및 리뷰 접근성 개선 * feat: 섹션 탐색 용이하도록 article 대신 div 사용, 제품 카드 접근성 개선 * feat: 리뷰 카드를 랜드마크 탐색에 잡히지 않도록 article에서 div로 변경 * feat: 평점 컴포넌트에 평점 레이블 추가 * test: 변경된 태그에 맞도록 테스트 수정 * fix: 스크린리더에게만 읽히는 요소에 대한 스타일 적용 변경 * feat: 제품 검색, 카테고리 적용 시 접근성 개선 * feat: 정렬 기준 select 요소 레이블 추가 * feat: 검색 시 검색 키워드가 섹션의 제목에 반영되도록 수정 * fix: navbar 배치 스타일 문제 해결 * style: 누락된 제품 목록 스타일 추가 * refactor: 이미지와 내용을 내용과 단위로 읽어주는 기능 구현 방식 통일 * fix: 키보드 상태 기본값 적용 오류 수정 * [FE] 상하단 메뉴바 접근성 개선 (#777) * feat: 하단 메뉴바에 접근성을 위해 목록 추가, 레이블 추가 * feat: 상단 메뉴바에 프로필 버튼 레이블 추가 * refactor: 모바일 상단 메뉴바 컴포넌트 위치 headerNav로 이동, 레이블 추가 * 무한 스크롤 로딩정보 관련 메시지 추가 (#781) feat: 무한 스크롤 로딩정보 관련 메시지 추가 * [FE] 제품 목록 불러오기 실패나 항목 없을 때 스크린 리더 alert 추가 (#783) feat: 제품 목록 불러오기 실패나 항목 없을 때 스크린 리더 alert 추가 Co-authored-by: Yo Wook Kim <[email protected]> * fix: 하단바, 테스트 오류 수정, focus 방식 수정 * feat: 리뷰 작성 후 focusing 되는 요소 변경 * refactor: 스크린리더용 요소 적용 방식 통일 * refactor: floating button label prop으로 넘기도록 수정 * feat: 페이지 이동 시 스크린리더로 안내 * feat: 3초 뒤 페이지 이동 안내 문구 삭제 Co-authored-by: Yo Wook Kim <[email protected]> * [Bugfix/FE] 접근성 관련 누락 요소 수정 (#794) * fix: 모달 z-index를 bottomsheet 보다 앞에 오도록 수정 * fix: 로딩 중 레이블을 한글로 변경 * feat: 엔터와 스페이스로 평점 선택할 수 있도록 설정 * feat: escape로 바텀시트와 모달을 닫을 수 있도록 설정 * fix: 모달 생성시 포커스 방식 수정 * feat: 통계 정보 스크린리더 메시지 수정 * feat: 페이지와 관련한 불필요한 메시지를 읽지 않고 필요한 정보를 읽도록 수정 * [Feature/FE] 사용자 피드백을 반영해서 스크롤 유지, 제품 상세정보 우회 구현 (#797) * [FE] 제품 카드를 클릭했을 때 새로운 탭에서 링크가 열리도록 설정 (#764) feat: 제품 카드를 클릭했을 때 새로운 탭에서 링크가 열리도록 설정 * [FE] 제품 검색용 링크 추가 (#766) feat: 제품 검색용 링크 추가 * test: 상세페이지 이동 로직을 테스트에서 제거 * [FE] 타입 관련 리팩토링을 진행한다. (#799) [FE] 타입 리팩토링 (#700) * refactor: 직접 children 타입이 선언된 prop을 내장 타입으로 변경 * refactor: 추가정보 상수를 사용해 통계 그래프 리팩토링 * refactor: 타입 선언 파일에서 불필요한 declare 키워드 제거 * refactor: careerLevel 상수 띄어쓰기 수정 * refactor: 누락된 as const 추가 * refactor: 프로필 카드 데스크 셋업 제품 리팩토링 * refactor: useUrlSyncState에 제네릭 타입 적용 * refactor: profile card의 prop을 하나로 묶어서 전달하도록 수정 * [Bugfix/BE] flyway mysql 의존성 추가 (#814) * fix: mysql flyway 의존성 추가 * fix: init sql create if not exists 로 변경 * fix: security-local tap 오류 수정 * [Bugfix/BE] submodule 버전을 되돌린다. (#816) fix: submodule replica 이전으로 복구 * [Feature/FE] 코드 레벨 이슈 수정 (#815) * [FE] 탭 이동 시 포커스 border가 표시되는 문제 수정 (#802) fix: 탭 이동 시 포커스 border가 표시되는 문제 수정 * [FE] 리뷰 작성, 수정, 삭제 모킹 오류를 해결 (#806) fix: 리뷰 작성, 수정, 삭제 모킹 오류 수정 * [FE] 메인 로고 접근성 향상 (#807) feat: 모바일 페이지 로고에 aria-label 적용 * [FE] 인기제품 API 주소 변경 (#810) * feat: 인기 제품 조회 엔드포인트 추가 * feat: 인기 제품 조회 모킹 * feat: 인기 제품 조회 구현 * [FE] 스타일이 통일되지 않은 부분들을 통일 (#813) * fix: 인기제품 4개 불러오도록 수정 * style: nav바, section margin 조정 * style: 리뷰 수정, 삭제 버튼 shadow 적용 * style: 내 프로필 버튼 스타일 통일 * style: ProfileCard 스타일 수정 * style: box-shadow 적용 기준 변경 * fix: 페이징 되는 API에 대한 캐시 방식 수정 * style: header 마진 부여 방식 수정 Co-authored-by: Yo Wook Kim <[email protected]> * [Feature/FE] 프로젝트 레벨 이슈 수정 (#817) * [FE] 불필요한 스타일 관련 패키지를 제거 (#803) chore: 불필요한 스타일 관련 패키지를 제거 * [FE] test 서버는 검색엔진에서 검색되지 않도록 robot 메타 태그 추가 (#805) * [FE] document title을 설정하고 구글 애널리틱스를 추가 (#808) * feat: 페이지 정보를 document title에 반영하도록 구현 * fix: 제품 검색 페이지에서 default 값이 제대로 읽히지 않는 오류 해결 * chore: 구글 애널리틱스 추가 * [FE] manifest, favicon 관련 빌드 설정 업데이트 (#811) chore: manifest, favicon 관련 빌드 설정 업데이트 * [Feature/be] 동시성으로 인한 데이터 정합성 문제 해결 (#790) * [BE] 리뷰 작성 시 제품 통계 정보의 정합성을 맞추도록 수정 (#784) * feat: 제품 통계 정합성 맞추는 쿼리 작성 * refactor: 서비스에서 제품 통계 업데이트를 쿼리를 직접 사용하도록 수정 * [BE] 데이터 정합성을 맞추는 스케줄러 작성 (#789) * feat: 회원 팔로워 수의 데이터 정합성을 배치 처리하는 쿼리 작성 * refactor: 서비스 레이어에서 명시적 flush 대신 벌크 쿼리의 flushAutomatically 모드를 true로 설정 * feat: 1시간마다 회원의 팔로워 수 정합성을 맞추는 배치 쿼리를 실행하는 스케줄러 구현 * fix: 스케줄러가 테스트 환경에서는 빈으로 등록되지 않도록 수정 * [BE] 회원 정합성 문제 해결 배치 스케줄 대신 실시간으로 정합성을 맞추는 쿼리로 교체 (#809) * feat: 팔로워 수를 증가 / 감소 시키는 쿼리 작성 * refactor: 더티 체킹 대신 팔로워 수 조작 쿼리를 사용하도록 수정 * fix: 불필요한 쿼리 및 객체 제거 * refactor: 코드리뷰 반영 * [Bugfix/FE] 제품 정렬 스타일 오류 수정 (#818) feat: 제품 정렬 스타일 오류 수정 * [Feature/FE] 스타일 관련 코드 수정 (#825) * style: svg 이미지 교체 * refactor: 모달 렌더 시스크롤 방지 * style: FloatingButton 스타일 수정 * feat: 비로그인 사용자에게 리뷰 작성 버튼 클릭 시 로그인 유도 모달 출력 * fix: 스토리북 오류 수정 * fix: plus svg import문 주석 처리 * [Feature/BE] SQL 쿼리 , 파라미터 ,쿼리 카운트 로깅을 JDBC 기반 로깅으로 교체 (#819) (#820) * [BE] SQL 쿼리 , 파라미터 ,쿼리 카운트 로깅을 JDBC 기반 로깅으로 교체한다. (#819) * feat: ApiQueryCounter 를 JDBC 기반으로 구현 * feat: Log4JDBC 를 활용한 SQL 로깅 기능 구현 * chore: submodule update * refactor: 피드백 적용 * [FE] 바텀 시트가 리뷰 작성 버튼에 가려지는 문제 수정 (#827) fix: BottomSheet container z-index 조정 * [FE] 그래프의 바가 지속적으로 렌더링 되는 문제 수정 (#829) * fix: 그래프 토글 버튼 클릭 시만 키 값 변경 * feat: 타입 지정 * [BugFix/FE] 팔로우 관련 오류 수정 (#832) * feat: 40051, 40052 에러코드 메시지 추가 * fix: 모달 포커스 오류 수정 * refactor: 불필요한 import문 제거 * [Feature/BE] DB replication을 적용한다 (#785) * [BE] DB replication에 대한 DataSource를 설정한다 (#743) * feat: db Replication 설정 * feat: Transaction readOnly 옵션 여부에 따라 DataSource 타입을 로그로 출력 * fix: DatasourceConfig에 LazyConnectionDataSourceProxy * feat: submodule 적용 및 config 수정 * test: TestDataSourceConfig Memory h2 사용하도록 수정 * refactor: transactionName이 null이면 masterDataSource를 반환하도록 수정 * refactor: Map.of 사용 * test: TestDataSourceConfig url 상수 분리 * test: 인스턴스 변수에 private 적용 * refactor: ReplicationRoutingDataSource readOnly 순서 변경 * refactor: format sql true 속성 제거 * chore: gradlew에 실행 권한 추가 * refactor: format sql Value annotaion 제거 * test: connection h2 inmemory로 변경 * [Feature/BE] ConnectionPoolSize 및 Db 속성을 설정한다. (#793) feat: connection pool 관련 submodule 수정 * [Feature/BE] DB 형상관리 및 column 속성을 최적화한다. (#823) * [BE] DB 컬럼을 flyway 버전별로 수정한다. (#812) * refactor: init sql type 변경 * feat: Member table 수정사항에 대한 sql schema 작성 * feat: Product table 수정사항에 대한 sql schema 작성 * feat: InventoryProduct table 수정사항에 대한 sql schema 작성 * fix: init sql에 following 테이블 수정 * feat: Following table 수정사항에 대한 sql schema 작성 * [BE] DB schema 형상 관리 및 column 속성을 최적화한다. (#821) * refactor: init sql type 변경 * fix: init sql에 following 테이블 수정 * refactor: sql schema versioning 방식 변경 * feat: index 관련 sql 추가 및 init sql version 재설정 * refactor: not null default null 함께 사용 하지 않도록 수정 * refactor: application.yml에 baseline version 1.1 적용 * [Bugfix/FE] 깃헙 최대 유저네임 길이에 대응하도록 스타일 수정 (#833) * feat: 리뷰 카드에서 사용자 이름과 평점을 줄바꿈 * feat: 프로필 페이지에서 '데스크셋업' 명칭 위치 변경 * [BugFix/FE] 공백문자를 과도하게 입력할 경우 레이아웃이 깨지는 문제 수정 (#835) * feat: 악의적 사용자 모킹 추가 * style: word-break 속성 추가 * [Feature/BE] 어드민 페이지 구현 (#836) [BE] 어드민 페이지 구현 (#727) * chore: 리액트 기본 설정 적용 * [Feature/BE] 각 도메인 테이블에 unique 제약 조건을 추가한다 (#689) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * [BE] 각 도메인 테이블에 unique 제약 조건을 추가한다 (#688) * feat: Following에 제약조건 추가 * feat: Member에 제약조건 추가 * feat: Review에 제약조건 추가 * feat: InventoryProduct에 제약조건 추가 * feat: GlobalExceptionHandler에 DataIntegrityViolationException 추가 및 rest docs 수정 * refactor: printStackTrace 제거 * refactor: 제약조건 이름 추가 * refactor: 네이밍, 순서 피드백 반영 * test: 개행 추가 Co-authored-by: tiki <[email protected]> * [Feature/be] 인증 인가 수정 (#699) * [BE] JWT 생성 방식 변경 (#697) * [Hotfix/FE] 깃허브 프로필 링크 오류 수정 (#692) fix: 깃허브 프로필 링크 오류 수정 * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * fix: Jwt의 subject와 claim을 분리 * refactor: 토큰이 유효한지 반환하는 메서드 명 수정 Co-authored-by: Yo Wook Kim <[email protected]> Co-authored-by: tiki <[email protected]> * [BE] 회원에게 Role 부여 (#698) * feat: Member에 Role 필드 추가 * refactor: token 관련된 클래스들 패키지 집약 * feat: id와 Role을 합친 Payload 사용 * refactor: @VerifiedMember로 사용하는 객체를 MemberPayload로 변경 * refactor: JWT의 claim에 들어가는 id 형태를 String에서 Long으로 변경 * test: 테스트 패키지 조정 * refactor: 코드리뷰 반영 Co-authored-by: Yo Wook Kim <[email protected]> Co-authored-by: tiki <[email protected]> * [BugFix/BE] UniqueConstraint 어노테이션 import (#707) * fix: UniqueConstraint 어노테이션 import * fix: 테스트 깨지는 오류 수정 * [Bugfix/BE] local 환경에서 Repository 테스트시 쿼리 로그가 2번 남는 현상 해결 (#696) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#678) * [BE] 스프린트5에 대한 버퍼를 진행한다 (#677) * refactor: 팔로잉된 회원의 아이디를 목록으로 가져올 때 조인하지 않도록 변경 * refactor: 회원을 조회할 때 검색된 결과가 없다면, 다음 로직이 일어나지 않도록 변경 * refactor: findByContains 메서드 명 변경 * test: MemberServiceTest 한글 메서드 명 변경 * [BE] local 환경에서 repository test 시 쿼리 로그가 2번 남는 현상 수정 (#695) * fix: local 상황에서 DB query에 대한 로그 레벨 변경 * test: DataJpaTest를 활용한 테스트에서 SQL 쿼리가 2번 남는 현상 수정 * test: RepositoryTest 어노테이션 생성 * [Feature/BE] 어드민 API 구현 (#710) * [BE] 어드민 API 구현 (#709) * feat: 제품 추가 서비스 구현 * feat: 제품 수정 서비스 구현 * feat: 제품 삭제 서비스 구현 * feat: 제품 추가 기능 구현 * feat: 제품 수정 기능 구현 * feat: 제품 삭제 기능 구현 Co-authored-by: Ohzzi <[email protected]> * refactor: 오타 및 final 키워드 적용 * refactor: Product update 로직 null 체크 및 메서드 순서 정리 * refactor: 에러 코드 및 예외 변경 * test: 관리자 접근 권한 체크하는 테스트 수정 * refactor: deleteByProduct 쿼리문 변경 및 테스트 추가 * test: final 키워드 제거 Co-authored-by: Ohzzi <[email protected]> Co-authored-by: corinne <[email protected]> * [BugFix/BE] 제품 수정, 삭제 API DTO 카테고리 enum을 DTO용 Constant로 수정 (#713) [BugFix/BE] 제품 수정, 삭제 API DTO 카테고리 enum을 DTO용 Constant로 수정 (#712) * feat: 제품 수정, 삭제 API DTO 카테고리 enum을 DTO용 Constant로 수정 * refactor: static import 추가 * feat: 로그인 페이지 구성 * feat: 라우터 추가 * feat: 로그인 구현 * feat: 제품 정보 수정 기능 구현 * feat: 제품 등록 기능 구현 * feat: 제품 등록 화면에서 카테고리 선택을 드롭박스로 변경 * feat: 제품 삭제 기능 뼈대 구현 * feat: refetch 기능 구현 * refactor: 템플릿 리터럴 적용 * axios try ~ catch 처리 * refactor: 제품 카테고리 드롭박스 컴포넌트 분리 * refactor: 헤더 레이아웃 분리 * refactor: 문법 정리 * feat: 검색 바 구현 * [Feature/BE] 어드민 로그인 api 구현 (#717) [BE] 어드민 로그인 api 구현 (#716) feat: 어드민 로그인 api 구현 * [Feature/BE] 프로덕션 인증 기능과 어드민 인증 기능 분리 (#719) feat: 프로덕션 인증 기능과 어드민 인증 기능 분리 Co-authored-by: yh20studio <[email protected]> Co-authored-by: yangdongjue5510 <[email protected]> Co-authored-by: hamcheeseburger <[email protected]> Co-authored-by: Youngyoon-1 <[email protected]> * feat: 페이지네이션 구현 * feat: 로그아웃 기능 구현 * feat: 로그인 여부에 따라서 접근 가능한 페이지 제한 * fix: 어드민 로그인 API를 콜하도록 수정 * chore: 깃허브 클라이언트 아이디 수정 * fix: 어드민 로그인 안되는 오류 수정 * refactor: 레이아웃 컴포넌트 분리 * refactor: 불필요한 주석 제거 Co-authored-by: Yo Wook Kim <[email protected]> Co-authored-by: HyeonJi Yoo <[email protected]> Co-authored-by: tiki <[email protected]> Co-authored-by: Dongjue Yang <[email protected]> Co-authored-by: corinne <[email protected]> Co-authored-by: yh20studio <[email protected]> Co-authored-by: yangdongjue5510 <[email protected]> Co-authored-by: Youngyoon-1 <[email protected]> Co-authored-by: Jihoon Oh <[email protected]> Co-authored-by: Yo Wook Kim <[email protected]> Co-authored-by: HyeonJi Yoo <[email protected]> Co-authored-by: tiki <[email protected]> Co-authored-by: Dongjue Yang <[email protected]> Co-authored-by: corinne <[email protected]> Co-authored-by: yh20studio <[email protected]> Co-authored-by: yangdongjue5510 <[email protected]> * [DOCS] README 업데이트 (#838) docs: README 업데이트 * [Chore] 버전을 올림 (#839) chore: 버전을 올림 * [Bugfix/BE] Connection을 release한다. (#841) * test: connection을 release하도록 try-with-resources 사용 * refactor: eof 추가 Co-authored-by: Jihoon Oh <[email protected]> Co-authored-by: Yo Wook Kim <[email protected]> Co-authored-by: yh20studio <[email protected]> Co-authored-by: yangdongjue5510 <[email protected]> Co-authored-by: Youngyoon-1 <[email protected]> Co-authored-by: Youngmin Hong <[email protected]>
issue: closes #681
작업 내용