Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] Hikari Connection Pool 고갈 문제 #123

Closed
yonghwankim-dev opened this issue Jan 9, 2024 · 0 comments · Fixed by #135
Closed

[bug] Hikari Connection Pool 고갈 문제 #123

yonghwankim-dev opened this issue Jan 9, 2024 · 0 comments · Fixed by #135
Assignees
Labels
bug Something isn't working

Comments

@yonghwankim-dev
Copy link
Member

yonghwankim-dev commented Jan 9, 2024

상황

Hikari Connection Pool 고갈

서버로부터 SSE 이벤트 스트림을 받을 수 없습니다.

배포 서버로부터 받은 에러 로그는 다음과 같습니다.
image
image

Broken Pipe

배포 서버를 대상으로 SSE 이벤트 스트림을 받고자 하였는데 30초동안 5초마다 받는 것이 아닌 한번 SSE 데이터를 받고 complete 처리가 됩니다. 에러를 살펴보니 다음과 같은 에러를 받았습니다.
image

원인

Hikari Connection Pool 고갈 문제

sse 요청을 전송시 30초동안 요청 결과들을 5초 간격으로 응답받습니다. http 연결이 유지되는 동안 서비스 레이어의 트랜잭션이 종료되었음에도 불구하고 OSIV(Open Session In View가 활성화되어 있어서 30초동안 계속 Hikari Connection Pool의 연결 쓰레드를 점유합니다.

broken pipe

  • 클라이언트에서 close하여서 발생하였습니다.

해결방법

Hikari Connection Pool 고갈 문제 해결 방법

OSIV(Open Session In View) 설정을 비활성화합니다.

application.yml

spring:
  jpa:
    open-in-view: false

HasPortfolioAuthorizationAspect AOP의 hasAuthorization 메소드에서 특정한 포트폴리오를 탐색한 다음에 portfolio.hasAuthorization 메소드를 수행하는 과정에서 member 연관관계 객체를 지연 로딩합니다.

public boolean hasAuthorization(Long memberId) {
return member.hasAuthorization(memberId);
}

jmeter를 이용하여 15명의 사용자로 15번씩 sse 요청했을때 결과를 모니터링한 결과 hikari connection pool의 활성화된 connection thread의 개수가 0개를 지속적으로 유지되는 것을 확인할 수 있었습니다.

INFO  24-01-12 16:17:05[pool-4-thread-1] [PortfolioEventListener:29] - emitter 전송준비 : SseEmitter@4948d60c
INFO  24-01-12 16:17:05[pool-4-thread-1] [PortfolioEventListener:34] - emitter1 포트폴리오 전송
INFO  24-01-12 16:17:07[pool-4-thread-1] [PortfolioEventPublisher:51] - 포트폴리오 발행 이벤트, PortfolioEvent(portfolioId=1)
INFO  24-01-12 16:17:07[http-nio-8080-exec-12] [PortfolioStockRestController:88] - emitter1 completion으로 인한 제거
DEBUG 24-01-12 16:17:07[http-nio-8080-exec-14] [AuthPrincipalArgumentResolver:29] - 인증 컨텍스트, AuthenticationContext(AuthMember(id=1, email=dragonbead95@naver.com))
DEBUG 24-01-12 16:17:08[HikariPool-1 housekeeper] [HikariPool:421] - HikariPool-1 - Pool stats (total=10, active=0, idle=10, waiting=0)
DEBUG 24-01-12 16:17:08[HikariPool-1 housekeeper] [HikariPool:518] - HikariPool-1 - Fill pool skipped, pool is at sufficient level.

Broken Pipe 문제 해결 방법

  • broken pipe 에러 같은 경우 클라이언트에서 close하지 않고 재연결하도록 변경
@yonghwankim-dev yonghwankim-dev added the bug Something isn't working label Jan 9, 2024
@yonghwankim-dev yonghwankim-dev added this to the [BE] Sprint #13 milestone Jan 9, 2024
@yonghwankim-dev yonghwankim-dev self-assigned this Jan 9, 2024
yonghwankim-dev added a commit that referenced this issue Jan 9, 2024
yonghwankim-dev added a commit that referenced this issue Jan 9, 2024
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
- 액세스 토큰 만료시 403
- 리프레시 토큰 만료시 401
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
yonghwankim-dev added a commit that referenced this issue Jan 10, 2024
* #123 docs: hikari 로깅 레벨 설정

* #123 docs: dev 프로파일에 히카리 관련 로깅 레벨 설정

* #123 fix: 오타 수정

* #123 fix: 로깅

* #123 fix: emitter timeout, completion시 complete 처리

* #123 fix: emitter complete 조건문 추가

* #123 fix: emitter 로깅

* #123 fix: 불필요한 로직 제거

* #123 fix: @async 제거

* #123 fix: onError 추가

* #123 fix: aop 설정 및 onError시 complete 처리

* #123 fix: test

* #123 fix: completeError 변경

* #123 fix: 커스텀 예외 추가

* #123 fix: 예외 제거

* #123 fix: 액세스, 리프레시 토큰 응답 변경

- 액세스 토큰 만료시 403
- 리프레시 토큰 만료시 401

* #123 fix: 오타 수정

* #123 fix: 메소드명 수정
yonghwankim-dev added a commit that referenced this issue Jan 11, 2024
* #110 refactor: KisAccessToken 구현하여 리팩토링

* #110 test: KisAccessToken 추가로 인한 테스트 코드 추가

* #110 refactor: accessToken 메소드 리팩토링

* #110 test: KisAccessToken 테스트 코드 추가

* #110 fix: accessToken 메소드 retryWhen 추가

* #110 fix: 로깅 및 조건문 추가

* #110 test: 테스트명 수정

* #110 docs: kis properties 추가

* #123 chore: mockwebserver 의존성 라이브러리 추가

* #123 fix: OauthKisProperties 호출로 변경

* #123 test: 한국투자증권 액세스 토큰 재발급 테스트 코드 추가
@yonghwankim-dev yonghwankim-dev moved this to In Progress in BE Jan 11, 2024
@yonghwankim-dev yonghwankim-dev changed the title [bug] SSE 히카리풀 고갈 문제 [bug] Hikari Connection Pool 고갈 문제 Jan 11, 2024
yonghwankim-dev added a commit that referenced this issue Jan 12, 2024
@yonghwankim-dev yonghwankim-dev linked a pull request Jan 12, 2024 that will close this issue
yonghwankim-dev added a commit that referenced this issue Jan 14, 2024
- N+1 문제를 해결하기 위해서 fetch join 사용
yonghwankim-dev added a commit that referenced this issue Jan 15, 2024
* #123 docs: 테스트 프로파일에 히카리 로깅 레벨 설정

* #129 refactor: 별도 메소드 분리

* #129 test: 히카리 연결 풀 테스트 코드 추가

* #123 fix: 스케줄링 메소드 오타 수정

* #123 fix: throwable 로깅

* #131 test: HasPortfolioAuthorizationAspect 테스트 코드 추가

* #123 fix: OSIV(open session in view) 설정

* #123 test: 불필요한 테스트 코드 제거

* #123 refactor: 포트폴리오 조회시 fetch join으로 변경

- N+1 문제를 해결하기 위해서 fetch join 사용

* #123 test: findAllByPortfolioId 테스트 코드 추가

* #123 fix: OSIV 비활성화에 따른 fetch join 적용

* #123 fix: OSIV 비활성화에 따른 테스트 코드 수정
yonghwankim-dev added a commit that referenced this issue Jan 15, 2024
* #131 fix: 액세스 토큰 발급 오류 수정

* #131 test: 액세스 토큰 발급 테스트 코드 추가

* #131 test: 오타 수정

* [fix] Hikari Connection Pool 고갈 문제 해결 (#135)

* #123 docs: 테스트 프로파일에 히카리 로깅 레벨 설정

* #129 refactor: 별도 메소드 분리

* #129 test: 히카리 연결 풀 테스트 코드 추가

* #123 fix: 스케줄링 메소드 오타 수정

* #123 fix: throwable 로깅

* #131 test: HasPortfolioAuthorizationAspect 테스트 코드 추가

* #123 fix: OSIV(open session in view) 설정

* #123 test: 불필요한 테스트 코드 제거

* #123 refactor: 포트폴리오 조회시 fetch join으로 변경

- N+1 문제를 해결하기 위해서 fetch join 사용

* #123 test: findAllByPortfolioId 테스트 코드 추가

* #123 fix: OSIV 비활성화에 따른 fetch join 적용

* #123 fix: OSIV 비활성화에 따른 테스트 코드 수정
@github-project-automation github-project-automation bot moved this from In Progress to Done in BE Jan 15, 2024
yonghwankim-dev added a commit that referenced this issue Jan 15, 2024
- SseEmitterKey 객체 추가
- eventId 추가
yonghwankim-dev added a commit that referenced this issue Jan 15, 2024
- SseEmitterKey 객체 추가
- eventId 추가
yonghwankim-dev added a commit that referenced this issue Jan 15, 2024
- SseEmitterKey 객체 추가
- eventId 추가
yonghwankim-dev added a commit that referenced this issue Jan 15, 2024
- SseEmitterKey 객체 추가
- SseEmitterManager 객체의 해시맵의 키 타입을 SseEmitterKey로 변경
yonghwankim-dev added a commit that referenced this issue Jan 16, 2024
…않는 문제 해결

- PortfolioEventListener에서 예외 발생시 해당 SseEmitter는 해시맵에서 제거되도록 변경하여 sseEmitter가 줄어들지 않는 문제를 해겷하였습니다.
yonghwankim-dev added a commit that referenced this issue Jan 16, 2024
yonghwankim-dev added a commit that referenced this issue Jan 16, 2024
* #123 feat: sse 전송 문제 해결

- SseEmitterKey 객체 추가
- SseEmitterManager 객체의 해시맵의 키 타입을 SseEmitterKey로 변경

* #123 fix: catch문 오타 수정

* #123 fix: sseEmitter가 리스너에서 예외 발생시 sseEmitterManager에서 emitter가 줄어들지 않는 문제 해결

- PortfolioEventListener에서 예외 발생시 해당 SseEmitter는 해시맵에서 제거되도록 변경하여 sseEmitter가 줄어들지 않는 문제를 해겷하였습니다.

* #123 test: 오타 수정

* #123 fix: 사용하지 않는 createRedisKey 메소드 제거
yonghwankim-dev added a commit that referenced this issue Jan 22, 2024
* #123 feat: sse 전송 문제 해결

- SseEmitterKey 객체 추가
- SseEmitterManager 객체의 해시맵의 키 타입을 SseEmitterKey로 변경

* #123 fix: catch문 오타 수정

* #123 fix: sseEmitter가 리스너에서 예외 발생시 sseEmitterManager에서 emitter가 줄어들지 않는 문제 해결

- PortfolioEventListener에서 예외 발생시 해당 SseEmitter는 해시맵에서 제거되도록 변경하여 sseEmitter가 줄어들지 않는 문제를 해겷하였습니다.

* #123 test: 오타 수정

* #123 fix: 사용하지 않는 createRedisKey 메소드 제거

* #122 feat: 에상 배당금 메소드 구현

- 현재 년도의 배당금이 없는경우 작년도의 배당금 정보를 이용하여 예상 배당금을 계사하는 메소드를 구현하였습니다

* #122 feat: 예상 배당금 계산 메소드에 대한 테스트 코드 구현

* #122 feat: 포트폴리오 종목에 대한 예상 연간배당금 및 예상 연간배당금 비율 계산 메소드 구현

* #122 fix: 현재년도를 가지고 있는 LocalDate 데이터를 매개변수화

* #122 fix: 테스트 코드 오류 수정

* #122 feat: 포트폴리오의 연간배당금 계산 메소드 변경

* #122 test: 테스트 코드 단언문 변경

- 좀더 상세한 결과를 검증하도록 변경

* #122 docs: 포트폴리오 샘플 데이터에 create_at 컬럼 데이터 추가

* [feat] 포트폴리오 추가 및 수정시 입력정보 변경 (#152)

* #144 fix: 데이터 유효성 범위 변경

- 예산, 수익금액, 최대손실 금액 정보에 대하여 0또한 포함이 가능하도록 변경

* #144 test: 테스트 코드 수정

* #144 fix: 검증 조건 변경

* #144 test: 테스트 코드 직렬화/역직렬화 코드 수정

* #144 fix: 포트폴리오 수정 요청 리퀘스트의 데이터 유효성 변경

* #144 test: 테스트 코드 수정

- 입력값 파라미터화

* #144 feat: 메일전송여부를 관리하는 매니저 객체 생성

* #144 feat: 예산이 0원인지 검사하는 메소드 추가

* #144 test: 목표 수익 알림 메소드에 대한 예외 케이스 추가

* #144 test: 최대손실알림 메일 스케줄링 메소드 테스트 코드 추가
yonghwankim-dev added a commit that referenced this issue Jul 23, 2024
* [fix] sse 전송 문제 해결 (#140)

* #123 feat: sse 전송 문제 해결

- SseEmitterKey 객체 추가
- SseEmitterManager 객체의 해시맵의 키 타입을 SseEmitterKey로 변경

* #123 fix: catch문 오타 수정

* #123 fix: sseEmitter가 리스너에서 예외 발생시 sseEmitterManager에서 emitter가 줄어들지 않는 문제 해결

- PortfolioEventListener에서 예외 발생시 해당 SseEmitter는 해시맵에서 제거되도록 변경하여 sseEmitter가 줄어들지 않는 문제를 해겷하였습니다.

* #123 test: 오타 수정

* #123 fix: 사용하지 않는 createRedisKey 메소드 제거

* fix: #143 watchlist create (#144)

* fix: #146 fix price null

* #145 refactor: 인증코드 확인 api 분리

* [feat] 계정 API, 프로필 정보 변경 API 구현 (#151)

* #149 feat: 비밀번호 변경 api 구현

* #149 feat: 로그아웃 후 계정 삭제

* #149 feat: 프로필 정보 변경 기능 구현

* #149 fix: controller 메소드 명 변경

* [feat] 배당금 데이터 계산 로직 개선 (#150)

* #123 feat: sse 전송 문제 해결

- SseEmitterKey 객체 추가
- SseEmitterManager 객체의 해시맵의 키 타입을 SseEmitterKey로 변경

* #123 fix: catch문 오타 수정

* #123 fix: sseEmitter가 리스너에서 예외 발생시 sseEmitterManager에서 emitter가 줄어들지 않는 문제 해결

- PortfolioEventListener에서 예외 발생시 해당 SseEmitter는 해시맵에서 제거되도록 변경하여 sseEmitter가 줄어들지 않는 문제를 해겷하였습니다.

* #123 test: 오타 수정

* #123 fix: 사용하지 않는 createRedisKey 메소드 제거

* #122 feat: 에상 배당금 메소드 구현

- 현재 년도의 배당금이 없는경우 작년도의 배당금 정보를 이용하여 예상 배당금을 계사하는 메소드를 구현하였습니다

* #122 feat: 예상 배당금 계산 메소드에 대한 테스트 코드 구현

* #122 feat: 포트폴리오 종목에 대한 예상 연간배당금 및 예상 연간배당금 비율 계산 메소드 구현

* #122 fix: 현재년도를 가지고 있는 LocalDate 데이터를 매개변수화

* #122 fix: 테스트 코드 오류 수정

* #122 feat: 포트폴리오의 연간배당금 계산 메소드 변경

* #122 test: 테스트 코드 단언문 변경

- 좀더 상세한 결과를 검증하도록 변경

* #122 docs: 포트폴리오 샘플 데이터에 create_at 컬럼 데이터 추가

* [feat] 포트폴리오 추가 및 수정시 입력정보 변경 (#152)

* #144 fix: 데이터 유효성 범위 변경

- 예산, 수익금액, 최대손실 금액 정보에 대하여 0또한 포함이 가능하도록 변경

* #144 test: 테스트 코드 수정

* #144 fix: 검증 조건 변경

* #144 test: 테스트 코드 직렬화/역직렬화 코드 수정

* #144 fix: 포트폴리오 수정 요청 리퀘스트의 데이터 유효성 변경

* #144 test: 테스트 코드 수정

- 입력값 파라미터화

* #144 feat: 메일전송여부를 관리하는 매니저 객체 생성

* #144 feat: 예산이 0원인지 검사하는 메소드 추가

* #144 test: 목표 수익 알림 메소드에 대한 예외 케이스 추가

* #144 test: 최대손실알림 메일 스케줄링 메소드 테스트 코드 추가

* #154 fix: 랜덤 닉네임 생성 길이 10자로 변경 (#155)

* #157 fix: 회원 프로필 변경 에러 해결 (#158)

* #157 fix: 컨트롤러에 value 및 consume 설정

* #157 fix: 회원가입 로깅 필터 추가

* #160 fix: 계정 삭제 버그 수정 (#161)

* #162 fix: 비밀번호 변경 문제 해결 (#163)

- 데이터베이스에 반영하도록 변경

* feat: #165 change watchlist name

* [fix] 회원 프로필 문제 해결 (#166)

* #164 test: 프로필 변경 테스트 코드 작성

* #162 fix: 메소드명 변경

- 실제 이미지 파일이 아닌 url값을 변경하는 것이기 때문에 updateProfileUrl로 변경함

* #164 fix: 불필요한 update jpql 제거

- Member 더티 체킹을 통해서 작동하기 때문에 제거함

* #164 feat: 프로필 변경 관련 에러 코드 추가

- 클라이언트로부터 변경할 정보를 받지 못한 경우 작동될 수 있음

* #164 refactor: 프로필 변경 서비스 리팩토링

- Optional을 통한 Null처리 수행함
- 닉네임 유효성 검사를 ProfileChangeRequest로 이전
- Optional Method Chain을 이용하여 최대한 가독성있게 변경
- extract 메소드 실행 과정중에 검증 수행
- application.yml 파일에 multipart file size를 명시하여 이미지가 너무 큰 경우 받을 수 없도록 명세함

* #164 fix: 공백 생성자 및 getter 추가

* #164 test: 프로필 변경 컨트롤러 테스트 코드 추가

* #164 fix: @Valid 애노테이션 추가

* #164 test: 프로필 변경 서비스 에외 테스트 추가

- 닉네임이 중복되는 경우 테스트 추가

* [refactor] 회원가입 서비스 리팩토링 및 테스트 코드 (#168)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* [fix] 대시보드 서비스 클래스 테스트 코드 문제 (#169)

* #167 test: 테스트 코드 실패 수정

- currentPriceManager 목객체를 추가하여 redis를 모킹 처리함

* #121 test: @beforeeach에 배당금 제거 추가

* [test] 회원가입 관련 서비스 테스트 코드 추가 (#170)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* #167 test: 닉네임 중복 검사 서비스 테스트 코드 추가

* #167 test: 닉네임 중복 검사 컨트롤러 테스트 코드 추가

* #167 test: 이메일 중복 검사 테스트 코드 추가

* #167 test: 이메일 중복 검사 컨트롤러 테스트 코드 추가

* #167 refactor: 유효성 검사 추가 및 검증코드 생성기 추가

* #167 test: 검증 코드 컨트롤러 및 서비스 테스트 코드 추가

* #167 feat: 검증코드 요청에 대한 유효성 검사 추가

* #167 test: 검증 코드 검사에 대한 컨트롤러 및 서비스 테스트 코드 추가

* feat: #165 change watchlist name, watchlist had stock api

* feat: #165 change watchlist name, watchlist had stock api

* test: #165 controller test

* test: #165 service test

* feat: #173 stock detail get

* test: #173 stock detail get controller test

* fix: #175 endpoint naming

* Update src/test/java/codesquad/fineants/spring/api/stock/StockRestControllerTest.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/stock/Stock.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/success/code/StockSuccessCode.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/stock/StockRestController.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refactor: #173 response name

* refactor: #173 isCurrentYearPaymentDate

* refactor: #173 isCurrentYearPaymentDate

* #179 fix: ssl 재발급 (#179)

* feat: #181 notification entity

* feat: #181 notification entity

* [feat] 프로필 정보 조회 (#180)

* #172 feat: 프로필 조회 서비스 구현

* #172 test: 프로필 조회 서비스 테스트 코드 구현

* Update src/main/java/codesquad/fineants/domain/fcm_token/FcmToken.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/notification_preference/NotificationPreference.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* chore: #181 notification ddl

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* FCM 토큰 등록 구현 (#193)

* #184 feat: FCM 토큰 등록 컨트롤러 및 서비스 구현

* #184 test: FCM 토큰 등록 서비스 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 예외 케이스 추가

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #184 feat: FCM 토큰 등록 서비스시 검증 추가

* #184 feat: FCM 토큰 검증을 별도의 메소드로 분리

* #184 test: FCM 토큰 등록 예외 케이스 테스트 코드 추가

* [feat] 회원 알림 목록 조회 (#194)

* #187 feat: Notification 엔티티 구현

* #184 feat: 회원 알림 목록 조회 API 및 서비스 구현

* #187 test: 회원 알림 목록 조회 서비스 테스트 코드 구현

* #187 test: 회원 알림 목록 조회 컨트롤러 테스트 코드 추가

* #187 docs: notification 스키마 추가

* [fix] 회원 알림 목록 조회 Response Body 변경 (#196)

* #195 feat: notification 엔티티에 type, referenceId 컬럼 추가

- type은 알림의 타입으로써 "stock" or "portfolio"의 값을 가진다
- referenceId는 type에 대한 참조값입니다. type="stock"인 경우 종목의 티커심볼을 가질 수 있고, type="portfolio"인 경우 포트폴리오의 등록번호일 수 있음

* #195 test: 샘플 데이터에 type, referenceId 추가

* #195 docs: 스키마 변경

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* [feat] 회원 알림 설정 수정 API 구현 (#198)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* [feat] 코드 분실 해결 (#199)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* #187 fix: 코드 분실 해결

* #187 fix: 코드 분실 해결

* #187 fix: 오타 수정

* [fix] 알림 설정 수정 API 문제 해결 (#202)

* #187 fix: 기존 로컬 회원도 수정시 데이터가 없는 경우 새로 반영하도록 추가

* #201 test: 알림 설정 수정 테스트 코드 추가

* #201 fix: 오타 수정

* #203 feat: 회원 알림 권한 검사 AOP 추가 (#204)

* #203 fix: 알림 모두 읽음 API에 권한 검사 AOP 추가 (#205)

* [feat] 알림 메시지 발송 API 구현 (#206)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* [fix] 오타 수정 (#207)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* #200 fix: 오타 수정

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* [fix] FcmToken 테이블 생성 쿼리 오타 수정 (#209)

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* [Refactor] 포트폴리오 종목 조회 리팩토링 (#211)

* #210 test: n+1 문제를 확인하기 위해 테스트 코드 수정

* #210 fix: 테스트 설명 수정

- 파일에 대한 영구 링크 가져오기 테스트

* #210 fix: 테스트 설명 원래대로 복구

* #210 refactor: @NamedEntityGraph 정의 및 @batchsize 추가

* #210 fix: 주석 제거

* #210 fix: 주석 제거

* [feat] 종목 지정가 알림 추가 (#212)

* #186 feat: 종목 지정가 알림 추가 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 추가 서비스 테스트 코드 구현

* #186 test: 종목 지정가 알림 추가 컨트롤럴 테스트코드 구현

* #186 fix: 로그인 filter 제외 경로 수정

- /apistocks/{tickerSymbol}/target-price/notifications 경로에 대하여 로그인을 요구하도록 변경

* #186 docs: init-schmea.sql 수정

- stock_target_price 테이블 갱신

* [feat] 종목 지정가 알림 제거 API 구현 (#214)

* #186 feat: 종목 지정가 알림 제거 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 제거 컨트롤러 및 서비스 테스트 코드 구현

* #213 fix: 회원 알림 API의 payload 변경 (#215)

- content -> body로 변경

* #216 fix: 종목 지정가 알림 경로 변경 (#217)

* #218 fix: 대시보드 오버뷰 리스폰스 바디에 totalGain 추가 (#219)

* [feat] 회원 종목 알림가 단일 제거 및 전체 제거 구현 (#221)

* #186 feat: 종목 지정가 알림 단일 제거 및 전체 제거 서비스 코드 구현

* #186 test: 테스트 코드 수정

* #186 test: 테스트 코드 수정

* [fix] 회원 알람 설정 수정 스펙 변경 (#222)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* [fix] fcm token 중복 검증 추가 (#223)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* [feat] FCM 토큰 등록 로직 변경 (#224)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 fix: fcm 토큰 등록 수정

- 토큰 등록시 이미 존재하는 경우 최신 활성화 시간을 갱신하도록 변경

* [fix] 검증문 제거 (#226)

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 fix: 검증문 제거

* #220 test: 메일 서비스 모킹

* [test] test container 적용 (#227)

* #153 docs: 프로파일별 yml 파일 분리

* #153 test: 테스트 클래스에 컨테이너 베이스 클래스 추가

* #153 docs: docker 설정 수정

* [feat] 종목 지정가 알림 목록 조회 API 구현 (#228)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* [feat] 종목 지정가 알림 정보 수정 API 구현 (#229)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* #186 feat: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 코드 구현

* #186 test: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 테스트 코드 구현

* [feat] 포트폴리오 활성 알림 목록 조회 API 구현 (#230)

* #188 feat: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 코드 구현

* #188 test: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 테스트코드 구현

* #156 docs: ci 수행시 test 추가 (#231)

* [feat] 회원 알림 API 변경 (#236)

* #235 feat: 회원 알림 메시지 발송 API 변경 및 조회 변경

- Notification 엔티티 테이블의 구조를 상속관계로 변경
- 회원 알림 메시지 발송 API에서 RequestBody의 구조 변경
- 회원 알림 목록 조회 API에서 ResponseBody 구조 변경

* #235 test: 테스트 코드 수정

- Notification 엔티티 구조 변경으로 인한 테스트 코드 수정

* [docs] Spring Rest Docs 환경 추가 (#237)

* #232 docs: Rest Docs 관련 설정 추가

* #232 docs: rest docs 적용

* [feat] FCM 토큰 삭제 (#238)

* #232 feat: FCM 토큰 삭제 API 구현

* #232 docs: FCM API Rest Docs 추가

* [feat] 종목 지정가 알림 특정 조회 API 구현 (#239)

* #234 feat: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 코드 구현

* #234 test: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 테스트 코드 구현

* #234 docs: 종목 지정가 알림 특정 조회 Rest Docs 추가

* [fix] 프로필 조회 및 종목 지정가 알림 특정 조회 로직 수정 (#242)

* #241 fix: 회원의 알림 설정 더미데이터에서 실제 데이터로 변경

* #241 fix: 종목 지정가 알림 특정 조회에서 종목을 찾지 못하면 빈 리스트 반환

* #241 fix: 테스트 코드에서 스케줄링 메소드가 실행되지 않도록 수정

* #189 docs: secret 최신 갱신

* #189 docs: oauth redirect url 변경

* [feat] 매입 이력 이벤트에 따른 Push Notification 구현 (#243)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #244 fix: 주석 추가

* [fix] QA 버그 해결 (#247)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #189 docs: oauth redirect url 변경

* #244 feat: 포트폴리오 목록 조회 API의 ResponseBody에 currentValuation 추가

* #244 fix: 포트폴리오 종목 추가 문제 해결

- 매입 이력 같이 추가시 purchaseDate로 변경
- 이미 존재하는 종목의 매입 이력 같이 추가시 중복 추가되지 않도록 함

* #244 fix: rest docs 수정

* [fix] qa 버그 문제 해결 (#248)

* #244 fix: 포트폴리오 종목 조회시 연배당률에 대한 소수점 2자리 실수로 변경

* #244 docs: 포트폴리오 종목 조회 API Rest Docs 추가

* #244 fix: 대시보드 오버뷰 문제 해결

- 0 나누기 문제 해결

* #244 docs: 대시보드 오버뷰 Rest Docs 추가

* #244 fix: 계정 삭제 문제 해결

* #244 docs: 계정 삭제 Rest Docs 추가

* #244 test: 테스트명 수정

* #244 feat: watchStock 추가시 현재가 갱신 이벤트 추가

* #244 feat: kisService mokcing 추가

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결 (#249)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* [fix] FCM 토큰 등록 문제 해결 (#250)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* #244 fix: FCM 토큰 등록 쓰레드 세이프 문제 해결

- fcm_token 테이블에 token, memberId 컬럼에 유니크 제약 조건 설정

* #244 docs: init-schema 수정

* [fix] 매입 이력 이벤트에 따른 Notification 저장 문제 해결 (#251)

* #244 fix: 포트폴리오 reachedTargetGain에 histories 전달하도록 변경

* #246 fix: 매입 이력 구매 이벤트에 따른 알림 미저장 문제 해결

- @TransactionalEventListener -> @eventlistener로 변경

* #246 feat: 최대손실율 달성 알림 로직 추가

* #246 fix: Push Notification 문제 해결

- Portfolio에 purchaseHistory 리스트를 전달하여 목표수익률 및 최대손실율 게산하도록 수행

* #246 test: 매입 이력 이벤트에 따른 최대손실율 알림 테스트 코드 추가

* #246 rename: 메소드간 순서 변경

* #246 refactor: 매입 이력 추가 리팩토링

- 현금이 부족한지 검증하는 부분 리팩토링
- 계산하는 부분을 PurchaseHistory로 이동

* #246 fix: 매입이력 이벤트 수정

- 한 회원의 여러 디바이스에 알림을 보내도 실제 알림 데이터는 1개만 저장되도록 수정

* �[docs] Rest Docs 추가 (#255)

* #253 fix: maximumIsActive 필드 삭제

* #253 fix: targetGainNotification 필드 삭제

* #253 docs: 사용자 소셜 로그인 추가

* #253 docs: Rest Docs 추가

* #253 docs: Rest Docs에 Authorization 추가

* #253 docs: adoc 파일에 request-header.adoc 추가

* #253 docs: init-schema.sql 변경

* [feat] 회원가입 및 프로필 수정 스펙 변경 (#256)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* [fix] 테스트 실패 수정 (#257)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* #254 fix: 테스트 실패 수정

* [fix] 포트폴리오 및 종목 지정가 알림 목록 조회 변경 (#258)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* [fix] 포트폴리오 활성 알림 목록 조회 변경 (#259)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* #252 docs: 포트폴리오 활성 알림 조회 서비스 수정

- 생성일자를 기준으로 오름차순 정렬

* [fix] API 응답에서 퍼센티지 데이터 수정 (#261)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* [fix] dailyGainRate 계산 로직 수정 (#262)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* #260 fix: dailyGainRate 수식 수정

* #260 fix: 연배당율 계산식 문제 해결

- 실수 타입으로 변경

* [docs] Rest Docs API 추가 (#263)

* #253 docs: 액세스 토큰 갱신 Rest Docs 추가

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 회원 관련 Rest Docs API 추가

* #253 docs: 포트폴리오 Rest Docs API 추가

* #253 docs: 테스트 코드 수정

* [docs] notification adoc 수정 (#264)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* [docs] Rest Docs 테스트 실패 해결 (#265)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* #253 docs: 테스트 실패 해결

* [feat] 종목 지정가 변경 이벤트에 따른 종목 지정가 알림 구현 (#266)

* #254 feat: 종목 지정가 알림 발송 API 구현

* #254 test: 종목 지정가 알림 발송 API 테스트 코드 구현

* #254 test: 종목 지정가 알림 발송 서비스 테스트 코드 수정

- 계정 알림 데이터 추가

* #254 docs: adoc 문서 수정

- 종목 지정가 알림 발송 API 추가
- 포트폴리오 목표 수익률 도달 알림 오타 수정

* #254 test: 테스트 코드 수정

- 종목 지정가 알림 발송 API Rest Docs 추가
- 현재가 읽기 메소드명 변경
- 오타 수정

* #254 refacotr: 현재가 읽기 메소드 수정

- 메소드명 수정
- 불필요한 메소드 제거
- 현재가 읽기시 리트라이 추가

* #254 refactor: 매입 이력 이벤트 수정

- SendingParamter에서 구체 클래스로 변경
- SendingParameter가 가지는 필드마다 다르기 때문에 변경, 하지만 다시 추상화하는 방법이 요구됨

* #254 feat: 종목 지정가 알림 서비스 및 이벤트 추가

* #254 feat: 현재가 변경에 따른 종목 지정가 도달 푸시 알림 서비스 추가

* #254 feat: Kis 서비스에 대한 컨트롤러 추가

* #254 feat: 종목 현재가 전체 갱신 API 추가

* #254 feat: 종목 가격 갱신 Rest Docs 추가

* #254 feat: 알림 전송 기록 관리 매니저 추가

* #254 docs: adoc 수정

* #254 feat: 종목 지정가 알림 서비스 수정

- 불필요한 쿼리가 발생하지 않도록 수정

* #254 rename: 종목 지정가 소스코드 이동

* #254 rename: 패키지 이동

* #254 feat: Redis에서 현재가 조회시 Optional로 래핑하여 반환하도록 함

* #254 feat: Redis에서 종가 조회시 Optional로 래핑해서 반환하도록 변경

* #254 style: 코드 정리

* #254 fix: 로깅 레벨 디버그 레벨로 변경

* #254 fix: 현재가 구하는 메소드 반환 타입 Long으로 변경

* #254 refactor: fetchCurrentPrice 리팩토링

- reactive적으로 변경

* #254 feat: 현재가 조회 API 추가

* #254 fix: 종가 리스폰스명 변경

* [refactor] 종목 지정가 푸시 알림 리팩토링 (#267)

* #254 refacotr: 현재가 갱신 리팩토링

* #254 fix: 코드 수정

* #254 fix: 알림 발송 간격 24시간으로 설정

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 비동기화

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 쓰레드풀 생성

* #254 test: 테스트 코드 실패 해결

* #254 docs: 오타 수정

- 종목 지정가 알림 발송 adoc 오타 수정

* #254 fix: 종목 지정가 도달 알림 문제 해결 (#269)

- 발송 이력 저장시 notificationId를 TargetPriceNotification.id로 변경

* [fix] 종목 지정가 도달 알림 예외 처리 (#270)

* #254 fix: Notification 엔티티 변경

- messageId를 추가하고 StockTargetPriceNotification 자식 클래스에는 targetPriceNotificationId를 추가

* #254 fix: Rest Docs 오타 수정

* #254 fix: firebase 알림 전송시 실패하는 경우의 로직 수정

- 대기하는 부분을 두번으로 나눠서 비동기로 처리하도록 변경

* #254 docs: adoc에 member_notification.adoc 추가

* #272 fix: 회원 알림 메시지 발송 API를 포트폴리오, 종목 지정가로 분리

* #272 fix: 종목 지정가 알림 에러 해결

- targetNotificationId가 db에 저장되지 않는 문제

* #273 fix: 종목 지정가 알림 버그 수정 (#274)

- notification 엔티티 데이터가 토큰이 여러개더라도 messageId를 기준으로 고유하게 1개만 저장하도록 저장

* [feat] 알람 기능 구현 (#276)

* #273 refactor: 목표수익률, 최대손실율, 종목 지정가 알림 기능 추상화

* #272 feat: 알림 기능 수행시 purchaseHistory set 메소드 추가

* #272 fix: 테스트 코드 수정

* #272 fix: 매입이력 이벤트시 매입이력 조회 문제 해결

- 지연로딩을 이미 언프록시하였기 때문에 새로 추가된 매입 이력을 리스트에 추가하도록 함

* #272 fix: 매입 이력 이벤트 알람을 위한 리스트 갱신 로직 추가

* #272 fix: adoc 정리

* #272 fix: 스키마 수정

* #272 fix: 오타 수정

* [fix] 포트폴리오 및 대시보드 차트 API에 대한 정렬 기준 적용 (#278)

* #277 fix: 회원가입 인증 코드 오타 수정

* #277 fix: 닉네임 중복 체크시 입력 형식 검사

* #277 fix: PortfolioStock -> PortfolioHolding으로 변경

* #277 feat: 포트폴리오 종목 Rest Docs 추가

* #277 feat: 매입이력 Rest Docs 추가

* #277 feat: 종목 Rest Docs 추가

* #277 feat: 포트폴리오 알람 활성화 Rest Docs 추가

* #277 test: 테스트 코드 실패 해결

* #277 feat: 종목 지정가 알림 Rest Docs 추가

* #277 feat: 회원 알림 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 대시보드 Rest Docs 추가

* #277 feat: 차트 정렬 적용

* #277 test: 테스트 코드 실패 해결

* #277 docs: adoc에 빠진 adoc 도메인 추가

* [reactor] sse 전송 방식 변경 (#281)

* #271 test: 테스트 코드 수정

* #277 fix: 불필요한 매개변수 제거 및 @tostring 추가

* #277 refactor: Sse 설계 변경

- RxJava 추가
- Observer, Observable 추가

* #271 feat: take 적용

* [feat] 주식 종목 최신화 구현 (#283)

* feat: 종목 최신화

* docs: 종목 최신화 rest docs 추가

* #279 feat: 서버 시작시 종목 최신화 추가

* #279 feat: 코드 정리

* #279 rename: aop 패키지 이동

* #279 docs: 테이블 스키마 변경

* #284 feat: cors 설정 (#285)

* #284 fix: www 서브 도메인 추가

* #284 fix: webconfig cors 설정 삭제

* #288 fix: Notification 객체 삭제 (#289)

* #288 fix: 종목 최신화 모듈 에러 해결 (#290)

- 기존 stocks 파일을 이용한 기존 종목 최신화 스케줄링 메서드가 최신화된 종목들을 삭제한 것이 원인

* #288 fix: Notification payload 추가, data 페이로드 제거

- data만 보내는 경우 fcm.options.link 사용하지 못하여 notification 추가로 변경

* [feat] Money 도메인 구현 (#294)

* #291 feat: Money, Count 도메인 추가

* fix: Money, Count 도입으로 인한 테스트 코드 수정

* fix: 테스트 코드 수정

* fix: money 직렬화시 정수 탕비으로 직렬화

* fix: Portfolio entity change the config with precision

* feat: add DataIntegrityViolationExpceiton handler

* fix: change column config

* #296 fix: 제약 조건 변경 (#297)

* fix: test 실패 해결

* fix: 포트폴리오 상세 조회 response property 변경 (#298)

* #293 feat: 종목의 현재가 및 종가 조회 메서드 수정 (#299)

- 가격이 redis에 없는 경우 kis 서버에 질의하여 가져오도록 합니다.

* #292 fix: 목표수익률 알림 버그 해결 (#301)

- 평가금액을 기준으로 수정

* [docs] README 수정 (#303)

* docs: README.md 수정

* docs: README.md 작성중

* docs: readme 트러블 슈팅 그외 작성

* docs: 트러블 슈팅 문서 작성

* docs: 핵심 기능 글 작성

* docs: 핵심 기능 그림 추가

* docs: image 링크 수정

* docs: 핵심 기능 프로세스 이미지 다시 추가

* docs: 핵시기능 접기 추가

* [bug] Watchlist 조회 문제 해결 (#305)

* fix: Watchlist 조회 버그 수정

* #304 docs: fineants-secret 버킷 이름 추가

* feat: 로그인시 provider 프로퍼티 추가 (#307)

* fix: response 수정 (#310)

* fix: nullpointer exception 해결 (#313)

* [feat] 배당 일정 최신화 추가 (#315)

* #286 feat: 배당금 일정 최신화 모듈 구현

* feat: 배당일정 최신화 서비스 구현

* fix: 알림 서비스에서 비동기 제거

* feat: 배당일정 최신화 구현

* feat: 배당 일정 최신화 구현

* fix: 주석 추가

* feat: 코드 정리

* fix: 코드 정리

* fix: money getter remove

* fix: REadWatchListsResponse 변경

* feat: localstack 추가

* #286 fix: 테스트 컨테이너 코드 수정

* fix: 테스트 컨테이너 코드 수정

* #286 fix: 테스트 프로파일 db 프로퍼티 제거

* #286 fix: 코드 정리

* fix: remove dividend restcontroller

* [fix] 배당 일정 최신화의 역직렬화 문제 해결 (#317)

* fix: 배당일정 가져오는 문제 해결

* #316 fix: 배당 일정 uri 추가

* fix: 포트폴리오 검증 수정 (#319)

* fix: 포트폴리오 검증 로직 수정 (#321)

* fix: 포트폴리오 활성 목록 조회 응답 변경 (#322)

* [feat] 포트폴리 알림 수정 (#324)

* feat: add resp property for portfolio's notify setting api

* feat: 포트폴리오 알림 수정 검증문 추가

* test: 테스트 코드 실패 해결

* #308 feat: ssl 인증서 갱신

* #308 feat: ssl password change

* Feat/#308 Moeny 도메인 추가 (#326)

* feat: currency 도메인 추가

* feat: money 도메인에 currency 추가

* test: 테스트 코드 실패 해결

* feat: 알림 메시지 내용 형식 변경

* #308 fix: compareto 코드 수정

* feat: RateDivision 구현

* fix: 타입 수정

* fix: change the type to the expression

* fix: code 정리

* #308 fix: DecimalFormat 변경

* #308 fix: DecimalFormat 패턴 변경

- 소수점 둘째자리까지는 출력, 네번째자리까지는 값이 있다면 출력

* fix: package 구조 변경 (#329)

* [fix] 테스트 컨테이너 설정 변경 (#330)

* fix: package 구조 변경

* fix: container 설정 변경

* [feat] 환율 관리 기능 구현 (#331)

* feat: ExcahngeRate 추가 기능 구현

* feat: exchange rate read, update, delete 구현

* feat: 환율 관리 기능 구현

* feat: 기준 통화 변경 구현

* #328 feat: 환율 삭제시 기준 통화 삭제할 수 없도록 변경

* #328 feat: 기준통화 변경 코드 개선

* fix: 테스트 코드 실패 해결

* [test] Redis 모킹 코드 제거 (#332)

* #311 docs: init-schmea 테이블 추가

* #311 test: redis 모킹 코드 제거

* #334 fix: API 수정 (#335)

* #336 docs: 설명 수정 (#337)

* #336 docs: 설명 수정 (#338)

* [fix] 오타 수정 (#339)

* #336 docs: 설명 수정

* #336 docs: 오타 수정

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정 (#341)

- id 추가

* [fix] 테스트 코드 오타 수정 (#342)

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정

- id 추가

* test: 테스트 코드 오타 수정

* [fix] 알림 수정 (#344)

* #333 feat: 종목 지정가 알림 로직 변경

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 feat: 포트폴리오 알림 로직 수정

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 fix: kis 프로퍼티명 버그 수정

* [docs] workflow 설정 (#346)

* #33 build: spring 2.7->3.1 java 11->17 변경

* #333 feat: Spring Security OAuth 로그인 구현

* #333 feat: SetupDataLoader 구현

* #333 feat: 메서드 매개변수 중 AuthMember를 MemberAuthentication로 변경 및 코드 정리

* #333 test: createPortfolio 메서드를 상위 클래스로 통합

* #333 refactor: 액세스 토큰 갱신 리팩토링

* feat: login rest docs 테스트 코드 구현

* #333 feat: 시큐리티 설정 추가

* docs: oauth rest docs

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* fix: controller security annto delete

* #333 feat: AjaxScurityCnofig 보안 설정

* #333 style: 체크 스타일에 따른 코드 정리

* #333 fix: 테스트 후 발생한 버그 수정

* #333 feat: 로그인후 쿠키에 토큰 설정

* #333 test: 테스트 실패 해결

* #333 feat: 로그아웃 버그 해결

* #333 docs: 권한 설명 추가

* #333 test: 테스트 코드 실패 해결

* #333 test: 회원에서 인증 및 회원가입 분리

* #333 fix: 관심 종목 문제 해결

* #333 feat: 서버 실행시 KRW 환율 셋업 구현

* #333 feat: release 프로파일 관련 프로퍼티 추가

* #333 docs: 배포 환경 설정

* #333 docs: docker-compose 설정 변경

* #333 docs: 서버 포트 설정 변경

* #333 docs: workflow jdk 11->17 설정

* #333 fix: 테스트 코드 실패 해결

* #333 docs: 프로젝트 파일 보관 장소 temp로 변경

* #333 docs: stop.sh 스크립트 수정

* #333 docs: after-install.sh 스크립트 수정

* #333 docs: docker-compose-release 파일 수정, container 이름 변경

* #333 docs: redis.conf 설정 변경

* #333 docs: redis.conf 포트 설정

* #333 docs: redis port 변경

* #333 docs: redis port 변경

* #333 docs: release cloud watch 삭제

* #333 docs: secret 갱신

* #333 docs: oauth 프로퍼티 수정

- local, test 프로파일에 대한 Redirect-url 추가

* #333 feat: secret 커밋 갱신

* #333 feat: @EnableWebSeucirty 추가

* #333 feat: 디버깅 레벨 debug로 수정

* #333 docs: 프로파일 문제 해결

* #333 fix: 로그인 과정중 로깅 추가

* #333 fix: 로그인 필터에 로깅 추가

* #333 fix: Ajax 시큐리티 설정 변경, HttpMethod 제거

* #333 fix: Ajax 시큐리티 설정 변경, dispatcherMatcherTypes에 비동기 및 포워드 추가

* #333 fix: AjaxSecurity 인가 설정 변경

* #333 fix: /error 경로 permitAll 설정

* #333 fix: CORS 비활성화

* #333 fix: dispatcherTypeMatcher에 비동기, 포워드, 에러 허용

* #333 fix: 로깅 추가

* #333 fix: PrintStream 설정

* #333 fix: 애노테이션 제거

* #333 fix: @order 애노테이션 메서드 레벨로 이동

* #333 fix: docs ignore 추가

* #333 fix: query parameter template 추가

* [refactor] 엔티티 생성자 수정 (#348)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #333 fix: dev 프로파일을 production으로 변경

* [fix] ci.cd 설정 수정 (#349)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #347 rename: 배당금 생성 메서드 부모 클래스로 이동

* #347 docs: ci.cd의 environment 이름 aws로 변경

* #333 fix: dev 프로파일을 production으로 변경

* fix: 배당금 생성 메서드 추가

* #351 fix: 쿠키 생성시 release 프로파일 한에서 secure 비활성화 설정 (#352)

* #351 fix: oauth 로그인 쿠키 설정 변경 (#354)

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* [fix] 쿠키 설정 변경 (#355)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* [feat] CORS 설정 추가 (#356)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* #351 fix: 로그인시 response body에 토큰 정보 제거

* #351 feat: CORS 설정 추가

* [fix] JWT 필터 변경 (#357)

* #351 feat: CORS 설정 추가

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 feat: 쿠키 생성 방식 변경

- SameSite=None으로 설정하기 위한 ResponseCookie 방식으로 변경

* #351 fix: SameSite 오타 수정

* #351 fix: secure true로 고정 설정

* [fix] 회원가입 버그 수정 (#358)

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 fix: 로그아웃 수정

* #351 feat: test database cleaner 추가

* #351 fix: 회원가입 버그 수정

- 회원 가입시 사용자 권한 기본 추가

* #351 test: 테스트 비활성화 처리 (#359)

* [fix] oauth 로그인 설정 수정 (#361)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* [fix] origin 추가 (#362)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* [fix] 로깅 추가 (#363)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* #351 fix: ofKakao 로깅 추가

* [feat] 토큰 갱신 기능 구현  (#364)

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 fix: kakao oauth 로그인 버그 수정

- profile 동의하지 않은 경우 null로 저장

* fix: 프로필 사진 null 처리 (#365)

* [docs] Rest Docs 수정 (#366)

* fix: 프로필 사진 null 처리

* #351 docs: 로그아웃 Rest Docs 수정

- requestHader에 쿠키 추가

* #351 docs: request-cookies 템플릿 추가

* docs: Rest Docs 수정

* #351 docs: request-headers adoc 제거

* feat: add the ssl (#368)

* [fix] SSL 재발급 (#369)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* [fix] SSL 재발급 (#370)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* #367 fix: ssl 삭제

* #367 fix: ssl 재발급

* fix: ssl 인증서 삭제

* feat: ssl 인증서 추가

* test: 테스트 코드 수정

* feat: github action timezone 설정

* [fix] 릴리즈 서버 포트 변경 (#374)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* [fix] 릴리즈 서버 포트 오타 수정 (#376)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* #367 fix: 릴리즈 서버의 포트 변경

* #371 fix: 액세스 토큰 갱신 수정 (#378)

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* [fix] 쿠키 설정 변경 (#379)

* #371 fix: 액세스 토큰 갱신 수정

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* #371 fix: 액세스 토큰 갱신 수정

- addHeader -> setHeader로 수정
- 하나의 Set-Cookie 헤더에 accessToken 및 refreshToken를 세미콜론으로 구분하여 저장

* #371 test: 테스트 코드 해결

* [fix] oauth 설정 오타 수정 (#380)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* [fix] kakao oauth redirect url 수정 (#381)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: 릴리즈 서버 포트 변경

* #371 fix: 릴리즈 서버 포트 변경

* [fix] 중복 Set-Cookie 생성 문제 해결 (#383)

* fix: method source 수정

* #371 fix: 토큰 갱신 문제 해결

- 필터를 대상으로 스프링 빈 등록으로 인하여 자동 등록됨

* [fix] 일반 로그인 실패 문제 해결 (#385)

* #384 fix: 로그인 실패시 400 응답되도록 수정

* #384 test: 로그인 예외 케이스 실패 해결

* #386 fix: cors 설정에서 오타 수정 (#387)

- PUT 메서드 방식 추가

* [test] 테스트 임시 비활성화  (#388)

* #386 fix: cors 설정에서 오타 수정

- PUT 메서드 방식 추가

* #386 test: 엑세스 토큰 갱신 테스트 2개 임시 비활성화

* [feat] 포트폴리오 차트 API 수정 (#389)

* #386 test: 액세스 토큰 갱신 테스트 코드 문제 해결

- redis에 액세스 토큰에 대한 로그아웃한 기록 존재한 것이 원인
- Date 타입 객체의 toInstant() 호출시 UTC 기준으로 반환된 것이 문제

* #386 feat: 차트 조회시 포트폴리오 디테일 프로퍼티 추가

- 포트폴리오 디테일 프로퍼티에는 등록번호(id), 증권사(securitiesFirm), 이름(name)이 포함되어 있습니다.
- 추가 이유 : 프론트 모바일 환경에서 차트 조회시 포트폴리오에 대한 디테일 정보가 필요하기 때문

* [fix] oauth 계정의 프로필 변경 유지 문제 해결 (#391)

* fix: oauth 계정의 프로필 변경 문제 해결

* #386 fix: local bucket 경로 변경

* #384 test: oauth 계정의 프로필 유지 테스트 구현

* [refactor] 알림 서비스 리팩토링 (#392)

* #350 refactor: List<NotificationCondition>을 제네릭 및 캡슐화

* #350 refactor: 목표 수익률에 대한 알림 전송 리팩토링

* #350 refactor: FirebaseNotificationProvider 추상화

- FirebasePortfolioNotificationProvider 구현
- FirebaseTargetPriceNotificationProvider 구현

* #350 test: 최대 손실율 달성 알림 테스트 추가

* #350 rename: 변수명 변경

* #350 refactor: notifyTargetGain 메서드 리팩토링

* #350 style: saveNotification 메서드 코드 정리

* #350 refactor: NotificationService의 알림 전송 기능 Notifiable 타입으로 추상화

- Notifiable 인터페이스 정의 및 Portfolio 클래스가 구현

* #350 refactor: TargetPriceNotification 추상화

* #350 refactor: Service의 리턴타입을 추상화

* #350 test: 최대 손실율 알림 테스트 추가

* #350 refactor: NotificationDispatcher 추가

- 해당 객체는 여러 NotificationProvider를 실행하여 다양한 알림 매체에게 알림 전송을 요청합니다.(ex, fcm, kakao, mail...)

* #350 style: code 정리

* #350 style: 코드 정리

* [fix] API 수정 (#393)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* [fix] Rest Docs 오타 수정 (#394)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* docs: Rest Docs 오타 수정

* [feat] 종목 스크롤 검색 (#396)

* build: QueryDSL 의존성 추가

* feat: getSliceOfStock

* test: 종목 검색 테스트 추가

* test: 종목 스크롤 검색 Rest Docs 추가

* docs: 종목 스크롤 검색 Rest Dcos 설명문 추가

* fix: JPAQueryFactory 의존성 문제 해결

* fix: 테스트 실패 해결

* [feat] 리소스 소유 검증문 추가  (#397)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* [fix] 테스트 실패 해결 (#398)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* fix: 테스트 실패 해결

* [fix] 종목 지정가 알림 문제 해결 (#400)

* fix: 종목 지정가 알림 문제 해결

- 종목 지정가 알림 발송시 referenceId를 저장하는데 종목 지정가의 referenceId는
tickerSymbol로 저장되어서 policy 검사에서 계속 통과됨

* test: 종목 지정가 시나리오 추가

* fix: messageIdMap 생성 방식 변경

- key값으로 기존 referenceId에서 idToSentHistory 값으로 변경
- idToSentHistory 형식
  - 종목 지정가 : targetPriceNotification:{targetPriceNotificationId}
  - 포트폴리오 : portfolioNotification:{referenceId}

* [refactor] 리소스 소유 검증 리팩토링 (#402)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* [rename] Rest Docs 수정  (#403)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* move: 종목 지정가와 지정가 알림 분리

* docs: rest docs 목차 정리

* docs: rest docs 목차 정리

* fix: dev -> production으로 변경

* fix: secret 갱신

---------

Co-authored-by: Yein Lee (이예인) <39490214+yein-lee@users.noreply.github.com>
Co-authored-by: yein-lee <agop0310@gmail.com>
Co-authored-by: yhpark95 <98851575+yhpark95@users.noreply.github.com>
yonghwankim-dev added a commit that referenced this issue Jul 23, 2024
* fix: #146 fix price null

* #145 refactor: 인증코드 확인 api 분리

* [feat] 계정 API, 프로필 정보 변경 API 구현 (#151)

* #149 feat: 비밀번호 변경 api 구현

* #149 feat: 로그아웃 후 계정 삭제

* #149 feat: 프로필 정보 변경 기능 구현

* #149 fix: controller 메소드 명 변경

* [feat] 배당금 데이터 계산 로직 개선 (#150)

* #123 feat: sse 전송 문제 해결

- SseEmitterKey 객체 추가
- SseEmitterManager 객체의 해시맵의 키 타입을 SseEmitterKey로 변경

* #123 fix: catch문 오타 수정

* #123 fix: sseEmitter가 리스너에서 예외 발생시 sseEmitterManager에서 emitter가 줄어들지 않는 문제 해결

- PortfolioEventListener에서 예외 발생시 해당 SseEmitter는 해시맵에서 제거되도록 변경하여 sseEmitter가 줄어들지 않는 문제를 해겷하였습니다.

* #123 test: 오타 수정

* #123 fix: 사용하지 않는 createRedisKey 메소드 제거

* #122 feat: 에상 배당금 메소드 구현

- 현재 년도의 배당금이 없는경우 작년도의 배당금 정보를 이용하여 예상 배당금을 계사하는 메소드를 구현하였습니다

* #122 feat: 예상 배당금 계산 메소드에 대한 테스트 코드 구현

* #122 feat: 포트폴리오 종목에 대한 예상 연간배당금 및 예상 연간배당금 비율 계산 메소드 구현

* #122 fix: 현재년도를 가지고 있는 LocalDate 데이터를 매개변수화

* #122 fix: 테스트 코드 오류 수정

* #122 feat: 포트폴리오의 연간배당금 계산 메소드 변경

* #122 test: 테스트 코드 단언문 변경

- 좀더 상세한 결과를 검증하도록 변경

* #122 docs: 포트폴리오 샘플 데이터에 create_at 컬럼 데이터 추가

* [feat] 포트폴리오 추가 및 수정시 입력정보 변경 (#152)

* #144 fix: 데이터 유효성 범위 변경

- 예산, 수익금액, 최대손실 금액 정보에 대하여 0또한 포함이 가능하도록 변경

* #144 test: 테스트 코드 수정

* #144 fix: 검증 조건 변경

* #144 test: 테스트 코드 직렬화/역직렬화 코드 수정

* #144 fix: 포트폴리오 수정 요청 리퀘스트의 데이터 유효성 변경

* #144 test: 테스트 코드 수정

- 입력값 파라미터화

* #144 feat: 메일전송여부를 관리하는 매니저 객체 생성

* #144 feat: 예산이 0원인지 검사하는 메소드 추가

* #144 test: 목표 수익 알림 메소드에 대한 예외 케이스 추가

* #144 test: 최대손실알림 메일 스케줄링 메소드 테스트 코드 추가

* #154 fix: 랜덤 닉네임 생성 길이 10자로 변경 (#155)

* #157 fix: 회원 프로필 변경 에러 해결 (#158)

* #157 fix: 컨트롤러에 value 및 consume 설정

* #157 fix: 회원가입 로깅 필터 추가

* #160 fix: 계정 삭제 버그 수정 (#161)

* #162 fix: 비밀번호 변경 문제 해결 (#163)

- 데이터베이스에 반영하도록 변경

* feat: #165 change watchlist name

* [fix] 회원 프로필 문제 해결 (#166)

* #164 test: 프로필 변경 테스트 코드 작성

* #162 fix: 메소드명 변경

- 실제 이미지 파일이 아닌 url값을 변경하는 것이기 때문에 updateProfileUrl로 변경함

* #164 fix: 불필요한 update jpql 제거

- Member 더티 체킹을 통해서 작동하기 때문에 제거함

* #164 feat: 프로필 변경 관련 에러 코드 추가

- 클라이언트로부터 변경할 정보를 받지 못한 경우 작동될 수 있음

* #164 refactor: 프로필 변경 서비스 리팩토링

- Optional을 통한 Null처리 수행함
- 닉네임 유효성 검사를 ProfileChangeRequest로 이전
- Optional Method Chain을 이용하여 최대한 가독성있게 변경
- extract 메소드 실행 과정중에 검증 수행
- application.yml 파일에 multipart file size를 명시하여 이미지가 너무 큰 경우 받을 수 없도록 명세함

* #164 fix: 공백 생성자 및 getter 추가

* #164 test: 프로필 변경 컨트롤러 테스트 코드 추가

* #164 fix: @Valid 애노테이션 추가

* #164 test: 프로필 변경 서비스 에외 테스트 추가

- 닉네임이 중복되는 경우 테스트 추가

* [refactor] 회원가입 서비스 리팩토링 및 테스트 코드 (#168)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* [fix] 대시보드 서비스 클래스 테스트 코드 문제 (#169)

* #167 test: 테스트 코드 실패 수정

- currentPriceManager 목객체를 추가하여 redis를 모킹 처리함

* #121 test: @beforeeach에 배당금 제거 추가

* [test] 회원가입 관련 서비스 테스트 코드 추가 (#170)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* #167 test: 닉네임 중복 검사 서비스 테스트 코드 추가

* #167 test: 닉네임 중복 검사 컨트롤러 테스트 코드 추가

* #167 test: 이메일 중복 검사 테스트 코드 추가

* #167 test: 이메일 중복 검사 컨트롤러 테스트 코드 추가

* #167 refactor: 유효성 검사 추가 및 검증코드 생성기 추가

* #167 test: 검증 코드 컨트롤러 및 서비스 테스트 코드 추가

* #167 feat: 검증코드 요청에 대한 유효성 검사 추가

* #167 test: 검증 코드 검사에 대한 컨트롤러 및 서비스 테스트 코드 추가

* feat: #165 change watchlist name, watchlist had stock api

* feat: #165 change watchlist name, watchlist had stock api

* test: #165 controller test

* test: #165 service test

* feat: #173 stock detail get

* test: #173 stock detail get controller test

* fix: #175 endpoint naming

* Update src/test/java/codesquad/fineants/spring/api/stock/StockRestControllerTest.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/stock/Stock.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/success/code/StockSuccessCode.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/stock/StockRestController.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refactor: #173 response name

* refactor: #173 isCurrentYearPaymentDate

* refactor: #173 isCurrentYearPaymentDate

* #179 fix: ssl 재발급 (#179)

* feat: #181 notification entity

* feat: #181 notification entity

* [feat] 프로필 정보 조회 (#180)

* #172 feat: 프로필 조회 서비스 구현

* #172 test: 프로필 조회 서비스 테스트 코드 구현

* Update src/main/java/codesquad/fineants/domain/fcm_token/FcmToken.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/notification_preference/NotificationPreference.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* chore: #181 notification ddl

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* FCM 토큰 등록 구현 (#193)

* #184 feat: FCM 토큰 등록 컨트롤러 및 서비스 구현

* #184 test: FCM 토큰 등록 서비스 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 예외 케이스 추가

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #184 feat: FCM 토큰 등록 서비스시 검증 추가

* #184 feat: FCM 토큰 검증을 별도의 메소드로 분리

* #184 test: FCM 토큰 등록 예외 케이스 테스트 코드 추가

* [feat] 회원 알림 목록 조회 (#194)

* #187 feat: Notification 엔티티 구현

* #184 feat: 회원 알림 목록 조회 API 및 서비스 구현

* #187 test: 회원 알림 목록 조회 서비스 테스트 코드 구현

* #187 test: 회원 알림 목록 조회 컨트롤러 테스트 코드 추가

* #187 docs: notification 스키마 추가

* [fix] 회원 알림 목록 조회 Response Body 변경 (#196)

* #195 feat: notification 엔티티에 type, referenceId 컬럼 추가

- type은 알림의 타입으로써 "stock" or "portfolio"의 값을 가진다
- referenceId는 type에 대한 참조값입니다. type="stock"인 경우 종목의 티커심볼을 가질 수 있고, type="portfolio"인 경우 포트폴리오의 등록번호일 수 있음

* #195 test: 샘플 데이터에 type, referenceId 추가

* #195 docs: 스키마 변경

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* [feat] 회원 알림 설정 수정 API 구현 (#198)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* [feat] 코드 분실 해결 (#199)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* #187 fix: 코드 분실 해결

* #187 fix: 코드 분실 해결

* #187 fix: 오타 수정

* [fix] 알림 설정 수정 API 문제 해결 (#202)

* #187 fix: 기존 로컬 회원도 수정시 데이터가 없는 경우 새로 반영하도록 추가

* #201 test: 알림 설정 수정 테스트 코드 추가

* #201 fix: 오타 수정

* #203 feat: 회원 알림 권한 검사 AOP 추가 (#204)

* #203 fix: 알림 모두 읽음 API에 권한 검사 AOP 추가 (#205)

* [feat] 알림 메시지 발송 API 구현 (#206)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* [fix] 오타 수정 (#207)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* #200 fix: 오타 수정

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* [fix] FcmToken 테이블 생성 쿼리 오타 수정 (#209)

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* [Refactor] 포트폴리오 종목 조회 리팩토링 (#211)

* #210 test: n+1 문제를 확인하기 위해 테스트 코드 수정

* #210 fix: 테스트 설명 수정

- 파일에 대한 영구 링크 가져오기 테스트

* #210 fix: 테스트 설명 원래대로 복구

* #210 refactor: @NamedEntityGraph 정의 및 @batchsize 추가

* #210 fix: 주석 제거

* #210 fix: 주석 제거

* [feat] 종목 지정가 알림 추가 (#212)

* #186 feat: 종목 지정가 알림 추가 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 추가 서비스 테스트 코드 구현

* #186 test: 종목 지정가 알림 추가 컨트롤럴 테스트코드 구현

* #186 fix: 로그인 filter 제외 경로 수정

- /apistocks/{tickerSymbol}/target-price/notifications 경로에 대하여 로그인을 요구하도록 변경

* #186 docs: init-schmea.sql 수정

- stock_target_price 테이블 갱신

* [feat] 종목 지정가 알림 제거 API 구현 (#214)

* #186 feat: 종목 지정가 알림 제거 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 제거 컨트롤러 및 서비스 테스트 코드 구현

* #213 fix: 회원 알림 API의 payload 변경 (#215)

- content -> body로 변경

* #216 fix: 종목 지정가 알림 경로 변경 (#217)

* #218 fix: 대시보드 오버뷰 리스폰스 바디에 totalGain 추가 (#219)

* [feat] 회원 종목 알림가 단일 제거 및 전체 제거 구현 (#221)

* #186 feat: 종목 지정가 알림 단일 제거 및 전체 제거 서비스 코드 구현

* #186 test: 테스트 코드 수정

* #186 test: 테스트 코드 수정

* [fix] 회원 알람 설정 수정 스펙 변경 (#222)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* [fix] fcm token 중복 검증 추가 (#223)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* [feat] FCM 토큰 등록 로직 변경 (#224)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 fix: fcm 토큰 등록 수정

- 토큰 등록시 이미 존재하는 경우 최신 활성화 시간을 갱신하도록 변경

* [fix] 검증문 제거 (#226)

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 fix: 검증문 제거

* #220 test: 메일 서비스 모킹

* [test] test container 적용 (#227)

* #153 docs: 프로파일별 yml 파일 분리

* #153 test: 테스트 클래스에 컨테이너 베이스 클래스 추가

* #153 docs: docker 설정 수정

* [feat] 종목 지정가 알림 목록 조회 API 구현 (#228)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* [feat] 종목 지정가 알림 정보 수정 API 구현 (#229)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* #186 feat: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 코드 구현

* #186 test: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 테스트 코드 구현

* [feat] 포트폴리오 활성 알림 목록 조회 API 구현 (#230)

* #188 feat: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 코드 구현

* #188 test: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 테스트코드 구현

* #156 docs: ci 수행시 test 추가 (#231)

* [feat] 회원 알림 API 변경 (#236)

* #235 feat: 회원 알림 메시지 발송 API 변경 및 조회 변경

- Notification 엔티티 테이블의 구조를 상속관계로 변경
- 회원 알림 메시지 발송 API에서 RequestBody의 구조 변경
- 회원 알림 목록 조회 API에서 ResponseBody 구조 변경

* #235 test: 테스트 코드 수정

- Notification 엔티티 구조 변경으로 인한 테스트 코드 수정

* [docs] Spring Rest Docs 환경 추가 (#237)

* #232 docs: Rest Docs 관련 설정 추가

* #232 docs: rest docs 적용

* [feat] FCM 토큰 삭제 (#238)

* #232 feat: FCM 토큰 삭제 API 구현

* #232 docs: FCM API Rest Docs 추가

* [feat] 종목 지정가 알림 특정 조회 API 구현 (#239)

* #234 feat: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 코드 구현

* #234 test: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 테스트 코드 구현

* #234 docs: 종목 지정가 알림 특정 조회 Rest Docs 추가

* [fix] 프로필 조회 및 종목 지정가 알림 특정 조회 로직 수정 (#242)

* #241 fix: 회원의 알림 설정 더미데이터에서 실제 데이터로 변경

* #241 fix: 종목 지정가 알림 특정 조회에서 종목을 찾지 못하면 빈 리스트 반환

* #241 fix: 테스트 코드에서 스케줄링 메소드가 실행되지 않도록 수정

* #189 docs: secret 최신 갱신

* #189 docs: oauth redirect url 변경

* [feat] 매입 이력 이벤트에 따른 Push Notification 구현 (#243)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #244 fix: 주석 추가

* [fix] QA 버그 해결 (#247)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #189 docs: oauth redirect url 변경

* #244 feat: 포트폴리오 목록 조회 API의 ResponseBody에 currentValuation 추가

* #244 fix: 포트폴리오 종목 추가 문제 해결

- 매입 이력 같이 추가시 purchaseDate로 변경
- 이미 존재하는 종목의 매입 이력 같이 추가시 중복 추가되지 않도록 함

* #244 fix: rest docs 수정

* [fix] qa 버그 문제 해결 (#248)

* #244 fix: 포트폴리오 종목 조회시 연배당률에 대한 소수점 2자리 실수로 변경

* #244 docs: 포트폴리오 종목 조회 API Rest Docs 추가

* #244 fix: 대시보드 오버뷰 문제 해결

- 0 나누기 문제 해결

* #244 docs: 대시보드 오버뷰 Rest Docs 추가

* #244 fix: 계정 삭제 문제 해결

* #244 docs: 계정 삭제 Rest Docs 추가

* #244 test: 테스트명 수정

* #244 feat: watchStock 추가시 현재가 갱신 이벤트 추가

* #244 feat: kisService mokcing 추가

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결 (#249)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* [fix] FCM 토큰 등록 문제 해결 (#250)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* #244 fix: FCM 토큰 등록 쓰레드 세이프 문제 해결

- fcm_token 테이블에 token, memberId 컬럼에 유니크 제약 조건 설정

* #244 docs: init-schema 수정

* [fix] 매입 이력 이벤트에 따른 Notification 저장 문제 해결 (#251)

* #244 fix: 포트폴리오 reachedTargetGain에 histories 전달하도록 변경

* #246 fix: 매입 이력 구매 이벤트에 따른 알림 미저장 문제 해결

- @TransactionalEventListener -> @eventlistener로 변경

* #246 feat: 최대손실율 달성 알림 로직 추가

* #246 fix: Push Notification 문제 해결

- Portfolio에 purchaseHistory 리스트를 전달하여 목표수익률 및 최대손실율 게산하도록 수행

* #246 test: 매입 이력 이벤트에 따른 최대손실율 알림 테스트 코드 추가

* #246 rename: 메소드간 순서 변경

* #246 refactor: 매입 이력 추가 리팩토링

- 현금이 부족한지 검증하는 부분 리팩토링
- 계산하는 부분을 PurchaseHistory로 이동

* #246 fix: 매입이력 이벤트 수정

- 한 회원의 여러 디바이스에 알림을 보내도 실제 알림 데이터는 1개만 저장되도록 수정

* �[docs] Rest Docs 추가 (#255)

* #253 fix: maximumIsActive 필드 삭제

* #253 fix: targetGainNotification 필드 삭제

* #253 docs: 사용자 소셜 로그인 추가

* #253 docs: Rest Docs 추가

* #253 docs: Rest Docs에 Authorization 추가

* #253 docs: adoc 파일에 request-header.adoc 추가

* #253 docs: init-schema.sql 변경

* [feat] 회원가입 및 프로필 수정 스펙 변경 (#256)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* [fix] 테스트 실패 수정 (#257)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* #254 fix: 테스트 실패 수정

* [fix] 포트폴리오 및 종목 지정가 알림 목록 조회 변경 (#258)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* [fix] 포트폴리오 활성 알림 목록 조회 변경 (#259)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* #252 docs: 포트폴리오 활성 알림 조회 서비스 수정

- 생성일자를 기준으로 오름차순 정렬

* [fix] API 응답에서 퍼센티지 데이터 수정 (#261)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* [fix] dailyGainRate 계산 로직 수정 (#262)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* #260 fix: dailyGainRate 수식 수정

* #260 fix: 연배당율 계산식 문제 해결

- 실수 타입으로 변경

* [docs] Rest Docs API 추가 (#263)

* #253 docs: 액세스 토큰 갱신 Rest Docs 추가

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 회원 관련 Rest Docs API 추가

* #253 docs: 포트폴리오 Rest Docs API 추가

* #253 docs: 테스트 코드 수정

* [docs] notification adoc 수정 (#264)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* [docs] Rest Docs 테스트 실패 해결 (#265)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* #253 docs: 테스트 실패 해결

* [feat] 종목 지정가 변경 이벤트에 따른 종목 지정가 알림 구현 (#266)

* #254 feat: 종목 지정가 알림 발송 API 구현

* #254 test: 종목 지정가 알림 발송 API 테스트 코드 구현

* #254 test: 종목 지정가 알림 발송 서비스 테스트 코드 수정

- 계정 알림 데이터 추가

* #254 docs: adoc 문서 수정

- 종목 지정가 알림 발송 API 추가
- 포트폴리오 목표 수익률 도달 알림 오타 수정

* #254 test: 테스트 코드 수정

- 종목 지정가 알림 발송 API Rest Docs 추가
- 현재가 읽기 메소드명 변경
- 오타 수정

* #254 refacotr: 현재가 읽기 메소드 수정

- 메소드명 수정
- 불필요한 메소드 제거
- 현재가 읽기시 리트라이 추가

* #254 refactor: 매입 이력 이벤트 수정

- SendingParamter에서 구체 클래스로 변경
- SendingParameter가 가지는 필드마다 다르기 때문에 변경, 하지만 다시 추상화하는 방법이 요구됨

* #254 feat: 종목 지정가 알림 서비스 및 이벤트 추가

* #254 feat: 현재가 변경에 따른 종목 지정가 도달 푸시 알림 서비스 추가

* #254 feat: Kis 서비스에 대한 컨트롤러 추가

* #254 feat: 종목 현재가 전체 갱신 API 추가

* #254 feat: 종목 가격 갱신 Rest Docs 추가

* #254 feat: 알림 전송 기록 관리 매니저 추가

* #254 docs: adoc 수정

* #254 feat: 종목 지정가 알림 서비스 수정

- 불필요한 쿼리가 발생하지 않도록 수정

* #254 rename: 종목 지정가 소스코드 이동

* #254 rename: 패키지 이동

* #254 feat: Redis에서 현재가 조회시 Optional로 래핑하여 반환하도록 함

* #254 feat: Redis에서 종가 조회시 Optional로 래핑해서 반환하도록 변경

* #254 style: 코드 정리

* #254 fix: 로깅 레벨 디버그 레벨로 변경

* #254 fix: 현재가 구하는 메소드 반환 타입 Long으로 변경

* #254 refactor: fetchCurrentPrice 리팩토링

- reactive적으로 변경

* #254 feat: 현재가 조회 API 추가

* #254 fix: 종가 리스폰스명 변경

* [refactor] 종목 지정가 푸시 알림 리팩토링 (#267)

* #254 refacotr: 현재가 갱신 리팩토링

* #254 fix: 코드 수정

* #254 fix: 알림 발송 간격 24시간으로 설정

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 비동기화

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 쓰레드풀 생성

* #254 test: 테스트 코드 실패 해결

* #254 docs: 오타 수정

- 종목 지정가 알림 발송 adoc 오타 수정

* #254 fix: 종목 지정가 도달 알림 문제 해결 (#269)

- 발송 이력 저장시 notificationId를 TargetPriceNotification.id로 변경

* [fix] 종목 지정가 도달 알림 예외 처리 (#270)

* #254 fix: Notification 엔티티 변경

- messageId를 추가하고 StockTargetPriceNotification 자식 클래스에는 targetPriceNotificationId를 추가

* #254 fix: Rest Docs 오타 수정

* #254 fix: firebase 알림 전송시 실패하는 경우의 로직 수정

- 대기하는 부분을 두번으로 나눠서 비동기로 처리하도록 변경

* #254 docs: adoc에 member_notification.adoc 추가

* #272 fix: 회원 알림 메시지 발송 API를 포트폴리오, 종목 지정가로 분리

* #272 fix: 종목 지정가 알림 에러 해결

- targetNotificationId가 db에 저장되지 않는 문제

* #273 fix: 종목 지정가 알림 버그 수정 (#274)

- notification 엔티티 데이터가 토큰이 여러개더라도 messageId를 기준으로 고유하게 1개만 저장하도록 저장

* [feat] 알람 기능 구현 (#276)

* #273 refactor: 목표수익률, 최대손실율, 종목 지정가 알림 기능 추상화

* #272 feat: 알림 기능 수행시 purchaseHistory set 메소드 추가

* #272 fix: 테스트 코드 수정

* #272 fix: 매입이력 이벤트시 매입이력 조회 문제 해결

- 지연로딩을 이미 언프록시하였기 때문에 새로 추가된 매입 이력을 리스트에 추가하도록 함

* #272 fix: 매입 이력 이벤트 알람을 위한 리스트 갱신 로직 추가

* #272 fix: adoc 정리

* #272 fix: 스키마 수정

* #272 fix: 오타 수정

* [fix] 포트폴리오 및 대시보드 차트 API에 대한 정렬 기준 적용 (#278)

* #277 fix: 회원가입 인증 코드 오타 수정

* #277 fix: 닉네임 중복 체크시 입력 형식 검사

* #277 fix: PortfolioStock -> PortfolioHolding으로 변경

* #277 feat: 포트폴리오 종목 Rest Docs 추가

* #277 feat: 매입이력 Rest Docs 추가

* #277 feat: 종목 Rest Docs 추가

* #277 feat: 포트폴리오 알람 활성화 Rest Docs 추가

* #277 test: 테스트 코드 실패 해결

* #277 feat: 종목 지정가 알림 Rest Docs 추가

* #277 feat: 회원 알림 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 대시보드 Rest Docs 추가

* #277 feat: 차트 정렬 적용

* #277 test: 테스트 코드 실패 해결

* #277 docs: adoc에 빠진 adoc 도메인 추가

* [reactor] sse 전송 방식 변경 (#281)

* #271 test: 테스트 코드 수정

* #277 fix: 불필요한 매개변수 제거 및 @tostring 추가

* #277 refactor: Sse 설계 변경

- RxJava 추가
- Observer, Observable 추가

* #271 feat: take 적용

* [feat] 주식 종목 최신화 구현 (#283)

* feat: 종목 최신화

* docs: 종목 최신화 rest docs 추가

* #279 feat: 서버 시작시 종목 최신화 추가

* #279 feat: 코드 정리

* #279 rename: aop 패키지 이동

* #279 docs: 테이블 스키마 변경

* #284 feat: cors 설정 (#285)

* #284 fix: www 서브 도메인 추가

* #284 fix: webconfig cors 설정 삭제

* #288 fix: Notification 객체 삭제 (#289)

* #288 fix: 종목 최신화 모듈 에러 해결 (#290)

- 기존 stocks 파일을 이용한 기존 종목 최신화 스케줄링 메서드가 최신화된 종목들을 삭제한 것이 원인

* #288 fix: Notification payload 추가, data 페이로드 제거

- data만 보내는 경우 fcm.options.link 사용하지 못하여 notification 추가로 변경

* [feat] Money 도메인 구현 (#294)

* #291 feat: Money, Count 도메인 추가

* fix: Money, Count 도입으로 인한 테스트 코드 수정

* fix: 테스트 코드 수정

* fix: money 직렬화시 정수 탕비으로 직렬화

* fix: Portfolio entity change the config with precision

* feat: add DataIntegrityViolationExpceiton handler

* fix: change column config

* #296 fix: 제약 조건 변경 (#297)

* fix: test 실패 해결

* fix: 포트폴리오 상세 조회 response property 변경 (#298)

* #293 feat: 종목의 현재가 및 종가 조회 메서드 수정 (#299)

- 가격이 redis에 없는 경우 kis 서버에 질의하여 가져오도록 합니다.

* #292 fix: 목표수익률 알림 버그 해결 (#301)

- 평가금액을 기준으로 수정

* [docs] README 수정 (#303)

* docs: README.md 수정

* docs: README.md 작성중

* docs: readme 트러블 슈팅 그외 작성

* docs: 트러블 슈팅 문서 작성

* docs: 핵심 기능 글 작성

* docs: 핵심 기능 그림 추가

* docs: image 링크 수정

* docs: 핵심 기능 프로세스 이미지 다시 추가

* docs: 핵시기능 접기 추가

* [bug] Watchlist 조회 문제 해결 (#305)

* fix: Watchlist 조회 버그 수정

* #304 docs: fineants-secret 버킷 이름 추가

* feat: 로그인시 provider 프로퍼티 추가 (#307)

* fix: response 수정 (#310)

* fix: nullpointer exception 해결 (#313)

* [feat] 배당 일정 최신화 추가 (#315)

* #286 feat: 배당금 일정 최신화 모듈 구현

* feat: 배당일정 최신화 서비스 구현

* fix: 알림 서비스에서 비동기 제거

* feat: 배당일정 최신화 구현

* feat: 배당 일정 최신화 구현

* fix: 주석 추가

* feat: 코드 정리

* fix: 코드 정리

* fix: money getter remove

* fix: REadWatchListsResponse 변경

* feat: localstack 추가

* #286 fix: 테스트 컨테이너 코드 수정

* fix: 테스트 컨테이너 코드 수정

* #286 fix: 테스트 프로파일 db 프로퍼티 제거

* #286 fix: 코드 정리

* fix: remove dividend restcontroller

* [fix] 배당 일정 최신화의 역직렬화 문제 해결 (#317)

* fix: 배당일정 가져오는 문제 해결

* #316 fix: 배당 일정 uri 추가

* fix: 포트폴리오 검증 수정 (#319)

* fix: 포트폴리오 검증 로직 수정 (#321)

* fix: 포트폴리오 활성 목록 조회 응답 변경 (#322)

* [feat] 포트폴리 알림 수정 (#324)

* feat: add resp property for portfolio's notify setting api

* feat: 포트폴리오 알림 수정 검증문 추가

* test: 테스트 코드 실패 해결

* #308 feat: ssl 인증서 갱신

* #308 feat: ssl password change

* Feat/#308 Moeny 도메인 추가 (#326)

* feat: currency 도메인 추가

* feat: money 도메인에 currency 추가

* test: 테스트 코드 실패 해결

* feat: 알림 메시지 내용 형식 변경

* #308 fix: compareto 코드 수정

* feat: RateDivision 구현

* fix: 타입 수정

* fix: change the type to the expression

* fix: code 정리

* #308 fix: DecimalFormat 변경

* #308 fix: DecimalFormat 패턴 변경

- 소수점 둘째자리까지는 출력, 네번째자리까지는 값이 있다면 출력

* fix: package 구조 변경 (#329)

* [fix] 테스트 컨테이너 설정 변경 (#330)

* fix: package 구조 변경

* fix: container 설정 변경

* [feat] 환율 관리 기능 구현 (#331)

* feat: ExcahngeRate 추가 기능 구현

* feat: exchange rate read, update, delete 구현

* feat: 환율 관리 기능 구현

* feat: 기준 통화 변경 구현

* #328 feat: 환율 삭제시 기준 통화 삭제할 수 없도록 변경

* #328 feat: 기준통화 변경 코드 개선

* fix: 테스트 코드 실패 해결

* [test] Redis 모킹 코드 제거 (#332)

* #311 docs: init-schmea 테이블 추가

* #311 test: redis 모킹 코드 제거

* #334 fix: API 수정 (#335)

* #336 docs: 설명 수정 (#337)

* #336 docs: 설명 수정 (#338)

* [fix] 오타 수정 (#339)

* #336 docs: 설명 수정

* #336 docs: 오타 수정

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정 (#341)

- id 추가

* [fix] 테스트 코드 오타 수정 (#342)

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정

- id 추가

* test: 테스트 코드 오타 수정

* [fix] 알림 수정 (#344)

* #333 feat: 종목 지정가 알림 로직 변경

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 feat: 포트폴리오 알림 로직 수정

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 fix: kis 프로퍼티명 버그 수정

* [docs] workflow 설정 (#346)

* #33 build: spring 2.7->3.1 java 11->17 변경

* #333 feat: Spring Security OAuth 로그인 구현

* #333 feat: SetupDataLoader 구현

* #333 feat: 메서드 매개변수 중 AuthMember를 MemberAuthentication로 변경 및 코드 정리

* #333 test: createPortfolio 메서드를 상위 클래스로 통합

* #333 refactor: 액세스 토큰 갱신 리팩토링

* feat: login rest docs 테스트 코드 구현

* #333 feat: 시큐리티 설정 추가

* docs: oauth rest docs

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* fix: controller security annto delete

* #333 feat: AjaxScurityCnofig 보안 설정

* #333 style: 체크 스타일에 따른 코드 정리

* #333 fix: 테스트 후 발생한 버그 수정

* #333 feat: 로그인후 쿠키에 토큰 설정

* #333 test: 테스트 실패 해결

* #333 feat: 로그아웃 버그 해결

* #333 docs: 권한 설명 추가

* #333 test: 테스트 코드 실패 해결

* #333 test: 회원에서 인증 및 회원가입 분리

* #333 fix: 관심 종목 문제 해결

* #333 feat: 서버 실행시 KRW 환율 셋업 구현

* #333 feat: release 프로파일 관련 프로퍼티 추가

* #333 docs: 배포 환경 설정

* #333 docs: docker-compose 설정 변경

* #333 docs: 서버 포트 설정 변경

* #333 docs: workflow jdk 11->17 설정

* #333 fix: 테스트 코드 실패 해결

* #333 docs: 프로젝트 파일 보관 장소 temp로 변경

* #333 docs: stop.sh 스크립트 수정

* #333 docs: after-install.sh 스크립트 수정

* #333 docs: docker-compose-release 파일 수정, container 이름 변경

* #333 docs: redis.conf 설정 변경

* #333 docs: redis.conf 포트 설정

* #333 docs: redis port 변경

* #333 docs: redis port 변경

* #333 docs: release cloud watch 삭제

* #333 docs: secret 갱신

* #333 docs: oauth 프로퍼티 수정

- local, test 프로파일에 대한 Redirect-url 추가

* #333 feat: secret 커밋 갱신

* #333 feat: @EnableWebSeucirty 추가

* #333 feat: 디버깅 레벨 debug로 수정

* #333 docs: 프로파일 문제 해결

* #333 fix: 로그인 과정중 로깅 추가

* #333 fix: 로그인 필터에 로깅 추가

* #333 fix: Ajax 시큐리티 설정 변경, HttpMethod 제거

* #333 fix: Ajax 시큐리티 설정 변경, dispatcherMatcherTypes에 비동기 및 포워드 추가

* #333 fix: AjaxSecurity 인가 설정 변경

* #333 fix: /error 경로 permitAll 설정

* #333 fix: CORS 비활성화

* #333 fix: dispatcherTypeMatcher에 비동기, 포워드, 에러 허용

* #333 fix: 로깅 추가

* #333 fix: PrintStream 설정

* #333 fix: 애노테이션 제거

* #333 fix: @order 애노테이션 메서드 레벨로 이동

* #333 fix: docs ignore 추가

* #333 fix: query parameter template 추가

* [refactor] 엔티티 생성자 수정 (#348)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #333 fix: dev 프로파일을 production으로 변경

* [fix] ci.cd 설정 수정 (#349)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #347 rename: 배당금 생성 메서드 부모 클래스로 이동

* #347 docs: ci.cd의 environment 이름 aws로 변경

* #333 fix: dev 프로파일을 production으로 변경

* fix: 배당금 생성 메서드 추가

* #351 fix: 쿠키 생성시 release 프로파일 한에서 secure 비활성화 설정 (#352)

* #351 fix: oauth 로그인 쿠키 설정 변경 (#354)

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* [fix] 쿠키 설정 변경 (#355)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* [feat] CORS 설정 추가 (#356)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* #351 fix: 로그인시 response body에 토큰 정보 제거

* #351 feat: CORS 설정 추가

* [fix] JWT 필터 변경 (#357)

* #351 feat: CORS 설정 추가

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 feat: 쿠키 생성 방식 변경

- SameSite=None으로 설정하기 위한 ResponseCookie 방식으로 변경

* #351 fix: SameSite 오타 수정

* #351 fix: secure true로 고정 설정

* [fix] 회원가입 버그 수정 (#358)

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 fix: 로그아웃 수정

* #351 feat: test database cleaner 추가

* #351 fix: 회원가입 버그 수정

- 회원 가입시 사용자 권한 기본 추가

* #351 test: 테스트 비활성화 처리 (#359)

* [fix] oauth 로그인 설정 수정 (#361)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* [fix] origin 추가 (#362)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* [fix] 로깅 추가 (#363)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* #351 fix: ofKakao 로깅 추가

* [feat] 토큰 갱신 기능 구현  (#364)

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 fix: kakao oauth 로그인 버그 수정

- profile 동의하지 않은 경우 null로 저장

* fix: 프로필 사진 null 처리 (#365)

* [docs] Rest Docs 수정 (#366)

* fix: 프로필 사진 null 처리

* #351 docs: 로그아웃 Rest Docs 수정

- requestHader에 쿠키 추가

* #351 docs: request-cookies 템플릿 추가

* docs: Rest Docs 수정

* #351 docs: request-headers adoc 제거

* feat: add the ssl (#368)

* [fix] SSL 재발급 (#369)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* [fix] SSL 재발급 (#370)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* #367 fix: ssl 삭제

* #367 fix: ssl 재발급

* fix: ssl 인증서 삭제

* feat: ssl 인증서 추가

* test: 테스트 코드 수정

* feat: github action timezone 설정

* [fix] 릴리즈 서버 포트 변경 (#374)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* [fix] 릴리즈 서버 포트 오타 수정 (#376)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* #367 fix: 릴리즈 서버의 포트 변경

* #371 fix: 액세스 토큰 갱신 수정 (#378)

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* [fix] 쿠키 설정 변경 (#379)

* #371 fix: 액세스 토큰 갱신 수정

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* #371 fix: 액세스 토큰 갱신 수정

- addHeader -> setHeader로 수정
- 하나의 Set-Cookie 헤더에 accessToken 및 refreshToken를 세미콜론으로 구분하여 저장

* #371 test: 테스트 코드 해결

* [fix] oauth 설정 오타 수정 (#380)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* [fix] kakao oauth redirect url 수정 (#381)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: 릴리즈 서버 포트 변경

* #371 fix: 릴리즈 서버 포트 변경

* [fix] 중복 Set-Cookie 생성 문제 해결 (#383)

* fix: method source 수정

* #371 fix: 토큰 갱신 문제 해결

- 필터를 대상으로 스프링 빈 등록으로 인하여 자동 등록됨

* [fix] 일반 로그인 실패 문제 해결 (#385)

* #384 fix: 로그인 실패시 400 응답되도록 수정

* #384 test: 로그인 예외 케이스 실패 해결

* #386 fix: cors 설정에서 오타 수정 (#387)

- PUT 메서드 방식 추가

* [test] 테스트 임시 비활성화  (#388)

* #386 fix: cors 설정에서 오타 수정

- PUT 메서드 방식 추가

* #386 test: 엑세스 토큰 갱신 테스트 2개 임시 비활성화

* [feat] 포트폴리오 차트 API 수정 (#389)

* #386 test: 액세스 토큰 갱신 테스트 코드 문제 해결

- redis에 액세스 토큰에 대한 로그아웃한 기록 존재한 것이 원인
- Date 타입 객체의 toInstant() 호출시 UTC 기준으로 반환된 것이 문제

* #386 feat: 차트 조회시 포트폴리오 디테일 프로퍼티 추가

- 포트폴리오 디테일 프로퍼티에는 등록번호(id), 증권사(securitiesFirm), 이름(name)이 포함되어 있습니다.
- 추가 이유 : 프론트 모바일 환경에서 차트 조회시 포트폴리오에 대한 디테일 정보가 필요하기 때문

* [fix] oauth 계정의 프로필 변경 유지 문제 해결 (#391)

* fix: oauth 계정의 프로필 변경 문제 해결

* #386 fix: local bucket 경로 변경

* #384 test: oauth 계정의 프로필 유지 테스트 구현

* [refactor] 알림 서비스 리팩토링 (#392)

* #350 refactor: List<NotificationCondition>을 제네릭 및 캡슐화

* #350 refactor: 목표 수익률에 대한 알림 전송 리팩토링

* #350 refactor: FirebaseNotificationProvider 추상화

- FirebasePortfolioNotificationProvider 구현
- FirebaseTargetPriceNotificationProvider 구현

* #350 test: 최대 손실율 달성 알림 테스트 추가

* #350 rename: 변수명 변경

* #350 refactor: notifyTargetGain 메서드 리팩토링

* #350 style: saveNotification 메서드 코드 정리

* #350 refactor: NotificationService의 알림 전송 기능 Notifiable 타입으로 추상화

- Notifiable 인터페이스 정의 및 Portfolio 클래스가 구현

* #350 refactor: TargetPriceNotification 추상화

* #350 refactor: Service의 리턴타입을 추상화

* #350 test: 최대 손실율 알림 테스트 추가

* #350 refactor: NotificationDispatcher 추가

- 해당 객체는 여러 NotificationProvider를 실행하여 다양한 알림 매체에게 알림 전송을 요청합니다.(ex, fcm, kakao, mail...)

* #350 style: code 정리

* #350 style: 코드 정리

* [fix] API 수정 (#393)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* [fix] Rest Docs 오타 수정 (#394)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* docs: Rest Docs 오타 수정

* [feat] 종목 스크롤 검색 (#396)

* build: QueryDSL 의존성 추가

* feat: getSliceOfStock

* test: 종목 검색 테스트 추가

* test: 종목 스크롤 검색 Rest Docs 추가

* docs: 종목 스크롤 검색 Rest Dcos 설명문 추가

* fix: JPAQueryFactory 의존성 문제 해결

* fix: 테스트 실패 해결

* [feat] 리소스 소유 검증문 추가  (#397)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* [fix] 테스트 실패 해결 (#398)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* fix: 테스트 실패 해결

* [fix] 종목 지정가 알림 문제 해결 (#400)

* fix: 종목 지정가 알림 문제 해결

- 종목 지정가 알림 발송시 referenceId를 저장하는데 종목 지정가의 referenceId는
tickerSymbol로 저장되어서 policy 검사에서 계속 통과됨

* test: 종목 지정가 시나리오 추가

* fix: messageIdMap 생성 방식 변경

- key값으로 기존 referenceId에서 idToSentHistory 값으로 변경
- idToSentHistory 형식
  - 종목 지정가 : targetPriceNotification:{targetPriceNotificationId}
  - 포트폴리오 : portfolioNotification:{referenceId}

* [refactor] 리소스 소유 검증 리팩토링 (#402)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* [rename] Rest Docs 수정  (#403)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* move: 종목 지정가와 지정가 알림 분리

* docs: rest docs 목차 정리

* docs: rest docs 목차 정리

* fix: dev -> production으로 변경

* fix: secret 갱신

* fix: db connection property 오타 수정

---------

Co-authored-by: yein-lee <agop0310@gmail.com>
Co-authored-by: Yein Lee (이예인) <39490214+yein-lee@users.noreply.github.com>
Co-authored-by: yhpark95 <98851575+yhpark95@users.noreply.github.com>
yonghwankim-dev added a commit that referenced this issue Jul 23, 2024
* #145 refactor: 인증코드 확인 api 분리

* [feat] 계정 API, 프로필 정보 변경 API 구현 (#151)

* #149 feat: 비밀번호 변경 api 구현

* #149 feat: 로그아웃 후 계정 삭제

* #149 feat: 프로필 정보 변경 기능 구현

* #149 fix: controller 메소드 명 변경

* [feat] 배당금 데이터 계산 로직 개선 (#150)

* #123 feat: sse 전송 문제 해결

- SseEmitterKey 객체 추가
- SseEmitterManager 객체의 해시맵의 키 타입을 SseEmitterKey로 변경

* #123 fix: catch문 오타 수정

* #123 fix: sseEmitter가 리스너에서 예외 발생시 sseEmitterManager에서 emitter가 줄어들지 않는 문제 해결

- PortfolioEventListener에서 예외 발생시 해당 SseEmitter는 해시맵에서 제거되도록 변경하여 sseEmitter가 줄어들지 않는 문제를 해겷하였습니다.

* #123 test: 오타 수정

* #123 fix: 사용하지 않는 createRedisKey 메소드 제거

* #122 feat: 에상 배당금 메소드 구현

- 현재 년도의 배당금이 없는경우 작년도의 배당금 정보를 이용하여 예상 배당금을 계사하는 메소드를 구현하였습니다

* #122 feat: 예상 배당금 계산 메소드에 대한 테스트 코드 구현

* #122 feat: 포트폴리오 종목에 대한 예상 연간배당금 및 예상 연간배당금 비율 계산 메소드 구현

* #122 fix: 현재년도를 가지고 있는 LocalDate 데이터를 매개변수화

* #122 fix: 테스트 코드 오류 수정

* #122 feat: 포트폴리오의 연간배당금 계산 메소드 변경

* #122 test: 테스트 코드 단언문 변경

- 좀더 상세한 결과를 검증하도록 변경

* #122 docs: 포트폴리오 샘플 데이터에 create_at 컬럼 데이터 추가

* [feat] 포트폴리오 추가 및 수정시 입력정보 변경 (#152)

* #144 fix: 데이터 유효성 범위 변경

- 예산, 수익금액, 최대손실 금액 정보에 대하여 0또한 포함이 가능하도록 변경

* #144 test: 테스트 코드 수정

* #144 fix: 검증 조건 변경

* #144 test: 테스트 코드 직렬화/역직렬화 코드 수정

* #144 fix: 포트폴리오 수정 요청 리퀘스트의 데이터 유효성 변경

* #144 test: 테스트 코드 수정

- 입력값 파라미터화

* #144 feat: 메일전송여부를 관리하는 매니저 객체 생성

* #144 feat: 예산이 0원인지 검사하는 메소드 추가

* #144 test: 목표 수익 알림 메소드에 대한 예외 케이스 추가

* #144 test: 최대손실알림 메일 스케줄링 메소드 테스트 코드 추가

* #154 fix: 랜덤 닉네임 생성 길이 10자로 변경 (#155)

* #157 fix: 회원 프로필 변경 에러 해결 (#158)

* #157 fix: 컨트롤러에 value 및 consume 설정

* #157 fix: 회원가입 로깅 필터 추가

* #160 fix: 계정 삭제 버그 수정 (#161)

* #162 fix: 비밀번호 변경 문제 해결 (#163)

- 데이터베이스에 반영하도록 변경

* feat: #165 change watchlist name

* [fix] 회원 프로필 문제 해결 (#166)

* #164 test: 프로필 변경 테스트 코드 작성

* #162 fix: 메소드명 변경

- 실제 이미지 파일이 아닌 url값을 변경하는 것이기 때문에 updateProfileUrl로 변경함

* #164 fix: 불필요한 update jpql 제거

- Member 더티 체킹을 통해서 작동하기 때문에 제거함

* #164 feat: 프로필 변경 관련 에러 코드 추가

- 클라이언트로부터 변경할 정보를 받지 못한 경우 작동될 수 있음

* #164 refactor: 프로필 변경 서비스 리팩토링

- Optional을 통한 Null처리 수행함
- 닉네임 유효성 검사를 ProfileChangeRequest로 이전
- Optional Method Chain을 이용하여 최대한 가독성있게 변경
- extract 메소드 실행 과정중에 검증 수행
- application.yml 파일에 multipart file size를 명시하여 이미지가 너무 큰 경우 받을 수 없도록 명세함

* #164 fix: 공백 생성자 및 getter 추가

* #164 test: 프로필 변경 컨트롤러 테스트 코드 추가

* #164 fix: @Valid 애노테이션 추가

* #164 test: 프로필 변경 서비스 에외 테스트 추가

- 닉네임이 중복되는 경우 테스트 추가

* [refactor] 회원가입 서비스 리팩토링 및 테스트 코드 (#168)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* [fix] 대시보드 서비스 클래스 테스트 코드 문제 (#169)

* #167 test: 테스트 코드 실패 수정

- currentPriceManager 목객체를 추가하여 redis를 모킹 처리함

* #121 test: @beforeeach에 배당금 제거 추가

* [test] 회원가입 관련 서비스 테스트 코드 추가 (#170)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* #167 test: 닉네임 중복 검사 서비스 테스트 코드 추가

* #167 test: 닉네임 중복 검사 컨트롤러 테스트 코드 추가

* #167 test: 이메일 중복 검사 테스트 코드 추가

* #167 test: 이메일 중복 검사 컨트롤러 테스트 코드 추가

* #167 refactor: 유효성 검사 추가 및 검증코드 생성기 추가

* #167 test: 검증 코드 컨트롤러 및 서비스 테스트 코드 추가

* #167 feat: 검증코드 요청에 대한 유효성 검사 추가

* #167 test: 검증 코드 검사에 대한 컨트롤러 및 서비스 테스트 코드 추가

* feat: #165 change watchlist name, watchlist had stock api

* feat: #165 change watchlist name, watchlist had stock api

* test: #165 controller test

* test: #165 service test

* feat: #173 stock detail get

* test: #173 stock detail get controller test

* fix: #175 endpoint naming

* Update src/test/java/codesquad/fineants/spring/api/stock/StockRestControllerTest.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/stock/Stock.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/success/code/StockSuccessCode.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/stock/StockRestController.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refactor: #173 response name

* refactor: #173 isCurrentYearPaymentDate

* refactor: #173 isCurrentYearPaymentDate

* #179 fix: ssl 재발급 (#179)

* feat: #181 notification entity

* feat: #181 notification entity

* [feat] 프로필 정보 조회 (#180)

* #172 feat: 프로필 조회 서비스 구현

* #172 test: 프로필 조회 서비스 테스트 코드 구현

* Update src/main/java/codesquad/fineants/domain/fcm_token/FcmToken.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/notification_preference/NotificationPreference.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* chore: #181 notification ddl

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* FCM 토큰 등록 구현 (#193)

* #184 feat: FCM 토큰 등록 컨트롤러 및 서비스 구현

* #184 test: FCM 토큰 등록 서비스 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 예외 케이스 추가

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #184 feat: FCM 토큰 등록 서비스시 검증 추가

* #184 feat: FCM 토큰 검증을 별도의 메소드로 분리

* #184 test: FCM 토큰 등록 예외 케이스 테스트 코드 추가

* [feat] 회원 알림 목록 조회 (#194)

* #187 feat: Notification 엔티티 구현

* #184 feat: 회원 알림 목록 조회 API 및 서비스 구현

* #187 test: 회원 알림 목록 조회 서비스 테스트 코드 구현

* #187 test: 회원 알림 목록 조회 컨트롤러 테스트 코드 추가

* #187 docs: notification 스키마 추가

* [fix] 회원 알림 목록 조회 Response Body 변경 (#196)

* #195 feat: notification 엔티티에 type, referenceId 컬럼 추가

- type은 알림의 타입으로써 "stock" or "portfolio"의 값을 가진다
- referenceId는 type에 대한 참조값입니다. type="stock"인 경우 종목의 티커심볼을 가질 수 있고, type="portfolio"인 경우 포트폴리오의 등록번호일 수 있음

* #195 test: 샘플 데이터에 type, referenceId 추가

* #195 docs: 스키마 변경

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* [feat] 회원 알림 설정 수정 API 구현 (#198)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* [feat] 코드 분실 해결 (#199)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* #187 fix: 코드 분실 해결

* #187 fix: 코드 분실 해결

* #187 fix: 오타 수정

* [fix] 알림 설정 수정 API 문제 해결 (#202)

* #187 fix: 기존 로컬 회원도 수정시 데이터가 없는 경우 새로 반영하도록 추가

* #201 test: 알림 설정 수정 테스트 코드 추가

* #201 fix: 오타 수정

* #203 feat: 회원 알림 권한 검사 AOP 추가 (#204)

* #203 fix: 알림 모두 읽음 API에 권한 검사 AOP 추가 (#205)

* [feat] 알림 메시지 발송 API 구현 (#206)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* [fix] 오타 수정 (#207)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* #200 fix: 오타 수정

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* [fix] FcmToken 테이블 생성 쿼리 오타 수정 (#209)

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* [Refactor] 포트폴리오 종목 조회 리팩토링 (#211)

* #210 test: n+1 문제를 확인하기 위해 테스트 코드 수정

* #210 fix: 테스트 설명 수정

- 파일에 대한 영구 링크 가져오기 테스트

* #210 fix: 테스트 설명 원래대로 복구

* #210 refactor: @NamedEntityGraph 정의 및 @batchsize 추가

* #210 fix: 주석 제거

* #210 fix: 주석 제거

* [feat] 종목 지정가 알림 추가 (#212)

* #186 feat: 종목 지정가 알림 추가 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 추가 서비스 테스트 코드 구현

* #186 test: 종목 지정가 알림 추가 컨트롤럴 테스트코드 구현

* #186 fix: 로그인 filter 제외 경로 수정

- /apistocks/{tickerSymbol}/target-price/notifications 경로에 대하여 로그인을 요구하도록 변경

* #186 docs: init-schmea.sql 수정

- stock_target_price 테이블 갱신

* [feat] 종목 지정가 알림 제거 API 구현 (#214)

* #186 feat: 종목 지정가 알림 제거 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 제거 컨트롤러 및 서비스 테스트 코드 구현

* #213 fix: 회원 알림 API의 payload 변경 (#215)

- content -> body로 변경

* #216 fix: 종목 지정가 알림 경로 변경 (#217)

* #218 fix: 대시보드 오버뷰 리스폰스 바디에 totalGain 추가 (#219)

* [feat] 회원 종목 알림가 단일 제거 및 전체 제거 구현 (#221)

* #186 feat: 종목 지정가 알림 단일 제거 및 전체 제거 서비스 코드 구현

* #186 test: 테스트 코드 수정

* #186 test: 테스트 코드 수정

* [fix] 회원 알람 설정 수정 스펙 변경 (#222)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* [fix] fcm token 중복 검증 추가 (#223)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* [feat] FCM 토큰 등록 로직 변경 (#224)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 fix: fcm 토큰 등록 수정

- 토큰 등록시 이미 존재하는 경우 최신 활성화 시간을 갱신하도록 변경

* [fix] 검증문 제거 (#226)

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 fix: 검증문 제거

* #220 test: 메일 서비스 모킹

* [test] test container 적용 (#227)

* #153 docs: 프로파일별 yml 파일 분리

* #153 test: 테스트 클래스에 컨테이너 베이스 클래스 추가

* #153 docs: docker 설정 수정

* [feat] 종목 지정가 알림 목록 조회 API 구현 (#228)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* [feat] 종목 지정가 알림 정보 수정 API 구현 (#229)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* #186 feat: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 코드 구현

* #186 test: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 테스트 코드 구현

* [feat] 포트폴리오 활성 알림 목록 조회 API 구현 (#230)

* #188 feat: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 코드 구현

* #188 test: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 테스트코드 구현

* #156 docs: ci 수행시 test 추가 (#231)

* [feat] 회원 알림 API 변경 (#236)

* #235 feat: 회원 알림 메시지 발송 API 변경 및 조회 변경

- Notification 엔티티 테이블의 구조를 상속관계로 변경
- 회원 알림 메시지 발송 API에서 RequestBody의 구조 변경
- 회원 알림 목록 조회 API에서 ResponseBody 구조 변경

* #235 test: 테스트 코드 수정

- Notification 엔티티 구조 변경으로 인한 테스트 코드 수정

* [docs] Spring Rest Docs 환경 추가 (#237)

* #232 docs: Rest Docs 관련 설정 추가

* #232 docs: rest docs 적용

* [feat] FCM 토큰 삭제 (#238)

* #232 feat: FCM 토큰 삭제 API 구현

* #232 docs: FCM API Rest Docs 추가

* [feat] 종목 지정가 알림 특정 조회 API 구현 (#239)

* #234 feat: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 코드 구현

* #234 test: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 테스트 코드 구현

* #234 docs: 종목 지정가 알림 특정 조회 Rest Docs 추가

* [fix] 프로필 조회 및 종목 지정가 알림 특정 조회 로직 수정 (#242)

* #241 fix: 회원의 알림 설정 더미데이터에서 실제 데이터로 변경

* #241 fix: 종목 지정가 알림 특정 조회에서 종목을 찾지 못하면 빈 리스트 반환

* #241 fix: 테스트 코드에서 스케줄링 메소드가 실행되지 않도록 수정

* #189 docs: secret 최신 갱신

* #189 docs: oauth redirect url 변경

* [feat] 매입 이력 이벤트에 따른 Push Notification 구현 (#243)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #244 fix: 주석 추가

* [fix] QA 버그 해결 (#247)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #189 docs: oauth redirect url 변경

* #244 feat: 포트폴리오 목록 조회 API의 ResponseBody에 currentValuation 추가

* #244 fix: 포트폴리오 종목 추가 문제 해결

- 매입 이력 같이 추가시 purchaseDate로 변경
- 이미 존재하는 종목의 매입 이력 같이 추가시 중복 추가되지 않도록 함

* #244 fix: rest docs 수정

* [fix] qa 버그 문제 해결 (#248)

* #244 fix: 포트폴리오 종목 조회시 연배당률에 대한 소수점 2자리 실수로 변경

* #244 docs: 포트폴리오 종목 조회 API Rest Docs 추가

* #244 fix: 대시보드 오버뷰 문제 해결

- 0 나누기 문제 해결

* #244 docs: 대시보드 오버뷰 Rest Docs 추가

* #244 fix: 계정 삭제 문제 해결

* #244 docs: 계정 삭제 Rest Docs 추가

* #244 test: 테스트명 수정

* #244 feat: watchStock 추가시 현재가 갱신 이벤트 추가

* #244 feat: kisService mokcing 추가

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결 (#249)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* [fix] FCM 토큰 등록 문제 해결 (#250)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* #244 fix: FCM 토큰 등록 쓰레드 세이프 문제 해결

- fcm_token 테이블에 token, memberId 컬럼에 유니크 제약 조건 설정

* #244 docs: init-schema 수정

* [fix] 매입 이력 이벤트에 따른 Notification 저장 문제 해결 (#251)

* #244 fix: 포트폴리오 reachedTargetGain에 histories 전달하도록 변경

* #246 fix: 매입 이력 구매 이벤트에 따른 알림 미저장 문제 해결

- @TransactionalEventListener -> @eventlistener로 변경

* #246 feat: 최대손실율 달성 알림 로직 추가

* #246 fix: Push Notification 문제 해결

- Portfolio에 purchaseHistory 리스트를 전달하여 목표수익률 및 최대손실율 게산하도록 수행

* #246 test: 매입 이력 이벤트에 따른 최대손실율 알림 테스트 코드 추가

* #246 rename: 메소드간 순서 변경

* #246 refactor: 매입 이력 추가 리팩토링

- 현금이 부족한지 검증하는 부분 리팩토링
- 계산하는 부분을 PurchaseHistory로 이동

* #246 fix: 매입이력 이벤트 수정

- 한 회원의 여러 디바이스에 알림을 보내도 실제 알림 데이터는 1개만 저장되도록 수정

* �[docs] Rest Docs 추가 (#255)

* #253 fix: maximumIsActive 필드 삭제

* #253 fix: targetGainNotification 필드 삭제

* #253 docs: 사용자 소셜 로그인 추가

* #253 docs: Rest Docs 추가

* #253 docs: Rest Docs에 Authorization 추가

* #253 docs: adoc 파일에 request-header.adoc 추가

* #253 docs: init-schema.sql 변경

* [feat] 회원가입 및 프로필 수정 스펙 변경 (#256)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* [fix] 테스트 실패 수정 (#257)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* #254 fix: 테스트 실패 수정

* [fix] 포트폴리오 및 종목 지정가 알림 목록 조회 변경 (#258)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* [fix] 포트폴리오 활성 알림 목록 조회 변경 (#259)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* #252 docs: 포트폴리오 활성 알림 조회 서비스 수정

- 생성일자를 기준으로 오름차순 정렬

* [fix] API 응답에서 퍼센티지 데이터 수정 (#261)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* [fix] dailyGainRate 계산 로직 수정 (#262)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* #260 fix: dailyGainRate 수식 수정

* #260 fix: 연배당율 계산식 문제 해결

- 실수 타입으로 변경

* [docs] Rest Docs API 추가 (#263)

* #253 docs: 액세스 토큰 갱신 Rest Docs 추가

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 회원 관련 Rest Docs API 추가

* #253 docs: 포트폴리오 Rest Docs API 추가

* #253 docs: 테스트 코드 수정

* [docs] notification adoc 수정 (#264)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* [docs] Rest Docs 테스트 실패 해결 (#265)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* #253 docs: 테스트 실패 해결

* [feat] 종목 지정가 변경 이벤트에 따른 종목 지정가 알림 구현 (#266)

* #254 feat: 종목 지정가 알림 발송 API 구현

* #254 test: 종목 지정가 알림 발송 API 테스트 코드 구현

* #254 test: 종목 지정가 알림 발송 서비스 테스트 코드 수정

- 계정 알림 데이터 추가

* #254 docs: adoc 문서 수정

- 종목 지정가 알림 발송 API 추가
- 포트폴리오 목표 수익률 도달 알림 오타 수정

* #254 test: 테스트 코드 수정

- 종목 지정가 알림 발송 API Rest Docs 추가
- 현재가 읽기 메소드명 변경
- 오타 수정

* #254 refacotr: 현재가 읽기 메소드 수정

- 메소드명 수정
- 불필요한 메소드 제거
- 현재가 읽기시 리트라이 추가

* #254 refactor: 매입 이력 이벤트 수정

- SendingParamter에서 구체 클래스로 변경
- SendingParameter가 가지는 필드마다 다르기 때문에 변경, 하지만 다시 추상화하는 방법이 요구됨

* #254 feat: 종목 지정가 알림 서비스 및 이벤트 추가

* #254 feat: 현재가 변경에 따른 종목 지정가 도달 푸시 알림 서비스 추가

* #254 feat: Kis 서비스에 대한 컨트롤러 추가

* #254 feat: 종목 현재가 전체 갱신 API 추가

* #254 feat: 종목 가격 갱신 Rest Docs 추가

* #254 feat: 알림 전송 기록 관리 매니저 추가

* #254 docs: adoc 수정

* #254 feat: 종목 지정가 알림 서비스 수정

- 불필요한 쿼리가 발생하지 않도록 수정

* #254 rename: 종목 지정가 소스코드 이동

* #254 rename: 패키지 이동

* #254 feat: Redis에서 현재가 조회시 Optional로 래핑하여 반환하도록 함

* #254 feat: Redis에서 종가 조회시 Optional로 래핑해서 반환하도록 변경

* #254 style: 코드 정리

* #254 fix: 로깅 레벨 디버그 레벨로 변경

* #254 fix: 현재가 구하는 메소드 반환 타입 Long으로 변경

* #254 refactor: fetchCurrentPrice 리팩토링

- reactive적으로 변경

* #254 feat: 현재가 조회 API 추가

* #254 fix: 종가 리스폰스명 변경

* [refactor] 종목 지정가 푸시 알림 리팩토링 (#267)

* #254 refacotr: 현재가 갱신 리팩토링

* #254 fix: 코드 수정

* #254 fix: 알림 발송 간격 24시간으로 설정

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 비동기화

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 쓰레드풀 생성

* #254 test: 테스트 코드 실패 해결

* #254 docs: 오타 수정

- 종목 지정가 알림 발송 adoc 오타 수정

* #254 fix: 종목 지정가 도달 알림 문제 해결 (#269)

- 발송 이력 저장시 notificationId를 TargetPriceNotification.id로 변경

* [fix] 종목 지정가 도달 알림 예외 처리 (#270)

* #254 fix: Notification 엔티티 변경

- messageId를 추가하고 StockTargetPriceNotification 자식 클래스에는 targetPriceNotificationId를 추가

* #254 fix: Rest Docs 오타 수정

* #254 fix: firebase 알림 전송시 실패하는 경우의 로직 수정

- 대기하는 부분을 두번으로 나눠서 비동기로 처리하도록 변경

* #254 docs: adoc에 member_notification.adoc 추가

* #272 fix: 회원 알림 메시지 발송 API를 포트폴리오, 종목 지정가로 분리

* #272 fix: 종목 지정가 알림 에러 해결

- targetNotificationId가 db에 저장되지 않는 문제

* #273 fix: 종목 지정가 알림 버그 수정 (#274)

- notification 엔티티 데이터가 토큰이 여러개더라도 messageId를 기준으로 고유하게 1개만 저장하도록 저장

* [feat] 알람 기능 구현 (#276)

* #273 refactor: 목표수익률, 최대손실율, 종목 지정가 알림 기능 추상화

* #272 feat: 알림 기능 수행시 purchaseHistory set 메소드 추가

* #272 fix: 테스트 코드 수정

* #272 fix: 매입이력 이벤트시 매입이력 조회 문제 해결

- 지연로딩을 이미 언프록시하였기 때문에 새로 추가된 매입 이력을 리스트에 추가하도록 함

* #272 fix: 매입 이력 이벤트 알람을 위한 리스트 갱신 로직 추가

* #272 fix: adoc 정리

* #272 fix: 스키마 수정

* #272 fix: 오타 수정

* [fix] 포트폴리오 및 대시보드 차트 API에 대한 정렬 기준 적용 (#278)

* #277 fix: 회원가입 인증 코드 오타 수정

* #277 fix: 닉네임 중복 체크시 입력 형식 검사

* #277 fix: PortfolioStock -> PortfolioHolding으로 변경

* #277 feat: 포트폴리오 종목 Rest Docs 추가

* #277 feat: 매입이력 Rest Docs 추가

* #277 feat: 종목 Rest Docs 추가

* #277 feat: 포트폴리오 알람 활성화 Rest Docs 추가

* #277 test: 테스트 코드 실패 해결

* #277 feat: 종목 지정가 알림 Rest Docs 추가

* #277 feat: 회원 알림 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 대시보드 Rest Docs 추가

* #277 feat: 차트 정렬 적용

* #277 test: 테스트 코드 실패 해결

* #277 docs: adoc에 빠진 adoc 도메인 추가

* [reactor] sse 전송 방식 변경 (#281)

* #271 test: 테스트 코드 수정

* #277 fix: 불필요한 매개변수 제거 및 @tostring 추가

* #277 refactor: Sse 설계 변경

- RxJava 추가
- Observer, Observable 추가

* #271 feat: take 적용

* [feat] 주식 종목 최신화 구현 (#283)

* feat: 종목 최신화

* docs: 종목 최신화 rest docs 추가

* #279 feat: 서버 시작시 종목 최신화 추가

* #279 feat: 코드 정리

* #279 rename: aop 패키지 이동

* #279 docs: 테이블 스키마 변경

* #284 feat: cors 설정 (#285)

* #284 fix: www 서브 도메인 추가

* #284 fix: webconfig cors 설정 삭제

* #288 fix: Notification 객체 삭제 (#289)

* #288 fix: 종목 최신화 모듈 에러 해결 (#290)

- 기존 stocks 파일을 이용한 기존 종목 최신화 스케줄링 메서드가 최신화된 종목들을 삭제한 것이 원인

* #288 fix: Notification payload 추가, data 페이로드 제거

- data만 보내는 경우 fcm.options.link 사용하지 못하여 notification 추가로 변경

* [feat] Money 도메인 구현 (#294)

* #291 feat: Money, Count 도메인 추가

* fix: Money, Count 도입으로 인한 테스트 코드 수정

* fix: 테스트 코드 수정

* fix: money 직렬화시 정수 탕비으로 직렬화

* fix: Portfolio entity change the config with precision

* feat: add DataIntegrityViolationExpceiton handler

* fix: change column config

* #296 fix: 제약 조건 변경 (#297)

* fix: test 실패 해결

* fix: 포트폴리오 상세 조회 response property 변경 (#298)

* #293 feat: 종목의 현재가 및 종가 조회 메서드 수정 (#299)

- 가격이 redis에 없는 경우 kis 서버에 질의하여 가져오도록 합니다.

* #292 fix: 목표수익률 알림 버그 해결 (#301)

- 평가금액을 기준으로 수정

* [docs] README 수정 (#303)

* docs: README.md 수정

* docs: README.md 작성중

* docs: readme 트러블 슈팅 그외 작성

* docs: 트러블 슈팅 문서 작성

* docs: 핵심 기능 글 작성

* docs: 핵심 기능 그림 추가

* docs: image 링크 수정

* docs: 핵심 기능 프로세스 이미지 다시 추가

* docs: 핵시기능 접기 추가

* [bug] Watchlist 조회 문제 해결 (#305)

* fix: Watchlist 조회 버그 수정

* #304 docs: fineants-secret 버킷 이름 추가

* feat: 로그인시 provider 프로퍼티 추가 (#307)

* fix: response 수정 (#310)

* fix: nullpointer exception 해결 (#313)

* [feat] 배당 일정 최신화 추가 (#315)

* #286 feat: 배당금 일정 최신화 모듈 구현

* feat: 배당일정 최신화 서비스 구현

* fix: 알림 서비스에서 비동기 제거

* feat: 배당일정 최신화 구현

* feat: 배당 일정 최신화 구현

* fix: 주석 추가

* feat: 코드 정리

* fix: 코드 정리

* fix: money getter remove

* fix: REadWatchListsResponse 변경

* feat: localstack 추가

* #286 fix: 테스트 컨테이너 코드 수정

* fix: 테스트 컨테이너 코드 수정

* #286 fix: 테스트 프로파일 db 프로퍼티 제거

* #286 fix: 코드 정리

* fix: remove dividend restcontroller

* [fix] 배당 일정 최신화의 역직렬화 문제 해결 (#317)

* fix: 배당일정 가져오는 문제 해결

* #316 fix: 배당 일정 uri 추가

* fix: 포트폴리오 검증 수정 (#319)

* fix: 포트폴리오 검증 로직 수정 (#321)

* fix: 포트폴리오 활성 목록 조회 응답 변경 (#322)

* [feat] 포트폴리 알림 수정 (#324)

* feat: add resp property for portfolio's notify setting api

* feat: 포트폴리오 알림 수정 검증문 추가

* test: 테스트 코드 실패 해결

* #308 feat: ssl 인증서 갱신

* #308 feat: ssl password change

* Feat/#308 Moeny 도메인 추가 (#326)

* feat: currency 도메인 추가

* feat: money 도메인에 currency 추가

* test: 테스트 코드 실패 해결

* feat: 알림 메시지 내용 형식 변경

* #308 fix: compareto 코드 수정

* feat: RateDivision 구현

* fix: 타입 수정

* fix: change the type to the expression

* fix: code 정리

* #308 fix: DecimalFormat 변경

* #308 fix: DecimalFormat 패턴 변경

- 소수점 둘째자리까지는 출력, 네번째자리까지는 값이 있다면 출력

* fix: package 구조 변경 (#329)

* [fix] 테스트 컨테이너 설정 변경 (#330)

* fix: package 구조 변경

* fix: container 설정 변경

* [feat] 환율 관리 기능 구현 (#331)

* feat: ExcahngeRate 추가 기능 구현

* feat: exchange rate read, update, delete 구현

* feat: 환율 관리 기능 구현

* feat: 기준 통화 변경 구현

* #328 feat: 환율 삭제시 기준 통화 삭제할 수 없도록 변경

* #328 feat: 기준통화 변경 코드 개선

* fix: 테스트 코드 실패 해결

* [test] Redis 모킹 코드 제거 (#332)

* #311 docs: init-schmea 테이블 추가

* #311 test: redis 모킹 코드 제거

* #334 fix: API 수정 (#335)

* #336 docs: 설명 수정 (#337)

* #336 docs: 설명 수정 (#338)

* [fix] 오타 수정 (#339)

* #336 docs: 설명 수정

* #336 docs: 오타 수정

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정 (#341)

- id 추가

* [fix] 테스트 코드 오타 수정 (#342)

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정

- id 추가

* test: 테스트 코드 오타 수정

* [fix] 알림 수정 (#344)

* #333 feat: 종목 지정가 알림 로직 변경

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 feat: 포트폴리오 알림 로직 수정

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 fix: kis 프로퍼티명 버그 수정

* [docs] workflow 설정 (#346)

* #33 build: spring 2.7->3.1 java 11->17 변경

* #333 feat: Spring Security OAuth 로그인 구현

* #333 feat: SetupDataLoader 구현

* #333 feat: 메서드 매개변수 중 AuthMember를 MemberAuthentication로 변경 및 코드 정리

* #333 test: createPortfolio 메서드를 상위 클래스로 통합

* #333 refactor: 액세스 토큰 갱신 리팩토링

* feat: login rest docs 테스트 코드 구현

* #333 feat: 시큐리티 설정 추가

* docs: oauth rest docs

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* fix: controller security annto delete

* #333 feat: AjaxScurityCnofig 보안 설정

* #333 style: 체크 스타일에 따른 코드 정리

* #333 fix: 테스트 후 발생한 버그 수정

* #333 feat: 로그인후 쿠키에 토큰 설정

* #333 test: 테스트 실패 해결

* #333 feat: 로그아웃 버그 해결

* #333 docs: 권한 설명 추가

* #333 test: 테스트 코드 실패 해결

* #333 test: 회원에서 인증 및 회원가입 분리

* #333 fix: 관심 종목 문제 해결

* #333 feat: 서버 실행시 KRW 환율 셋업 구현

* #333 feat: release 프로파일 관련 프로퍼티 추가

* #333 docs: 배포 환경 설정

* #333 docs: docker-compose 설정 변경

* #333 docs: 서버 포트 설정 변경

* #333 docs: workflow jdk 11->17 설정

* #333 fix: 테스트 코드 실패 해결

* #333 docs: 프로젝트 파일 보관 장소 temp로 변경

* #333 docs: stop.sh 스크립트 수정

* #333 docs: after-install.sh 스크립트 수정

* #333 docs: docker-compose-release 파일 수정, container 이름 변경

* #333 docs: redis.conf 설정 변경

* #333 docs: redis.conf 포트 설정

* #333 docs: redis port 변경

* #333 docs: redis port 변경

* #333 docs: release cloud watch 삭제

* #333 docs: secret 갱신

* #333 docs: oauth 프로퍼티 수정

- local, test 프로파일에 대한 Redirect-url 추가

* #333 feat: secret 커밋 갱신

* #333 feat: @EnableWebSeucirty 추가

* #333 feat: 디버깅 레벨 debug로 수정

* #333 docs: 프로파일 문제 해결

* #333 fix: 로그인 과정중 로깅 추가

* #333 fix: 로그인 필터에 로깅 추가

* #333 fix: Ajax 시큐리티 설정 변경, HttpMethod 제거

* #333 fix: Ajax 시큐리티 설정 변경, dispatcherMatcherTypes에 비동기 및 포워드 추가

* #333 fix: AjaxSecurity 인가 설정 변경

* #333 fix: /error 경로 permitAll 설정

* #333 fix: CORS 비활성화

* #333 fix: dispatcherTypeMatcher에 비동기, 포워드, 에러 허용

* #333 fix: 로깅 추가

* #333 fix: PrintStream 설정

* #333 fix: 애노테이션 제거

* #333 fix: @order 애노테이션 메서드 레벨로 이동

* #333 fix: docs ignore 추가

* #333 fix: query parameter template 추가

* [refactor] 엔티티 생성자 수정 (#348)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #333 fix: dev 프로파일을 production으로 변경

* [fix] ci.cd 설정 수정 (#349)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #347 rename: 배당금 생성 메서드 부모 클래스로 이동

* #347 docs: ci.cd의 environment 이름 aws로 변경

* #333 fix: dev 프로파일을 production으로 변경

* fix: 배당금 생성 메서드 추가

* #351 fix: 쿠키 생성시 release 프로파일 한에서 secure 비활성화 설정 (#352)

* #351 fix: oauth 로그인 쿠키 설정 변경 (#354)

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* [fix] 쿠키 설정 변경 (#355)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* [feat] CORS 설정 추가 (#356)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* #351 fix: 로그인시 response body에 토큰 정보 제거

* #351 feat: CORS 설정 추가

* [fix] JWT 필터 변경 (#357)

* #351 feat: CORS 설정 추가

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 feat: 쿠키 생성 방식 변경

- SameSite=None으로 설정하기 위한 ResponseCookie 방식으로 변경

* #351 fix: SameSite 오타 수정

* #351 fix: secure true로 고정 설정

* [fix] 회원가입 버그 수정 (#358)

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 fix: 로그아웃 수정

* #351 feat: test database cleaner 추가

* #351 fix: 회원가입 버그 수정

- 회원 가입시 사용자 권한 기본 추가

* #351 test: 테스트 비활성화 처리 (#359)

* [fix] oauth 로그인 설정 수정 (#361)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* [fix] origin 추가 (#362)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* [fix] 로깅 추가 (#363)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* #351 fix: ofKakao 로깅 추가

* [feat] 토큰 갱신 기능 구현  (#364)

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 fix: kakao oauth 로그인 버그 수정

- profile 동의하지 않은 경우 null로 저장

* fix: 프로필 사진 null 처리 (#365)

* [docs] Rest Docs 수정 (#366)

* fix: 프로필 사진 null 처리

* #351 docs: 로그아웃 Rest Docs 수정

- requestHader에 쿠키 추가

* #351 docs: request-cookies 템플릿 추가

* docs: Rest Docs 수정

* #351 docs: request-headers adoc 제거

* feat: add the ssl (#368)

* [fix] SSL 재발급 (#369)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* [fix] SSL 재발급 (#370)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* #367 fix: ssl 삭제

* #367 fix: ssl 재발급

* fix: ssl 인증서 삭제

* feat: ssl 인증서 추가

* test: 테스트 코드 수정

* feat: github action timezone 설정

* [fix] 릴리즈 서버 포트 변경 (#374)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* [fix] 릴리즈 서버 포트 오타 수정 (#376)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* #367 fix: 릴리즈 서버의 포트 변경

* #371 fix: 액세스 토큰 갱신 수정 (#378)

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* [fix] 쿠키 설정 변경 (#379)

* #371 fix: 액세스 토큰 갱신 수정

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* #371 fix: 액세스 토큰 갱신 수정

- addHeader -> setHeader로 수정
- 하나의 Set-Cookie 헤더에 accessToken 및 refreshToken를 세미콜론으로 구분하여 저장

* #371 test: 테스트 코드 해결

* [fix] oauth 설정 오타 수정 (#380)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* [fix] kakao oauth redirect url 수정 (#381)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: 릴리즈 서버 포트 변경

* #371 fix: 릴리즈 서버 포트 변경

* [fix] 중복 Set-Cookie 생성 문제 해결 (#383)

* fix: method source 수정

* #371 fix: 토큰 갱신 문제 해결

- 필터를 대상으로 스프링 빈 등록으로 인하여 자동 등록됨

* [fix] 일반 로그인 실패 문제 해결 (#385)

* #384 fix: 로그인 실패시 400 응답되도록 수정

* #384 test: 로그인 예외 케이스 실패 해결

* #386 fix: cors 설정에서 오타 수정 (#387)

- PUT 메서드 방식 추가

* [test] 테스트 임시 비활성화  (#388)

* #386 fix: cors 설정에서 오타 수정

- PUT 메서드 방식 추가

* #386 test: 엑세스 토큰 갱신 테스트 2개 임시 비활성화

* [feat] 포트폴리오 차트 API 수정 (#389)

* #386 test: 액세스 토큰 갱신 테스트 코드 문제 해결

- redis에 액세스 토큰에 대한 로그아웃한 기록 존재한 것이 원인
- Date 타입 객체의 toInstant() 호출시 UTC 기준으로 반환된 것이 문제

* #386 feat: 차트 조회시 포트폴리오 디테일 프로퍼티 추가

- 포트폴리오 디테일 프로퍼티에는 등록번호(id), 증권사(securitiesFirm), 이름(name)이 포함되어 있습니다.
- 추가 이유 : 프론트 모바일 환경에서 차트 조회시 포트폴리오에 대한 디테일 정보가 필요하기 때문

* [fix] oauth 계정의 프로필 변경 유지 문제 해결 (#391)

* fix: oauth 계정의 프로필 변경 문제 해결

* #386 fix: local bucket 경로 변경

* #384 test: oauth 계정의 프로필 유지 테스트 구현

* [refactor] 알림 서비스 리팩토링 (#392)

* #350 refactor: List<NotificationCondition>을 제네릭 및 캡슐화

* #350 refactor: 목표 수익률에 대한 알림 전송 리팩토링

* #350 refactor: FirebaseNotificationProvider 추상화

- FirebasePortfolioNotificationProvider 구현
- FirebaseTargetPriceNotificationProvider 구현

* #350 test: 최대 손실율 달성 알림 테스트 추가

* #350 rename: 변수명 변경

* #350 refactor: notifyTargetGain 메서드 리팩토링

* #350 style: saveNotification 메서드 코드 정리

* #350 refactor: NotificationService의 알림 전송 기능 Notifiable 타입으로 추상화

- Notifiable 인터페이스 정의 및 Portfolio 클래스가 구현

* #350 refactor: TargetPriceNotification 추상화

* #350 refactor: Service의 리턴타입을 추상화

* #350 test: 최대 손실율 알림 테스트 추가

* #350 refactor: NotificationDispatcher 추가

- 해당 객체는 여러 NotificationProvider를 실행하여 다양한 알림 매체에게 알림 전송을 요청합니다.(ex, fcm, kakao, mail...)

* #350 style: code 정리

* #350 style: 코드 정리

* [fix] API 수정 (#393)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* [fix] Rest Docs 오타 수정 (#394)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* docs: Rest Docs 오타 수정

* [feat] 종목 스크롤 검색 (#396)

* build: QueryDSL 의존성 추가

* feat: getSliceOfStock

* test: 종목 검색 테스트 추가

* test: 종목 스크롤 검색 Rest Docs 추가

* docs: 종목 스크롤 검색 Rest Dcos 설명문 추가

* fix: JPAQueryFactory 의존성 문제 해결

* fix: 테스트 실패 해결

* [feat] 리소스 소유 검증문 추가  (#397)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* [fix] 테스트 실패 해결 (#398)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* fix: 테스트 실패 해결

* [fix] 종목 지정가 알림 문제 해결 (#400)

* fix: 종목 지정가 알림 문제 해결

- 종목 지정가 알림 발송시 referenceId를 저장하는데 종목 지정가의 referenceId는
tickerSymbol로 저장되어서 policy 검사에서 계속 통과됨

* test: 종목 지정가 시나리오 추가

* fix: messageIdMap 생성 방식 변경

- key값으로 기존 referenceId에서 idToSentHistory 값으로 변경
- idToSentHistory 형식
  - 종목 지정가 : targetPriceNotification:{targetPriceNotificationId}
  - 포트폴리오 : portfolioNotification:{referenceId}

* [refactor] 리소스 소유 검증 리팩토링 (#402)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* [rename] Rest Docs 수정  (#403)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* move: 종목 지정가와 지정가 알림 분리

* docs: rest docs 목차 정리

* docs: rest docs 목차 정리

* fix: dev -> production으로 변경

* fix: secret 갱신

* fix: db connection property 오타 수정

* fix: @secured 제거

---------

Co-authored-by: Yein Lee (이예인) <39490214+yein-lee@users.noreply.github.com>
Co-authored-by: yhpark95 <98851575+yhpark95@users.noreply.github.com>
Co-authored-by: yein-lee <agop0310@gmail.com>
yonghwankim-dev added a commit that referenced this issue Jul 23, 2024
* #145 refactor: 인증코드 확인 api 분리

* [feat] 계정 API, 프로필 정보 변경 API 구현 (#151)

* #149 feat: 비밀번호 변경 api 구현

* #149 feat: 로그아웃 후 계정 삭제

* #149 feat: 프로필 정보 변경 기능 구현

* #149 fix: controller 메소드 명 변경

* [feat] 배당금 데이터 계산 로직 개선 (#150)

* #123 feat: sse 전송 문제 해결

- SseEmitterKey 객체 추가
- SseEmitterManager 객체의 해시맵의 키 타입을 SseEmitterKey로 변경

* #123 fix: catch문 오타 수정

* #123 fix: sseEmitter가 리스너에서 예외 발생시 sseEmitterManager에서 emitter가 줄어들지 않는 문제 해결

- PortfolioEventListener에서 예외 발생시 해당 SseEmitter는 해시맵에서 제거되도록 변경하여 sseEmitter가 줄어들지 않는 문제를 해겷하였습니다.

* #123 test: 오타 수정

* #123 fix: 사용하지 않는 createRedisKey 메소드 제거

* #122 feat: 에상 배당금 메소드 구현

- 현재 년도의 배당금이 없는경우 작년도의 배당금 정보를 이용하여 예상 배당금을 계사하는 메소드를 구현하였습니다

* #122 feat: 예상 배당금 계산 메소드에 대한 테스트 코드 구현

* #122 feat: 포트폴리오 종목에 대한 예상 연간배당금 및 예상 연간배당금 비율 계산 메소드 구현

* #122 fix: 현재년도를 가지고 있는 LocalDate 데이터를 매개변수화

* #122 fix: 테스트 코드 오류 수정

* #122 feat: 포트폴리오의 연간배당금 계산 메소드 변경

* #122 test: 테스트 코드 단언문 변경

- 좀더 상세한 결과를 검증하도록 변경

* #122 docs: 포트폴리오 샘플 데이터에 create_at 컬럼 데이터 추가

* [feat] 포트폴리오 추가 및 수정시 입력정보 변경 (#152)

* #144 fix: 데이터 유효성 범위 변경

- 예산, 수익금액, 최대손실 금액 정보에 대하여 0또한 포함이 가능하도록 변경

* #144 test: 테스트 코드 수정

* #144 fix: 검증 조건 변경

* #144 test: 테스트 코드 직렬화/역직렬화 코드 수정

* #144 fix: 포트폴리오 수정 요청 리퀘스트의 데이터 유효성 변경

* #144 test: 테스트 코드 수정

- 입력값 파라미터화

* #144 feat: 메일전송여부를 관리하는 매니저 객체 생성

* #144 feat: 예산이 0원인지 검사하는 메소드 추가

* #144 test: 목표 수익 알림 메소드에 대한 예외 케이스 추가

* #144 test: 최대손실알림 메일 스케줄링 메소드 테스트 코드 추가

* #154 fix: 랜덤 닉네임 생성 길이 10자로 변경 (#155)

* #157 fix: 회원 프로필 변경 에러 해결 (#158)

* #157 fix: 컨트롤러에 value 및 consume 설정

* #157 fix: 회원가입 로깅 필터 추가

* #160 fix: 계정 삭제 버그 수정 (#161)

* #162 fix: 비밀번호 변경 문제 해결 (#163)

- 데이터베이스에 반영하도록 변경

* feat: #165 change watchlist name

* [fix] 회원 프로필 문제 해결 (#166)

* #164 test: 프로필 변경 테스트 코드 작성

* #162 fix: 메소드명 변경

- 실제 이미지 파일이 아닌 url값을 변경하는 것이기 때문에 updateProfileUrl로 변경함

* #164 fix: 불필요한 update jpql 제거

- Member 더티 체킹을 통해서 작동하기 때문에 제거함

* #164 feat: 프로필 변경 관련 에러 코드 추가

- 클라이언트로부터 변경할 정보를 받지 못한 경우 작동될 수 있음

* #164 refactor: 프로필 변경 서비스 리팩토링

- Optional을 통한 Null처리 수행함
- 닉네임 유효성 검사를 ProfileChangeRequest로 이전
- Optional Method Chain을 이용하여 최대한 가독성있게 변경
- extract 메소드 실행 과정중에 검증 수행
- application.yml 파일에 multipart file size를 명시하여 이미지가 너무 큰 경우 받을 수 없도록 명세함

* #164 fix: 공백 생성자 및 getter 추가

* #164 test: 프로필 변경 컨트롤러 테스트 코드 추가

* #164 fix: @Valid 애노테이션 추가

* #164 test: 프로필 변경 서비스 에외 테스트 추가

- 닉네임이 중복되는 경우 테스트 추가

* [refactor] 회원가입 서비스 리팩토링 및 테스트 코드 (#168)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* [fix] 대시보드 서비스 클래스 테스트 코드 문제 (#169)

* #167 test: 테스트 코드 실패 수정

- currentPriceManager 목객체를 추가하여 redis를 모킹 처리함

* #121 test: @beforeeach에 배당금 제거 추가

* [test] 회원가입 관련 서비스 테스트 코드 추가 (#170)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* #167 test: 닉네임 중복 검사 서비스 테스트 코드 추가

* #167 test: 닉네임 중복 검사 컨트롤러 테스트 코드 추가

* #167 test: 이메일 중복 검사 테스트 코드 추가

* #167 test: 이메일 중복 검사 컨트롤러 테스트 코드 추가

* #167 refactor: 유효성 검사 추가 및 검증코드 생성기 추가

* #167 test: 검증 코드 컨트롤러 및 서비스 테스트 코드 추가

* #167 feat: 검증코드 요청에 대한 유효성 검사 추가

* #167 test: 검증 코드 검사에 대한 컨트롤러 및 서비스 테스트 코드 추가

* feat: #165 change watchlist name, watchlist had stock api

* feat: #165 change watchlist name, watchlist had stock api

* test: #165 controller test

* test: #165 service test

* feat: #173 stock detail get

* test: #173 stock detail get controller test

* fix: #175 endpoint naming

* Update src/test/java/codesquad/fineants/spring/api/stock/StockRestControllerTest.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/stock/Stock.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/success/code/StockSuccessCode.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/stock/StockRestController.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refactor: #173 response name

* refactor: #173 isCurrentYearPaymentDate

* refactor: #173 isCurrentYearPaymentDate

* #179 fix: ssl 재발급 (#179)

* feat: #181 notification entity

* feat: #181 notification entity

* [feat] 프로필 정보 조회 (#180)

* #172 feat: 프로필 조회 서비스 구현

* #172 test: 프로필 조회 서비스 테스트 코드 구현

* Update src/main/java/codesquad/fineants/domain/fcm_token/FcmToken.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/notification_preference/NotificationPreference.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* chore: #181 notification ddl

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* FCM 토큰 등록 구현 (#193)

* #184 feat: FCM 토큰 등록 컨트롤러 및 서비스 구현

* #184 test: FCM 토큰 등록 서비스 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 예외 케이스 추가

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #184 feat: FCM 토큰 등록 서비스시 검증 추가

* #184 feat: FCM 토큰 검증을 별도의 메소드로 분리

* #184 test: FCM 토큰 등록 예외 케이스 테스트 코드 추가

* [feat] 회원 알림 목록 조회 (#194)

* #187 feat: Notification 엔티티 구현

* #184 feat: 회원 알림 목록 조회 API 및 서비스 구현

* #187 test: 회원 알림 목록 조회 서비스 테스트 코드 구현

* #187 test: 회원 알림 목록 조회 컨트롤러 테스트 코드 추가

* #187 docs: notification 스키마 추가

* [fix] 회원 알림 목록 조회 Response Body 변경 (#196)

* #195 feat: notification 엔티티에 type, referenceId 컬럼 추가

- type은 알림의 타입으로써 "stock" or "portfolio"의 값을 가진다
- referenceId는 type에 대한 참조값입니다. type="stock"인 경우 종목의 티커심볼을 가질 수 있고, type="portfolio"인 경우 포트폴리오의 등록번호일 수 있음

* #195 test: 샘플 데이터에 type, referenceId 추가

* #195 docs: 스키마 변경

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* [feat] 회원 알림 설정 수정 API 구현 (#198)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* [feat] 코드 분실 해결 (#199)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* #187 fix: 코드 분실 해결

* #187 fix: 코드 분실 해결

* #187 fix: 오타 수정

* [fix] 알림 설정 수정 API 문제 해결 (#202)

* #187 fix: 기존 로컬 회원도 수정시 데이터가 없는 경우 새로 반영하도록 추가

* #201 test: 알림 설정 수정 테스트 코드 추가

* #201 fix: 오타 수정

* #203 feat: 회원 알림 권한 검사 AOP 추가 (#204)

* #203 fix: 알림 모두 읽음 API에 권한 검사 AOP 추가 (#205)

* [feat] 알림 메시지 발송 API 구현 (#206)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* [fix] 오타 수정 (#207)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* #200 fix: 오타 수정

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* [fix] FcmToken 테이블 생성 쿼리 오타 수정 (#209)

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* [Refactor] 포트폴리오 종목 조회 리팩토링 (#211)

* #210 test: n+1 문제를 확인하기 위해 테스트 코드 수정

* #210 fix: 테스트 설명 수정

- 파일에 대한 영구 링크 가져오기 테스트

* #210 fix: 테스트 설명 원래대로 복구

* #210 refactor: @NamedEntityGraph 정의 및 @batchsize 추가

* #210 fix: 주석 제거

* #210 fix: 주석 제거

* [feat] 종목 지정가 알림 추가 (#212)

* #186 feat: 종목 지정가 알림 추가 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 추가 서비스 테스트 코드 구현

* #186 test: 종목 지정가 알림 추가 컨트롤럴 테스트코드 구현

* #186 fix: 로그인 filter 제외 경로 수정

- /apistocks/{tickerSymbol}/target-price/notifications 경로에 대하여 로그인을 요구하도록 변경

* #186 docs: init-schmea.sql 수정

- stock_target_price 테이블 갱신

* [feat] 종목 지정가 알림 제거 API 구현 (#214)

* #186 feat: 종목 지정가 알림 제거 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 제거 컨트롤러 및 서비스 테스트 코드 구현

* #213 fix: 회원 알림 API의 payload 변경 (#215)

- content -> body로 변경

* #216 fix: 종목 지정가 알림 경로 변경 (#217)

* #218 fix: 대시보드 오버뷰 리스폰스 바디에 totalGain 추가 (#219)

* [feat] 회원 종목 알림가 단일 제거 및 전체 제거 구현 (#221)

* #186 feat: 종목 지정가 알림 단일 제거 및 전체 제거 서비스 코드 구현

* #186 test: 테스트 코드 수정

* #186 test: 테스트 코드 수정

* [fix] 회원 알람 설정 수정 스펙 변경 (#222)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* [fix] fcm token 중복 검증 추가 (#223)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* [feat] FCM 토큰 등록 로직 변경 (#224)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 fix: fcm 토큰 등록 수정

- 토큰 등록시 이미 존재하는 경우 최신 활성화 시간을 갱신하도록 변경

* [fix] 검증문 제거 (#226)

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 fix: 검증문 제거

* #220 test: 메일 서비스 모킹

* [test] test container 적용 (#227)

* #153 docs: 프로파일별 yml 파일 분리

* #153 test: 테스트 클래스에 컨테이너 베이스 클래스 추가

* #153 docs: docker 설정 수정

* [feat] 종목 지정가 알림 목록 조회 API 구현 (#228)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* [feat] 종목 지정가 알림 정보 수정 API 구현 (#229)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* #186 feat: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 코드 구현

* #186 test: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 테스트 코드 구현

* [feat] 포트폴리오 활성 알림 목록 조회 API 구현 (#230)

* #188 feat: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 코드 구현

* #188 test: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 테스트코드 구현

* #156 docs: ci 수행시 test 추가 (#231)

* [feat] 회원 알림 API 변경 (#236)

* #235 feat: 회원 알림 메시지 발송 API 변경 및 조회 변경

- Notification 엔티티 테이블의 구조를 상속관계로 변경
- 회원 알림 메시지 발송 API에서 RequestBody의 구조 변경
- 회원 알림 목록 조회 API에서 ResponseBody 구조 변경

* #235 test: 테스트 코드 수정

- Notification 엔티티 구조 변경으로 인한 테스트 코드 수정

* [docs] Spring Rest Docs 환경 추가 (#237)

* #232 docs: Rest Docs 관련 설정 추가

* #232 docs: rest docs 적용

* [feat] FCM 토큰 삭제 (#238)

* #232 feat: FCM 토큰 삭제 API 구현

* #232 docs: FCM API Rest Docs 추가

* [feat] 종목 지정가 알림 특정 조회 API 구현 (#239)

* #234 feat: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 코드 구현

* #234 test: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 테스트 코드 구현

* #234 docs: 종목 지정가 알림 특정 조회 Rest Docs 추가

* [fix] 프로필 조회 및 종목 지정가 알림 특정 조회 로직 수정 (#242)

* #241 fix: 회원의 알림 설정 더미데이터에서 실제 데이터로 변경

* #241 fix: 종목 지정가 알림 특정 조회에서 종목을 찾지 못하면 빈 리스트 반환

* #241 fix: 테스트 코드에서 스케줄링 메소드가 실행되지 않도록 수정

* #189 docs: secret 최신 갱신

* #189 docs: oauth redirect url 변경

* [feat] 매입 이력 이벤트에 따른 Push Notification 구현 (#243)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #244 fix: 주석 추가

* [fix] QA 버그 해결 (#247)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #189 docs: oauth redirect url 변경

* #244 feat: 포트폴리오 목록 조회 API의 ResponseBody에 currentValuation 추가

* #244 fix: 포트폴리오 종목 추가 문제 해결

- 매입 이력 같이 추가시 purchaseDate로 변경
- 이미 존재하는 종목의 매입 이력 같이 추가시 중복 추가되지 않도록 함

* #244 fix: rest docs 수정

* [fix] qa 버그 문제 해결 (#248)

* #244 fix: 포트폴리오 종목 조회시 연배당률에 대한 소수점 2자리 실수로 변경

* #244 docs: 포트폴리오 종목 조회 API Rest Docs 추가

* #244 fix: 대시보드 오버뷰 문제 해결

- 0 나누기 문제 해결

* #244 docs: 대시보드 오버뷰 Rest Docs 추가

* #244 fix: 계정 삭제 문제 해결

* #244 docs: 계정 삭제 Rest Docs 추가

* #244 test: 테스트명 수정

* #244 feat: watchStock 추가시 현재가 갱신 이벤트 추가

* #244 feat: kisService mokcing 추가

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결 (#249)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* [fix] FCM 토큰 등록 문제 해결 (#250)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* #244 fix: FCM 토큰 등록 쓰레드 세이프 문제 해결

- fcm_token 테이블에 token, memberId 컬럼에 유니크 제약 조건 설정

* #244 docs: init-schema 수정

* [fix] 매입 이력 이벤트에 따른 Notification 저장 문제 해결 (#251)

* #244 fix: 포트폴리오 reachedTargetGain에 histories 전달하도록 변경

* #246 fix: 매입 이력 구매 이벤트에 따른 알림 미저장 문제 해결

- @TransactionalEventListener -> @eventlistener로 변경

* #246 feat: 최대손실율 달성 알림 로직 추가

* #246 fix: Push Notification 문제 해결

- Portfolio에 purchaseHistory 리스트를 전달하여 목표수익률 및 최대손실율 게산하도록 수행

* #246 test: 매입 이력 이벤트에 따른 최대손실율 알림 테스트 코드 추가

* #246 rename: 메소드간 순서 변경

* #246 refactor: 매입 이력 추가 리팩토링

- 현금이 부족한지 검증하는 부분 리팩토링
- 계산하는 부분을 PurchaseHistory로 이동

* #246 fix: 매입이력 이벤트 수정

- 한 회원의 여러 디바이스에 알림을 보내도 실제 알림 데이터는 1개만 저장되도록 수정

* �[docs] Rest Docs 추가 (#255)

* #253 fix: maximumIsActive 필드 삭제

* #253 fix: targetGainNotification 필드 삭제

* #253 docs: 사용자 소셜 로그인 추가

* #253 docs: Rest Docs 추가

* #253 docs: Rest Docs에 Authorization 추가

* #253 docs: adoc 파일에 request-header.adoc 추가

* #253 docs: init-schema.sql 변경

* [feat] 회원가입 및 프로필 수정 스펙 변경 (#256)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* [fix] 테스트 실패 수정 (#257)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* #254 fix: 테스트 실패 수정

* [fix] 포트폴리오 및 종목 지정가 알림 목록 조회 변경 (#258)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* [fix] 포트폴리오 활성 알림 목록 조회 변경 (#259)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* #252 docs: 포트폴리오 활성 알림 조회 서비스 수정

- 생성일자를 기준으로 오름차순 정렬

* [fix] API 응답에서 퍼센티지 데이터 수정 (#261)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* [fix] dailyGainRate 계산 로직 수정 (#262)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* #260 fix: dailyGainRate 수식 수정

* #260 fix: 연배당율 계산식 문제 해결

- 실수 타입으로 변경

* [docs] Rest Docs API 추가 (#263)

* #253 docs: 액세스 토큰 갱신 Rest Docs 추가

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 회원 관련 Rest Docs API 추가

* #253 docs: 포트폴리오 Rest Docs API 추가

* #253 docs: 테스트 코드 수정

* [docs] notification adoc 수정 (#264)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* [docs] Rest Docs 테스트 실패 해결 (#265)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* #253 docs: 테스트 실패 해결

* [feat] 종목 지정가 변경 이벤트에 따른 종목 지정가 알림 구현 (#266)

* #254 feat: 종목 지정가 알림 발송 API 구현

* #254 test: 종목 지정가 알림 발송 API 테스트 코드 구현

* #254 test: 종목 지정가 알림 발송 서비스 테스트 코드 수정

- 계정 알림 데이터 추가

* #254 docs: adoc 문서 수정

- 종목 지정가 알림 발송 API 추가
- 포트폴리오 목표 수익률 도달 알림 오타 수정

* #254 test: 테스트 코드 수정

- 종목 지정가 알림 발송 API Rest Docs 추가
- 현재가 읽기 메소드명 변경
- 오타 수정

* #254 refacotr: 현재가 읽기 메소드 수정

- 메소드명 수정
- 불필요한 메소드 제거
- 현재가 읽기시 리트라이 추가

* #254 refactor: 매입 이력 이벤트 수정

- SendingParamter에서 구체 클래스로 변경
- SendingParameter가 가지는 필드마다 다르기 때문에 변경, 하지만 다시 추상화하는 방법이 요구됨

* #254 feat: 종목 지정가 알림 서비스 및 이벤트 추가

* #254 feat: 현재가 변경에 따른 종목 지정가 도달 푸시 알림 서비스 추가

* #254 feat: Kis 서비스에 대한 컨트롤러 추가

* #254 feat: 종목 현재가 전체 갱신 API 추가

* #254 feat: 종목 가격 갱신 Rest Docs 추가

* #254 feat: 알림 전송 기록 관리 매니저 추가

* #254 docs: adoc 수정

* #254 feat: 종목 지정가 알림 서비스 수정

- 불필요한 쿼리가 발생하지 않도록 수정

* #254 rename: 종목 지정가 소스코드 이동

* #254 rename: 패키지 이동

* #254 feat: Redis에서 현재가 조회시 Optional로 래핑하여 반환하도록 함

* #254 feat: Redis에서 종가 조회시 Optional로 래핑해서 반환하도록 변경

* #254 style: 코드 정리

* #254 fix: 로깅 레벨 디버그 레벨로 변경

* #254 fix: 현재가 구하는 메소드 반환 타입 Long으로 변경

* #254 refactor: fetchCurrentPrice 리팩토링

- reactive적으로 변경

* #254 feat: 현재가 조회 API 추가

* #254 fix: 종가 리스폰스명 변경

* [refactor] 종목 지정가 푸시 알림 리팩토링 (#267)

* #254 refacotr: 현재가 갱신 리팩토링

* #254 fix: 코드 수정

* #254 fix: 알림 발송 간격 24시간으로 설정

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 비동기화

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 쓰레드풀 생성

* #254 test: 테스트 코드 실패 해결

* #254 docs: 오타 수정

- 종목 지정가 알림 발송 adoc 오타 수정

* #254 fix: 종목 지정가 도달 알림 문제 해결 (#269)

- 발송 이력 저장시 notificationId를 TargetPriceNotification.id로 변경

* [fix] 종목 지정가 도달 알림 예외 처리 (#270)

* #254 fix: Notification 엔티티 변경

- messageId를 추가하고 StockTargetPriceNotification 자식 클래스에는 targetPriceNotificationId를 추가

* #254 fix: Rest Docs 오타 수정

* #254 fix: firebase 알림 전송시 실패하는 경우의 로직 수정

- 대기하는 부분을 두번으로 나눠서 비동기로 처리하도록 변경

* #254 docs: adoc에 member_notification.adoc 추가

* #272 fix: 회원 알림 메시지 발송 API를 포트폴리오, 종목 지정가로 분리

* #272 fix: 종목 지정가 알림 에러 해결

- targetNotificationId가 db에 저장되지 않는 문제

* #273 fix: 종목 지정가 알림 버그 수정 (#274)

- notification 엔티티 데이터가 토큰이 여러개더라도 messageId를 기준으로 고유하게 1개만 저장하도록 저장

* [feat] 알람 기능 구현 (#276)

* #273 refactor: 목표수익률, 최대손실율, 종목 지정가 알림 기능 추상화

* #272 feat: 알림 기능 수행시 purchaseHistory set 메소드 추가

* #272 fix: 테스트 코드 수정

* #272 fix: 매입이력 이벤트시 매입이력 조회 문제 해결

- 지연로딩을 이미 언프록시하였기 때문에 새로 추가된 매입 이력을 리스트에 추가하도록 함

* #272 fix: 매입 이력 이벤트 알람을 위한 리스트 갱신 로직 추가

* #272 fix: adoc 정리

* #272 fix: 스키마 수정

* #272 fix: 오타 수정

* [fix] 포트폴리오 및 대시보드 차트 API에 대한 정렬 기준 적용 (#278)

* #277 fix: 회원가입 인증 코드 오타 수정

* #277 fix: 닉네임 중복 체크시 입력 형식 검사

* #277 fix: PortfolioStock -> PortfolioHolding으로 변경

* #277 feat: 포트폴리오 종목 Rest Docs 추가

* #277 feat: 매입이력 Rest Docs 추가

* #277 feat: 종목 Rest Docs 추가

* #277 feat: 포트폴리오 알람 활성화 Rest Docs 추가

* #277 test: 테스트 코드 실패 해결

* #277 feat: 종목 지정가 알림 Rest Docs 추가

* #277 feat: 회원 알림 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 대시보드 Rest Docs 추가

* #277 feat: 차트 정렬 적용

* #277 test: 테스트 코드 실패 해결

* #277 docs: adoc에 빠진 adoc 도메인 추가

* [reactor] sse 전송 방식 변경 (#281)

* #271 test: 테스트 코드 수정

* #277 fix: 불필요한 매개변수 제거 및 @tostring 추가

* #277 refactor: Sse 설계 변경

- RxJava 추가
- Observer, Observable 추가

* #271 feat: take 적용

* [feat] 주식 종목 최신화 구현 (#283)

* feat: 종목 최신화

* docs: 종목 최신화 rest docs 추가

* #279 feat: 서버 시작시 종목 최신화 추가

* #279 feat: 코드 정리

* #279 rename: aop 패키지 이동

* #279 docs: 테이블 스키마 변경

* #284 feat: cors 설정 (#285)

* #284 fix: www 서브 도메인 추가

* #284 fix: webconfig cors 설정 삭제

* #288 fix: Notification 객체 삭제 (#289)

* #288 fix: 종목 최신화 모듈 에러 해결 (#290)

- 기존 stocks 파일을 이용한 기존 종목 최신화 스케줄링 메서드가 최신화된 종목들을 삭제한 것이 원인

* #288 fix: Notification payload 추가, data 페이로드 제거

- data만 보내는 경우 fcm.options.link 사용하지 못하여 notification 추가로 변경

* [feat] Money 도메인 구현 (#294)

* #291 feat: Money, Count 도메인 추가

* fix: Money, Count 도입으로 인한 테스트 코드 수정

* fix: 테스트 코드 수정

* fix: money 직렬화시 정수 탕비으로 직렬화

* fix: Portfolio entity change the config with precision

* feat: add DataIntegrityViolationExpceiton handler

* fix: change column config

* #296 fix: 제약 조건 변경 (#297)

* fix: test 실패 해결

* fix: 포트폴리오 상세 조회 response property 변경 (#298)

* #293 feat: 종목의 현재가 및 종가 조회 메서드 수정 (#299)

- 가격이 redis에 없는 경우 kis 서버에 질의하여 가져오도록 합니다.

* #292 fix: 목표수익률 알림 버그 해결 (#301)

- 평가금액을 기준으로 수정

* [docs] README 수정 (#303)

* docs: README.md 수정

* docs: README.md 작성중

* docs: readme 트러블 슈팅 그외 작성

* docs: 트러블 슈팅 문서 작성

* docs: 핵심 기능 글 작성

* docs: 핵심 기능 그림 추가

* docs: image 링크 수정

* docs: 핵심 기능 프로세스 이미지 다시 추가

* docs: 핵시기능 접기 추가

* [bug] Watchlist 조회 문제 해결 (#305)

* fix: Watchlist 조회 버그 수정

* #304 docs: fineants-secret 버킷 이름 추가

* feat: 로그인시 provider 프로퍼티 추가 (#307)

* fix: response 수정 (#310)

* fix: nullpointer exception 해결 (#313)

* [feat] 배당 일정 최신화 추가 (#315)

* #286 feat: 배당금 일정 최신화 모듈 구현

* feat: 배당일정 최신화 서비스 구현

* fix: 알림 서비스에서 비동기 제거

* feat: 배당일정 최신화 구현

* feat: 배당 일정 최신화 구현

* fix: 주석 추가

* feat: 코드 정리

* fix: 코드 정리

* fix: money getter remove

* fix: REadWatchListsResponse 변경

* feat: localstack 추가

* #286 fix: 테스트 컨테이너 코드 수정

* fix: 테스트 컨테이너 코드 수정

* #286 fix: 테스트 프로파일 db 프로퍼티 제거

* #286 fix: 코드 정리

* fix: remove dividend restcontroller

* [fix] 배당 일정 최신화의 역직렬화 문제 해결 (#317)

* fix: 배당일정 가져오는 문제 해결

* #316 fix: 배당 일정 uri 추가

* fix: 포트폴리오 검증 수정 (#319)

* fix: 포트폴리오 검증 로직 수정 (#321)

* fix: 포트폴리오 활성 목록 조회 응답 변경 (#322)

* [feat] 포트폴리 알림 수정 (#324)

* feat: add resp property for portfolio's notify setting api

* feat: 포트폴리오 알림 수정 검증문 추가

* test: 테스트 코드 실패 해결

* #308 feat: ssl 인증서 갱신

* #308 feat: ssl password change

* Feat/#308 Moeny 도메인 추가 (#326)

* feat: currency 도메인 추가

* feat: money 도메인에 currency 추가

* test: 테스트 코드 실패 해결

* feat: 알림 메시지 내용 형식 변경

* #308 fix: compareto 코드 수정

* feat: RateDivision 구현

* fix: 타입 수정

* fix: change the type to the expression

* fix: code 정리

* #308 fix: DecimalFormat 변경

* #308 fix: DecimalFormat 패턴 변경

- 소수점 둘째자리까지는 출력, 네번째자리까지는 값이 있다면 출력

* fix: package 구조 변경 (#329)

* [fix] 테스트 컨테이너 설정 변경 (#330)

* fix: package 구조 변경

* fix: container 설정 변경

* [feat] 환율 관리 기능 구현 (#331)

* feat: ExcahngeRate 추가 기능 구현

* feat: exchange rate read, update, delete 구현

* feat: 환율 관리 기능 구현

* feat: 기준 통화 변경 구현

* #328 feat: 환율 삭제시 기준 통화 삭제할 수 없도록 변경

* #328 feat: 기준통화 변경 코드 개선

* fix: 테스트 코드 실패 해결

* [test] Redis 모킹 코드 제거 (#332)

* #311 docs: init-schmea 테이블 추가

* #311 test: redis 모킹 코드 제거

* #334 fix: API 수정 (#335)

* #336 docs: 설명 수정 (#337)

* #336 docs: 설명 수정 (#338)

* [fix] 오타 수정 (#339)

* #336 docs: 설명 수정

* #336 docs: 오타 수정

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정 (#341)

- id 추가

* [fix] 테스트 코드 오타 수정 (#342)

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정

- id 추가

* test: 테스트 코드 오타 수정

* [fix] 알림 수정 (#344)

* #333 feat: 종목 지정가 알림 로직 변경

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 feat: 포트폴리오 알림 로직 수정

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 fix: kis 프로퍼티명 버그 수정

* [docs] workflow 설정 (#346)

* #33 build: spring 2.7->3.1 java 11->17 변경

* #333 feat: Spring Security OAuth 로그인 구현

* #333 feat: SetupDataLoader 구현

* #333 feat: 메서드 매개변수 중 AuthMember를 MemberAuthentication로 변경 및 코드 정리

* #333 test: createPortfolio 메서드를 상위 클래스로 통합

* #333 refactor: 액세스 토큰 갱신 리팩토링

* feat: login rest docs 테스트 코드 구현

* #333 feat: 시큐리티 설정 추가

* docs: oauth rest docs

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* fix: controller security annto delete

* #333 feat: AjaxScurityCnofig 보안 설정

* #333 style: 체크 스타일에 따른 코드 정리

* #333 fix: 테스트 후 발생한 버그 수정

* #333 feat: 로그인후 쿠키에 토큰 설정

* #333 test: 테스트 실패 해결

* #333 feat: 로그아웃 버그 해결

* #333 docs: 권한 설명 추가

* #333 test: 테스트 코드 실패 해결

* #333 test: 회원에서 인증 및 회원가입 분리

* #333 fix: 관심 종목 문제 해결

* #333 feat: 서버 실행시 KRW 환율 셋업 구현

* #333 feat: release 프로파일 관련 프로퍼티 추가

* #333 docs: 배포 환경 설정

* #333 docs: docker-compose 설정 변경

* #333 docs: 서버 포트 설정 변경

* #333 docs: workflow jdk 11->17 설정

* #333 fix: 테스트 코드 실패 해결

* #333 docs: 프로젝트 파일 보관 장소 temp로 변경

* #333 docs: stop.sh 스크립트 수정

* #333 docs: after-install.sh 스크립트 수정

* #333 docs: docker-compose-release 파일 수정, container 이름 변경

* #333 docs: redis.conf 설정 변경

* #333 docs: redis.conf 포트 설정

* #333 docs: redis port 변경

* #333 docs: redis port 변경

* #333 docs: release cloud watch 삭제

* #333 docs: secret 갱신

* #333 docs: oauth 프로퍼티 수정

- local, test 프로파일에 대한 Redirect-url 추가

* #333 feat: secret 커밋 갱신

* #333 feat: @EnableWebSeucirty 추가

* #333 feat: 디버깅 레벨 debug로 수정

* #333 docs: 프로파일 문제 해결

* #333 fix: 로그인 과정중 로깅 추가

* #333 fix: 로그인 필터에 로깅 추가

* #333 fix: Ajax 시큐리티 설정 변경, HttpMethod 제거

* #333 fix: Ajax 시큐리티 설정 변경, dispatcherMatcherTypes에 비동기 및 포워드 추가

* #333 fix: AjaxSecurity 인가 설정 변경

* #333 fix: /error 경로 permitAll 설정

* #333 fix: CORS 비활성화

* #333 fix: dispatcherTypeMatcher에 비동기, 포워드, 에러 허용

* #333 fix: 로깅 추가

* #333 fix: PrintStream 설정

* #333 fix: 애노테이션 제거

* #333 fix: @order 애노테이션 메서드 레벨로 이동

* #333 fix: docs ignore 추가

* #333 fix: query parameter template 추가

* [refactor] 엔티티 생성자 수정 (#348)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #333 fix: dev 프로파일을 production으로 변경

* [fix] ci.cd 설정 수정 (#349)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #347 rename: 배당금 생성 메서드 부모 클래스로 이동

* #347 docs: ci.cd의 environment 이름 aws로 변경

* #333 fix: dev 프로파일을 production으로 변경

* fix: 배당금 생성 메서드 추가

* #351 fix: 쿠키 생성시 release 프로파일 한에서 secure 비활성화 설정 (#352)

* #351 fix: oauth 로그인 쿠키 설정 변경 (#354)

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* [fix] 쿠키 설정 변경 (#355)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* [feat] CORS 설정 추가 (#356)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* #351 fix: 로그인시 response body에 토큰 정보 제거

* #351 feat: CORS 설정 추가

* [fix] JWT 필터 변경 (#357)

* #351 feat: CORS 설정 추가

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 feat: 쿠키 생성 방식 변경

- SameSite=None으로 설정하기 위한 ResponseCookie 방식으로 변경

* #351 fix: SameSite 오타 수정

* #351 fix: secure true로 고정 설정

* [fix] 회원가입 버그 수정 (#358)

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 fix: 로그아웃 수정

* #351 feat: test database cleaner 추가

* #351 fix: 회원가입 버그 수정

- 회원 가입시 사용자 권한 기본 추가

* #351 test: 테스트 비활성화 처리 (#359)

* [fix] oauth 로그인 설정 수정 (#361)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* [fix] origin 추가 (#362)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* [fix] 로깅 추가 (#363)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* #351 fix: ofKakao 로깅 추가

* [feat] 토큰 갱신 기능 구현  (#364)

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 fix: kakao oauth 로그인 버그 수정

- profile 동의하지 않은 경우 null로 저장

* fix: 프로필 사진 null 처리 (#365)

* [docs] Rest Docs 수정 (#366)

* fix: 프로필 사진 null 처리

* #351 docs: 로그아웃 Rest Docs 수정

- requestHader에 쿠키 추가

* #351 docs: request-cookies 템플릿 추가

* docs: Rest Docs 수정

* #351 docs: request-headers adoc 제거

* feat: add the ssl (#368)

* [fix] SSL 재발급 (#369)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* [fix] SSL 재발급 (#370)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* #367 fix: ssl 삭제

* #367 fix: ssl 재발급

* fix: ssl 인증서 삭제

* feat: ssl 인증서 추가

* test: 테스트 코드 수정

* feat: github action timezone 설정

* [fix] 릴리즈 서버 포트 변경 (#374)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* [fix] 릴리즈 서버 포트 오타 수정 (#376)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* #367 fix: 릴리즈 서버의 포트 변경

* #371 fix: 액세스 토큰 갱신 수정 (#378)

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* [fix] 쿠키 설정 변경 (#379)

* #371 fix: 액세스 토큰 갱신 수정

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* #371 fix: 액세스 토큰 갱신 수정

- addHeader -> setHeader로 수정
- 하나의 Set-Cookie 헤더에 accessToken 및 refreshToken를 세미콜론으로 구분하여 저장

* #371 test: 테스트 코드 해결

* [fix] oauth 설정 오타 수정 (#380)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* [fix] kakao oauth redirect url 수정 (#381)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: 릴리즈 서버 포트 변경

* #371 fix: 릴리즈 서버 포트 변경

* [fix] 중복 Set-Cookie 생성 문제 해결 (#383)

* fix: method source 수정

* #371 fix: 토큰 갱신 문제 해결

- 필터를 대상으로 스프링 빈 등록으로 인하여 자동 등록됨

* [fix] 일반 로그인 실패 문제 해결 (#385)

* #384 fix: 로그인 실패시 400 응답되도록 수정

* #384 test: 로그인 예외 케이스 실패 해결

* #386 fix: cors 설정에서 오타 수정 (#387)

- PUT 메서드 방식 추가

* [test] 테스트 임시 비활성화  (#388)

* #386 fix: cors 설정에서 오타 수정

- PUT 메서드 방식 추가

* #386 test: 엑세스 토큰 갱신 테스트 2개 임시 비활성화

* [feat] 포트폴리오 차트 API 수정 (#389)

* #386 test: 액세스 토큰 갱신 테스트 코드 문제 해결

- redis에 액세스 토큰에 대한 로그아웃한 기록 존재한 것이 원인
- Date 타입 객체의 toInstant() 호출시 UTC 기준으로 반환된 것이 문제

* #386 feat: 차트 조회시 포트폴리오 디테일 프로퍼티 추가

- 포트폴리오 디테일 프로퍼티에는 등록번호(id), 증권사(securitiesFirm), 이름(name)이 포함되어 있습니다.
- 추가 이유 : 프론트 모바일 환경에서 차트 조회시 포트폴리오에 대한 디테일 정보가 필요하기 때문

* [fix] oauth 계정의 프로필 변경 유지 문제 해결 (#391)

* fix: oauth 계정의 프로필 변경 문제 해결

* #386 fix: local bucket 경로 변경

* #384 test: oauth 계정의 프로필 유지 테스트 구현

* [refactor] 알림 서비스 리팩토링 (#392)

* #350 refactor: List<NotificationCondition>을 제네릭 및 캡슐화

* #350 refactor: 목표 수익률에 대한 알림 전송 리팩토링

* #350 refactor: FirebaseNotificationProvider 추상화

- FirebasePortfolioNotificationProvider 구현
- FirebaseTargetPriceNotificationProvider 구현

* #350 test: 최대 손실율 달성 알림 테스트 추가

* #350 rename: 변수명 변경

* #350 refactor: notifyTargetGain 메서드 리팩토링

* #350 style: saveNotification 메서드 코드 정리

* #350 refactor: NotificationService의 알림 전송 기능 Notifiable 타입으로 추상화

- Notifiable 인터페이스 정의 및 Portfolio 클래스가 구현

* #350 refactor: TargetPriceNotification 추상화

* #350 refactor: Service의 리턴타입을 추상화

* #350 test: 최대 손실율 알림 테스트 추가

* #350 refactor: NotificationDispatcher 추가

- 해당 객체는 여러 NotificationProvider를 실행하여 다양한 알림 매체에게 알림 전송을 요청합니다.(ex, fcm, kakao, mail...)

* #350 style: code 정리

* #350 style: 코드 정리

* [fix] API 수정 (#393)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* [fix] Rest Docs 오타 수정 (#394)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* docs: Rest Docs 오타 수정

* [feat] 종목 스크롤 검색 (#396)

* build: QueryDSL 의존성 추가

* feat: getSliceOfStock

* test: 종목 검색 테스트 추가

* test: 종목 스크롤 검색 Rest Docs 추가

* docs: 종목 스크롤 검색 Rest Dcos 설명문 추가

* fix: JPAQueryFactory 의존성 문제 해결

* fix: 테스트 실패 해결

* [feat] 리소스 소유 검증문 추가  (#397)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* [fix] 테스트 실패 해결 (#398)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* fix: 테스트 실패 해결

* [fix] 종목 지정가 알림 문제 해결 (#400)

* fix: 종목 지정가 알림 문제 해결

- 종목 지정가 알림 발송시 referenceId를 저장하는데 종목 지정가의 referenceId는
tickerSymbol로 저장되어서 policy 검사에서 계속 통과됨

* test: 종목 지정가 시나리오 추가

* fix: messageIdMap 생성 방식 변경

- key값으로 기존 referenceId에서 idToSentHistory 값으로 변경
- idToSentHistory 형식
  - 종목 지정가 : targetPriceNotification:{targetPriceNotificationId}
  - 포트폴리오 : portfolioNotification:{referenceId}

* [refactor] 리소스 소유 검증 리팩토링 (#402)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* [rename] Rest Docs 수정  (#403)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* move: 종목 지정가와 지정가 알림 분리

* docs: rest docs 목차 정리

* docs: rest docs 목차 정리

* fix: dev -> production으로 변경

* fix: secret 갱신

* fix: db connection property 오타 수정

* fix: @secured 제거

* fix: secret 갱신

---------

Co-authored-by: yhpark95 <98851575+yhpark95@users.noreply.github.com>
Co-authored-by: yein-lee <agop0310@gmail.com>
Co-authored-by: Yein Lee (이예인) <39490214+yein-lee@users.noreply.github.com>
yonghwankim-dev added a commit that referenced this issue Jul 23, 2024
* [feat] 배당금 데이터 계산 로직 개선 (#150)

* #123 feat: sse 전송 문제 해결

- SseEmitterKey 객체 추가
- SseEmitterManager 객체의 해시맵의 키 타입을 SseEmitterKey로 변경

* #123 fix: catch문 오타 수정

* #123 fix: sseEmitter가 리스너에서 예외 발생시 sseEmitterManager에서 emitter가 줄어들지 않는 문제 해결

- PortfolioEventListener에서 예외 발생시 해당 SseEmitter는 해시맵에서 제거되도록 변경하여 sseEmitter가 줄어들지 않는 문제를 해겷하였습니다.

* #123 test: 오타 수정

* #123 fix: 사용하지 않는 createRedisKey 메소드 제거

* #122 feat: 에상 배당금 메소드 구현

- 현재 년도의 배당금이 없는경우 작년도의 배당금 정보를 이용하여 예상 배당금을 계사하는 메소드를 구현하였습니다

* #122 feat: 예상 배당금 계산 메소드에 대한 테스트 코드 구현

* #122 feat: 포트폴리오 종목에 대한 예상 연간배당금 및 예상 연간배당금 비율 계산 메소드 구현

* #122 fix: 현재년도를 가지고 있는 LocalDate 데이터를 매개변수화

* #122 fix: 테스트 코드 오류 수정

* #122 feat: 포트폴리오의 연간배당금 계산 메소드 변경

* #122 test: 테스트 코드 단언문 변경

- 좀더 상세한 결과를 검증하도록 변경

* #122 docs: 포트폴리오 샘플 데이터에 create_at 컬럼 데이터 추가

* [feat] 포트폴리오 추가 및 수정시 입력정보 변경 (#152)

* #144 fix: 데이터 유효성 범위 변경

- 예산, 수익금액, 최대손실 금액 정보에 대하여 0또한 포함이 가능하도록 변경

* #144 test: 테스트 코드 수정

* #144 fix: 검증 조건 변경

* #144 test: 테스트 코드 직렬화/역직렬화 코드 수정

* #144 fix: 포트폴리오 수정 요청 리퀘스트의 데이터 유효성 변경

* #144 test: 테스트 코드 수정

- 입력값 파라미터화

* #144 feat: 메일전송여부를 관리하는 매니저 객체 생성

* #144 feat: 예산이 0원인지 검사하는 메소드 추가

* #144 test: 목표 수익 알림 메소드에 대한 예외 케이스 추가

* #144 test: 최대손실알림 메일 스케줄링 메소드 테스트 코드 추가

* #154 fix: 랜덤 닉네임 생성 길이 10자로 변경 (#155)

* #157 fix: 회원 프로필 변경 에러 해결 (#158)

* #157 fix: 컨트롤러에 value 및 consume 설정

* #157 fix: 회원가입 로깅 필터 추가

* #160 fix: 계정 삭제 버그 수정 (#161)

* #162 fix: 비밀번호 변경 문제 해결 (#163)

- 데이터베이스에 반영하도록 변경

* feat: #165 change watchlist name

* [fix] 회원 프로필 문제 해결 (#166)

* #164 test: 프로필 변경 테스트 코드 작성

* #162 fix: 메소드명 변경

- 실제 이미지 파일이 아닌 url값을 변경하는 것이기 때문에 updateProfileUrl로 변경함

* #164 fix: 불필요한 update jpql 제거

- Member 더티 체킹을 통해서 작동하기 때문에 제거함

* #164 feat: 프로필 변경 관련 에러 코드 추가

- 클라이언트로부터 변경할 정보를 받지 못한 경우 작동될 수 있음

* #164 refactor: 프로필 변경 서비스 리팩토링

- Optional을 통한 Null처리 수행함
- 닉네임 유효성 검사를 ProfileChangeRequest로 이전
- Optional Method Chain을 이용하여 최대한 가독성있게 변경
- extract 메소드 실행 과정중에 검증 수행
- application.yml 파일에 multipart file size를 명시하여 이미지가 너무 큰 경우 받을 수 없도록 명세함

* #164 fix: 공백 생성자 및 getter 추가

* #164 test: 프로필 변경 컨트롤러 테스트 코드 추가

* #164 fix: @Valid 애노테이션 추가

* #164 test: 프로필 변경 서비스 에외 테스트 추가

- 닉네임이 중복되는 경우 테스트 추가

* [refactor] 회원가입 서비스 리팩토링 및 테스트 코드 (#168)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* [fix] 대시보드 서비스 클래스 테스트 코드 문제 (#169)

* #167 test: 테스트 코드 실패 수정

- currentPriceManager 목객체를 추가하여 redis를 모킹 처리함

* #121 test: @beforeeach에 배당금 제거 추가

* [test] 회원가입 관련 서비스 테스트 코드 추가 (#170)

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

* #167 fix: 회원 에러 코드 메시지 오타 수정

* #167 fix: 회원 성공 코드 메시지 오타 수정

* #167 refactor: 일반 회원가입 컨트롤러 및 서비스 코드 리팩토링

- SignUpServiceRequest 추가
- 일반 회원가입 서비스에서 검증 코드 정리

* #167 feat: MissingServletRequestPartException 글로벌 핸들러 추가

* #167 test: 일반 회원가입 컨트롤러 테스트 코드 구현

- 프로필 없이 일반 회원가입 성공
- signupData 필드없이 회원가입 실패

* #167 test: 일반 회원가입 서비스 테스트 코드 구현

- 일반 회원가입 서비스 성공
- 닉네임, 이메일 중복되는 경우 예외 테스트
- 비밀번호 불일치 예외 테스트

* #167 test: 회원가입 서비스 예외 케이스 테스트 코드 추가

- 프로필 이미지 사이즈가 초과하는 경우 회원가입 불가능

* #167 test: 닉네임 중복 검사 서비스 테스트 코드 추가

* #167 test: 닉네임 중복 검사 컨트롤러 테스트 코드 추가

* #167 test: 이메일 중복 검사 테스트 코드 추가

* #167 test: 이메일 중복 검사 컨트롤러 테스트 코드 추가

* #167 refactor: 유효성 검사 추가 및 검증코드 생성기 추가

* #167 test: 검증 코드 컨트롤러 및 서비스 테스트 코드 추가

* #167 feat: 검증코드 요청에 대한 유효성 검사 추가

* #167 test: 검증 코드 검사에 대한 컨트롤러 및 서비스 테스트 코드 추가

* feat: #165 change watchlist name, watchlist had stock api

* feat: #165 change watchlist name, watchlist had stock api

* test: #165 controller test

* test: #165 service test

* feat: #173 stock detail get

* test: #173 stock detail get controller test

* fix: #175 endpoint naming

* Update src/test/java/codesquad/fineants/spring/api/stock/StockRestControllerTest.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/stock/Stock.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/success/code/StockSuccessCode.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/spring/api/stock/StockRestController.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refactor: #173 response name

* refactor: #173 isCurrentYearPaymentDate

* refactor: #173 isCurrentYearPaymentDate

* #179 fix: ssl 재발급 (#179)

* feat: #181 notification entity

* feat: #181 notification entity

* [feat] 프로필 정보 조회 (#180)

* #172 feat: 프로필 조회 서비스 구현

* #172 test: 프로필 조회 서비스 테스트 코드 구현

* Update src/main/java/codesquad/fineants/domain/fcm_token/FcmToken.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* Update src/main/java/codesquad/fineants/domain/notification_preference/NotificationPreference.java

Co-authored-by: YongHwan Kim <dragonbead95@naver.com>

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* refacotor: #181 notification preference naming

* chore: #181 notification ddl

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* FCM 토큰 등록 구현 (#193)

* #184 feat: FCM 토큰 등록 컨트롤러 및 서비스 구현

* #184 test: FCM 토큰 등록 서비스 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 테스트 코드 추가

* #184 test: FCM 토큰 등록 컨트롤러 예외 케이스 추가

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* [feat] FCM 관련 스프링 빈 구현 (#190)

* #172 chore: firebase 설정 파일 추가

* #185 feat: Firebase 스프링 빈 및 서비스 추가

* #185 feat: 로깅 추가

* #185 test: sendNotification 서비스 메소드 테스트 코드 추가

* #185 fix: FirebaseApp 중복 문제 해결

* #184 feat: FCM 토큰 등록 서비스시 검증 추가

* #184 feat: FCM 토큰 검증을 별도의 메소드로 분리

* #184 test: FCM 토큰 등록 예외 케이스 테스트 코드 추가

* [feat] 회원 알림 목록 조회 (#194)

* #187 feat: Notification 엔티티 구현

* #184 feat: 회원 알림 목록 조회 API 및 서비스 구현

* #187 test: 회원 알림 목록 조회 서비스 테스트 코드 구현

* #187 test: 회원 알림 목록 조회 컨트롤러 테스트 코드 추가

* #187 docs: notification 스키마 추가

* [fix] 회원 알림 목록 조회 Response Body 변경 (#196)

* #195 feat: notification 엔티티에 type, referenceId 컬럼 추가

- type은 알림의 타입으로써 "stock" or "portfolio"의 값을 가진다
- referenceId는 type에 대한 참조값입니다. type="stock"인 경우 종목의 티커심볼을 가질 수 있고, type="portfolio"인 경우 포트폴리오의 등록번호일 수 있음

* #195 test: 샘플 데이터에 type, referenceId 추가

* #195 docs: 스키마 변경

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* [feat] 회원 알림 설정 수정 API 구현 (#198)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* [feat] 코드 분실 해결 (#199)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 feat: 회원 알림 설정 수정 컨트롤러 및 서비스 구현

* #187 test: 회원 알림 설정 수정 서비스 테스트 코드 구현

* #187 test: 회원 알림 설정 수정 컨트롤러 테스트 코드 구현

* #187 fix: soft delete 제거

* #187 feat: 소셜 로그인 또는 회원가입시 기본 알림 설정 등록하도록 구현

* #187 feat: 회원 알림 설정 수정관련 서비스 테스트 코드 추가

* #187 fix: validation 애노테이션 추가

* [feat] 회원 알림 관련 API 구현 (#197)

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 test: 알림 모두 읽기 예외 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 test: 알림 모두 읽음 서비스 예외 테스트 추가

* #187 test: 알림 특정 읽음 컨트롤러 테스트 코드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 test: 알림 전체 삭제 컨트롤러 및 서비스 테스트 코드 구현

* #187 feat: 특정 알림 삭제 컨트롤러 메소드 구현

* #187 test: 특정 알림 삭제 컨트롤러 테스트 코드 구현

* #187 fix: isDeletd 조건문 추가

* #187 docs: notification 스키마 수정

* #187 feat: 회원 알림 모두 읽음 컨트롤러 및 서비스 구현

* #187 test: 알림 모두 읽기 테스트 코드 추가

* #187 feat: 존재하지 않는 알람 등록번호 검증 메소드 추가

* #187 feat: 알림 전체 삭제 컨트롤러 및 서비스 구현

* #187 fix: deleteAllBatch cnrk

* #187 fix: 코드 분실 해결

* #187 fix: 코드 분실 해결

* #187 fix: 오타 수정

* [fix] 알림 설정 수정 API 문제 해결 (#202)

* #187 fix: 기존 로컬 회원도 수정시 데이터가 없는 경우 새로 반영하도록 추가

* #201 test: 알림 설정 수정 테스트 코드 추가

* #201 fix: 오타 수정

* #203 feat: 회원 알림 권한 검사 AOP 추가 (#204)

* #203 fix: 알림 모두 읽음 API에 권한 검사 AOP 추가 (#205)

* [feat] 알림 메시지 발송 API 구현 (#206)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* [fix] 오타 수정 (#207)

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* #200 test: 알림 발송 서비스 예외 케이스 구현

* #200 test: 알림 메시지 발송 컨트롤러 테스트 코드 추가

* #200 fix: 오타 수정

* #200 feat: 알림 생성 및 전송 API 구현

* #200 feat: 알림 발송 서비스 실패시 예외 처리 구현

* [fix] FcmToken 테이블 생성 쿼리 오타 수정 (#209)

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* #208 fix: FcmToken 테이블 생성 쿼리 오타 수정

* [Refactor] 포트폴리오 종목 조회 리팩토링 (#211)

* #210 test: n+1 문제를 확인하기 위해 테스트 코드 수정

* #210 fix: 테스트 설명 수정

- 파일에 대한 영구 링크 가져오기 테스트

* #210 fix: 테스트 설명 원래대로 복구

* #210 refactor: @NamedEntityGraph 정의 및 @batchsize 추가

* #210 fix: 주석 제거

* #210 fix: 주석 제거

* [feat] 종목 지정가 알림 추가 (#212)

* #186 feat: 종목 지정가 알림 추가 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 추가 서비스 테스트 코드 구현

* #186 test: 종목 지정가 알림 추가 컨트롤럴 테스트코드 구현

* #186 fix: 로그인 filter 제외 경로 수정

- /apistocks/{tickerSymbol}/target-price/notifications 경로에 대하여 로그인을 요구하도록 변경

* #186 docs: init-schmea.sql 수정

- stock_target_price 테이블 갱신

* [feat] 종목 지정가 알림 제거 API 구현 (#214)

* #186 feat: 종목 지정가 알림 제거 컨트롤러 및 서비스 구현

* #186 test: 종목 지정가 알림 제거 컨트롤러 및 서비스 테스트 코드 구현

* #213 fix: 회원 알림 API의 payload 변경 (#215)

- content -> body로 변경

* #216 fix: 종목 지정가 알림 경로 변경 (#217)

* #218 fix: 대시보드 오버뷰 리스폰스 바디에 totalGain 추가 (#219)

* [feat] 회원 종목 알림가 단일 제거 및 전체 제거 구현 (#221)

* #186 feat: 종목 지정가 알림 단일 제거 및 전체 제거 서비스 코드 구현

* #186 test: 테스트 코드 수정

* #186 test: 테스트 코드 수정

* [fix] 회원 알람 설정 수정 스펙 변경 (#222)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* [fix] fcm token 중복 검증 추가 (#223)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* [feat] FCM 토큰 등록 로직 변경 (#224)

* #220 docs: 스키마 변경

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 test: 회원 알람 설정 수정 관련 테스트 코드 추가

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 fix: fcm 토큰 등록 수정

- 토큰 등록시 이미 존재하는 경우 최신 활성화 시간을 갱신하도록 변경

* [fix] 검증문 제거 (#226)

* #220 feat: 회원 알람 설정 수정시 모든 상태가 비활성화인 경우 FCM 토큰을 제거하도록 변경

* #220 feat: Fcm 토큰 중복 검증 추가

* #220 fix: 검증문 제거

* #220 test: 메일 서비스 모킹

* [test] test container 적용 (#227)

* #153 docs: 프로파일별 yml 파일 분리

* #153 test: 테스트 클래스에 컨테이너 베이스 클래스 추가

* #153 docs: docker 설정 수정

* [feat] 종목 지정가 알림 목록 조회 API 구현 (#228)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* [feat] 종목 지정가 알림 정보 수정 API 구현 (#229)

* #153 feat: query fetch join

* #186 test: 종목 지정가 알림 목록 조회 테스트 코드 추가

* #186 feat: 정렬 기준 추가

* #186 feat: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 코드 구현

* #186 test: 종목 지정가 알림 정보 수정 컨트롤러 및 서비스 테스트 코드 구현

* [feat] 포트폴리오 활성 알림 목록 조회 API 구현 (#230)

* #188 feat: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 코드 구현

* #188 test: 포트폴리오 활성 알림 목록 조회 컨트롤러 및 서비스 테스트코드 구현

* #156 docs: ci 수행시 test 추가 (#231)

* [feat] 회원 알림 API 변경 (#236)

* #235 feat: 회원 알림 메시지 발송 API 변경 및 조회 변경

- Notification 엔티티 테이블의 구조를 상속관계로 변경
- 회원 알림 메시지 발송 API에서 RequestBody의 구조 변경
- 회원 알림 목록 조회 API에서 ResponseBody 구조 변경

* #235 test: 테스트 코드 수정

- Notification 엔티티 구조 변경으로 인한 테스트 코드 수정

* [docs] Spring Rest Docs 환경 추가 (#237)

* #232 docs: Rest Docs 관련 설정 추가

* #232 docs: rest docs 적용

* [feat] FCM 토큰 삭제 (#238)

* #232 feat: FCM 토큰 삭제 API 구현

* #232 docs: FCM API Rest Docs 추가

* [feat] 종목 지정가 알림 특정 조회 API 구현 (#239)

* #234 feat: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 코드 구현

* #234 test: 종목 지정가 알림 특정 조회 컨트롤러 및 서비스 테스트 코드 구현

* #234 docs: 종목 지정가 알림 특정 조회 Rest Docs 추가

* [fix] 프로필 조회 및 종목 지정가 알림 특정 조회 로직 수정 (#242)

* #241 fix: 회원의 알림 설정 더미데이터에서 실제 데이터로 변경

* #241 fix: 종목 지정가 알림 특정 조회에서 종목을 찾지 못하면 빈 리스트 반환

* #241 fix: 테스트 코드에서 스케줄링 메소드가 실행되지 않도록 수정

* #189 docs: secret 최신 갱신

* #189 docs: oauth redirect url 변경

* [feat] 매입 이력 이벤트에 따른 Push Notification 구현 (#243)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #244 fix: 주석 추가

* [fix] QA 버그 해결 (#247)

* #189 rename: MailService 이동

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotification 서비스 구

* #189 test: PushNotification 서비스 테스트 추가

* #189 feat: 매입 이력 추가 이벤트에 따른 PushNotificationEvent 구현

* #189 feat: 매입 이력 수정, 삭제에 따른 PushNotificationEvent 추가

* #189 feat: 알림 서비스에서 Notification 데이터 추가하도록 구현

* #189 test: 알림 관련 테스트 코드 추가

* #189 feat: 알림 컨트롤러 및 테스트 코드 추가

* #189 docs: 알림 최대손실율 전송 Rest Docs 추가

* #189 feat: 메시지 전송 실패시 fcm 토큰 삭제

* #189 feat: 최대 손실율 도달 알림에서 메시지 전송 실패시 토큰 삭제

* #189 test: 최대 손실율 도달 알림 관련 예외 케이스 추가

* #189 docs: oauth redirect url 변경

* #244 feat: 포트폴리오 목록 조회 API의 ResponseBody에 currentValuation 추가

* #244 fix: 포트폴리오 종목 추가 문제 해결

- 매입 이력 같이 추가시 purchaseDate로 변경
- 이미 존재하는 종목의 매입 이력 같이 추가시 중복 추가되지 않도록 함

* #244 fix: rest docs 수정

* [fix] qa 버그 문제 해결 (#248)

* #244 fix: 포트폴리오 종목 조회시 연배당률에 대한 소수점 2자리 실수로 변경

* #244 docs: 포트폴리오 종목 조회 API Rest Docs 추가

* #244 fix: 대시보드 오버뷰 문제 해결

- 0 나누기 문제 해결

* #244 docs: 대시보드 오버뷰 Rest Docs 추가

* #244 fix: 계정 삭제 문제 해결

* #244 docs: 계정 삭제 Rest Docs 추가

* #244 test: 테스트명 수정

* #244 feat: watchStock 추가시 현재가 갱신 이벤트 추가

* #244 feat: kisService mokcing 추가

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결 (#249)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* [fix] FCM 토큰 등록 문제 해결 (#250)

* #244 fix: 포트폴리오의 예산이 0원인 경우 포트폴리오 차트 문제 해결

- 0 나누기 문제

* #244 fix: 신규 회원가입시 NotificationPreference 설정을 모두 비활성화로 변경

* #244 test: 테스트 추가

* #244 fix: FCM 토큰 등록 쓰레드 세이프 문제 해결

- fcm_token 테이블에 token, memberId 컬럼에 유니크 제약 조건 설정

* #244 docs: init-schema 수정

* [fix] 매입 이력 이벤트에 따른 Notification 저장 문제 해결 (#251)

* #244 fix: 포트폴리오 reachedTargetGain에 histories 전달하도록 변경

* #246 fix: 매입 이력 구매 이벤트에 따른 알림 미저장 문제 해결

- @TransactionalEventListener -> @eventlistener로 변경

* #246 feat: 최대손실율 달성 알림 로직 추가

* #246 fix: Push Notification 문제 해결

- Portfolio에 purchaseHistory 리스트를 전달하여 목표수익률 및 최대손실율 게산하도록 수행

* #246 test: 매입 이력 이벤트에 따른 최대손실율 알림 테스트 코드 추가

* #246 rename: 메소드간 순서 변경

* #246 refactor: 매입 이력 추가 리팩토링

- 현금이 부족한지 검증하는 부분 리팩토링
- 계산하는 부분을 PurchaseHistory로 이동

* #246 fix: 매입이력 이벤트 수정

- 한 회원의 여러 디바이스에 알림을 보내도 실제 알림 데이터는 1개만 저장되도록 수정

* �[docs] Rest Docs 추가 (#255)

* #253 fix: maximumIsActive 필드 삭제

* #253 fix: targetGainNotification 필드 삭제

* #253 docs: 사용자 소셜 로그인 추가

* #253 docs: Rest Docs 추가

* #253 docs: Rest Docs에 Authorization 추가

* #253 docs: adoc 파일에 request-header.adoc 추가

* #253 docs: init-schema.sql 변경

* [feat] 회원가입 및 프로필 수정 스펙 변경 (#256)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* [fix] 테스트 실패 수정 (#257)

* #254 feat: 일반 회원가입 수정

- 회원가입시 이미지 파일의 이름이 default.png가 아닌 경우에는 새로운 이미지를 업로드하고 아닌 경우 기본 프로필 이미지 사진의 객체 URL을 사용합니다.

* #254 feat: 회원 프로필 수정 스펙 변경

* #254 feat: 회원가입 프로필 처리 변경

* #254 feat: 이미지 파일 삭제 수정

* #254 docs: 회원 API RestDocs 수정

* #254 docs: index.adoc 수정

* #254 fix: 테스트 실패 수정

* [fix] 포트폴리오 및 종목 지정가 알림 목록 조회 변경 (#258)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* [fix] 포트폴리오 활성 알림 목록 조회 변경 (#259)

* #254 fix: 포트폴리오 활성 알림 API 변경

- 응답 프로퍼티에 각각의 포트폴리오에 securitiesFirm 추가

* #252 fix: 회원 샘플 데이터 초기화 변경

- provider 및 닉네임 변경

* #252 fix: 종목 지정가 알림 목록 조회 변경

- 응답시 종목 지정가의 생성일자를 기준으로 오름차순으로 정렬

* #252 docs: 종목 지정가 알림 목록 조회 Rest Docs 추가

* #252 docs: Rest Docs 수정

* #252 docs: 포트폴리오 활성 알림 조회 서비스 수정

- 생성일자를 기준으로 오름차순 정렬

* [fix] API 응답에서 퍼센티지 데이터 수정 (#261)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* [fix] dailyGainRate 계산 로직 수정 (#262)

* #260 fix: 퍼센티지 데이터를 정수타입에서 Double 타입으로 변경

* #260 test: 테스트 코드 수정

- 실수값 검증하도록 수정

* #260 fix: 메소드의 타입 변경

* #260 fix: dailyGainRate 수식 수정

* #260 fix: 연배당율 계산식 문제 해결

- 실수 타입으로 변경

* [docs] Rest Docs API 추가 (#263)

* #253 docs: 액세스 토큰 갱신 Rest Docs 추가

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 회원 관련 Rest Docs API 추가

* #253 docs: 포트폴리오 Rest Docs API 추가

* #253 docs: 테스트 코드 수정

* [docs] notification adoc 수정 (#264)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* [docs] Rest Docs 테스트 실패 해결 (#265)

* #253 docs: 인가코드 요청 URL Rest Docs 추가

* #253 docs: 알림 adoc 수정

* #253 docs: 테스트 실패 해결

* [feat] 종목 지정가 변경 이벤트에 따른 종목 지정가 알림 구현 (#266)

* #254 feat: 종목 지정가 알림 발송 API 구현

* #254 test: 종목 지정가 알림 발송 API 테스트 코드 구현

* #254 test: 종목 지정가 알림 발송 서비스 테스트 코드 수정

- 계정 알림 데이터 추가

* #254 docs: adoc 문서 수정

- 종목 지정가 알림 발송 API 추가
- 포트폴리오 목표 수익률 도달 알림 오타 수정

* #254 test: 테스트 코드 수정

- 종목 지정가 알림 발송 API Rest Docs 추가
- 현재가 읽기 메소드명 변경
- 오타 수정

* #254 refacotr: 현재가 읽기 메소드 수정

- 메소드명 수정
- 불필요한 메소드 제거
- 현재가 읽기시 리트라이 추가

* #254 refactor: 매입 이력 이벤트 수정

- SendingParamter에서 구체 클래스로 변경
- SendingParameter가 가지는 필드마다 다르기 때문에 변경, 하지만 다시 추상화하는 방법이 요구됨

* #254 feat: 종목 지정가 알림 서비스 및 이벤트 추가

* #254 feat: 현재가 변경에 따른 종목 지정가 도달 푸시 알림 서비스 추가

* #254 feat: Kis 서비스에 대한 컨트롤러 추가

* #254 feat: 종목 현재가 전체 갱신 API 추가

* #254 feat: 종목 가격 갱신 Rest Docs 추가

* #254 feat: 알림 전송 기록 관리 매니저 추가

* #254 docs: adoc 수정

* #254 feat: 종목 지정가 알림 서비스 수정

- 불필요한 쿼리가 발생하지 않도록 수정

* #254 rename: 종목 지정가 소스코드 이동

* #254 rename: 패키지 이동

* #254 feat: Redis에서 현재가 조회시 Optional로 래핑하여 반환하도록 함

* #254 feat: Redis에서 종가 조회시 Optional로 래핑해서 반환하도록 변경

* #254 style: 코드 정리

* #254 fix: 로깅 레벨 디버그 레벨로 변경

* #254 fix: 현재가 구하는 메소드 반환 타입 Long으로 변경

* #254 refactor: fetchCurrentPrice 리팩토링

- reactive적으로 변경

* #254 feat: 현재가 조회 API 추가

* #254 fix: 종가 리스폰스명 변경

* [refactor] 종목 지정가 푸시 알림 리팩토링 (#267)

* #254 refacotr: 현재가 갱신 리팩토링

* #254 fix: 코드 수정

* #254 fix: 알림 발송 간격 24시간으로 설정

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 비동기화

* #254 refactor: 종목 지정가 알림 발송 서비스 리팩토링

- 쓰레드풀 생성

* #254 test: 테스트 코드 실패 해결

* #254 docs: 오타 수정

- 종목 지정가 알림 발송 adoc 오타 수정

* #254 fix: 종목 지정가 도달 알림 문제 해결 (#269)

- 발송 이력 저장시 notificationId를 TargetPriceNotification.id로 변경

* [fix] 종목 지정가 도달 알림 예외 처리 (#270)

* #254 fix: Notification 엔티티 변경

- messageId를 추가하고 StockTargetPriceNotification 자식 클래스에는 targetPriceNotificationId를 추가

* #254 fix: Rest Docs 오타 수정

* #254 fix: firebase 알림 전송시 실패하는 경우의 로직 수정

- 대기하는 부분을 두번으로 나눠서 비동기로 처리하도록 변경

* #254 docs: adoc에 member_notification.adoc 추가

* #272 fix: 회원 알림 메시지 발송 API를 포트폴리오, 종목 지정가로 분리

* #272 fix: 종목 지정가 알림 에러 해결

- targetNotificationId가 db에 저장되지 않는 문제

* #273 fix: 종목 지정가 알림 버그 수정 (#274)

- notification 엔티티 데이터가 토큰이 여러개더라도 messageId를 기준으로 고유하게 1개만 저장하도록 저장

* [feat] 알람 기능 구현 (#276)

* #273 refactor: 목표수익률, 최대손실율, 종목 지정가 알림 기능 추상화

* #272 feat: 알림 기능 수행시 purchaseHistory set 메소드 추가

* #272 fix: 테스트 코드 수정

* #272 fix: 매입이력 이벤트시 매입이력 조회 문제 해결

- 지연로딩을 이미 언프록시하였기 때문에 새로 추가된 매입 이력을 리스트에 추가하도록 함

* #272 fix: 매입 이력 이벤트 알람을 위한 리스트 갱신 로직 추가

* #272 fix: adoc 정리

* #272 fix: 스키마 수정

* #272 fix: 오타 수정

* [fix] 포트폴리오 및 대시보드 차트 API에 대한 정렬 기준 적용 (#278)

* #277 fix: 회원가입 인증 코드 오타 수정

* #277 fix: 닉네임 중복 체크시 입력 형식 검사

* #277 fix: PortfolioStock -> PortfolioHolding으로 변경

* #277 feat: 포트폴리오 종목 Rest Docs 추가

* #277 feat: 매입이력 Rest Docs 추가

* #277 feat: 종목 Rest Docs 추가

* #277 feat: 포트폴리오 알람 활성화 Rest Docs 추가

* #277 test: 테스트 코드 실패 해결

* #277 feat: 종목 지정가 알림 Rest Docs 추가

* #277 feat: 회원 알림 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 관심 종목 Rest Docs 추가

* #277 feat: 대시보드 Rest Docs 추가

* #277 feat: 차트 정렬 적용

* #277 test: 테스트 코드 실패 해결

* #277 docs: adoc에 빠진 adoc 도메인 추가

* [reactor] sse 전송 방식 변경 (#281)

* #271 test: 테스트 코드 수정

* #277 fix: 불필요한 매개변수 제거 및 @tostring 추가

* #277 refactor: Sse 설계 변경

- RxJava 추가
- Observer, Observable 추가

* #271 feat: take 적용

* [feat] 주식 종목 최신화 구현 (#283)

* feat: 종목 최신화

* docs: 종목 최신화 rest docs 추가

* #279 feat: 서버 시작시 종목 최신화 추가

* #279 feat: 코드 정리

* #279 rename: aop 패키지 이동

* #279 docs: 테이블 스키마 변경

* #284 feat: cors 설정 (#285)

* #284 fix: www 서브 도메인 추가

* #284 fix: webconfig cors 설정 삭제

* #288 fix: Notification 객체 삭제 (#289)

* #288 fix: 종목 최신화 모듈 에러 해결 (#290)

- 기존 stocks 파일을 이용한 기존 종목 최신화 스케줄링 메서드가 최신화된 종목들을 삭제한 것이 원인

* #288 fix: Notification payload 추가, data 페이로드 제거

- data만 보내는 경우 fcm.options.link 사용하지 못하여 notification 추가로 변경

* [feat] Money 도메인 구현 (#294)

* #291 feat: Money, Count 도메인 추가

* fix: Money, Count 도입으로 인한 테스트 코드 수정

* fix: 테스트 코드 수정

* fix: money 직렬화시 정수 탕비으로 직렬화

* fix: Portfolio entity change the config with precision

* feat: add DataIntegrityViolationExpceiton handler

* fix: change column config

* #296 fix: 제약 조건 변경 (#297)

* fix: test 실패 해결

* fix: 포트폴리오 상세 조회 response property 변경 (#298)

* #293 feat: 종목의 현재가 및 종가 조회 메서드 수정 (#299)

- 가격이 redis에 없는 경우 kis 서버에 질의하여 가져오도록 합니다.

* #292 fix: 목표수익률 알림 버그 해결 (#301)

- 평가금액을 기준으로 수정

* [docs] README 수정 (#303)

* docs: README.md 수정

* docs: README.md 작성중

* docs: readme 트러블 슈팅 그외 작성

* docs: 트러블 슈팅 문서 작성

* docs: 핵심 기능 글 작성

* docs: 핵심 기능 그림 추가

* docs: image 링크 수정

* docs: 핵심 기능 프로세스 이미지 다시 추가

* docs: 핵시기능 접기 추가

* [bug] Watchlist 조회 문제 해결 (#305)

* fix: Watchlist 조회 버그 수정

* #304 docs: fineants-secret 버킷 이름 추가

* feat: 로그인시 provider 프로퍼티 추가 (#307)

* fix: response 수정 (#310)

* fix: nullpointer exception 해결 (#313)

* [feat] 배당 일정 최신화 추가 (#315)

* #286 feat: 배당금 일정 최신화 모듈 구현

* feat: 배당일정 최신화 서비스 구현

* fix: 알림 서비스에서 비동기 제거

* feat: 배당일정 최신화 구현

* feat: 배당 일정 최신화 구현

* fix: 주석 추가

* feat: 코드 정리

* fix: 코드 정리

* fix: money getter remove

* fix: REadWatchListsResponse 변경

* feat: localstack 추가

* #286 fix: 테스트 컨테이너 코드 수정

* fix: 테스트 컨테이너 코드 수정

* #286 fix: 테스트 프로파일 db 프로퍼티 제거

* #286 fix: 코드 정리

* fix: remove dividend restcontroller

* [fix] 배당 일정 최신화의 역직렬화 문제 해결 (#317)

* fix: 배당일정 가져오는 문제 해결

* #316 fix: 배당 일정 uri 추가

* fix: 포트폴리오 검증 수정 (#319)

* fix: 포트폴리오 검증 로직 수정 (#321)

* fix: 포트폴리오 활성 목록 조회 응답 변경 (#322)

* [feat] 포트폴리 알림 수정 (#324)

* feat: add resp property for portfolio's notify setting api

* feat: 포트폴리오 알림 수정 검증문 추가

* test: 테스트 코드 실패 해결

* #308 feat: ssl 인증서 갱신

* #308 feat: ssl password change

* Feat/#308 Moeny 도메인 추가 (#326)

* feat: currency 도메인 추가

* feat: money 도메인에 currency 추가

* test: 테스트 코드 실패 해결

* feat: 알림 메시지 내용 형식 변경

* #308 fix: compareto 코드 수정

* feat: RateDivision 구현

* fix: 타입 수정

* fix: change the type to the expression

* fix: code 정리

* #308 fix: DecimalFormat 변경

* #308 fix: DecimalFormat 패턴 변경

- 소수점 둘째자리까지는 출력, 네번째자리까지는 값이 있다면 출력

* fix: package 구조 변경 (#329)

* [fix] 테스트 컨테이너 설정 변경 (#330)

* fix: package 구조 변경

* fix: container 설정 변경

* [feat] 환율 관리 기능 구현 (#331)

* feat: ExcahngeRate 추가 기능 구현

* feat: exchange rate read, update, delete 구현

* feat: 환율 관리 기능 구현

* feat: 기준 통화 변경 구현

* #328 feat: 환율 삭제시 기준 통화 삭제할 수 없도록 변경

* #328 feat: 기준통화 변경 코드 개선

* fix: 테스트 코드 실패 해결

* [test] Redis 모킹 코드 제거 (#332)

* #311 docs: init-schmea 테이블 추가

* #311 test: redis 모킹 코드 제거

* #334 fix: API 수정 (#335)

* #336 docs: 설명 수정 (#337)

* #336 docs: 설명 수정 (#338)

* [fix] 오타 수정 (#339)

* #336 docs: 설명 수정

* #336 docs: 오타 수정

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정 (#341)

- id 추가

* [fix] 테스트 코드 오타 수정 (#342)

* #333 feat: 포트폴리오 종목 조회 및 sse 응답의 프로퍼티 수정

- id 추가

* test: 테스트 코드 오타 수정

* [fix] 알림 수정 (#344)

* #333 feat: 종목 지정가 알림 로직 변경

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 feat: 포트폴리오 알림 로직 수정

- 알림 발송 -> 알림 저장이 아닌 알림 저장 -> 알림 발송으로 변경
- 알림 발송에 실패해도 알림 저장이 되도록 변경

* #343 fix: kis 프로퍼티명 버그 수정

* [docs] workflow 설정 (#346)

* #33 build: spring 2.7->3.1 java 11->17 변경

* #333 feat: Spring Security OAuth 로그인 구현

* #333 feat: SetupDataLoader 구현

* #333 feat: 메서드 매개변수 중 AuthMember를 MemberAuthentication로 변경 및 코드 정리

* #333 test: createPortfolio 메서드를 상위 클래스로 통합

* #333 refactor: 액세스 토큰 갱신 리팩토링

* feat: login rest docs 테스트 코드 구현

* #333 feat: 시큐리티 설정 추가

* docs: oauth rest docs

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* #333 feat: 컨트롤러에 보안 설정 애노테이션 추가

* fix: controller security annto delete

* #333 feat: AjaxScurityCnofig 보안 설정

* #333 style: 체크 스타일에 따른 코드 정리

* #333 fix: 테스트 후 발생한 버그 수정

* #333 feat: 로그인후 쿠키에 토큰 설정

* #333 test: 테스트 실패 해결

* #333 feat: 로그아웃 버그 해결

* #333 docs: 권한 설명 추가

* #333 test: 테스트 코드 실패 해결

* #333 test: 회원에서 인증 및 회원가입 분리

* #333 fix: 관심 종목 문제 해결

* #333 feat: 서버 실행시 KRW 환율 셋업 구현

* #333 feat: release 프로파일 관련 프로퍼티 추가

* #333 docs: 배포 환경 설정

* #333 docs: docker-compose 설정 변경

* #333 docs: 서버 포트 설정 변경

* #333 docs: workflow jdk 11->17 설정

* #333 fix: 테스트 코드 실패 해결

* #333 docs: 프로젝트 파일 보관 장소 temp로 변경

* #333 docs: stop.sh 스크립트 수정

* #333 docs: after-install.sh 스크립트 수정

* #333 docs: docker-compose-release 파일 수정, container 이름 변경

* #333 docs: redis.conf 설정 변경

* #333 docs: redis.conf 포트 설정

* #333 docs: redis port 변경

* #333 docs: redis port 변경

* #333 docs: release cloud watch 삭제

* #333 docs: secret 갱신

* #333 docs: oauth 프로퍼티 수정

- local, test 프로파일에 대한 Redirect-url 추가

* #333 feat: secret 커밋 갱신

* #333 feat: @EnableWebSeucirty 추가

* #333 feat: 디버깅 레벨 debug로 수정

* #333 docs: 프로파일 문제 해결

* #333 fix: 로그인 과정중 로깅 추가

* #333 fix: 로그인 필터에 로깅 추가

* #333 fix: Ajax 시큐리티 설정 변경, HttpMethod 제거

* #333 fix: Ajax 시큐리티 설정 변경, dispatcherMatcherTypes에 비동기 및 포워드 추가

* #333 fix: AjaxSecurity 인가 설정 변경

* #333 fix: /error 경로 permitAll 설정

* #333 fix: CORS 비활성화

* #333 fix: dispatcherTypeMatcher에 비동기, 포워드, 에러 허용

* #333 fix: 로깅 추가

* #333 fix: PrintStream 설정

* #333 fix: 애노테이션 제거

* #333 fix: @order 애노테이션 메서드 레벨로 이동

* #333 fix: docs ignore 추가

* #333 fix: query parameter template 추가

* [refactor] 엔티티 생성자 수정 (#348)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #333 fix: dev 프로파일을 production으로 변경

* [fix] ci.cd 설정 수정 (#349)

* #333 refactor: Member 생성자 수정

- 빌더 private 변경
- 생성자 접근제한자 private 변경

* #347 refactor: Portfolio 생성자 수정

* #347 refactor: PortfolioHolding 생성자 수정

- 빌더 제거
- 생성자 private 설정

* #347 refactor: Member 생성자의 빌더 제거

* #347 refactor: Portfolio생성자에서 빌더 제거

* #347 refactor: StockDividend 생성자의 빌더 제거

* #347 refactor: PurchaseHistory 생성자 수정

* #347 refactor: fcmToken, Notification 생성자 수정

* #347 fix: 종목 지정가 알림 조건 버그 수정

* #347 refactor: NotificationPreference 생성자 수정

* #347 refactor: PortfolioGainHistory 생성자 수정

* #347 refactor: WatchList, WatchStock 생성자 수정\n -빌더 제거\n -생성자의 접근제한자를 private로 변경하여 캡슐화

* #347 refactor: StockTargetPrice, TargetPriceNoticiation 생성자 수정

* #347 fix: 정적 팩토리 메서드 수정

* #347 rename: 배당금 생성 메서드 부모 클래스로 이동

* #347 docs: ci.cd의 environment 이름 aws로 변경

* #333 fix: dev 프로파일을 production으로 변경

* fix: 배당금 생성 메서드 추가

* #351 fix: 쿠키 생성시 release 프로파일 한에서 secure 비활성화 설정 (#352)

* #351 fix: oauth 로그인 쿠키 설정 변경 (#354)

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* [fix] 쿠키 설정 변경 (#355)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* [feat] CORS 설정 추가 (#356)

* #351 fix: oauth 로그인 쿠키 설정 변경

- 릴리즈 서버 한에서 쿠키의 secure=false로 설정

* #351 fix: 쿠키 path 설정

- path = "/"로 설정

* #351 fix: 로그인시 response body에 토큰 정보 제거

* #351 feat: CORS 설정 추가

* [fix] JWT 필터 변경 (#357)

* #351 feat: CORS 설정 추가

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 feat: 쿠키 생성 방식 변경

- SameSite=None으로 설정하기 위한 ResponseCookie 방식으로 변경

* #351 fix: SameSite 오타 수정

* #351 fix: secure true로 고정 설정

* [fix] 회원가입 버그 수정 (#358)

* #351 feat: 인가 방식 변경

- Authorization 헤더가 아닌 쿠키를 통하여 인가하는 방식으로 변경

* #351 fix: 로그아웃 수정

* #351 feat: test database cleaner 추가

* #351 fix: 회원가입 버그 수정

- 회원 가입시 사용자 권한 기본 추가

* #351 test: 테스트 비활성화 처리 (#359)

* [fix] oauth 로그인 설정 수정 (#361)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* [fix] origin 추가 (#362)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* [fix] 로깅 추가 (#363)

* #351 test: 테스트 비활성화 처리

* #351 fix: provider 쿼리 파라미터 제거

* #351 fix: kakao, naver, google auth server origin 추가

* #351 fix: ofKakao 로깅 추가

* [feat] 토큰 갱신 기능 구현  (#364)

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 feat: 액세스 토큰 갱신 기능 추가

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 test: 테스트 코드 샘플 소스 수정

- kst 기준으로 설정

* #351 fix: kakao oauth 로그인 버그 수정

- profile 동의하지 않은 경우 null로 저장

* fix: 프로필 사진 null 처리 (#365)

* [docs] Rest Docs 수정 (#366)

* fix: 프로필 사진 null 처리

* #351 docs: 로그아웃 Rest Docs 수정

- requestHader에 쿠키 추가

* #351 docs: request-cookies 템플릿 추가

* docs: Rest Docs 수정

* #351 docs: request-headers adoc 제거

* feat: add the ssl (#368)

* [fix] SSL 재발급 (#369)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* [fix] SSL 재발급 (#370)

* feat: add the ssl

* #351 fix: ssl 재발급

* #351 fix: ssl 재발급

* #367 fix: ssl 삭제

* #367 fix: ssl 재발급

* fix: ssl 인증서 삭제

* feat: ssl 인증서 추가

* test: 테스트 코드 수정

* feat: github action timezone 설정

* [fix] 릴리즈 서버 포트 변경 (#374)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* [fix] 릴리즈 서버 포트 오타 수정 (#376)

* #367 feat: localstack 설정 변경

* #367 feat: nginx 컨테이너 설정 로컬에 추가

* #367 feat: 릴리즈 서버 포트 변경

* #367 fix: 릴리즈 서버의 포트 변경

* #371 fix: 액세스 토큰 갱신 수정 (#378)

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* [fix] 쿠키 설정 변경 (#379)

* #371 fix: 액세스 토큰 갱신 수정

- 액세스 및 리프레시 토큰 갱신하는 경우에만 리스폰스에 쿠키 설정하도록 변경

* #371 fix: 액세스 토큰 갱신 수정

- addHeader -> setHeader로 수정
- 하나의 Set-Cookie 헤더에 accessToken 및 refreshToken를 세미콜론으로 구분하여 저장

* #371 test: 테스트 코드 해결

* [fix] oauth 설정 오타 수정 (#380)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* [fix] kakao oauth redirect url 수정 (#381)

* feat: 액세스 토큰 갱신 롤백

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: oauth 설정 오타 수정

* #371 fix: 릴리즈 서버 포트 변경

* #371 fix: 릴리즈 서버 포트 변경

* [fix] 중복 Set-Cookie 생성 문제 해결 (#383)

* fix: method source 수정

* #371 fix: 토큰 갱신 문제 해결

- 필터를 대상으로 스프링 빈 등록으로 인하여 자동 등록됨

* [fix] 일반 로그인 실패 문제 해결 (#385)

* #384 fix: 로그인 실패시 400 응답되도록 수정

* #384 test: 로그인 예외 케이스 실패 해결

* #386 fix: cors 설정에서 오타 수정 (#387)

- PUT 메서드 방식 추가

* [test] 테스트 임시 비활성화  (#388)

* #386 fix: cors 설정에서 오타 수정

- PUT 메서드 방식 추가

* #386 test: 엑세스 토큰 갱신 테스트 2개 임시 비활성화

* [feat] 포트폴리오 차트 API 수정 (#389)

* #386 test: 액세스 토큰 갱신 테스트 코드 문제 해결

- redis에 액세스 토큰에 대한 로그아웃한 기록 존재한 것이 원인
- Date 타입 객체의 toInstant() 호출시 UTC 기준으로 반환된 것이 문제

* #386 feat: 차트 조회시 포트폴리오 디테일 프로퍼티 추가

- 포트폴리오 디테일 프로퍼티에는 등록번호(id), 증권사(securitiesFirm), 이름(name)이 포함되어 있습니다.
- 추가 이유 : 프론트 모바일 환경에서 차트 조회시 포트폴리오에 대한 디테일 정보가 필요하기 때문

* [fix] oauth 계정의 프로필 변경 유지 문제 해결 (#391)

* fix: oauth 계정의 프로필 변경 문제 해결

* #386 fix: local bucket 경로 변경

* #384 test: oauth 계정의 프로필 유지 테스트 구현

* [refactor] 알림 서비스 리팩토링 (#392)

* #350 refactor: List<NotificationCondition>을 제네릭 및 캡슐화

* #350 refactor: 목표 수익률에 대한 알림 전송 리팩토링

* #350 refactor: FirebaseNotificationProvider 추상화

- FirebasePortfolioNotificationProvider 구현
- FirebaseTargetPriceNotificationProvider 구현

* #350 test: 최대 손실율 달성 알림 테스트 추가

* #350 rename: 변수명 변경

* #350 refactor: notifyTargetGain 메서드 리팩토링

* #350 style: saveNotification 메서드 코드 정리

* #350 refactor: NotificationService의 알림 전송 기능 Notifiable 타입으로 추상화

- Notifiable 인터페이스 정의 및 Portfolio 클래스가 구현

* #350 refactor: TargetPriceNotification 추상화

* #350 refactor: Service의 리턴타입을 추상화

* #350 test: 최대 손실율 알림 테스트 추가

* #350 refactor: NotificationDispatcher 추가

- 해당 객체는 여러 NotificationProvider를 실행하여 다양한 알림 매체에게 알림 전송을 요청합니다.(ex, fcm, kakao, mail...)

* #350 style: code 정리

* #350 style: 코드 정리

* [fix] API 수정 (#393)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* [fix] Rest Docs 오타 수정 (#394)

* #390 feat: 포트폴리오 종목 리소스 owner 검증문 구현

* test: 테스트 코드 수정

* fix: 매입 이력 생성 리스폰스 수정

* feat: 관심종목 단일 삭제 API 추가

* feat: 종목 지정가 단일 제거 API 추가

* fix: stock, sector exception case 추가

* fix: 권한 제거

* docs: Rest Docs 오타 수정

* [feat] 종목 스크롤 검색 (#396)

* build: QueryDSL 의존성 추가

* feat: getSliceOfStock

* test: 종목 검색 테스트 추가

* test: 종목 스크롤 검색 Rest Docs 추가

* docs: 종목 스크롤 검색 Rest Dcos 설명문 추가

* fix: JPAQueryFactory 의존성 문제 해결

* fix: 테스트 실패 해결

* [feat] 리소스 소유 검증문 추가  (#397)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* [fix] 테스트 실패 해결 (#398)

* test: 포트폴리오 삭제 권한 테스트 추가

* test: 포트폴리오 다수 제거 서비스의 권한 예외 테스트 추가

* test: 포트폴리오 종목 조회시 권한 예외 케이스 추가

* feat: 매입 이력 리소스 소유 권한 검증문 추가

* test: 매입 이력 추가시 권한 검증문 추가

* test: 매입이력 수정 및 삭제 서비스의 권한 검증문 추가

* test: 포트폴리오 차트 조회에 리소스 소유 검증문 추가

* feat: 권한 검증문 추가

* test: 포트폴리오 알림 상태 변경의 권한 검증 테스트 추가

* feat: 종목 지정가 단일 제거 서비스엣 권한 검증문 추가

* test: 종목 지정가 단일 제거 권한 테스트 추가

* feat: 회원 알림 서비스에 권한 검증문 추가

* test: 회원 알림의 권한 관련 테스트 추가

* feat: 관심종목 서비스에 권한 검증문 추가

* test: 관심종목 권한 테스트 추가

* fix: 테스트 실패 해결

* [fix] 종목 지정가 알림 문제 해결 (#400)

* fix: 종목 지정가 알림 문제 해결

- 종목 지정가 알림 발송시 referenceId를 저장하는데 종목 지정가의 referenceId는
tickerSymbol로 저장되어서 policy 검사에서 계속 통과됨

* test: 종목 지정가 시나리오 추가

* fix: messageIdMap 생성 방식 변경

- key값으로 기존 referenceId에서 idToSentHistory 값으로 변경
- idToSentHistory 형식
  - 종목 지정가 : targetPriceNotification:{targetPriceNotificationId}
  - 포트폴리오 : portfolioNotification:{referenceId}

* [refactor] 리소스 소유 검증 리팩토링 (#402)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* [rename] Rest Docs 수정  (#403)

* refactor: refactor resource authorized

* refactor: refactoring AuthorizationAspect \n - ResourceId annotation 추가 \n - 테스트 코드 실패 해결 \n - ResourceIdAspect 추가

* refactor: 리소스 id 컬렉션에 대한 검증문 리팩토링

- 서비스 매개변수로 리소스 등록번호 컬렉션 전달시 각각의 리소스에 대하여 소유 권한 여부를 검증하도록 리팩토링

* feat: findPortfolio 메서드에 리소스 소유 권한 검증 애노테이션 추가

* feat: PortfolioHoldingService에 리소스 소유 권한 검증 애노테이션 추가

* feat: 리소스 소유 권한 검증 애노테이션 추가

* refactor: annotation에 AuthorizeService 구현체 이름을 전달하는 방식으로 변경

* test: 테스트 실패 해결

- aop 적용에 따른 예외 케이스의 메시지 변경

* test: 테스트 실패 해결

- serviceClass 타입 오타

* feat: PurchaseHistoryService에 @authorize 애노테이션 적용

* test: 매입이력 서비스 테스트 실패 해결

* rename: AuthorizeService 이름 변경

* move: AuthorizedService 구현체 이동

* feat: fcm, portfolio 도메인에 @Authorized 애노테이션 추가

* test: 종목 지정가 테스트 실패 해결

* feat: 회원 알림 서비스에 리소스 소유 검증 애노테이션 추가

* feat: 관심 종목 리소스 소유 검증 애노테이션  추가

* move: 종목 지정가와 지정가 알림 분리

* docs: rest docs 목차 정리

* docs: rest docs 목차 정리

* fix: dev -> production으로 변경

* fix: secret 갱신

* fix: db connection property 오타 수정

* fix: @secured 제거

* fix: secret 갱신

* feat: workflow 수정

- 'no test' 태그가 없는 경우 테스트 생략

* fix: after-install script 수정

- 배포 작업 이후에 temp 디렉토리 삭제

* fix: cors 설정 수정

- www.fineants.co 추가

---------

Co-authored-by: yein-lee <agop0310@gmail.com>
Co-authored-by: Yein Lee (이예인) <39490214+yein-lee@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: Done
1 participant