Skip to content

[10.11.2] 배포#419

Merged
crocusia merged 229 commits intomainfrom
dev
Aug 20, 2025
Merged

[10.11.2] 배포#419
crocusia merged 229 commits intomainfrom
dev

Conversation

@crocusia
Copy link
Member

@crocusia crocusia commented Aug 20, 2025

🔎 작업 내용

  • 문제 출제 fallback 구조 도입
    서술형 없는 경우 객관식 문제가 대체되어 출제됨

Summary by CodeRabbit

  • New Features
    • Brave 검색 연동 활성화(표준 입출력 연결) 및 결과 정규화 제공
    • RAG용 문서 생성 로직 고도화로 더 관련도 높은 요약/본문 제공
  • Refactor
    • AI 채팅(OpenAI/Claude)에 회로차단기·재시도 적용으로 동기/스트림 응답의 안정성 향상
    • 데일리 퀴즈 선택 전략 개선으로 가용 퀴즈 탐색 성공률 향상
  • Chores
    • Docker 이미지 빌드 단계 단순화 및 실행 검증 추가
    • 회로차단기/재시도 기본 설정 추가 및 불필요 초기화 플래그 제거

Ksr-ccb and others added 30 commits May 28, 2025 11:50
Docstrings generation was requested by @Ksr-ccb.

* #2 (comment)

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>
* 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.

* #2 (comment)

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>
* 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.

* #2 (comment)

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>
* 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.

* #2 (comment)

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 3ca826f.

* 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>
* 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.

* #2 (comment)

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 3ca826f.

