Skip to content

Develop 최종 배포 - #87

Merged
thepackour merged 183 commits into
mainfrom
develop
Aug 12, 2026
Merged

Develop 최종 배포#87
thepackour merged 183 commits into
mainfrom
develop

Conversation

@chunny-k

Copy link
Copy Markdown
Contributor

최종 배포

thepackour and others added 30 commits July 10, 2026 10:57
환경변수 값은 노션 참고
주간 스터디 분석 리포트를 자동 생성하기 위해 Google Gemini API(3.5-flash) 연동 로직을 구현

[상세 작업 내용]
- RestTemplate 기반의 GeminiApiService 구현
- Fallback 로직 적용
- JSON 출력 스키마 프롬프트 설계 (요약 통계, 핵심 노드, AI 리뷰, 추천 노드, 유저별 활동 통계)

[TODO]
- 임시 더미 코드 제거 후 DB 연동 TODO 주석만 남겨둠
- 추후 도메인 엔티티 확정 시, ReportService에서 실제 통계 데이터를 집계하여 AI 프롬프트 Context로 주입하는 로직 구현 필요
feat: 리포트용 Gemini AI 연동 인프라 구축 및 프롬프트 템플릿 설계
Feature/#27 Implement Study Features
하드코딩되어 있던 Gemini API URL을 환경변수로 분리했습니다
chore/#28 Gemini API URL 환경변수 분리
Feature/#27 study : 온톨로지 템플릿 기능 구현
- 질문/답글 CRUD API 및 다중 이미지 업로드 API(S3 연동, presigned URL) 구현
- ERD에 맞춰 study/entity의 Question/Answer 엔티티 재사용, 중복 엔티티 스캐폴드 제거
- inquiry API 확인용 샘플 프론트엔드 추가 (static/index.html, assets/*)
thepackour and others added 28 commits August 8, 2026 00:35
Feature/#72 reissue with userid : 토큰 재발급 응답에 userId 추가
Feature/#75 Swagger API study 관련 문서화 설정 추가
Feature/#27 study : 온톨로지 템플릿 검색 기준 title로 변경
- OAuth 로그인 진입 엔드포인트 추가
- 허용된 프론트 리다이렉트 URL 저장 및 검증 처리
- 로그인 성공 시 refreshToken 쿠키 발급 후 프론트로 리다이렉트
- accessToken은 기존 재발급 API(/api/auth/reissue)를 통해 수령하도록 유지
- 로그인 성공 응답 상태코드 401 -> 200 수정
- 로컬 프론트 연동을 위한 localhost:5173 CORS 허용 추가
Feature/#76 카카오 OAuth 성공 리다이렉트 처리 추가
permitAll에 /api/auth/reissue 추가
05, 06 중복으로 인해 08, 09로 수정
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 207 files, which is 107 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: fa67d215-a8f7-43d6-908c-1e0e21f4d5ce

📥 Commits

Reviewing files that changed from the base of the PR and between 340a3e0 and 369d8f1.

📒 Files selected for processing (207)
  • .github/workflows/deploy.yml
  • .github/workflows/pr-test.yml
  • .github/workflows/sync-env.yml
  • .gitignore
  • .gitmodules
  • build.gradle
  • config
  • docker-compose.yml
  • src/main/java/com/stology/be/BeApplication.java
  • src/main/java/com/stology/be/domain/auth/controller/AuthController.java
  • src/main/java/com/stology/be/domain/auth/dto/AuthResDTO.java
  • src/main/java/com/stology/be/domain/auth/dto/TokenDTO.java
  • src/main/java/com/stology/be/domain/auth/exception/code/AuthSuccessCode.java
  • src/main/java/com/stology/be/domain/auth/repository/BlacklistTokenRepository.java
  • src/main/java/com/stology/be/domain/auth/repository/RedisBlacklistTokenRepository.java
  • src/main/java/com/stology/be/domain/auth/service/AuthService.java
  • src/main/java/com/stology/be/domain/home/controller/HomeController.java
  • src/main/java/com/stology/be/domain/home/converter/CursorConverter.java
  • src/main/java/com/stology/be/domain/home/converter/HomeConverter.java
  • src/main/java/com/stology/be/domain/home/dto/NodeActivityKey.java
  • src/main/java/com/stology/be/domain/home/dto/res/AnswerDetailRes.java
  • src/main/java/com/stology/be/domain/home/dto/res/MaterialDetailRes.java
  • src/main/java/com/stology/be/domain/home/dto/res/MyTodoRes.java
  • src/main/java/com/stology/be/domain/home/dto/res/QuestionDetailRes.java
  • src/main/java/com/stology/be/domain/home/dto/res/ReportDetailRes.java
  • src/main/java/com/stology/be/domain/home/dto/res/TeamActivityRes.java
  • src/main/java/com/stology/be/domain/home/enums/TeamActivityType.java
  • src/main/java/com/stology/be/domain/home/exception/HomeException.java
  • src/main/java/com/stology/be/domain/home/exception/code/HomeErrorCode.java
  • src/main/java/com/stology/be/domain/home/exception/code/HomeSuccessCode.java
  • src/main/java/com/stology/be/domain/home/service/HomeInfoService.java
  • src/main/java/com/stology/be/domain/home/service/HomeSpecificInfoService.java
  • src/main/java/com/stology/be/domain/inquiry/controller/InquiryController.java
  • src/main/java/com/stology/be/domain/inquiry/converter/InquiryConverter.java
  • src/main/java/com/stology/be/domain/inquiry/dto/request/InquiryReqDTO.java
  • src/main/java/com/stology/be/domain/inquiry/dto/response/InquiryResDTO.java
  • src/main/java/com/stology/be/domain/inquiry/enums/InquiryStatus.java
  • src/main/java/com/stology/be/domain/inquiry/exception/InquiryErrorCode.java
  • src/main/java/com/stology/be/domain/inquiry/exception/InquiryException.java
  • src/main/java/com/stology/be/domain/inquiry/exception/InquirySuccessCode.java
  • src/main/java/com/stology/be/domain/inquiry/repository/InquiryImageRepository.java
  • src/main/java/com/stology/be/domain/inquiry/repository/InquiryReadRepository.java
  • src/main/java/com/stology/be/domain/inquiry/repository/InquiryReplyImageRepository.java
  • src/main/java/com/stology/be/domain/inquiry/repository/InquiryReplyRepository.java
  • src/main/java/com/stology/be/domain/inquiry/repository/InquiryRepository.java
  • src/main/java/com/stology/be/domain/inquiry/service/AnswerService.java
  • src/main/java/com/stology/be/domain/inquiry/service/FinderService.java
  • src/main/java/com/stology/be/domain/inquiry/service/ImageService.java
  • src/main/java/com/stology/be/domain/inquiry/service/ImageStorageService.java
  • src/main/java/com/stology/be/domain/inquiry/service/ImageTokensService.java
  • src/main/java/com/stology/be/domain/inquiry/service/QuestionService.java
  • src/main/java/com/stology/be/domain/inquiry/service/ReadService.java
  • src/main/java/com/stology/be/domain/inquiry/service/WriteTxService.java
  • src/main/java/com/stology/be/domain/member/entity/Member.java
  • src/main/java/com/stology/be/domain/node/controller/ActiveNodeController.java
  • src/main/java/com/stology/be/domain/node/controller/KnowledgeGraphController.java
  • src/main/java/com/stology/be/domain/node/controller/StudyNodeFlowController.java
  • src/main/java/com/stology/be/domain/node/dto/NodeVoteInfoDto.java
  • src/main/java/com/stology/be/domain/node/dto/StudyNodePromptDto.java
  • src/main/java/com/stology/be/domain/node/dto/req/AcceptNodeReq.java
  • src/main/java/com/stology/be/domain/node/dto/res/AcceptNodeRes.java
  • src/main/java/com/stology/be/domain/node/dto/res/KnowledgeGraphResponseDto.java
  • src/main/java/com/stology/be/domain/node/dto/res/NodeExaminationInfoRes.java
  • src/main/java/com/stology/be/domain/node/dto/res/NodeInfoRes.java
  • src/main/java/com/stology/be/domain/node/dto/res/WeekNodeRes.java
  • src/main/java/com/stology/be/domain/node/entity/NodeCandidate.java
  • src/main/java/com/stology/be/domain/node/entity/NodeCandidateVoteInfo.java
  • src/main/java/com/stology/be/domain/node/entity/StudyMaterial.java
  • src/main/java/com/stology/be/domain/node/entity/StudyNode.java
  • src/main/java/com/stology/be/domain/node/entity/Template.java
  • src/main/java/com/stology/be/domain/node/entity/neo4j/TemplateGraphNode.java
  • src/main/java/com/stology/be/domain/node/entity/neo4j/TemplateNodeGraphNode.java
  • src/main/java/com/stology/be/domain/node/entity/neo4j/TemplateNodeRelation.java
  • src/main/java/com/stology/be/domain/node/entity/neo4j/copy/StudyNodeGraphNode.java
  • src/main/java/com/stology/be/domain/node/entity/neo4j/copy/StudyNodeRelation.java
  • src/main/java/com/stology/be/domain/node/entity/neo4j/copy/TemplateStudyGraphNode.java
  • src/main/java/com/stology/be/domain/node/enums/CandidateState.java
  • src/main/java/com/stology/be/domain/node/enums/VoteType.java
  • src/main/java/com/stology/be/domain/node/exception/NodeException.java
  • src/main/java/com/stology/be/domain/node/exception/code/NodeErrorCode.java
  • src/main/java/com/stology/be/domain/node/exception/code/NodeSuccessCode.java
  • src/main/java/com/stology/be/domain/node/repository/NodeCandidateRepository.java
  • src/main/java/com/stology/be/domain/node/repository/NodeCandidateVoteInfoRepository.java
  • src/main/java/com/stology/be/domain/node/repository/StudyMaterialRepository.java
  • src/main/java/com/stology/be/domain/node/repository/StudyNodeRepository.java
  • src/main/java/com/stology/be/domain/node/repository/neo4j/TemplateGraphRepository.java
  • src/main/java/com/stology/be/domain/node/repository/neo4j/TemplateNodeGraphRepository.java
  • src/main/java/com/stology/be/domain/node/repository/neo4j/copy/StudyNodeGraphRepository.java
  • src/main/java/com/stology/be/domain/node/repository/neo4j/copy/TemplateStudyGraphRepository.java
  • src/main/java/com/stology/be/domain/node/service/KnowledgeGraphService.java
  • src/main/java/com/stology/be/domain/node/service/NodeVoteService.java
  • src/main/java/com/stology/be/domain/node/service/WeekNodeService.java
  • src/main/java/com/stology/be/domain/report/controller/ReportController.java
  • src/main/java/com/stology/be/domain/report/converter/MemberActivityStatisticsListConverter.java
  • src/main/java/com/stology/be/domain/report/converter/RecommendedNodeListConverter.java
  • src/main/java/com/stology/be/domain/report/converter/WeeklyCoreNodeListConverter.java
  • src/main/java/com/stology/be/domain/report/dto/WeeklyCoreNodeDto.java
  • src/main/java/com/stology/be/domain/report/dto/response/ReportResponseDto.java
  • src/main/java/com/stology/be/domain/report/entity/Report.java
  • src/main/java/com/stology/be/domain/report/entity/ReportReadHistory.java
  • src/main/java/com/stology/be/domain/report/exception/ReportErrorCode.java
  • src/main/java/com/stology/be/domain/report/exception/ReportException.java
  • src/main/java/com/stology/be/domain/report/exception/ReportExceptionAdvice.java
  • src/main/java/com/stology/be/domain/report/repository/ReportReadHistoryRepository.java
  • src/main/java/com/stology/be/domain/report/repository/ReportRepository.java
  • src/main/java/com/stology/be/domain/report/scheduler/ReportScheduler.java
  • src/main/java/com/stology/be/domain/report/service/ReportService.java
  • src/main/java/com/stology/be/domain/study/controller/StudyController.java
  • src/main/java/com/stology/be/domain/study/converter/StudyConverter.java
  • src/main/java/com/stology/be/domain/study/dto/StudyReqDTO.java
  • src/main/java/com/stology/be/domain/study/dto/StudyResDTO.java
  • src/main/java/com/stology/be/domain/study/entity/Answer.java
  • src/main/java/com/stology/be/domain/study/entity/MemberStudy.java
  • src/main/java/com/stology/be/domain/study/entity/Question.java
  • src/main/java/com/stology/be/domain/study/entity/QuestionRead.java
  • src/main/java/com/stology/be/domain/study/entity/Report.java
  • src/main/java/com/stology/be/domain/study/entity/Study.java
  • src/main/java/com/stology/be/domain/study/event/StudyCreatedEvent.java
  • src/main/java/com/stology/be/domain/study/event/StudyCreatedEventListener.java
  • src/main/java/com/stology/be/domain/study/exception/StudyException.java
  • src/main/java/com/stology/be/domain/study/exception/code/StudyErrorCode.java
  • src/main/java/com/stology/be/domain/study/exception/code/StudySuccessCode.java
  • src/main/java/com/stology/be/domain/study/repository/MemberStudyRepository.java
  • src/main/java/com/stology/be/domain/study/repository/QuestionRepository.java
  • src/main/java/com/stology/be/domain/study/repository/StudyRepository.java
  • src/main/java/com/stology/be/domain/study/service/StudyService.java
  • src/main/java/com/stology/be/domain/template/component/TemplateInitializer.java
  • src/main/java/com/stology/be/domain/template/dto/TemplateActivateDto.java
  • src/main/java/com/stology/be/domain/template/dto/TemplateImportDto.java
  • src/main/java/com/stology/be/domain/template/dto/TemplateNodeActivateDto.java
  • src/main/java/com/stology/be/domain/template/dto/TemplateNodeCountProjection.java
  • src/main/java/com/stology/be/domain/template/dto/TemplateNodeDto.java
  • src/main/java/com/stology/be/domain/template/dto/TemplateRelationDto.java
  • src/main/java/com/stology/be/domain/template/repository/TemplateRepository.java
  • src/main/java/com/stology/be/domain/template/service/MysqlTemplateActivateService.java
  • src/main/java/com/stology/be/domain/template/service/MysqlTemplateImportService.java
  • src/main/java/com/stology/be/domain/template/service/Neo4jTemplateActivateService.java
  • src/main/java/com/stology/be/domain/template/service/Neo4jTemplateImportService.java
  • src/main/java/com/stology/be/domain/template/service/TemplateActivateService.java
  • src/main/java/com/stology/be/domain/template/service/TemplateImportService.java
  • src/main/java/com/stology/be/domain/upload/component/ReAnalyzeAiListener.java
  • src/main/java/com/stology/be/domain/upload/component/SseEmitterRepository.java
  • src/main/java/com/stology/be/domain/upload/component/UploadedAiListener.java
  • src/main/java/com/stology/be/domain/upload/component/UploadedSseListener.java
  • src/main/java/com/stology/be/domain/upload/controller/UploadController.java
  • src/main/java/com/stology/be/domain/upload/dto/req/UpdateDataReq.java
  • src/main/java/com/stology/be/domain/upload/dto/req/UploadReq.java
  • src/main/java/com/stology/be/domain/upload/dto/res/GetSummaryRes.java
  • src/main/java/com/stology/be/domain/upload/dto/res/ReTaskSseRes.java
  • src/main/java/com/stology/be/domain/upload/dto/res/RecentFileRes.java
  • src/main/java/com/stology/be/domain/upload/dto/res/RecentFilesRes.java
  • src/main/java/com/stology/be/domain/upload/dto/res/SseConnectRes.java
  • src/main/java/com/stology/be/domain/upload/dto/res/UploadSseRes.java
  • src/main/java/com/stology/be/domain/upload/enums/DataState.java
  • src/main/java/com/stology/be/domain/upload/enums/FileType.java
  • src/main/java/com/stology/be/domain/upload/event/ReTaskEvent.java
  • src/main/java/com/stology/be/domain/upload/event/UploadedEvent.java
  • src/main/java/com/stology/be/domain/upload/exception/UploadException.java
  • src/main/java/com/stology/be/domain/upload/exception/code/UploadErrorCode.java
  • src/main/java/com/stology/be/domain/upload/exception/code/UploadSuccessCode.java
  • src/main/java/com/stology/be/domain/upload/service/SseService.java
  • src/main/java/com/stology/be/domain/upload/service/SummarySaveService.java
  • src/main/java/com/stology/be/domain/upload/service/UploadService.java
  • src/main/java/com/stology/be/global/PageInfo.java
  • src/main/java/com/stology/be/global/config/AsyncConfig.java
  • src/main/java/com/stology/be/global/config/EmbeddedRedisConfig.java
  • src/main/java/com/stology/be/global/config/RestTemplateConfig.java
  • src/main/java/com/stology/be/global/config/S3Config.java
  • src/main/java/com/stology/be/global/config/SwaggerConfig.java
  • src/main/java/com/stology/be/global/config/TransactionConfig.java
  • src/main/java/com/stology/be/global/entity/BaseEntity.java
  • src/main/java/com/stology/be/global/external/ai/AiReportService.java
  • src/main/java/com/stology/be/global/external/ai/AiSummarizeService.java
  • src/main/java/com/stology/be/global/external/ai/UploadFilePromptBuilder.java
  • src/main/java/com/stology/be/global/external/ai/dto/AiReportOutputDto.java
  • src/main/java/com/stology/be/global/external/ai/dto/AiSummaryResult.java
  • src/main/java/com/stology/be/global/external/ai/dto/MemberActivityStatisticsDto.java
  • src/main/java/com/stology/be/global/external/ai/dto/RecommendedNodeDto.java
  • src/main/java/com/stology/be/global/external/s3/S3PresignedUrlGenerator.java
  • src/main/java/com/stology/be/global/external/s3/S3Reader.java
  • src/main/java/com/stology/be/global/external/s3/S3Remover.java
  • src/main/java/com/stology/be/global/external/s3/S3Uploader.java
  • src/main/java/com/stology/be/global/external/s3/dto/S3InfoDto.java
  • src/main/java/com/stology/be/global/external/s3/exception/S3ErrorCode.java
  • src/main/java/com/stology/be/global/external/s3/exception/S3Exception.java
  • src/main/java/com/stology/be/global/external/s3/exception/S3SuccessCode.java
  • src/main/java/com/stology/be/global/security/config/SecurityConfig.java
  • src/main/java/com/stology/be/global/security/controller/OAuthRedirectController.java
  • src/main/java/com/stology/be/global/security/entity/AuthMember.java
  • src/main/java/com/stology/be/global/security/filter/JwtAuthFilter.java
  • src/main/java/com/stology/be/global/security/handler/CustomAccessDenied.java
  • src/main/java/com/stology/be/global/security/handler/CustomEntryPoint.java
  • src/main/java/com/stology/be/global/security/handler/CustomLogoutSuccessHandler.java
  • src/main/java/com/stology/be/global/security/handler/OAuthSuccessHandler.java
  • src/main/java/com/stology/be/global/security/service/OAuthRedirectService.java
  • src/main/java/com/stology/be/global/security/util/JwtUtil.java
  • src/main/resources/application-prod.yaml
  • src/main/resources/application.yaml
  • src/main/resources/templates/basketball.json
  • src/main/resources/templates/javaStudy.json
  • src/main/resources/templates/spring.json
  • src/main/resources/templates/tteokbokki.json
  • src/test/java/com/stology/be/domain/inquiry/converter/InquiryConverterTest.java
  • src/test/java/com/stology/be/domain/member/converter/MemberConverterTest.java
  • src/test/java/com/stology/be/domain/report/converter/ReportJsonConvertersTest.java
  • src/test/java/com/stology/be/domain/study/converter/StudyConverterTest.java
  • src/test/java/com/stology/be/support/TestFixtures.java

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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

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

@thepackour
thepackour merged commit 75fa790 into main Aug 12, 2026
4 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.

5 participants