Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
535 commits
Select commit Hold shift + click to select a range
d1703aa
fix: #104 UserId 접근 Authentication으로 변경
westsunh Aug 5, 2025
528342f
feat: #104 Authentication 접근 에러 추가
westsunh Aug 5, 2025
cc99710
fix: #104 @Autowired @RequiredArgsConstructor로 수정
westsunh Aug 5, 2025
de88933
feat: vo, dto 추가 #122
hyungEee Aug 5, 2025
7d8c68c
feat: mapper 추가 #122
hyungEee Aug 5, 2025
5bb77a8
feat: service 및 controller 추가 #122
hyungEee Aug 5, 2025
eb9d0d5
Merge branch 'develop' into feat/122
hyungEee Aug 5, 2025
229b113
Merge branch 'develop' of https://github.com/bbaegi-six/dondothat-ser…
minji677 Aug 5, 2025
90c0e06
Merge pull request #123 from bbaegi-six/feat/122
hyungEee Aug 5, 2025
64d83a5
fix: ChallengeController JWT수정
minji677 Aug 5, 2025
9e388e5
feat: 챌린지 참여 및 탈퇴 구현
minji677 Aug 4, 2025
ee72053
fix: ChallengeController JWT수정
minji677 Aug 5, 2025
492fc56
Feat: #115 JWT 검증 및 사용자 정보 저장 위한 WebSocket 인터셉터 구현
Hyunji-JANG Aug 5, 2025
c7b4162
Feat: #115 WebSocketConfig JWT 인터셉터 등록 및 CORS 설정 수정
Hyunji-JANG Aug 5, 2025
69c7e25
Feat: #115 ChatController JWT 기반 엔드포인트 추가
Hyunji-JANG Aug 5, 2025
06001fd
Feat: #115 WebSocketConfig STOMP 엔드포인트 수정
Hyunji-JANG Aug 5, 2025
68db5ce
feat:챌린지 추천
minji677 Aug 6, 2025
e384724
fix: classifyService 로직 수정 #127
hyungEee Aug 6, 2025
aacf5d3
fix: 요청 주소 수정 #127
hyungEee Aug 6, 2025
8c545d4
fix: classifyService 단일분류 삭제, 리스트 분류만 남김 #127
hyungEee Aug 6, 2025
b6f71b0
feat: AssetService, CodefSchedulerService에 classify 메서도 호출 추가 #127
hyungEee Aug 6, 2025
363fecb
fix: classifyService 로직 수정 #127
hyungEee Aug 6, 2025
ac15d2d
fix: 요청 주소 수정 #127
hyungEee Aug 6, 2025
5afd6b7
fix: classifyService 단일분류 삭제, 리스트 분류만 남김 #127
hyungEee Aug 6, 2025
58e56a6
feat: AssetService, CodefSchedulerService에 classify 메서도 호출 추가 #127
hyungEee Aug 6, 2025
a5e14e8
Merge branch 'feat/117' into feat/128
minji677 Aug 6, 2025
75c8a35
fix: 도커 내부 주소로 수정 #127
hyungEee Aug 6, 2025
ac5c932
Merge branch 'develop' into feat/127
hyungEee Aug 6, 2025
4cc5ac8
fix: classifyservice에서 expense 임시id 설정 및 해제 작업 추가 #127
hyungEee Aug 6, 2025
b0d44e5
[FEAT] 카테고리 분류 연결작업 #127
hyungEee Aug 6, 2025
34dd382
fix:카테고리아이디 안바뀌는 문제 #127
hyungEee Aug 6, 2025
24a5fe6
refactor: 분석 로직 수정(날짜까지 고려) #135
hyungEee Aug 6, 2025
2ee48e0
refactor: getRecentExpenses에서 2달치 갖고오도록 수정 #135
hyungEee Aug 6, 2025
026863f
fix: 반환형식 수정 #135
hyungEee Aug 6, 2025
fa6ce69
merge develop
minji677 Aug 6, 2025
f5d06f6
feat:진척도 조회 기능
minji677 Aug 6, 2025
9af3704
feat: #124 llm추천챌린지 기능 구현
minji677 Aug 6, 2025
f823a6e
merge: develop 병합 및 충돌 해결
minji677 Aug 6, 2025
4aceb8d
feat:128 / 챌린지탈퇴삭제
minji677 Aug 7, 2025
0cd8695
Feat: #139 계좌 연동 여부 업데이트 api 구현
hoonssac Aug 7, 2025
8af7f76
Feat: #139 계좌 연동 여부 업데이트 테스트 코드 추가
hoonssac Aug 7, 2025
6c25591
fix: #131 프론트 응답 수정
westsunh Aug 7, 2025
10af43b
fix: #131 Asset 연동 반환값 변경
westsunh Aug 7, 2025
203e205
Merge branch 'develop' into feat/128
minji677 Aug 7, 2025
2125024
feat:128 / 챌린지 진척도 수정 및 구현
minji677 Aug 7, 2025
776a16c
feat: 주석수정 #128
minji677 Aug 7, 2025
5d8ecf3
Merge pull request #142 from bbaegi-six/feat/128
minji677 Aug 7, 2025
141252b
feat: #143 getNameByUserId(userid) 조회 구현
westsunh Aug 7, 2025
9ae2e52
fix: #143 응답값 email에서 name으로 수정
westsunh Aug 7, 2025
002e5cf
fix: #143 llm 오류 생성시 카테고리 미지정
westsunh Aug 7, 2025
d8465d0
fix: UserChallengeVO 위치 이동 #137
hyungEee Aug 7, 2025
fd4460e
feat: 성공/실패/진척도계산 메서드 및 관련 매퍼 추가 #137
hyungEee Aug 7, 2025
51e3670
feat: 성공/실패 로직을 구현하는데 필요한 매퍼 추가 #137
hyungEee Aug 7, 2025
7bb161e
fix: UserChallengeVO 위치 이동에 따른 코드 수정 #137
hyungEee Aug 7, 2025
5bdb757
feat: 스케줄러 추가 #137
hyungEee Aug 7, 2025
2e4ef79
fix: setter를 builder사용으로 수정, mapper 빼먹은거 있어서 수정 #137
hyungEee Aug 7, 2025
9725f6c
fix: UserChallengeVO 위치 이동 #137
hyungEee Aug 7, 2025
97d80e4
feat: 성공/실패/진척도계산 메서드 및 관련 매퍼 추가 #137
hyungEee Aug 7, 2025
1db1653
feat: 성공/실패 로직을 구현하는데 필요한 매퍼 추가 #137
hyungEee Aug 7, 2025
4b74dee
fix: UserChallengeVO 위치 이동에 따른 코드 수정 #137
hyungEee Aug 7, 2025
08cfe1d
feat: 스케줄러 추가 #137
hyungEee Aug 7, 2025
252d4d2
fix: setter를 builder사용으로 수정, mapper 빼먹은거 있어서 수정 #137
hyungEee Aug 7, 2025
3c155cd
fix: 파일 위치가 바뀌게 되어 삭제함 #137
hyungEee Aug 7, 2025
8d5ac32
[FIX] 위치이동에 따른 파일 삭제
hyungEee Aug 7, 2025
4306350
feat: #132 saving_base와 saving_option 테이블과 매칭되는 vo 생성
Moon0116 Aug 7, 2025
faa0321
feat: #132 금감원 api가 반환하는 JSON 응답 전체를 받는 FssApiResponseDTO 파일 생성
Moon0116 Aug 7, 2025
b3db142
feat: #132 API 응답의 baseList, optionList 배열 안에 있는 객체를 받기 위한 DTO
Moon0116 Aug 7, 2025
27392bf
feat: #132 LLM에 전달하거나 사용자에게 보여줄 필드를 전달하는 DTO 생성 & 빌더 패턴 추가
Moon0116 Aug 7, 2025
6d5c68d
feat: #132 Mapper 인터페이스 생성
Moon0116 Aug 7, 2025
15c1565
feat: #132 Mapper xml 파일 생성
Moon0116 Aug 7, 2025
dca9ce9
bug: #149 build.gralde 수정
Moon0116 Aug 8, 2025
04e7821
[FEAT] Nginx 추가
hoonssac Aug 8, 2025
bfcd80e
Feat: #151 Nginx 설정 파일 추가
hoonssac Aug 8, 2025
c56ddfc
[REFACTOR] CORS 설정에 HTTPS URL 추가
hoonssac Aug 8, 2025
06f12e2
[FIX] mysql 컨테이너 이름 수정
hoonssac Aug 8, 2025
cbc67d7
[FIX] CICD 파일에 MySQL 컨테이너 이름 수정
hoonssac Aug 8, 2025
d61c51e
[FIX] Nginx 설정 파일 수정
hoonssac Aug 8, 2025
97f32e8
[FIX] mysql 컨테이너 이름 수정
hoonssac Aug 8, 2025
8adbc05
[FIX] docker-compose 파일 mysql 환경변수 이름 복구
hoonssac Aug 8, 2025
fedc844
[FIX] CICD yml 파일 MySQL 환경변수 이름 복구
hoonssac Aug 8, 2025
b2f3039
[FIX] 3306 포트를 EC2 서버의 3306 포트와 매핑
hoonssac Aug 8, 2025
25d605b
[FIX] SSL 인증서 관련 JDBC 드라이버 수정
hoonssac Aug 8, 2025
a194ebb
[FIX] DB 연결을 위해 SSL 및 공개키 검색 옵션 추가
hoonssac Aug 8, 2025
43b3f0a
feat: expenseMapper에 이전기간동안의 카테고리 소비내역 총계 불러오는 구문 추가 #154
hyungEee Aug 8, 2025
a4ebc5f
fix: challenge mapper의 join challenge 수정 #154
hyungEee Aug 8, 2025
081082b
feat: joinChallenge 메서드에 기준금액 계산하여 넣는 로직 추가 #154
hyungEee Aug 8, 2025
47cee83
feat: 챌린지 참여 API에서 period 값까지 pathVariable로 받아오도록 수정 #154
hyungEee Aug 8, 2025
a437bb0
[REFACTOR] X-Forwarded-Proto 헤더 인식 필터 추가
hoonssac Aug 8, 2025
6e007a1
[REFACTOR] HTTPS을 통해서만 요청이 가능하도록 설정
hoonssac Aug 8, 2025
902029d
[REFACTOR] SamsSite 설정, 브라우저가 쿠키를 신뢰하도록 설정
hoonssac Aug 8, 2025
ddf7ba0
fix: isActive 초깃값 0으로 수정 #154
hyungEee Aug 9, 2025
e64a0cc
feat: expenseMapper에 이전기간동안의 카테고리 소비내역 총계 불러오는 구문 추가 #154
hyungEee Aug 8, 2025
b3cbc7f
fix: challenge mapper의 join challenge 수정 #154
hyungEee Aug 8, 2025
f25930d
feat: joinChallenge 메서드에 기준금액 계산하여 넣는 로직 추가 #154
hyungEee Aug 8, 2025
fe6d52b
feat: 챌린지 참여 API에서 period 값까지 pathVariable로 받아오도록 수정 #154
hyungEee Aug 8, 2025
0ec61ce
fix: isActive 초깃값 0으로 수정 #154
hyungEee Aug 9, 2025
7c07108
fix: is_active 초깃값 1으로 설정 #154
hyungEee Aug 9, 2025
86e7cc9
Merge branch 'develop' into feat/154
hyungEee Aug 9, 2025
9fc8001
feat: #159 금감원 API 관련 환경 변수 추가
Moon0116 Aug 10, 2025
0817d31
feat: #159 금감원 API 호출 서비스 코드 추가, 적금 상품 관련 에러 코드 추가
Moon0116 Aug 10, 2025
1b6f911
feat: #159 데이터 저장 서비스 구현
Moon0116 Aug 10, 2025
4666e4b
feat: #159 Mapper XML 쿼리 보완
Moon0116 Aug 10, 2025
8d6461d
feat: #159 추천 로직 서비스 구현
Moon0116 Aug 10, 2025
f44c3da
feat: #159 Controller API 구현 (sync: 데이터 동기화, recommend: 추천 상품 조회, pro…
Moon0116 Aug 10, 2025
474fe82
[FIX] is_active 초깃값 1로 변경
hyungEee Aug 11, 2025
31160d5
refactor: #161 insertExpenses 쿼리 구현
Moon0116 Aug 11, 2025
e36c099
refactor: #161 AssetService에서 ExpenseMapper.insertExpenses()를 사용하도록 변…
Moon0116 Aug 11, 2025
2e966be
refactor: #161 ExpenseServiceImpl Asset 연동 활성화 완료
Moon0116 Aug 11, 2025
aec4bf7
refactor: #161 DB 쿼리 및 DTO 정리 완료.
Moon0116 Aug 11, 2025
f6cfcf8
refactor: #161 코데프스케쥴러서비스 expenseMapper로 수정
Moon0116 Aug 11, 2025
cb6aa04
fix: challenge mapper의 join challenge 수정 #154
hyungEee Aug 8, 2025
0e6b476
fix: isActive 초깃값 0으로 수정 #154
hyungEee Aug 9, 2025
61884e8
fix: is_active 초깃값 1으로 설정 #154
hyungEee Aug 9, 2025
addb6c2
refactor: #161 insertExpenses 쿼리 구현
Moon0116 Aug 11, 2025
88395ce
refactor: #161 AssetService에서 ExpenseMapper.insertExpenses()를 사용하도록 변…
Moon0116 Aug 11, 2025
896b61b
refactor: #161 ExpenseServiceImpl Asset 연동 활성화 완료
Moon0116 Aug 11, 2025
6145a80
refactor: #161 DB 쿼리 및 DTO 정리 완료.
Moon0116 Aug 11, 2025
fae3163
refactor: #161 코데프스케쥴러서비스 expenseMapper로 수정
Moon0116 Aug 11, 2025
ccdcc43
feat: #159 user_asset으로 asset을 수정
Moon0116 Aug 11, 2025
81f9fdd
fix: #164 codef scheduler 배포환경 중지
westsunh Aug 11, 2025
1dfabeb
feat: #159 Controller 주석 수정
Moon0116 Aug 11, 2025
5cebfab
feat: #159 RecommendationService 주석 수정
Moon0116 Aug 11, 2025
bb7f96b
Merge pull request #166 from bbaegi-six/feat/159
Hyunji-JANG Aug 11, 2025
03f344d
Refactor: #168 카테고리 분류 호출 URL 수정
hoonssac Aug 11, 2025
84dda3d
[REFACTOR] LLM 서버의 반환 범위 수정
hoonssac Aug 11, 2025
6f3a45f
Fix: #162 디렉토리 구조 Reward에서 Tier로 변경
Hyunji-JANG Aug 11, 2025
7eadb8b
Fix: #162 TierVO 추가
Hyunji-JANG Aug 11, 2025
853b0a6
Fix: #162 TierDTO 추가
Hyunji-JANG Aug 11, 2025
4da7b45
Fix: #162 TierMapper 추가
Hyunji-JANG Aug 11, 2025
edfaae0
Feat: #162 UserMapper에 티어 관련 필드 추가
Hyunji-JANG Aug 11, 2025
d08eee5
Feat: #162 UserVO에 티어 관련 필드 추가
Hyunji-JANG Aug 11, 2025
d084af6
Feat: #162 TierService 추가
Hyunji-JANG Aug 11, 2025
d065003
Feat: #162 TierController 추가
Hyunji-JANG Aug 11, 2025
d540b5c
Feat: #162 TierAPI 테스트 추가
Hyunji-JANG Aug 11, 2025
cf95a9e
[REFACTOR] 카테고리 분류 프롬프트 수정
hoonssac Aug 11, 2025
851d302
Refactor: #168 llm-server를 docker에서 docker-compose로 이동
hoonssac Aug 11, 2025
1f65fff
[FIX] SSL 설정 파일 -> docker-compose 상위 디렉토리로 이동
hoonssac Aug 11, 2025
0874bed
fix: #174 자정마다 스케줄러 실행으로 변경
westsunh Aug 12, 2025
a4e7e06
fix: #174 스케줄러 실행으로 변경
westsunh Aug 12, 2025
79a28b0
Feat: #172 저금통 연결 여부 필드 추가
hoonssac Aug 12, 2025
5944d32
Feat: #172 유저 정보 반환 DTO에 저금통 연결 여부 필드 추가
hoonssac Aug 12, 2025
4587d5b
Feat: #172 저금통 연결 여부 업데이트 로직 구현
hoonssac Aug 12, 2025
5093f04
Refactor: #172 공백 제거
hoonssac Aug 12, 2025
d49f590
Feat: #172 User 응답 필드에 저금통 연동 여부 추가
hoonssac Aug 12, 2025
b113e0b
bug: #167 ExpenseMapper.xml에 findAllByUserIdWithDetails 쿼리 추가
Moon0116 Aug 12, 2025
9716087
bug: #167 인터페이스에 새 메서드 선언
Moon0116 Aug 12, 2025
9243fec
bug: #167 ExpenseServiceImpl.getExpensesByUserId() 메서드 수정
Moon0116 Aug 12, 2025
2e4a1db
bug: #167 AssetMapper에 selectAssetById 쿼리 추가
Moon0116 Aug 12, 2025
9dccd41
bug: #167 ExpenseServiceImpl.voToDto() 메서드 수정
Moon0116 Aug 12, 2025
2288844
feat: asset에 필요한 매퍼 추가 #160
hyungEee Aug 12, 2025
b550484
feat: challenge에 필요한 매퍼 추가 #160
hyungEee Aug 12, 2025
bf852a4
feat: saving에 저금 기능 추가 #160
hyungEee Aug 12, 2025
faaa219
feat: saving 관련 에러코드 추가 #160
hyungEee Aug 12, 2025
6b34830
Refactor: 금감원 api key, url 환경변수 등록
hoonssac Aug 12, 2025
7d42a13
refactor: #179 main 계좌만 조회하도록 수정
Moon0116 Aug 12, 2025
dd98364
Fix: cicd.yml 들여쓰기 버그 수정
hoonssac Aug 12, 2025
41e634b
Fix: 금감원 api 환경변수 형식 수정
hoonssac Aug 12, 2025
a24907b
fix: #171 progress userChallengeId 추가 is_active 제거
westsunh Aug 12, 2025
3d5c983
fix: #171 progressDTO userChallengeId 추가 is_active 제거
westsunh Aug 12, 2025
f99cce5
bug: #181 main 계좌로 설정하도록 로직 수정
Moon0116 Aug 12, 2025
026b00a
Fix: #185 챌린지 참여 Mapper에서 is_active 필드 제거
hoonssac Aug 12, 2025
e48503c
Feat: #177 마이페이지 계좌 DTO
Hyunji-JANG Aug 12, 2025
2389608
Feat: #177 마이페이지 Service 레이어
Hyunji-JANG Aug 12, 2025
a30dd5c
Feat: #177 마이페이지 DTO에 내부 DTO 추가
Hyunji-JANG Aug 12, 2025
b74df72
Feat: #177 마이페이지 Service 레이어에 userId 추출 로직 추가
Hyunji-JANG Aug 12, 2025
814466e
Feat: #177 마이페이지 Controller 레이어
Hyunji-JANG Aug 12, 2025
2c3ac68
Feat: #188 마이페이지 DTO에 TierInfo 추가
Hyunji-JANG Aug 13, 2025
c49e217
Fix: #188 마이페이지 DTO 이름 변경
Hyunji-JANG Aug 13, 2025
083092f
Feat: #188 마이페이지 Controller에 tier 정보 반영
Hyunji-JANG Aug 13, 2025
58b9b0e
Feat: #188 UserMapper에 완료한 챌린지 카운팅하는 로직 추가
Hyunji-JANG Aug 13, 2025
31fe9f7
Feat: #188 마이페이지 Service에 티어 조회, 완료 챌린지 카운팅 로직 추가
Hyunji-JANG Aug 13, 2025
4d6d0f0
Feat: #188 UserResponse에 tierId 추가
Hyunji-JANG Aug 13, 2025
66d231d
Feat: #188 UserService.getCurrentUser 메서드에서 tierId 값을 응답에 포함하도록 수정
Hyunji-JANG Aug 13, 2025
a3afae8
Feat: #188 ChallengeService에서 tier 승급처리 추가
Hyunji-JANG Aug 13, 2025
7c22095
Feat: #188 TierService에서 tier 변경하는 로직 추가
Hyunji-JANG Aug 13, 2025
2624dd9
Feat: #188 TierController에서 tier 재계산 엔드포인트 추가
Hyunji-JANG Aug 13, 2025
00614fd
Fix: #188 TierMapper.xml에서 DB에 없는 필드 제거
Hyunji-JANG Aug 13, 2025
9a524f8
Feat: #188 TierController 테스트용 엔드포인트 제거
Hyunji-JANG Aug 13, 2025
11b92ca
feat: #190 이전 챌린지 목록 불러오기
minji677 Aug 13, 2025
94a8f49
Feat: #188 TierService 티어 계산 로직 추가
Hyunji-JANG Aug 13, 2025
90e32a0
feat: #190 주석 수정
minji677 Aug 13, 2025
1b9c405
Merge pull request #191 from bbaegi-six/feat/190
minji677 Aug 13, 2025
1965e83
Merge branch 'develop' into feat/188
Hyunji-JANG Aug 13, 2025
18eff7a
Merge pull request #192 from bbaegi-six/feat/188
Hyunji-JANG Aug 13, 2025
eb9590e
feat: #184 실패시 소비내역 조회 Mapper 구현
westsunh Aug 13, 2025
16e8a94
feat: #184 실패시 소비내역 조회 추가 구현
westsunh Aug 13, 2025
a680173
feat: #184 챌린지 실패시 응답 DTO 구현
westsunh Aug 13, 2025
ab727ca
feat: #184 챌린지 실패시 로직 구현
westsunh Aug 13, 2025
74f4f03
feat: #184 챌린지 실패시 소비내역 호출 api 구현
westsunh Aug 13, 2025
7a4e13e
feat: close API 추가 #193
hyungEee Aug 13, 2025
8c13eec
Merge branch 'develop' into feat/184
hyungEee Aug 13, 2025
c6e11dc
fix: 저금통 API 수정 #195
hyungEee Aug 13, 2025
45236ba
Update ChallengeController.java
hyungEee Aug 13, 2025
50d665d
[FEAT] 챌린지 실패시 소비내역 호출 api 구현
hyungEee Aug 13, 2025
b374bc7
[REFACTOR] LLM_SERVER_URL 환경변수 추가
hoonssac Aug 14, 2025
dfa1b79
feat: #189 syncFinProductData() 메서드에 스케쥴러 적용
Moon0116 Aug 13, 2025
023f28a
feat: #189 중복 데이터 문제 해결을 위해 SQL 쿼리 수정
Moon0116 Aug 13, 2025
157d852
feat: #189 llm-server에 적금 상품 추천 API 구현
Moon0116 Aug 13, 2025
1ea9986
feat: #189 RecommendationService에서 llm-server 호출 로직 구현
Moon0116 Aug 13, 2025
48c34c2
feat: #189 하드코딩 된 llm-server url 수정
Moon0116 Aug 13, 2025
3f25a8b
feat: #189 gpt 명령 수정 (주 거래 은행만 나오지 않고 여러 은행 나오게)
Moon0116 Aug 13, 2025
881e274
feat: #189 사용자 개인 정보는 반환하지 않도록 수정
Moon0116 Aug 13, 2025
0397298
feat: #189 DTO 별 설명 주석 추가
Moon0116 Aug 13, 2025
f843155
feat: #189 CustomOAuth2User 캐스팅 로직을 서비스로 이동
Moon0116 Aug 13, 2025
11d700a
feat: #199 DB 생성 스크립트와 같이 필드 추가
Moon0116 Aug 13, 2025
6757972
feat: #199 중복 개수 확인, 실제 거래 데이터 조회, 소프트 삭제 기능 추가
Moon0116 Aug 13, 2025
9476839
feat: #199 모든 SELECT 쿼리에 deleted_at IS NULL 조건 추가, INSERT 쿼리에 새 필드 추가…
Moon0116 Aug 13, 2025
3b8787f
feat: #199 duplicateTrasaction 쿼리에 delete_at IS NULL 조건 추가(소프트 딜리트된 거…
Moon0116 Aug 13, 2025
af668f9
feat: #199 toExpenseVoList() 개선, Codef 응답에서 codef_transaction_id 추출하여…
Moon0116 Aug 13, 2025
57554c8
feat: #199 isDuplicateTransaction() 개선(codef_trasacion_id 우선 체크) filt…
Moon0116 Aug 13, 2025
9b30b3d
feat: #199 getCurrentMontSummary 추가
Moon0116 Aug 13, 2025
aa0b99e
feat: #199 expenseMapper에 현재 월 카테고리별 집계 쿼리 추가
Moon0116 Aug 13, 2025
9100276
feat: #199 ExpenseService에 getCurrentMonthSummary 메서드 추가
Moon0116 Aug 13, 2025
5cd2caf
feat: #199 새로 고침시 개별 사용자 거래내역 동기화 코드 추가
Moon0116 Aug 13, 2025
d1cdf8e
feat: #199 userModified 필드 추가
Moon0116 Aug 13, 2025
c851ffc
feat: #199 delete 메서드 제거 (물리적 -> 논리적 삭제), 사용하지 않는 findAllByUserId 제거 …
Moon0116 Aug 13, 2025
65eecce
feat: #199 생성, 수정시 userModified값 true 자동 설정, 삭제시 소프트 딜리트
Moon0116 Aug 13, 2025
4c9b987
feat: #199 에러 코드 추가
Moon0116 Aug 13, 2025
4c3fc8a
feat:#199 에러 코드 수정
Moon0116 Aug 13, 2025
1c04cc1
feat: #199 List로 반환값 수정
Moon0116 Aug 13, 2025
e38728f
fix: saving mapper 수정 #202
hyungEee Aug 14, 2025
47f0187
Feat: #201 회원가입시 직업 입력 추가
hoonssac Aug 14, 2025
e7ad5a7
refactor: #205 FinProductMapper.xml 수정. role을 job으로
Moon0116 Aug 14, 2025
ab40358
refactor: #205 DTO와 Service 수정
Moon0116 Aug 14, 2025
9fbdeef
refactor: llm 성능개선 #207
hyungEee Aug 15, 2025
26574b7
bug: #210 userRole를 userJob으로 수정
Moon0116 Aug 16, 2025
a3f7625
Feat: #156 ningx.conf에 WebSocket 설정 추가
Hyunji-JANG Aug 17, 2025
5ba8e5e
Fix: #156 WebSocket 매칭 경로 수정
Hyunji-JANG Aug 17, 2025
60d32c1
Fix: #156 WebSocket 매칭 경로 재수정
Hyunji-JANG Aug 17, 2025
ee91a03
Fix: #213 nginx에 /api 붙임
Hyunji-JANG Aug 18, 2025
03d0e45
Fix: WebSocket 엔드포인트 수정
Hyunji-JANG Aug 18, 2025
1ceaae6
Refactor: #215 config 패키지를 common으로 이동
Hyunji-JANG Aug 18, 2025
0bce175
Refactor: #215 controller 패키지를 common으로 이동
Hyunji-JANG Aug 18, 2025
cf4dbd5
Refactor: #215 exception 패키지를 common으로 이동
Hyunji-JANG Aug 18, 2025
75a8756
Refactor: #215 codef 패키지를 common으로 이동
Hyunji-JANG Aug 18, 2025
406b0e4
Refactor: #215 system 패키지 삭제
Hyunji-JANG Aug 18, 2025
ef4584c
Refactor: #215 RedisConfig 중복 코드 제거
Hyunji-JANG Aug 18, 2025
f2124a3
fix: #217 챌린지 실패 시 결제 내역 조회 쿼리 수정
Moon0116 Aug 19, 2025
0c32d71
fix: #217 주석 수정
Moon0116 Aug 19, 2025
095b0fd
Refactor: /api 경로로 오는 요청에 대해서는 리다이렉트 대신 401 JSON 응답을 보내서 Mixed Conten…
hoonssac Aug 19, 2025
98b3f93
Refactor: nginx 설정 수정 - SSL 보안 인증서 적용
hoonssac Aug 19, 2025
5581d80
Refactor: CORS 허용 엔드포인트에 새로운 도메인 주소 추가
hoonssac Aug 19, 2025
2c6426c
Refactor: 유저 정보 요청에 대해 명확한 에러 코드 반환
hoonssac Aug 19, 2025
fd57b65
Refactor: 불필요한 디버그 로그 제거
hoonssac Aug 19, 2025
c71d706
Refactor: User-Agent 감지 및 브라우저별 쿠키 설정
hoonssac Aug 19, 2025
f02e938
Refactor: fallback 쿠키 확인 로직 추가
hoonssac Aug 19, 2025
bd86dca
bug: #220 status = ongoing 조건 제거, 사용자의 가장 최근 챌린지 상태를 모든 status에대해 조회하…
Moon0116 Aug 20, 2025
bffeede
bug: #220 ChatService 로그 개선
Moon0116 Aug 20, 2025
de28eab
LLM server 재시작
Moon0116 Aug 20, 2025
7b628ee
LLM server 수정
Moon0116 Aug 20, 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
Binary file modified .DS_Store
Binary file not shown.
207 changes: 119 additions & 88 deletions .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,8 @@ on:
branches: [ main, develop ]