* 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(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 케시 삭제
* chore: AuthUser, Role 클래스 global.dto 패키지로 이동

* chore: OAuth 패키지 이름 변경

* chore: 주석 및 띄어쓰기 수정

* feat: OAuth2 응답객체 생성 및 수정

* refactor: OAuth2 서비스 로직 리팩토링

* chore: 임시 랜딩페이지 추가

* chore: Role 클래스를 user.entity 패키지로 이동

* refactor: 소셜정보 가져올 때, 예외처리 추가
* 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.

* #2 (comment)

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 3ca826f.

* 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: 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>
* 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.

* #2 (comment)

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>
* 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.

* #2 (comment)

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 3ca826f.

* 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>
* 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.

* #2 (comment)

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 3ca826f.

* 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>
* 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()` 함수 사용
* 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.

* #2 (comment)

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 : 이메일 발송을 위한 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 위치 변경
* 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.

* #2 (comment)

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 3ca826f.

* 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>
* 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.

* #2 (comment)

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 3ca826f.

* 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>
* 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.

* #2 (comment)

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 3ca826f.

* 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>
* temp : commit for merge

* feat: chroma 연동, RAG 구조 구현

그에 따른 AiService 파일 수정.

* refactor: chroma 연동, RAG 구조 구현 수정.
* 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: 간단 로직 수정
* 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.

* #2 (comment)

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 : 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.

* #2 (comment)

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 : 깃허브 url Parser 추가

* feat : 크롤링 기능 추가

* feat : 프로젝트 내에 저장 기능 추가

* feat : 크롤링한 파일을 프로젝트 폴더 내에 저장하는 기능 추가

* chore : chroma 설정 주석 해제

* feat : 컨트롤러 추가

* feat : VectorStore에 저장 메서드 추가

* refactor : List<Document> 전역변수에서 지역변수로 변경

* feat : CrawlerController 예외 추가
test:
- 정상 체점 후 데이터 저장
- 구독 정보 없는 경우 예외 처리
- 퀴즈 정보 없는 경우 예외 처리
HeeMang-Lee and others added 27 commits August 12, 2025 14:31
* refactor: 코드에서 listTools()를 초기화 및 타임아웃 시간 연장

* refactor:기존 MCP서비스 사용 및 앱 부팅시초기화 true설정 자동도구등록 설정
* refactor: 코드에서 listTools()를 초기화 및 타임아웃 시간 연장

* refactor:기존 MCP서비스 사용 및 앱 부팅시초기화 true설정 자동도구등록 설정

* chore: 버젼 명시 해제
* refactor: 코드에서 listTools()를 초기화 및 타임아웃 시간 연장

* refactor:기존 MCP서비스 사용 및 앱 부팅시초기화 true설정 자동도구등록 설정

* chore: 버젼 명시 해제

* chore : 도커파일 테스트 시 빌드되는 거 수정
* chore:고정 변경사항 추적

* refactor : 10차 배포로 회귀
* chore:고정 변경사항 추적

* refactor : 10차 배포로 회귀

* chore/385 10차 배포 서비스로 회귀
* chore: MCP 설정 변경

* chore: MCP Brave Search 서버 경로 변경
* chore: MCP 서버 전역설치 및 심볼릭 링크 생성, 빌드타임 확인 명령어 추가

* chore: 서비스 모듈 빌드 확인 명령어 추가
* refactor: 래퍼스크립트를 만들어 커맨드명 유지하도록 도커파일 수정

* refactor:
MCP 서버 fix stdio args
…ve-search 제공 (#407)

* refactor: 래퍼스크립트를 만들어 커맨드명 유지하도록 도커파일 수정

* refactor:
MCP 서버 fix stdio args

* chore:deprecated 패키지 제거, 공식 Brave MCP 서버 설치, 래퍼 스크립트로 server-brave-search 제공
* refactor: 래퍼스크립트를 만들어 커맨드명 유지하도록 도커파일 수정

* refactor:
MCP 서버 fix stdio args

* chore:deprecated 패키지 제거, 공식 Brave MCP 서버 설치, 래퍼 스크립트로 server-brave-search 제공

* chore:앱 부팅시 초기화 설정 ON
* refactor: Json파싱 표준화로 MCP servie 리팩토링

* refactor: 재귀 파싱 스택 오버플로 방지 , description에 HTML 태그 제거, 정규화된 배열로 반환

* refactor:본문 없는 경우 조건완화, results배열 JSON처리, 미초기화 감지 문자열 판별 추가
* feat:레질리언스4j 빌드그래들 설정

* feat:레질리언스 appliciation properties 설정

* feat:fallback구조 CB,Retry 데코레이터 패턴 적용

* chore:스트림 오류 매핑 적용 이후로 이동

* chore:4xx 오류 집계 제외
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 20, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

여러 모듈 전반에서 로직과 인프라 구성이 갱신됨. 배치의 TodayQuizService는 다중 타입/오프셋 탐색으로 선택 전략을 재구성했고, cs25-service는 Resilience4j 도입(AiResilience)과 AI 클라이언트 래핑, Brave MCP 결과 정규화/파싱 개선, Dockerfile 설치/래퍼 정리, 애플리케이션 설정 추가를 포함함.

Changes

Cohort / File(s) Change Summary
배치: 오늘의 퀴즈 선택 로직
cs25-batch/src/main/java/.../TodayQuizService.java
트랜잭션을 readOnly로 변경. 에세이 여부에 따라 대체 타입 계산. 타입×오프셋 조합을 순회하는 tryFindQuiz 도입(오프셋 0 포함). 실패 시 로그 후 예외.
Docker: Brave MCP 설치/래퍼
cs25-service/Dockerfile
Node.js 22 + Brave MCP 설치 RUN 블록을 단일 set -eux로 정리. wrapper 스크립트는 PATH의 node를 직접 exec. 빌드 시 wrapper 동작 헬스 체크 추가. 불필요 패키지 정리 강화.
빌드 의존성(Resilience4j)
cs25-service/build.gradle
resilience4j-spring-boot3, circuitbreaker, retry, reactor(2.3.0) 추가.
AI 클라이언트: OpenAI/Claude 회복력 래핑
cs25-service/src/main/java/.../OpenAiChatClient.java, .../ClaudeChatClient.java
AiResilience 주입 필드 추가로 생성자 시그니처 변경. call/stream 경로를 executeSync/executeStream으로 래핑. 스트림 오류 변환(onErrorMap) 적용.
회복력 컴포넌트 추가
cs25-service/src/main/java/.../resilience/AiResilience.java
Resilience4j CircuitBreaker/Retry를 사용하는 executeSync/executeStream 제공. Sync는 Retry→CB, Stream은 RetryOperator→CBOperator 적용.
Brave MCP 결과 정규화
cs25-service/src/main/java/.../service/BraveSearchMcpService.java
MCP 도구 탐지/초기화 재시도 보강. 원시 결과를 JSON/텍스트 혼합 입력에서 단일 results 배열로 정규화하는 파이프라인 추가(재귀 깊이 제한 포함).
Brave RAG 변환 개선
cs25-service/src/main/java/.../service/BraveSearchRagService.java
results를 표준 필드 우선, 실패 시 텍스트 JSON 파싱, 최종적으로 레거시 블록 파싱으로 문서화. 추출 실패 항목 건너뜀.
애플리케이션 설정(Resilience4j/MCP)
cs25-service/src/main/resources/application.properties
Brave STDIO 연결 프로퍼티 추가. MCP 초기화 플래그 제거. Resilience4j CB/Retry 기본값과 인스턴스 매핑(openai, claude) 및 무시 예외 설정 추가. 기존 메일 설정 유지.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor S as Service
  participant R as AiResilience
  participant C as OpenAI/Claude Client
  participant P as Provider API

  rect rgb(230,245,255)
  note over S,R: 동기 호출 경로
  S->>R: executeSync("openai"/"claude", supplier)
  R->>C: CircuitBreaker+Retry로 데코레이트된 호출
  C->>P: 요청 전송
  P-->>C: 응답
  C-->>R: 결과
  R-->>S: 결과 반환
  end

  rect rgb(240,255,240)
  note over S,R: 스트리밍 경로
  S->>R: executeStream("openai"/"claude", supplier)
  R->>C: RetryOperator→CBOperator 적용 Flux
  C->>P: 스트림 요청
  P-->>C: 스트림 청크
  C-->>R: Flux<String>
  R-->>S: Flux<String> (오류는 AiException으로 매핑)
  end
Loading
sequenceDiagram
  autonumber
  actor B as Batch
  participant T as TodayQuizService
  participant Q as QuizRepository

  B->>T: getTodayQuizBySubscription(sub)
  T->>T: targetType/alterType 계산
  T->>T: offsetsToTry = {offset, 0}
  loop 타입×오프셋 조합
    T->>Q: find(..., type, offset)
    alt 발견됨
      Q-->>T: Quiz
      T-->>B: Quiz 반환
    else 미발견
      Q-->>T: empty
    end
  end
  T-->>B: 예외(미발견)
Loading
sequenceDiagram
  autonumber
  actor S as Service
  participant M as BraveSearchMcpService
  participant Cli as MCP Client
  participant N as Normalizer

  S->>M: search(query)
  M->>Cli: listTools()
  alt McpError or 미초기화
    M->>Cli: initialize() 후 listTools() 재시도
  end
  M->>Cli: brave_web_search 실행
  Cli-->>M: raw content
  M->>N: normalizeContent(raw)
  N-->>M: ArrayNode(results)
  M-->>S: { results: [...] }
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

chore

Suggested reviewers

  • Kimyoonbeom
  • HeeMang-Lee
  • Ksr-ccb
  • wannabeing

Poem

짧은 귀가 깃발처럼 팔랑—
회로 위에 방패 둘, 재시도 하나 장착!
용감한 토끼, 브레이브를 고르고 다듬어
흩어진 결과를 한 바구니에 담았지.
퀴즈도 척! 모델도 척!
오늘도 안정적으로, 폴짝! 🐇✨

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 15b4a37 and 264ebd5.

📒 Files selected for processing (9)
  • cs25-batch/src/main/java/com/example/cs25batch/batch/service/TodayQuizService.java (5 hunks)
  • cs25-service/Dockerfile (1 hunks)
  • cs25-service/build.gradle (1 hunks)
  • cs25-service/src/main/java/com/example/cs25service/domain/ai/client/ClaudeChatClient.java (3 hunks)
  • cs25-service/src/main/java/com/example/cs25service/domain/ai/client/OpenAiChatClient.java (3 hunks)
  • cs25-service/src/main/java/com/example/cs25service/domain/ai/resilience/AiResilience.java (1 hunks)
  • cs25-service/src/main/java/com/example/cs25service/domain/ai/service/BraveSearchMcpService.java (3 hunks)
  • cs25-service/src/main/java/com/example/cs25service/domain/ai/service/BraveSearchRagService.java (2 hunks)
  • cs25-service/src/main/resources/application.properties (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@crocusia crocusia merged commit 52ae1ed into main Aug 20, 2025
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants