Skip to content

Commit 56a349b

Browse files
Ksr-ccbcoderabbitai[bot]jong-0126crocusiaKimyoonbeom
authored
10차 배포 -2 (#349)
* chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Revert "Create run-test.yaml" This reverts commit 3ca826f60d3c9d74264e2213b0837ef3a90e6414. * 도커에 레디스 설정파일 추가 (#7) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * chore: 도커 설정파일에 레디스 추가 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/6 카카오톡 소셜로그인 + jwt 토큰 발급 (#11) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * chore: 도커 설정파일에 레디스 추가 * feat: Jwt 토큰 로그인과 Oauth 기본설정 * fix: 오류수정 * fix: 생성자 누락값 수정 * fix: 생성자 누락값 수정 * chore: 코드정리 * feat: Oauth 구조 변경중.. * feat: 카카오톡 로그인 + jwt 생성 테스트 * feat: 레디스 설정추가 * chore: 코드 정리 * refactor: OAuth2LoginSuccessHandler 책임분리 * refactor: 필터에서 이중작업 정리 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/9 (#14) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * Revert "Create run-test.yaml" This reverts commit 3ca826f60d3c9d74264e2213b0837ef3a90e6414. * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * CI/CD AWS 연동 * CI/CD branches 범위 수정 --------- Co-authored-by: Ksr-ccb <harang4282@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/15 (#17) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * Revert "Create run-test.yaml" This reverts commit 3ca826f60d3c9d74264e2213b0837ef3a90e6414. * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * CI/CD AWS 연동 * CI/CD branches 범위 수정 * CI/CD AWS 연동 --------- Co-authored-by: Ksr-ccb <harang4282@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/8 (#19) * feat(build.gradle): validation 의존성 추가 * feat : CreateQuizDto 생성 * feat : QuizCategoryRepository 추가 * feat(QuizService) : json 파일 데이터 Quiz 엔티티로 변환 후 저장 기능 추가 * feat : QuizCategory 예외 코드 추가 * feat : uploadQuizJson에 예외 코드 사용' 추가 * feat(QuizController) : quiz 업로드 api 추가 * feat(QuizController) : QuizService의 uploadQuizJson 연동 * Ignore application-local.properties * feat : 카테고리 타입 생성 api 추가 * refactor(QuizCategoryService) : 메서드 isPresent로 변경 * refactor : 코드래빗 피드백 기반 누락 및 오타 수정 * docker-compose.yml 케시 삭제 * feat: OAuth2 Github 기능추가 및 임시 메인페이지 추가 (#21) * chore: AuthUser, Role 클래스 global.dto 패키지로 이동 * chore: OAuth 패키지 이름 변경 * chore: 주석 및 띄어쓰기 수정 * feat: OAuth2 응답객체 생성 및 수정 * refactor: OAuth2 서비스 로직 리팩토링 * chore: 임시 랜딩페이지 추가 * chore: Role 클래스를 user.entity 패키지로 이동 * refactor: 소셜정보 가져올 때, 예외처리 추가 * Feat/15 (#18) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * Revert "Create run-test.yaml" This reverts commit 3ca826f60d3c9d74264e2213b0837ef3a90e6414. * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * CI/CD AWS 연동 * CI/CD branches 범위 수정 * CI/CD AWS 연동 * CI/CD AWS 연동 * CI/CD AWS 연동 * 수정 * commit * 환경변수로 수정 * commit * deploy.yml 수정 * commit * deploy 수정 --------- Co-authored-by: Ksr-ccb <harang4282@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/10 (#23) * feat: Ai, 서비스 구현 및 Config 추가. 서비스와 빈 생성을 위한 해당 Config 추가. * feat:AiService * refactor: Ai, 서비스 및 컨트롤러 코드 수정. 작성했던 API 명세서에 맞추어 기능 및 동작 수정. * temp : commit for merge * feat: AI, 테스트코드 구현1. * refactor: aiService subscriptionId 반영 --------- Co-authored-by: Kimyoonbeom <kimybeom@naver.com> Co-authored-by: ChoiHyuk <wannabeing@naver.com> * Feat/13 구독 엔티티 구조 정리 및 구독 정보 조회 (#28) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * chore: 패키지 구조 정리 * feat: 요일->int, int->요일 바꾸기 * feat: 요일->int, int->요일 바꾸기 * chore: docker-compose.yml gitignore 추가 * temp: temp commit for pull * temp: temp commit for pull * feat: 구독 엔티티 구조 변경 및 구독 정보 조회 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/27 (#29) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * Revert "Create run-test.yaml" This reverts commit 3ca826f60d3c9d74264e2213b0837ef3a90e6414. * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * CI/CD AWS 연동 * CI/CD branches 범위 수정 * CI/CD AWS 연동 * CI/CD AWS 연동 * CI/CD AWS 연동 * 수정 * commit * 환경변수로 수정 * commit * deploy.yml 수정 * commit * deploy 수정 * commit * properties 중요정보 환경변수 처리 --------- Co-authored-by: Ksr-ccb <harang4282@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/27 (#30) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * Revert "Create run-test.yaml" This reverts commit 3ca826f60d3c9d74264e2213b0837ef3a90e6414. * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * CI/CD AWS 연동 * CI/CD branches 범위 수정 * CI/CD AWS 연동 * CI/CD AWS 연동 * CI/CD AWS 연동 * 수정 * commit * 환경변수로 수정 * commit * deploy.yml 수정 * commit * deploy 수정 * commit * properties 중요정보 환경변수 처리 * deploy 파일 환경 변수 export --------- Co-authored-by: Ksr-ccb <harang4282@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Fix logging and import issues (#32) * feat: 구독정보/구독내역 생성/수정 로직 추가 및 공통응답 수정 (#33) * chore: 필요없는 어노테이션 삭제 * chore: 공통응답 DTO 수정 - `@RequiredArgsConstructor`는 빌더를 사용한다면 추후 삭제해야 함 * feat: 구독/구독로그 예외처리 추가 및 수정 * feat: 구독기간 enum 클래스 추가 * chore: 구독로그 엔티티에 누락된 컬럼 추가 및 생성자 수정 * refactor: 구독생성자 수정 및 업데이트메서드 추가 * feat: 구독(Subscription) 생성/수정 로직 추가 - SubscriptionLog도 함께 생성되게 추가 * chore: QuizCategory 엔티티에 Getter 추가 * chore: 공통응답 DTO 빌더 삭제 * refactor: 구독로그 테이블명 변경 → 구독내역(SubscriptionHistory) * refactor: 구독테이블에 N+1(QuizCategory) 문제 수정 문제카테고리(QuizCategory)의 경우, 구독내역이 생성될 때마다 쿼리가 중복되어 발생할 수있다고 판단되어 미리 FetchJoin 설정 * feat: 구독 취소 로직 추가 * refactor: QuizCategory 는 생성하는 것이 아닌 조회하는 방식으로 로직 수정 * chore: 예외처리 간단 수정 * refactor: 이메일 동시성문제를 유니크제약조건과 try-catch로 방지 * chore: 엔티티 수정시간과 시간이 다를 수 있기 때문에 엔티티자체의 수정시간을 사용하도록 변경 * chore: QuizCategoryRepository 알맞는 메서드명으로 변경 * chore: 날짜계산을 Days가 아닌 Month로 변경 `plusMonths()` 함수 사용 * Feat/13 로그인 마이페이지 (#35) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * chore: 패키지 구조 정리 * feat: 요일->int, int->요일 바꾸기 * feat: 요일->int, int->요일 바꾸기 * chore: docker-compose.yml gitignore 추가 * temp: temp commit for pull * temp: temp commit for pull * feat: 구독 엔티티 구조 변경 및 구독 정보 조회 * fix: 충돌수정 및 변수형 일치문제 해결 * feat: 구독취소, 회원탈퇴 * chore: 각 api별 권한 추가 (계속 추가되어야함) * chore: Quiz_category Enum 삭제 * feat: 로그인 회원 마이페이지 확인 (구독로그 포함) * feat: 구독 비활성화, (임시) 업데이트 * test: 구독 조회 비활성화(로그생성은 아직x) 테스트코드, 로그인 마이페이지 기본기능 테스트 기능 * test: 테스트코드수정 * chore: Quiz_category Enum 삭제 후처리 * chore: Dto 이름 수정 및 파일정리 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/22 인증 코드 이메일 발급 및 검증 (#36) * feat : 이메일 발송을 위한 SMTP 관련 의존성 추가 * feat : 유연성 및 확장성을 위해 MailConfig 추가 * feat : MimeMessage 기반 Html형식 메일 전송 메서드 추가 * feat(UserService) : 인증 코드 생성 * feat : VerificationCode 서비스, 예외 추가 * feat : 인증코드 검증 성공 시, 인증코드 삭제 기능 추가 * feat : 인증 코드 발급 Controller 클래스 추가 * feat : 인증 코드 발송 기능 추가 * refactor : verify 메서드 반환타입 void로 변경 * feat : 인증 코드 관련 api jwt 검증 제외 설정 * fix : 변경된 에러 코드로 인한 실행 오류 수정 * feat : 피드백 기반 수정 * feat : 인증코드 검증 시도 횟수 추가 * refactor : MailConfig 위치 변경 * Feat/31 (#40) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * Revert "Create run-test.yaml" This reverts commit 3ca826f60d3c9d74264e2213b0837ef3a90e6414. * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * CI/CD AWS 연동 * CI/CD branches 범위 수정 * CI/CD AWS 연동 * CI/CD AWS 연동 * CI/CD AWS 연동 * 수정 * commit * 환경변수로 수정 * commit * deploy.yml 수정 * commit * deploy 수정 * commit * properties 중요정보 환경변수 처리 * deploy 파일 환경 변수 export * 도커 추가하여 배포 * commit * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * commit * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 --------- Co-authored-by: Ksr-ccb <harang4282@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/41 (#42) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * Revert "Create run-test.yaml" This reverts commit 3ca826f60d3c9d74264e2213b0837ef3a90e6414. * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * CI/CD AWS 연동 * CI/CD branches 범위 수정 * CI/CD AWS 연동 * CI/CD AWS 연동 * CI/CD AWS 연동 * 수정 * commit * 환경변수로 수정 * commit * deploy.yml 수정 * commit * deploy 수정 * commit * properties 중요정보 환경변수 처리 * deploy 파일 환경 변수 export * 도커 추가하여 배포 * commit * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * commit * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 --------- Co-authored-by: Ksr-ccb <harang4282@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/41 (#43) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * Revert "Create run-test.yaml" This reverts commit 3ca826f60d3c9d74264e2213b0837ef3a90e6414. * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * ADD workflow * CI/CD AWS 연동 * CI/CD branches 범위 수정 * CI/CD AWS 연동 * CI/CD AWS 연동 * CI/CD AWS 연동 * 수정 * commit * 환경변수로 수정 * commit * deploy.yml 수정 * commit * deploy 수정 * commit * properties 중요정보 환경변수 처리 * deploy 파일 환경 변수 export * 도커 추가하여 배포 * commit * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * commit * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 * 도커 추가하여 배포 --------- Co-authored-by: Ksr-ccb <harang4282@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/39 AI, RAG 및 Chroma 연동 중간 커밋 (#45) * temp : commit for merge * feat: chroma 연동, RAG 구조 구현 그에 따른 AiService 파일 수정. * refactor: chroma 연동, RAG 구조 구현 수정. * Feat: OAuth2 Naver 로그인 기능 추가 및 관련 코드 수정 (#48) * build: mysql-connector 버전 업데이트 보안 이슈로 버전 업데이트 * refactor: OAuth2 예외 처리 수정 및 생성 UserException에서 분리했음 * chore: OAuth2 카카오 응답객체 예외처리 수정 * fix: OAuth2 Github 로그인 시, 이메일 누락 방지 로직 추가 accessToken 활용하여 이메일 가져오기 * feat: OAuth2 네이버 로그인 기능 추가 공통 유틸메서드를 제공하기 위해 추상클래스 생성 * chore: OAuth2 추상클래스 적용 * chore: OAuth2 데이터(attributes) 파싱 예외처리 코드 추가 * chore: OAuth2Service를 OAuth2 패키지로 이동 및 패키지명 수정 사용하지 않는 Controller, Service, Repository 삭제 * chore: 간단 로직 수정 * Feat/12 오늘의 문제 뽑아주기 & 하루에 한번씩 돌아가는 문제 정답률 계산 (#44) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * feat: 문제 추천1 차 * feat: 각 문제별 정답률 계산, 유저 개인의 정답률 계산 * feat: 문제를 내어주는 두가지 방법 * - getTodayQuiz -> getTodayQuizNew (O) - getTodayQuizNew -> getTodayQuiz (X) 둘중에 하나씩만 쓰거나 getTodayQuiz -> getTodayQuizNew 해야함 리턴값은 지금 api 형식으로 만든다고 QuizDto 인데, Quiz로 바꿔서 줄 수 있음 * feat: 문제를 내어주는 두가지 방법 * - getTodayQuiz -> getTodayQuizNew (O) - getTodayQuizNew -> getTodayQuiz (X) 둘중에 하나씩만 쓰거나 getTodayQuiz -> getTodayQuizNew 해야함 리턴값은 지금 api 형식으로 만든다고 QuizDto 인데, Quiz로 바꿔서 줄 수 있음 * test: 문제를 내어주는 두가지 방법 테스트코드 * fix: 포특밧 되돌려줌 * refactor: 정답률 포멧 스케일 통일화 * fix: 오류검증 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * chore/50 도커 컴포즈 파일 변경 (#52) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * chore: 도커 볼륨 구조 변경 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/49 github md파일 크롤링 기능 추가 (#53) * feat : 깃허브 url Parser 추가 * feat : 크롤링 기능 추가 * feat : 프로젝트 내에 저장 기능 추가 * feat : 크롤링한 파일을 프로젝트 폴더 내에 저장하는 기능 추가 * chore : chroma 설정 주석 해제 * feat : 컨트롤러 추가 * feat : VectorStore에 저장 메서드 추가 * refactor : List<Document> 전역변수에서 지역변수로 변경 * feat : CrawlerController 예외 추가 * feat: 답안 체점 로직 구현 (#55) test: - 정상 체점 후 데이터 저장 - 구독 정보 없는 경우 예외 처리 - 퀴즈 정보 없는 경우 예외 처리 * Feat/38 문제풀이 링크 이메일 발송 및 테스트 코드 (#56) * feat : 문제 발송용 이메일 sender 임시 생성 * feat : today-quiz.html 추가 * feat : 문제 발송 부분 추가 * feat : 수정사항 없음 * feat : 문제 선택 후, 이메일 발송 기능 추가 * feat : 문제 선정 후 발송하는 issueTodayQuiz 추가 * feat : 문제 발송 메일 로그 남기기 * feat : MailLogResponseDto 생성 * refactor : 변경에 따른 issueTodayQuiz 수정 * feat : 간단한 테스트 코드 추가 * feat : 이메일 발송 성공, 실패 테스트 케이스 추가 * feat : 동기일 때의 성능 측정 테스트 코드 추가 * feat : 속도 성능 테스트 추가 * Chore/54 중간 테스트, 필요한 예외처리 및 모니터링 도구 설치(그라파나, 프로메테우스) (#59) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * chore: 도커 볼륨 구조 변경 * chore: 실행오류 수정, 글로벌 오류 핸들링 경우의 수 추가 * fix: 구독 생성, 수정시 ModelAttribute 사용되게 변경 * refactor: 필요없는 함수삭제, url 정정 * refactor: dto에 카테고리 객체 반환하지 않도록 수정 * feat: jwt 리프래시 토큰 기반 로그인연장, 로그아웃 * chore: jwt 토큰 오류 반환하도록 설정 * fix: jwt 토큰 오류시 로그인 html 출력안되도록 설정 * fix: SecurityConfig 단에서 인증인가 오류 개선 * refactor: SecurityConfig 구조 변경 * refactor: 그라파나, 프로메테우스 적용, 로그인페이지 임시 제작 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * feat : 메일 발송 api 추가 (#63) * Feat/58 문제, 정답, 해설 조회 기능 구현 (#64) * feat: 답안 체점 로직 구현 test: - 정상 체점 후 데이터 저장 - 구독 정보 없는 경우 예외 처리 - 퀴즈 정보 없는 경우 예외 처리 * feat: 문제, 정답, 해설 조회 기능 구현 test: - 정상 조회 확인 - 퀴즈 없는 경우 예외처리 * feat: 문제, 정답, 해설 조회 기능 구현 test: - 정상 조회 확인 - 퀴즈 없는 경우 예외처리 * feat/39 RAG 구조 완성 및 서비스 컨트롤러 리팩토링. (#66) * temp : commit for merge * feat: chroma 연동, RAG 구조 구현 그에 따른 AiService 파일 수정. * refactor: chroma 연동, RAG 구조 구현 수정. * feat: 깃허브 document 생성을 위한 RagService 수정. * feat: 깃허브 document 생성을 위한 RagService 수정. * refactor: 경로 인코딩, API 호출 URL, 예외 발생 여부 확인을 위한 로그 추가. * refactor: 깃허브 크롤링, 로그 추가 및 파싱 방식 수정. * refactor: RagService의 세부 수치의 조정. * refactor: test코드 추가 수정. * Feat/62 문제 확인 페이지 생성 (#67) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * feat: 퀴즈 페이지 * feat: 퀴즈 페이지 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/SpringBatch (with Jenkins) 적용 (#70) * build: SpringBatch 설치 및 QueryDsl 버전 설정 * feat: Docker-Compose에 Jenkins 설정 * feat: SpringBatch 데일리 메일 전송 Job 설정 * Feat/71 (#73) * feat: 답안 체점 로직 구현 test: - 정상 체점 후 데이터 저장 - 구독 정보 없는 경우 예외 처리 - 퀴즈 정보 없는 경우 예외 처리 * feat: 문제, 정답, 해설 조회 기능 구현 test: - 정상 조회 확인 - 퀴즈 없는 경우 예외처리 * feat: 문제, 정답, 해설 조회 기능 구현 test: - 정상 조회 확인 - 퀴즈 없는 경우 예외처리 * feat: 퀴즈 정답 선택률 조회 기능 구현 test: - 정상 조회 확인 * Feat/57 이메일 발송 MQ + 비동기 처리 추가 (#72) * feat : Redis Streams 기반 메시지 큐 패턴 적용 * feat : 스프링 배치에 추가 * feat : 테스트 코드 추가 * refactor : 테스트 코드 실행 확인 완료 * refactor : 메일 로그 저장하는 aop 적용 * feat : 발송 실패한 메일 처리하는 큐 추가 * feat : Step 실행 logger 추가 * feat : 속도 성능 테스트 추가 * chore : 테스트 코드 메일 주소 변경 * chore : 테스트 코드 링크 변경 * Fix/프론트엔드 연동을 위한 최소한의 작업 (#75) * build: SpringBatch 설치 및 QueryDsl 버전 설정 * feat: Docker-Compose에 Jenkins 설정 * feat: SpringBatch 데일리 메일 전송 Job 설정 * feat: QuizCategory 조회 API 생성 * chore: 프론트단 데이터 받아오는 형식 JSON으로 변경 * chore: 이미구독중인지 확인하는 메서드 추가 * feat: 이메일 템플릿 추가 * chore: MYSQL 포트 3306 변경 * refactor : 변경된 html과 연동 --------- Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> * fix : 예외처리를 위한 조건문 추가 (#79) * Feat/76 (#80) * feat: 답안 체점 로직 구현 test: - 정상 체점 후 데이터 저장 - 구독 정보 없는 경우 예외 처리 - 퀴즈 정보 없는 경우 예외 처리 * feat: 문제, 정답, 해설 조회 기능 구현 test: - 정상 조회 확인 - 퀴즈 없는 경우 예외처리 * feat: 문제, 정답, 해설 조회 기능 구현 test: - 정상 조회 확인 - 퀴즈 없는 경우 예외처리 * feat: 퀴즈 정답 선택률 조회 기능 구현 test: - 정상 조회 확인 * feat: 퀴즈 정답 선택률 조회 기능 구현 test: - 정상 조회 확인 * refactor: - 도커 컴포즈 mysql 포트 3306 변경 - 레디스 버전 7.2로 변경 - mail test code 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * 도커 컴포즈 수정 * chore: forward-header 전략 설정 (#81) OAuth2 인증을 위한 설정 * 1차 배포 * 1차 배포 * 1차 병합 (#83) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. --------- Co-authored-by: Ksr-ccb <harang4282@gmail.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * fix: aiFeedback 컬럼 데이터길이 수정 (#88) * Chore: 메일서비스 링크 도메인 변경 (#89) * chore: 엔티티수정 * fix: 테스트코드 오류수정 * fix: 테스트코드 오류수정 * fix: 메일 서비스 도메인 수정 * Refactor/78 : 문제풀이 링크 발송 흐름 일부 수정, 성능 개선 1차 (#90) * chore : 테스트용 Job 주석 제거 및 용도별 Job 분리 * chore : batch 커스텀 컴포넌트 패키지 변경 * refactor : processor에 유효성 검증, 문제 출제 추가 * refactor : 문제 출제 위치 변경 * doc : 로그 주석 처리 * chore : 테스트 코드 주석처리 * feat : 테스트용 api 추가 * fix/78 : BatchService Bean 주입 오류 개선 (#93) * fix : BatchService에서 Qualifier 적용을 위해 직접 생성자 작성 * Feat/68 프롬프팅 적용 방식 리팩토링 및 RAG 문서분류성능평가 테스트 코드 작성 (#94) * temp : commit for merge * feat: chroma 연동, RAG 구조 구현 그에 따른 AiService 파일 수정. * refactor: chroma 연동, RAG 구조 구현 수정. * feat: 깃허브 document 생성을 위한 RagService 수정. * feat: 깃허브 document 생성을 위한 RagService 수정. * refactor: answerId 기반 AI 피드백 조회 로직으로 변경 * refactor: 프롬프트 하드코딩 제거 및 YAML 기반 구성 적용 * feat: 크로마 벡터 DB 문서 적재 후 원격 공유 가능하게함 * 변경 사항 저장용 * refactor: 문서 기반 서비스 테스트 리팩토링 * 1차 배포 (#86) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * 도커에 레디스 설정파일 추가 (#7) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * chore: 도커 설정파일에 레디스 추가 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/6 카카오톡 소셜로그인 + jwt 토큰 발급 (#11) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: * `src/main/java/com/example/cs25/domain/ai/exception/AiException.java` * `src/main/java/com/example/cs25/domain/mail/entity/MailLog.java` * `src/main/java/com/example/cs25/domain/mail/exception/MailException.java` * `src/main/java/com/example/cs25/domain/oauth/exception/OauthException.java` * `src/main/java/com/example/cs25/domain/quiz/exception/QuizException.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/entity/UserQuizAnswer.java` * `src/main/java/com/example/cs25/domain/userQuizAnswer/exception/UserQuizAnswerException.java` * `src/main/java/com/example/cs25/domain/users/entity/User.java` * `src/main/java/com/example/cs25/domain/users/exception/UserException.java` * `src/main/java/com/example/cs25/domain/users/vo/Subscription.java` * `src/main/java/com/example/cs25/global/exception/BaseException.java` * `src/main/java/com/example/cs25/global/exception/GlobalExceptionHandler.java` Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Create run-test.yaml * Create PULL_REQUEST_TEMPLATE.md * refactor: ERD 수정으로 인한 Entity 수정 (#4) * refactor: ERD 수정으로 인한 Entity 수정. * refactor: ERD 수정으로 인한 Entity 수정2. * chore: 도커 설정파일에 레디스 추가 * feat: Jwt 토큰 로그인과 Oauth 기본설정 * fix: 오류수정 * fix: 생성자 누락값 수정 * fix: 생성자 누락값 수정 * chore: 코드정리 * feat: Oauth 구조 변경중.. * feat: 카카오톡 로그인 + jwt 생성 테스트 * feat: 레디스 설정추가 * chore: 코드 정리 * refactor: OAuth2LoginSuccessHandler 책임분리 * refactor: 필터에서 이중작업 정리 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Baek jonghyun <69610809+jong-0126@users.noreply.github.com> Co-authored-by: crocusia <132359536+crocusia@users.noreply.github.com> Co-authored-by: Kimyoonbeom <101162650+Kimyoonbeom@users.noreply.github.com> * Feat/9 (#14) * chore : initialize project structure (#2) * chore: initialize project structure * chore: initialize project structure * chore: initialize project structure * fix: 엔티티 오류수정 및 설정파일 오류 수정 * 📝 Add docstrings to `dev` (#3) Docstrings generation was requested by @Ksr-ccb. * https://github.com/NBC-finalProject/CS25/pull/2#issuecomment-2914743195 The following files were modified: *…
1 parent febb7e5 commit 56a349b

File tree

35 files changed

+693
-360
lines changed

35 files changed

+693
-360
lines changed

.github/workflows/service-deploy.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
# 워크 플로우 이름
32
name: CD - Docker Build & Deploy to EC2
43

@@ -56,6 +55,7 @@ jobs:
5655
echo "CLAUDE_API_KEY=${{ secrets.CLAUDE_API_KEY }}" >> .env
5756
echo "AWS_SES_ACCESS_KEY=${{ secrets.AWS_SES_ACCESS_KEY }}" >> .env
5857
echo "AWS_SES_SECRET_KEY=${{ secrets.AWS_SES_SECRET_KEY }}" >> .env
58+
echo "BRAVE_API_KEY=${{ secrets.BRAVE_API_KEY }}" >> .env
5959
6060
# EC2 접속 후 .env 파일 업로드
6161
- name: Upload .env to EC2
@@ -79,31 +79,31 @@ jobs:
7979
8080
echo "[1] 현재 nginx가 사용하는 포트 확인"
8181
CURRENT_PORT=$(grep -o 'proxy_pass http://localhost:[0-9]*;' /etc/nginx/conf.d/api.conf | grep -o '[0-9]*')
82-
82+
8383
if [ "$CURRENT_PORT" = "8080" ]; then
8484
NEW_PORT=8081
8585
OLD_CONTAINER=cs25-8080
8686
else
8787
NEW_PORT=8080
8888
OLD_CONTAINER=cs25-8081
8989
fi
90-
90+
9191
echo "[2] 새로운 포트($NEW_PORT)로 컨테이너 실행"
9292
docker pull baekjonghyun/cs25-service:latest
9393
docker run -d \
9494
--name cs25-$NEW_PORT \
9595
--env-file .env \
9696
-p $NEW_PORT:8080 \
9797
baekjonghyun/cs25-service:latest
98-
98+
9999
echo "[3] nginx 설정 포트 교체 및 reload"
100100
sudo sed -i "s/$CURRENT_PORT/$NEW_PORT/" /etc/nginx/conf.d/api.conf
101101
sudo nginx -t && sudo nginx -s reload
102-
102+
103103
echo "[4] 이전 컨테이너 종료 및 삭제"
104104
docker stop $OLD_CONTAINER || echo "No previous container"
105105
docker rm $OLD_CONTAINER || echo "No previous container"
106-
106+
107107
echo "[✔] 무중단 배포 완료! 현재 포트: $NEW_PORT"
108108
109109

cs25-batch/src/main/java/com/example/cs25batch/batch/component/reader/RedisStreamReader.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.cs25batch.batch.component.reader;
22

3+
import com.example.cs25batch.sender.context.MailSenderContext;
34
import io.github.bucket4j.Bucket;
45
import java.time.Duration;
56
import java.util.HashMap;
@@ -9,6 +10,7 @@
910
import lombok.extern.slf4j.Slf4j;
1011
import org.springframework.batch.item.ItemReader;
1112
import org.springframework.beans.factory.annotation.Qualifier;
13+
import org.springframework.beans.factory.annotation.Value;
1214
import org.springframework.data.redis.connection.stream.Consumer;
1315
import org.springframework.data.redis.connection.stream.MapRecord;
1416
import org.springframework.data.redis.connection.stream.ReadOffset;
@@ -18,27 +20,25 @@
1820
import org.springframework.stereotype.Component;
1921

2022
@Slf4j
23+
@RequiredArgsConstructor
2124
@Component("redisConsumeReader")
2225
public class RedisStreamReader implements ItemReader<Map<String, String>> {
2326

2427
private static final String STREAM = "quiz-email-stream";
2528
private static final String GROUP = "mail-consumer-group";
2629
private static final String CONSUMER = "mail-worker";
2730

28-
private final StringRedisTemplate redisTemplate;
29-
private final Bucket bucket;
31+
@Value("${mail.strategy:javaBatchMailSender}")
32+
private String strategyKey;
3033

31-
public RedisStreamReader(
32-
StringRedisTemplate redisTemplate,
33-
@Qualifier("bucketEmail") Bucket bucket
34-
) {
35-
this.redisTemplate = redisTemplate;
36-
this.bucket = bucket;
37-
}
34+
private final StringRedisTemplate redisTemplate;
35+
private final MailSenderContext mailSenderContext;
3836

3937
@Override
4038
public Map<String, String> read() throws InterruptedException {
4139
//long start = System.currentTimeMillis();
40+
Bucket bucket = mailSenderContext.getBucket(strategyKey);
41+
4242
while (!bucket.tryConsume(1)) {
4343
Thread.sleep(200); //토큰을 얻을 때까지 간격을 두고 재시도
4444
}

cs25-batch/src/main/java/com/example/cs25batch/batch/service/TodayQuizService.java

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.cs25batch.batch.service;
22

3+
import com.example.cs25entity.domain.mail.repository.MailLogRepository;
34
import com.example.cs25entity.domain.quiz.entity.Quiz;
45
import com.example.cs25entity.domain.quiz.enums.QuizFormatType;
56
import com.example.cs25entity.domain.quiz.enums.QuizLevel;
@@ -8,12 +9,12 @@
89
import com.example.cs25entity.domain.quiz.repository.QuizRepository;
910
import com.example.cs25entity.domain.subscription.entity.Subscription;
1011
import com.example.cs25entity.domain.subscription.repository.SubscriptionRepository;
11-
import com.example.cs25entity.domain.userQuizAnswer.entity.UserQuizAnswer;
1212
import com.example.cs25entity.domain.userQuizAnswer.repository.UserQuizAnswerRepository;
13+
1314
import java.time.LocalDate;
14-
import java.util.HashSet;
1515
import java.util.List;
1616
import java.util.Set;
17+
1718
import lombok.RequiredArgsConstructor;
1819
import lombok.extern.slf4j.Slf4j;
1920
import org.springframework.stereotype.Service;
@@ -30,6 +31,7 @@ public class TodayQuizService {
3031
private final QuizRepository quizRepository;
3132
private final SubscriptionRepository subscriptionRepository;
3233
private final UserQuizAnswerRepository userQuizAnswerRepository;
34+
private final MailLogRepository mailLogRepository;
3335
private final SesMailService mailService;
3436

3537
@Transactional
@@ -39,48 +41,53 @@ public Quiz getTodayQuizBySubscription(Subscription subscription) {
3941
Long subscriptionId = subscription.getId();
4042

4143
// 2. 유저 정답률 계산, 내가 푼 문제 아이디값
42-
List<UserQuizAnswer> answerHistory = userQuizAnswerRepository.findBySubscriptionIdAndQuizCategoryId(
43-
subscriptionId, parentCategoryId);
44-
int quizCount = answerHistory.size(); // 사용자가 지금까지 푼 문제 수
45-
int totalCorrect = 0;
46-
Set<Long> solvedQuizIds = new HashSet<>();
47-
48-
for (UserQuizAnswer answer : answerHistory) {
49-
if (answer.getIsCorrect()) {
50-
totalCorrect++;
51-
}
52-
solvedQuizIds.add(answer.getQuiz().getId());
53-
}
44+
Double accuracyResult = userQuizAnswerRepository.getCorrectRate(subscriptionId,
45+
parentCategoryId);
46+
double accuracy = accuracyResult != null ? accuracyResult : 100.0;
47+
48+
Set<Long> sentQuizIds = mailLogRepository.findDistinctQuiz_IdBySubscription_Id(subscriptionId);
49+
int quizCount = sentQuizIds.size(); // 사용자가 지금까지 푼 문제 수
5450

55-
double accuracy =
56-
quizCount == 0 ? 100.0 : ((double) totalCorrect / quizCount) * 100.0;
5751
// 6. 서술형 주기 판단 (풀이 횟수 기반)
58-
boolean isEssayDay = quizCount % 3 == 2; //일단 3배수일때 한번씩은 서술( 조정 필요하면 나중에 하는거롤)
52+
boolean isEssayDay = quizCount % 4 == 3; //일단 3배수일때 한번씩은 서술(0,1,2 객관식 / 3서술형)
5953

60-
List<QuizFormatType> targetTypes = isEssayDay
61-
? List.of(QuizFormatType.SUBJECTIVE)
62-
: List.of(QuizFormatType.MULTIPLE_CHOICE);
54+
QuizFormatType targetType = isEssayDay
55+
? QuizFormatType.SUBJECTIVE
56+
: QuizFormatType.MULTIPLE_CHOICE;
6357

6458
// 3. 정답률 기반 난이도 바운더리 설정
6559
List<QuizLevel> allowedDifficulties = getAllowedDifficulties(accuracy);
6660

61+
// 8. 오프셋 계산 (풀이 수 기준)
62+
long seed = LocalDate.now().toEpochDay() + subscriptionId;
63+
int offset = (int) (seed % 20);
64+
6765
// 7. 필터링 조건으로 문제 조회(대분류, 난이도, 내가푼문제 제외, 제외할 카테고리 제외하고, 문제 타입 전부 조건으로)
68-
List<Quiz> candidateQuizzes = quizRepository.findAvailableQuizzesUnderParentCategory(
69-
parentCategoryId,
70-
allowedDifficulties,
71-
solvedQuizIds,
72-
//excludedCategoryIds,
73-
targetTypes
74-
); //한개만뽑기(find first)
75-
76-
if (candidateQuizzes.isEmpty()) { // 뽀ㅃ을문제없을때
77-
throw new QuizException(QuizExceptionCode.NO_QUIZ_EXISTS_ERROR);
66+
67+
Quiz todayQuiz = quizRepository.findAvailableQuizzesUnderParentCategory(
68+
parentCategoryId,
69+
allowedDifficulties,
70+
sentQuizIds,
71+
//excludedCategoryIds,
72+
targetType,
73+
offset
74+
);
75+
76+
// offset이 너무 커서 결과가 없을 수 있으므로, offset=0으로 한 번 더 조회
77+
if (todayQuiz == null && offset > 0) {
78+
todayQuiz = quizRepository.findAvailableQuizzesUnderParentCategory(
79+
parentCategoryId,
80+
allowedDifficulties,
81+
sentQuizIds,
82+
targetType,
83+
0
84+
);
85+
}
86+
if (todayQuiz == null) {
87+
throw new QuizException(QuizExceptionCode.QUIZ_VALIDATION_FAILED_ERROR);
7888
}
7989

80-
// 8. 오프셋 계산 (풀이 수 기준)
81-
long seed = LocalDate.now().toEpochDay() + subscriptionId;
82-
int offset = (int) (seed % candidateQuizzes.size());
83-
return candidateQuizzes.get(offset);
90+
return todayQuiz;
8491
}
8592

8693

cs25-batch/src/main/java/com/example/cs25batch/config/RateLimiterConfig.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

cs25-batch/src/main/java/com/example/cs25batch/sender/JavaMailSenderStrategy.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,33 @@
22

33
import com.example.cs25batch.batch.dto.MailDto;
44
import com.example.cs25batch.batch.service.JavaMailService;
5+
import io.github.bucket4j.Bandwidth;
6+
import io.github.bucket4j.Bucket;
57
import lombok.RequiredArgsConstructor;
68
import org.springframework.stereotype.Component;
79

10+
import java.time.Duration;
11+
812
@Component("javaBatchMailSender")
913
@RequiredArgsConstructor
1014
public class JavaMailSenderStrategy implements MailSenderStrategy{
1115
private final JavaMailService javaMailService;
16+
private final Bucket bucket = Bucket.builder()
17+
.addLimit(
18+
Bandwidth.builder()
19+
.capacity(4)
20+
.refillGreedy(2, Duration.ofMillis(500))
21+
.build()
22+
)
23+
.build();
1224

1325
@Override
1426
public void sendQuizMail(MailDto mailDto) {
1527
javaMailService.sendQuizEmail(mailDto.getSubscription(), mailDto.getQuiz()); // 커스텀 메서드로 정의
1628
}
29+
30+
@Override
31+
public Bucket getBucket() {
32+
return bucket;
33+
}
1734
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.example.cs25batch.sender;
22

33
import com.example.cs25batch.batch.dto.MailDto;
4+
import io.github.bucket4j.Bucket;
45

56
public interface MailSenderStrategy {
67
void sendQuizMail(MailDto mailDto);
8+
9+
Bucket getBucket();
710
}

cs25-batch/src/main/java/com/example/cs25batch/sender/SesMailSenderStrategy.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,34 @@
22

33
import com.example.cs25batch.batch.dto.MailDto;
44
import com.example.cs25batch.batch.service.SesMailService;
5+
import io.github.bucket4j.Bandwidth;
6+
import io.github.bucket4j.Bucket;
57
import lombok.RequiredArgsConstructor;
68
import org.springframework.stereotype.Component;
79

10+
import java.time.Duration;
11+
812
@RequiredArgsConstructor
913
@Component("sesMailSender")
1014
public class SesMailSenderStrategy implements MailSenderStrategy{
1115

1216
private final SesMailService sesMailService;
17+
private final Bucket bucket = Bucket.builder()
18+
.addLimit(
19+
Bandwidth.builder()
20+
.capacity(14)
21+
.refillGreedy(7, Duration.ofMillis(500))
22+
.build()
23+
)
24+
.build();
1325

1426
@Override
1527
public void sendQuizMail(MailDto mailDto) {
1628
sesMailService.sendQuizEmail(mailDto.getSubscription(), mailDto.getQuiz());
1729
}
30+
31+
@Override
32+
public Bucket getBucket() {
33+
return bucket;
34+
}
1835
}

cs25-batch/src/main/java/com/example/cs25batch/sender/context/MailSenderContext.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import com.example.cs25batch.batch.dto.MailDto;
44
import com.example.cs25batch.sender.MailSenderStrategy;
55
import java.util.Map;
6+
7+
import io.github.bucket4j.Bucket;
68
import lombok.RequiredArgsConstructor;
79
import org.springframework.stereotype.Component;
810

@@ -12,10 +14,21 @@ public class MailSenderContext {
1214
private final Map<String, MailSenderStrategy> strategyMap;
1315

1416
public void send(MailDto dto, String strategyKey) {
17+
MailSenderStrategy strategy = getValidStrategy(strategyKey);
18+
strategy.sendQuizMail(dto);
19+
}
20+
21+
public Bucket getBucket(String strategyKey) {
22+
MailSenderStrategy strategy = getValidStrategy(strategyKey);
23+
return strategy.getBucket();
24+
}
25+
26+
private MailSenderStrategy getValidStrategy(String strategyKey) {
1527
MailSenderStrategy strategy = strategyMap.get(strategyKey);
1628
if (strategy == null) {
1729
throw new IllegalArgumentException("메일 전략이 존재하지 않습니다: " + strategyKey);
1830
}
19-
strategy.sendQuizMail(dto);
31+
return strategy;
2032
}
33+
2134
}

cs25-batch/src/main/resources/application.properties

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,4 @@ server.forward-headers-strategy=framework
4343
#mail
4444
mail.strategy=sesMailSender
4545
#mail.strategy=javaBatchMailSender
46-
mail.ratelimiter.capacity=14
47-
mail.ratelimiter.refill=7
48-
mail.ratelimiter.millis=1000
4946
server.error.whitelabel.enabled=false

0 commit comments

Comments
 (0)