jobs:
test:
build-and-push:
runs-on: ubuntu-latest
permissions:
checks: write

services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: dondothat1234
MYSQL_DATABASE: dondothat
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping -h localhost"
--health-interval=10s
--health-timeout=5s
--health-retries=5

steps:
- uses: actions/checkout@v3
Expand All @@ -48,70 +32,17 @@ jobs:
- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Wait for MySQL to be ready
run: |
for i in {30..0}; do
if mysqladmin ping -h"127.0.0.1" --silent; then
echo "MySQL is ready"
break
fi
echo "Waiting for MySQL... ($i seconds remaining)"
sleep 1
done
if [ "$i" = 0 ]; then
echo "MySQL failed to start"
exit 1
fi

- name: Verify MySQL connection and create test database
run: |
mysql -h127.0.0.1 -uroot -pdondothat1234 -e "SELECT VERSION();" # 수정
mysql -h127.0.0.1 -uroot -pdondothat1234 -e "CREATE DATABASE IF NOT EXISTS dondothat CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # 수정
mysql -h127.0.0.1 -uroot -pdondothat1234 -e "SHOW DATABASES;" # 수정

- name: Run tests
- name: Install Gradle manually
run: |
set -x
./gradlew --version
java -classpath gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain tasks
java -classpath gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain test
env:
SPRING_PROFILES_ACTIVE: test

- name: Generate test report
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Gradle Tests
path: build/test-results/test/*.xml
reporter: java-junit
fail-on-error: true

build-and-push:
needs: test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
wget -q https://services.gradle.org/distributions/gradle-8.8-bin.zip
unzip -q gradle-8.8-bin.zip
export PATH=$PATH:$(pwd)/gradle-8.8/bin
gradle --version

- name: Build with Gradle
run: java -classpath gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain build -x test
run: |
export PATH=$PATH:$(pwd)/gradle-8.8/bin
gradle build -x test

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
Expand All @@ -133,42 +64,129 @@ jobs:
cache-to: type=gha,mode=max

deploy:
needs: [test, build-and-push]
needs: [build-and-push]
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
if: (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop') && github.event_name == 'push'

steps:
- name: Deploy with Docker Compose
- uses: actions/checkout@v3

- name: Deploy with Docker Compose and Nginx
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
timeout: 300s
script: |
# Docker Compose 파일 생성 (Spring Legacy + Tomcat)
cat > docker-compose.yml << 'EOF'
# 환경 변수 설정
export GOOGLE_CLIENT_ID="${{ secrets.GOOGLE_CLIENT_ID }}"
export GOOGLE_CLIENT_SECRET="${{ secrets.GOOGLE_CLIENT_SECRET }}"
export NAVER_CLIENT_ID="${{ secrets.NAVER_CLIENT_ID }}"
export NAVER_CLIENT_SECRET="${{ secrets.NAVER_CLIENT_SECRET }}"
export BASE_URL="${{ secrets.BASE_URL }}"
export JWT_SECRET="${{ secrets.JWT_SECRET }}"
export AES_SECRET_KEY="${{ secrets.AES_SECRET_KEY }}"
export CODEF_CLIENT_ID="${{ secrets.CODEF_CLIENT_ID }}"
export CODEF_CLIENT_SECRET="${{ secrets.CODEF_CLIENT_SECRET }}"
export CODEF_PUBLIC_KEY="${{ secrets.CODEF_PUBLIC_KEY }}"
export API_KEY="${{ secrets.API_KEY }}"
export FSS_API_KEY="${{ secrets.FSS_API_KEY }}"
export FSS_API_URL="${{ secrets.FSS_API_URL }}"
export LLM_SERVER_URL="${{ secrets.LLM_SERVER_URL }}"

# SSL 인증서 디렉토리 생성 (없다면)
mkdir -p ssl

# SSL 인증서 생성 (없다면)
if [ ! -f ssl/server.key ] || [ ! -f ssl/server.crt ]; then
cd ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout server.key -out server.crt \
-subj "/C=KR/ST=Seoul/L=Seoul/O=DonDoThat/CN=54.208.50.238"
cd ..
fi

# Docker Compose 파일 생성
cat > docker-compose.yml << EOF
version: "3.8"

services:
nginx:
image: nginx:alpine
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/nginx/ssl
depends_on:
- dondothat-server
- llm-server
networks:
- dondothat-network
restart: always

redis-server:
image: redis:7-alpine
container_name: redis-server
restart: always
expose:
- "6379"
networks:
- dondothat-network

llm-server:
image: ec2-user-llm-server
container_name: llm-server
expose:
- "8000"
environment:
- API_KEY=${{ secrets.API_KEY }}
networks:
- dondothat-network
restart: unless-stopped

dondothat-server:
image: ghcr.io/${{ github.repository_owner }}/dondothat:latest
container_name: dondothat-server
ports:
- "8080:8080"
expose:
- "8080"
environment:
- SPRING_PROFILES_ACTIVE=prod
- DB_HOST=mysql-server
- DB_USERNAME=root
- DB_PASSWORD=dondothat1234
- DB_NAME=dondothat
- REDIS_HOST=redis-server
- SPRING_MAIL_HOST=${{ secrets.SMTP_HOST }}
- SPRING_MAIL_PORT=${{ secrets.SMTP_PORT }}
- SPRING_MAIL_USERNAME=${{ secrets.SMTP_USERNAME }}
- SPRING_MAIL_PASSWORD=${{ secrets.SMTP_PASSWORD }}
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_AUTH=${{ secrets.SMTP_AUTH }}
- SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_ENABLE=${{ secrets.SMTP_STARTTLS_ENABLE }}
- GOOGLE_CLIENT_ID=$GOOGLE_CLIENT_ID
- GOOGLE_CLIENT_SECRET=$GOOGLE_CLIENT_SECRET
- NAVER_CLIENT_ID=$NAVER_CLIENT_ID
- NAVER_CLIENT_SECRET=$NAVER_CLIENT_SECRET
- BASE_URL=$BASE_URL
- JWT_SECRET=$JWT_SECRET
- AES_SECRET_KEY=$AES_SECRET_KEY
- CODEF_CLIENT_ID=$CODEF_CLIENT_ID
- CODEF_CLIENT_SECRET=$CODEF_CLIENT_SECRET
- CODEF_PUBLIC_KEY=$CODEF_PUBLIC_KEY
- FSS_API_KEY=${{ secrets.FSS_API_KEY }}
- FSS_API_URL=${{ secrets.FSS_API_URL }}
- LLM_SERVER_URL=${{ secrets.LLM_SERVER_URL }}
depends_on:
- mysql
- mysql-server
- redis-server
networks:
- dondothat-network
restart: unless-stopped

mysql:
mysql-server:
image: mysql:8.0
container_name: mysql-server
environment:
Expand All @@ -192,6 +210,8 @@ jobs:

# 최신 이미지 pull
docker pull ghcr.io/${{ github.repository_owner }}/dondothat:latest
docker pull redis:7-alpine
docker pull nginx:alpine

# 서비스 재시작
/usr/local/bin/docker-compose down || true
Expand All @@ -200,4 +220,15 @@ jobs:
# 상태 확인
sleep 15
/usr/local/bin/docker-compose ps
/usr/local/bin/docker-compose logs --tail=10 dondothat-server
/usr/local/bin/docker-compose logs --tail=10 nginx
/usr/local/bin/docker-compose logs --tail=10 dondothat-server

- name: Copy Nginx config to EC2
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
source: "nginx/nginx.conf"
target: "."
strip_components: 1
67 changes: 49 additions & 18 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,10 @@ test {
}
}

sourceCompatibility = '17'
targetCompatibility = '17'

tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
java {
sourceCompatibility = '17'
targetCompatibility = '17'
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
}

dependencies {
Expand All @@ -39,8 +38,40 @@ dependencies {
implementation "org.springframework:spring-tx:${springVersion}"
implementation "org.springframework:spring-jdbc:${springVersion}"

// Spring Security
implementation "org.springframework.security:spring-security-core:5.8.12"
implementation "org.springframework.security:spring-security-web:5.8.12"
implementation "org.springframework.security:spring-security-config:5.8.12"

// OAuth2 Client
implementation 'org.springframework.security:spring-security-oauth2-client:5.8.12'
implementation 'org.springframework.security:spring-security-oauth2-core:5.8.12'
implementation 'org.springframework.security:spring-security-oauth2-jose:5.8.12'

// JWT
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'

// HTTP Client
implementation 'org.apache.httpcomponents:httpclient:4.5.14'

// Web Socket
implementation "org.springframework:spring-websocket:${springVersion}"
implementation "org.springframework:spring-messaging:${springVersion}"

// Email 관련 의존성
implementation 'org.springframework:spring-context-support:5.3.37'
implementation 'javax.mail:javax.mail-api:1.6.2'
implementation 'com.sun.mail:javax.mail:1.6.2'

// Bean Validation (JSR-380)
implementation 'javax.validation:validation-api:2.0.1.Final'
implementation 'org.hibernate.validator:hibernate-validator:6.0.13.Final'
implementation 'org.glassfish:javax.el:3.0.1-b08'

// @PostConstruct
implementation 'javax.annotation:javax.annotation-api:1.3.2'

// AOP
implementation 'org.aspectj:aspectjrt:1.9.20'
Expand All @@ -51,48 +82,48 @@ dependencies {
implementation('javax.servlet:javax.servlet-api:4.0.1')
compileOnly 'javax.servlet.jsp:javax.servlet.jsp-api:2.3.3'
implementation 'javax.servlet:jstl:1.2'
compileOnly('jakarta.servlet:jakarta.servlet-api:6.1.0')

// Logging
implementation 'org.apache.logging.log4j:log4j-api:2.18.0'
implementation 'org.apache.logging.log4j:log4j-core:2.18.0'
implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.18.0'
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16'

// implementation 'org.apache.logging.log4j:log4j-api:2.0.1'
// implementation 'org.apache.logging.log4j:log4j-core:2.0.1'

// XML 내 한글 처리
implementation 'xerces:xercesImpl:2.12.2'

// Jackson
implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.4'
// implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.4'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.4'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'

// Database
implementation 'com.mysql:mysql-connector-j:8.1.0'
implementation 'com.zaxxer:HikariCP:2.7.4'
implementation 'org.mybatis:mybatis:3.4.6'
implementation 'org.mybatis:mybatis-spring:1.3.2'

// Redis
implementation 'org.springframework.data:spring-data-redis:2.7.18'
implementation 'io.lettuce:lettuce-core:6.2.7.RELEASE'

// Lombok
compileOnly "org.projectlombok:lombok:${lombokVersion}"
annotationProcessor "org.projectlombok:lombok:${lombokVersion}"

// 테스트
testImplementation "org.springframework:spring-test:${springVersion}"
testImplementation "org.springframework:spring-websocket:${springVersion}"
testImplementation "org.springframework:spring-messaging:${springVersion}"
testImplementation "org.junit.jupiter:junit-jupiter:${junitVersion}"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
testImplementation 'com.mysql:mysql-connector-j:8.1.0'
testImplementation 'org.mockito:mockito-core:5.12.0'
testImplementation 'org.mockito:mockito-junit-jupiter:5.12.0'
testImplementation 'org.assertj:assertj-core:3.24.2'
testImplementation 'org.hamcrest:hamcrest:2.2'
testImplementation 'org.hamcrest:hamcrest-core:2.2'
testImplementation 'org.hamcrest:hamcrest-library:2.2'
testCompileOnly "org.projectlombok:lombok:${lombokVersion}"
testAnnotationProcessor "org.projectlombok:lombok:${lombokVersion}"
}

test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
exceptionFormat "full"
}
}
Loading