Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
d94ed7f
[FEAT] 코드 상세 페이지 CodeNo 추가, get member solved-info에 같이넣음
Woo-JongHo Feb 26, 2025
a101d6c
Merge branch 'woo' of https://github.com/mildo-dev/backend into woo
Woo-JongHo Feb 27, 2025
1eb3edd
[FEAT] OPEN AI 이용한 주석 기능 1차
Woo-JongHo Feb 27, 2025
2160e6e
[CHORE] 디렉토리 변경
Woo-JongHo Mar 1, 2025
7526a1a
[CHORE] 디렉토리 변경
Woo-JongHo Mar 1, 2025
67b3837
Merge pull request #107 from podofarm-dev/woo
Woo-JongHo Mar 1, 2025
4f6e3fa
[FIX] CORS 추가
Woo-JongHo Mar 2, 2025
c635845
Merge pull request #108 from podofarm-dev/woo
Woo-JongHo Mar 2, 2025
4732bb1
[FIX] 최근 활동 API 금일 활동만 보여주도록 수정
seop-h Mar 2, 2025
13582e5
Merge branch 'V1' into hwang
seop-h Mar 2, 2025
305acb7
Merge pull request #109 from podofarm-dev/hwang
seop-h Mar 2, 2025
543b005
[FEAT] OPEN AI 및 해설 주석 기능
Woo-JongHo Mar 2, 2025
0a3c386
Merge pull request #110 from podofarm-dev/woo
Woo-JongHo Mar 2, 2025
c549e10
[FEAT] CorsConfig에 프론트엔드의 서브 도메인 www 추가
seop-h Mar 2, 2025
ee1918c
[FIX] 환경변수 설정
Woo-JongHo Mar 2, 2025
eeeec7b
Merge branch 'V1' into hwang
seop-h Mar 2, 2025
de5048d
Merge pull request #111 from podofarm-dev/hwang
seop-h Mar 2, 2025
3f2da00
Merge pull request #112 from podofarm-dev/woo
Woo-JongHo Mar 2, 2025
f67fe36
[FIX] code 정보 추가 및 open ai 로그 지우기
Woo-JongHo Mar 2, 2025
7bda00c
[FIX] cors 확장프로그램 추가
Woo-JongHo Mar 2, 2025
f47f607
Merge pull request #113 from podofarm-dev/woo
Woo-JongHo Mar 2, 2025
922cf96
[FEAT] 도커 파일 생성
Imdo714 Mar 2, 2025
a5ac4c9
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 2, 2025
55b6bc8
Merge pull request #114 from podofarm-dev/Lim
Imdo714 Mar 2, 2025
15774c6
[FIX] 토큰 시간 단축
Imdo714 Mar 2, 2025
56e7ffc
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 2, 2025
ecbdf27
Merge pull request #116 from podofarm-dev/Lim
Imdo714 Mar 2, 2025
a4e931a
[FIX] 토큰 시간 단축
Imdo714 Mar 2, 2025
6798f6d
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 2, 2025
01ff7c2
Merge pull request #117 from podofarm-dev/Lim
Imdo714 Mar 2, 2025
1805ecc
Merge branch 'V1' into hwang
seop-h Mar 2, 2025
c933e00
[FEAT] 토큰 시간 복구
seop-h Mar 2, 2025
97ffd9c
Merge pull request #118 from podofarm-dev/hwang
seop-h Mar 2, 2025
a7f379e
[CHORE] 테스크 URL 삭제
Imdo714 Mar 3, 2025
34e5d99
Merge pull request #119 from podofarm-dev/Lim
Imdo714 Mar 3, 2025
a4f0c3d
[CI] 빌드 테스트
Imdo714 Mar 3, 2025
522bd8b
[CI] 도커 허브 추가
Imdo714 Mar 3, 2025
7e123c5
[CI] 환경 변수 추가
Imdo714 Mar 3, 2025
00a9b33
[CI] 환경변수 세팅
Imdo714 Mar 3, 2025
99071a4
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 3, 2025
f1c80b9
[CI] 환경변수 세팅
Imdo714 Mar 3, 2025
6f52e1f
Merge pull request #120 from podofarm-dev/Lim
Imdo714 Mar 3, 2025
33dc270
[CI] 환경변수 세팅 마지막
Imdo714 Mar 3, 2025
8c9ceff
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 3, 2025
1aa5e51
Merge pull request #121 from podofarm-dev/Lim
Imdo714 Mar 3, 2025
fc6e1ef
[CD] EC2 접속 테스트
Imdo714 Mar 4, 2025
d3f0b7e
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 4, 2025
63b2d7b
[CD] EC2 접속 테스트
Imdo714 Mar 4, 2025
f91f0f4
[FIX] async를 위한 1차 설정, sync-extension sync-code 는 익스텐션 관련 thread pool
Woo-JongHo Mar 5, 2025
df8736d
[CD] EC2 접속 테스트 수정
Imdo714 Mar 5, 2025
ca1efd8
[CD] EC2 접속 테스트 수정
Imdo714 Mar 5, 2025
984bc96
Merge pull request #122 from podofarm-dev/Lim
Imdo714 Mar 5, 2025
5d52157
[CD] EC2 자동 배포
Imdo714 Mar 5, 2025
94836dc
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 5, 2025
34386ef
Merge pull request #123 from podofarm-dev/Lim
Imdo714 Mar 5, 2025
04cca66
[FEAT]
Woo-JongHo Mar 6, 2025
3f58126
Merge pull request #124 from podofarm-dev/woo
Woo-JongHo Mar 7, 2025
fdfe624
[FEAT] 최근 활동 조회 쿼리 변경
seop-h Mar 6, 2025
a332d40
[COMMENT] TODO 삭제
seop-h Mar 7, 2025
6ba6992
Merge branch 'V1' into hwang
seop-h Mar 7, 2025
c00c0f2
[FEAT]
Woo-JongHo Mar 7, 2025
fbcbbb4
[FIX] 리뷰 반영
Imdo714 Mar 8, 2025
3006a4d
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 8, 2025
b214074
Merge pull request #125 from podofarm-dev/Lim
Imdo714 Mar 8, 2025
bf172cf
[FIX] log read update
Imdo714 Mar 8, 2025
e5b97db
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 8, 2025
f88f2ab
Merge pull request #126 from podofarm-dev/Lim
Imdo714 Mar 8, 2025
3934218
[FIX] log read update
Imdo714 Mar 8, 2025
d2cf2d2
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 8, 2025
c3a5be6
Merge pull request #127 from podofarm-dev/Lim
Imdo714 Mar 8, 2025
b4e75fe
[FIX] health check
Imdo714 Mar 8, 2025
4be1189
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 8, 2025
f0f3cd5
Merge pull request #128 from podofarm-dev/Lim
Imdo714 Mar 8, 2025
64d01ef
[FIX] health check
Imdo714 Mar 8, 2025
f8df6fc
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 8, 2025
8c55084
Merge pull request #129 from podofarm-dev/Lim
Imdo714 Mar 8, 2025
a96f9b6
Merge branch 'V1' into hwang
seop-h Mar 9, 2025
df98216
[FIX]
Woo-JongHo Mar 9, 2025
4c74165
[FEAT]
Woo-JongHo Mar 10, 2025
99a31c7
[FEAT]
Woo-JongHo Mar 10, 2025
4b94aaa
Merge branch 'V1' into woo
Woo-JongHo Mar 10, 2025
665fd38
[FEAT]
Woo-JongHo Mar 10, 2025
495d144
Merge branch 'V1' of https://github.com/mildo-dev/backend into woo
Woo-JongHo Mar 10, 2025
f260327
Merge pull request #132 from podofarm-dev/woo
Woo-JongHo Mar 10, 2025
69be3b7
Merge remote-tracking branch 'origin/woo' into woo
Woo-JongHo Mar 10, 2025
2926fdc
[FIX] MEREGE 내용 확인
Woo-JongHo Mar 10, 2025
88833f8
[FIX] MEREGE 내용 확인
Woo-JongHo Mar 10, 2025
5f657e9
[FIX] 파일디렉토리변경
Woo-JongHo Mar 10, 2025
a679e9b
Merge pull request #133 from podofarm-dev/woo
Woo-JongHo Mar 10, 2025
e0768cc
[FIX] import OpenAIRequest 삭제
Woo-JongHo Mar 10, 2025
cb2700e
[FIX] import OpenAIRequest 삭제
Woo-JongHo Mar 10, 2025
2c06a3c
Merge pull request #134 from podofarm-dev/woo
Woo-JongHo Mar 10, 2025
2a50a21
[FIX] test.podofarm.xyz 추가
Woo-JongHo Mar 10, 2025
074feee
[FIX] CORS 추가 및 API.PODOFARM.XDYZ 추가
Woo-JongHo Mar 10, 2025
a0f78be
[FIX] solvedDate 자료형 변경
Woo-JongHo Mar 10, 2025
0d5b346
[FIX] Token 제외 fetchData 추가
Woo-JongHo Mar 10, 2025
519fde4
Merge pull request #135 from podofarm-dev/woo
Woo-JongHo Mar 10, 2025
5ef9750
[FIX] 해설 및 심화질문 없을 경우 현재는 null로 나오지만 "";로 대체
Woo-JongHo Mar 10, 2025
638aa1e
[FIX] test.podofarm.xyz 추가
Woo-JongHo Mar 10, 2025
9557015
[FIX] CORS 추가 및 API.PODOFARM.XDYZ 추가
Woo-JongHo Mar 10, 2025
6ef6970
[FIX]
Woo-JongHo Mar 11, 2025
a8221e0
Merge pull request #136 from podofarm-dev/woo
Woo-JongHo Mar 11, 2025
6f3f0a4
[FIX] Time 데이터 확인을 위한 데이터 값 입력
Woo-JongHo Mar 11, 2025
fc19aea
Merge pull request #137 from podofarm-dev/woo
Woo-JongHo Mar 11, 2025
27c219b
[FIX] KST 고정 값 설정을 위해 yml파일 변경
Woo-JongHo Mar 11, 2025
48744c3
Merge branch 'V1' of https://github.com/mildo-dev/backend into woo
Woo-JongHo Mar 11, 2025
0408a66
[FIX] KST 고정 값 설정을 위해 yml파일 변경
Woo-JongHo Mar 11, 2025
a70f518
Merge pull request #139 from podofarm-dev/woo
Woo-JongHo Mar 11, 2025
695441b
[FIX] 날짜 형태 변환
Imdo714 Mar 11, 2025
2af5f47
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 11, 2025
d62e44b
[FIX] OpenAI Prompt 재 변경
Woo-JongHo Mar 11, 2025
696cec8
[FIX] OpenAI Prompt 재 변경
Woo-JongHo Mar 11, 2025
8d737a9
Merge pull request #140 from podofarm-dev/Lim
Imdo714 Mar 11, 2025
24277ee
Merge branch 'V1' into hwang
seop-h Mar 11, 2025
2cd0dd2
[FIX] OpenAI Prompt 재 \변경 ```java 붙는 경우 삭제 요청
Woo-JongHo Mar 11, 2025
e8e8538
[FIX] OpenAI Prompt 재변경 ```java 붙는 경우 삭제 요청
Woo-JongHo Mar 11, 2025
bc53f70
[FIX] OpenAI Prompt 재 \변경 받아온 코드의 주석을 삭제하지말 것
Woo-JongHo Mar 11, 2025
c519713
[FIX] timezone 문제 해결하기위해 jvm의 timezone 변경 yml
Woo-JongHo Mar 11, 2025
6ab4bbb
[FIX] Prompt 테스트
Woo-JongHo Mar 11, 2025
108bcaa
Merge branch 'V1' into woo
Woo-JongHo Mar 11, 2025
1d8c4a4
Merge pull request #143 from podofarm-dev/woo
Woo-JongHo Mar 11, 2025
37ca496
Update OpenAIResponse.java
Woo-JongHo Mar 11, 2025
c0ce3f9
Update OpenAIResponse.java
Woo-JongHo Mar 11, 2025
8d63f9c
comment: 디버깅을 위한 로그 추가
seop-h Mar 12, 2025
0da6400
Merge branch 'V1' into hwang
seop-h Mar 12, 2025
dc7cdcf
Merge pull request #130 from podofarm-dev/hwang
seop-h Mar 12, 2025
3591d80
comment: 로그 수정
seop-h Mar 12, 2025
80573b4
Merge pull request #144 from podofarm-dev/hwang
seop-h Mar 12, 2025
bc8a1e6
[FEAT] CodeEntity @CreationTimestamp 삭제
seop-h Mar 12, 2025
65c6fbe
Merge pull request #145 from podofarm-dev/hwang
seop-h Mar 12, 2025
ddc6518
[FIX] Prompt 테스트 ```java가 계속 붙음
Woo-JongHo Mar 12, 2025
2e25fba
Merge pull request #146 from podofarm-dev/woo
Woo-JongHo Mar 12, 2025
85a908a
[CHORE] 검증 수정
Imdo714 Mar 12, 2025
1ca7412
[FIX] prometheus 수정
Imdo714 Mar 12, 2025
44b04b8
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 12, 2025
33e0b99
Merge pull request #147 from podofarm-dev/Lim
Imdo714 Mar 12, 2025
7411c9e
[monitoring] log 수집 분리
Imdo714 Mar 12, 2025
23c3642
Merge branch 'V1' of https://github.com/mildo-dev/backend into Lim
Imdo714 Mar 12, 2025
fbebce4
Merge pull request #148 from podofarm-dev/Lim
Imdo714 Mar 12, 2025
dbdf36e
[FIX] SolvedDated 시간 데이터 변경
Woo-JongHo Mar 13, 2025
1d6a7a4
[FIX] SolvedDated 시간 데이터 변경 # 149
Woo-JongHo Mar 13, 2025
776fc5d
[FEAT] ProblemList Cache를 이용하여 DB조회 로직 최소화
Woo-JongHo Mar 13, 2025
40a4825
[FIX] ProblemSolution이 없는 데이터 출력 데이터 변경
Woo-JongHo Mar 13, 2025
2557559
[FIX] ```java 붙는거 임시 삭제 방편
Woo-JongHo Mar 13, 2025
bbe8518
Merge pull request #150 from podofarm-dev/woo
Woo-JongHo Mar 13, 2025
785b175
[FIX] 검색기능 활성화를 위해 기존 캐시 잠시 삭제
Woo-JongHo Mar 15, 2025
53fa17d
Create README.md
Woo-JongHo Apr 18, 2025
12d8de7
Update README.md
Woo-JongHo Apr 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle

name: Java CI with Gradle

on:
push:
branches: [ "V1" ]

jobs:
build:
runs-on: ubuntu-latest

steps:
# 1. 코드 체크아웃
- name: Check out code
uses: actions/checkout@v4

# 2. JDK 17 설치
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

# 3. Gradle 캐시 설정
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

# 4. Gradle Wrapper 실행 권한 추가
- name: Set executable permission for gradlew
run: chmod +x ./gradlew

# 5. Gradle 빌드 및 테스트 실행
- name: Build with Gradle
run: ./gradlew build -x test --no-daemon

# 6. Docker 이미지 빌드
- name: docker image build
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/podofarm .

- name: docker image build
run: |
docker build \
--build-arg BACKEND_DOMAIN=${{ secrets.BACKEND_DOMAIN }} \
--build-arg BASIC_URL=${{ secrets.BASIC_URL }} \
--build-arg BUCKET=${{ secrets.BUCKET }} \
--build-arg DB_PASSWORD=${{ secrets.DB_PASSWORD }} \
--build-arg DB_URL=${{ secrets.DB_URL }} \
--build-arg DB_USERNAME=${{ secrets.DB_USERNAME }} \
--build-arg FRONTEND_DOMAIN=${{ secrets.FRONTEND_DOMAIN }} \
--build-arg GOOGLE_ID=${{ secrets.GOOGLE_ID }} \
--build-arg GOOGLE_SECRET=${{ secrets.GOOGLE_SECRET }} \
--build-arg REDIRECT_URI=${{ secrets.REDIRECT_URI }} \
--build-arg S3_ACCESS_KEY=${{ secrets.S3_ACCESS_KEY }} \
--build-arg S3_SECRET_KEY=${{ secrets.S3_SECRET_KEY }} \
--build-arg TEST_BACKEND_DOMAIN=${{ secrets.TEST_BACKEND_DOMAIN }} \
--build-arg TEST_FRONTEND_DOMAIN=${{ secrets.TEST_FRONTEND_DOMAIN }} \
--build-arg OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }} \
-t ${{ secrets.DOCKERHUB_USERNAME }}/podofarm .

# 7. DockerHub 로그인
- name: docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

# 8. Docker Hub 이미지 푸시
- name: docker Hub push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/podofarm

# 9. EC2 자동 배포 명령어
- name: SSH to EC2 and deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/podofarm
docker stop myapp || true
docker rm myapp || true
docker run -d --name myapp -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/podofarm
41 changes: 41 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
FROM openjdk:17-jdk-slim

WORKDIR /app

ARG BACKEND_DOMAIN
ARG BASIC_URL
ARG BUCKET
ARG DB_PASSWORD
ARG DB_URL
ARG DB_USERNAME
ARG FRONTEND_DOMAIN
ARG GOOGLE_ID
ARG GOOGLE_SECRET
ARG REDIRECT_URI
ARG S3_ACCESS_KEY
ARG S3_SECRET_KEY
ARG TEST_BACKEND_DOMAIN
ARG TEST_FRONTEND_DOMAIN
ARG OPENAI_API_KEY

ENV BACKEND_DOMAIN=${BACKEND_DOMAIN} \
BASIC_URL=${BASIC_URL} \
BUCKET=${BUCKET} \
DB_PASSWORD=${DB_PASSWORD} \
DB_URL=${DB_URL} \
DB_USERNAME=${DB_USERNAME} \
FRONTEND_DOMAIN=${FRONTEND_DOMAIN} \
GOOGLE_ID=${GOOGLE_ID} \
GOOGLE_SECRET=${GOOGLE_SECRET} \
REDIRECT_URI=${REDIRECT_URI} \
S3_ACCESS_KEY=${S3_ACCESS_KEY} \
S3_SECRET_KEY=${S3_SECRET_KEY} \
TEST_BACKEND_DOMAIN=${TEST_BACKEND_DOMAIN} \
TEST_FRONTEND_DOMAIN=${TEST_FRONTEND_DOMAIN} \
OPENAI_API_KEY=${OPENAI_API_KEY}

ARG JAR_FILE=build/libs/dev-0.0.1-SNAPSHOT.jar

COPY ${JAR_FILE} dev-0.0.1-SNAPSHOT.jar

ENTRYPOINT ["java", "-jar", "dev-0.0.1-SNAPSHOT.jar"]
253 changes: 253 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,253 @@
# 📦 Podofarm Backend 구조

## 📌 프로젝트 개요

- **프로젝트명**: Podofarm
- **설명**: 알고리즘 풀이 공유, 스터디 기능, 통계 시각화 등을 제공하는 백엔드 시스템
- **주요 기술 스택**:
- Java 17
- Spring Boot
- Spring Security + OAuth2
- JPA / Hibernate
- AWS (S3, EC2 등)
- Docker
- Caffeine Cache

---

## 🧱 도메인별 구성

### 1. 🧩 코드 관리 (code)

- `CodeEntity`: 알고리즘 코드 본문 저장
- `CommentEntity`: 코드에 달린 댓글 저장
- 요청 DTO: CacheRequestDTO, CodeLevelDTO, CodeSolvedListDTO, CommentContentDTO, ExtensionSyncDTO, UploadDTO
- 응답 DTO: CommentListResponse, CommentResponse, OpenAIResponse, CodeInfoDTO
- 서비스: `CodeService`
- 레포지토리: `CodeRepository`, `CommentRepository`

---

### 2. 👤 회원 관리 (member)

- `MemberEntity`: 사용자 정보
- `TokenEntity`: Access, Refresh 토큰 저장
- 요청 DTO: MemberReNameDto, TokenDto
- 응답 DTO: SolvedMemberListResponse
- OAuth 관련:
- `CustomUser`: OAuth 인증 사용자 정보
- `CustomOAuthUserService`: OAuth2 로그인 처리 서비스
- 서비스: `MemberService`
- 레포지토리: `MemberRepository`, `TokenRepository`

---

### 3. 📚 문제 관리 (problem)

- `ProblemEntity`: 문제 정보 및 푼 사용자 관리
- 요청 DTO: UserProfileDto, ProblemSolverDto
- 응답 DTO: ProblemListResponse, ProblemStaticDto
- 서비스: `ProblemService`
- 레포지토리: `ProblemRepository`

---

### 4. 👨‍👩‍👧‍👦 스터디 관리 (study)

- `StudyEntity`: 스터디 생성 및 정보 저장
- 요청 DTO: DailySolvedSearchCond, StudyCreateReqDto, StudyJoinReqDto, StudyLeaderUpdateReqDto, StudyNameUpdateReqDto
- 응답 DTO: DailySolvedResDto, DashBoardFrameResDto, DashBoardGrassResDto, DashBoardSolvedCountResDto, LogResDto, MessageResDto, StudyDetailResDto, StudySummaryResDto
- 서비스: `StudyService`
- 레포지토리: `StudyRepository`, `CustomStudyRepository`, `CustomStudyRepositoryImpl`
- 예외 처리: `StudyExceptionHandler`

---

### 5. 🛠 유틸리티 (utils)

- `CookieUtil`: 쿠키 생성, 삭제 등 기능 제공
- `CodeGenerator`: 난수 코드 생성 유틸리티

---

### 6. 🌐 글로벌 설정 (global)

#### 📑 설정 (config)

- `AsyncConfig`: @Async 비동기 설정
- `CaffeineCacheConfig`: Caffeine 기반 캐시 설정
- `CorsConfig`: CORS 정책 적용
- `OpenAIConfig`: OpenAI API 연동용 설정
- `S3Config`: AWS S3 파일 업로드 설정
- `SecurityConfig`: OAuth2 및 JWT 보안 설정

#### 📦 캐시 (cache)

- `CacheAspect`: AOP 기반 캐싱 처리
- `CacheProblemList`: 문제 리스트 캐시 저장

#### 🧯 예외 처리 (exception)

- `GlobalException`: 전역 예외 처리 클래스
- `ErrorResDto`: 예외 발생 시 응답 객체
- `ExceptionMessage`: 예외 메시지 모음 상수
- 커스텀 예외들:
- AlreadyInStudyException, LeaderCannotLeaveException, MemberEqException, NotInThatStudyException
- ServerUnstableException, StudyPasswordMismatchException, TokenException

#### 🔐 OAuth & JWT (oauth)

- `JwtInterface`: 토큰 정보 정의 인터페이스
- `JwtTokenProvider`: JWT 토큰 발급 및 검증

---
## 📁 디렉토리 구조
```bash
podofarm/
└── src/main/java/com/podofarm/dev/
├── MildoBackendApplication.java # Spring Boot 메인 클래스
├── api/ # 도메인 API 모듈 루트
│ ├── code/ # 코드 관리 도메인
│ │ ├── controller/
│ │ │ └── CodeController.java # 코드 API 컨트롤러
│ │ ├── domain/
│ │ │ ├── dto/
│ │ │ │ ├── request/
│ │ │ │ │ ├── CacheRequestDTO.java # 캐시 요청 DTO
│ │ │ │ │ ├── CodeLevelDTO.java # 난이도 DTO
│ │ │ │ │ ├── CodeSolvedListDTO.java # 푼 목록 요청 DTO
│ │ │ │ │ ├── CommentContentDTO.java # 댓글 작성 DTO
│ │ │ │ │ ├── ExtensionSyncDTO.java # 확장 동기화 DTO
│ │ │ │ │ └── UploadDTO.java # 코드 업로드 DTO
│ │ │ │ └── response/
│ │ │ │ ├── CommentListResponse.java # 댓글 리스트 응답
│ │ │ │ ├── CommentResponse.java # 댓글 응답
│ │ │ │ ├── OpenAIResponse.java # AI 응답 DTO
│ │ │ │ └── CodeInfoDTO.java # 코드 상세 응답
│ │ │ └── entity/
│ │ │ ├── CodeEntity.java # 코드 본문 엔티티
│ │ │ └── CommentEntity.java # 댓글 엔티티
│ │ ├── repository/
│ │ │ ├── CodeRepository.java # 코드 JPA 인터페이스
│ │ │ └── CommentRepository.java # 댓글 JPA 인터페이스
│ │ └── service/
│ │ └── CodeService.java # 코드 서비스 클래스
│ ├── member/ # 회원 관리 도메인
│ │ ├── controller/
│ │ │ └── MemberController.java
│ │ ├── domain/
│ │ │ ├── entity/
│ │ │ │ ├── MemberEntity.java # 사용자 정보 엔티티
│ │ │ │ └── TokenEntity.java # 토큰 엔티티
│ │ │ └── dto/
│ │ │ ├── request/
│ │ │ │ ├── MemberReNameDto.java # 닉네임 변경 DTO
│ │ │ │ └── TokenDto.java # 토큰 요청 DTO
│ │ │ └── response/
│ │ │ └── SolvedMemberListResponse.java # 푼 사용자 리스트
│ │ ├── repository/
│ │ │ ├── MemberRepository.java
│ │ │ └── TokenRepository.java
│ │ ├── service/
│ │ │ └── MemberService.java
│ │ └── customoauth/
│ │ ├── dto/
│ │ │ └── CustomUser.java # OAuth 유저 정보
│ │ └── handler/
│ │ └── CustomOAuthUserService.java # OAuth2 서비스
│ ├── problem/ # 문제 관리 도메인
│ │ ├── controller/
│ │ │ └── ProblemController.java
│ │ ├── domain/
│ │ │ ├── entity/
│ │ │ │ └── ProblemEntity.java # 문제 엔티티
│ │ │ └── dto/
│ │ │ ├── request/
│ │ │ │ ├── UserProfileDto.java # 사용자 문제 정보 요청
│ │ │ │ └── ProblemSolverDto.java # 문제 해결 정보
│ │ │ └── response/
│ │ │ ├── ProblemListResponse.java # 문제 리스트 응답
│ │ │ └── ProblemStaticDto.java # 통계용 DTO
│ │ ├── repository/
│ │ │ └── ProblemRepository.java
│ │ └── service/
│ │ └── ProblemService.java
│ ├── study/ # 스터디 도메인
│ │ ├── controller/
│ │ │ └── StudyController.java
│ │ ├── domain/
│ │ │ ├── entity/
│ │ │ │ └── StudyEntity.java
│ │ │ └── dto/
│ │ │ ├── request/
│ │ │ │ ├── DailySolvedSearchCond.java
│ │ │ │ ├── StudyCreateReqDto.java
│ │ │ │ ├── StudyJoinReqDto.java
│ │ │ │ ├── StudyLeaderUpdateReqDto.java
│ │ │ │ └── StudyNameUpdateReqDto.java
│ │ │ └── response/
│ │ │ ├── DailySolvedResDto.java
│ │ │ ├── DashBoardFrameResDto.java
│ │ │ ├── DashBoardGrassResDto.java
│ │ │ ├── DashBoardSolvedCountResDto.java
│ │ │ ├── LogResDto.java
│ │ │ ├── MessageResDto.java
│ │ │ ├── StudyDetailResDto.java
│ │ │ └── StudySummaryResDto.java
│ │ ├── repository/
│ │ │ ├── StudyRepository.java
│ │ │ ├── CustomStudyRepository.java
│ │ │ └── CustomStudyRepositoryImpl.java
│ │ ├── service/
│ │ │ └── StudyService.java
│ │ └── exhandler/
│ │ └── StudyExceptionHandler.java
│ └── utils/
│ ├── cookie/
│ │ └── CookieUtil.java # 쿠키 생성/삭제 유틸
│ └── random/
│ └── CodeGenerator.java # 랜덤 코드 생성기
└── global/ # 글로벌 설정 모듈
├── config/
│ ├── async/
│ │ └── AsyncConfig.java # 비동기 처리 설정
│ ├── caffeine/
│ │ └── CaffeineCacheConfig.java # 캐시 설정
│ ├── cors/
│ │ └── CorsConfig.java # CORS 정책 설정
│ ├── openai/
│ │ └── OpenAIConfig.java # OpenAI 연동 설정
│ ├── s3/
│ │ └── S3Config.java # AWS S3 연동 설정
│ └── security/
│ └── SecurityConfig.java # Spring Security 설정
├── cache/
│ ├── CacheAspect.java # AOP 캐시 처리
│ └── CacheProblemList.java # 문제 리스트 캐시
├── exception/
│ ├── GlobalException.java # 전역 예외 처리기
│ ├── dto/
│ │ └── ErrorResDto.java # 예외 응답 DTO
│ ├── message/
│ │ └── ExceptionMessage.java # 메시지 상수
│ └── exceptionClass/
│ ├── AlreadyInStudyException.java
│ ├── LeaderCannotLeaveException.java
│ ├── MemberEqException.java
│ ├── NotInThatStudyException.java
│ ├── ServerUnstableException.java
│ ├── StudyPasswordMismatchException.java
│ └── TokenException.java
└── oauth/
└── jwt/
├── JwtInterface.java # JWT 인터페이스 정의
└── JwtTokenProvider.java # JWT 발급/검증 제공
Loading
Loading