Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
280 commits
Select commit Hold shift + click to select a range
26a1817
change return type String to ImageInfo record
hwjdghks Jul 24, 2025
bebad4d
Merge remote-tracking branch 'origin/develop' into feature/#30
hwjdghks Jul 24, 2025
fbce23a
충돌 해결 중 잘못 삭제된 코드 복구
hwjdghks Jul 24, 2025
7edc766
feat: elascit search 기본 세팅
wooodev Jul 24, 2025
2972870
에러 주석 추가
hwjdghks Jul 24, 2025
01eb10f
develop 브랜치의 포맷에 맞게 변경
hwjdghks Jul 24, 2025
201c7e8
critical) 유저 저장시 display_name 중복 이슈 수정, 로그인 후 redirect url 수정
yhs99 Jul 24, 2025
17b5cd4
Merge pull request #37 from 10teamm/36-display_name-중복-이슈-로그인-callbac…
yhs99 Jul 24, 2025
cf9f97b
커스텀 예외 추가 및 기존 예외 발생 코드 변경
hwjdghks Jul 25, 2025
5f5d79f
static 제거
hwjdghks Jul 25, 2025
417ec91
기본 주석 변경
hwjdghks Jul 25, 2025
5eb950f
미사용 패키지 제거
hwjdghks Jul 25, 2025
e5b2e7f
Metadata 주입 방식 변경
hwjdghks Jul 25, 2025
31b6065
package org.joda.time does not exist 에러 해결
hwjdghks Jul 25, 2025
24679e3
Authorization 헤더가 없을 경우 핸들링하는 로직 추가
yhs99 Jul 25, 2025
4bdb278
Merge pull request #45 from 10teamm/44-authorization-헤더가-없을-경우-핸들링-로직-추가
yhs99 Jul 25, 2025
cb04415
logback 권한 추가, 로그아웃시 refresh token 만료
yhs99 Jul 25, 2025
83154f0
logback 권한 추가, 로그아웃시 refresh token 만료
yhs99 Jul 25, 2025
9442a39
CORS 정책 추가
yhs99 Jul 25, 2025
b3e1e37
CORS 정책 추가
yhs99 Jul 25, 2025
b031b03
CORS 정책이 적용되지 않던 현상 수정
yhs99 Jul 25, 2025
02ff88f
Merge pull request #48 from 10teamm/44-authorization-헤더가-없을-경우-핸들링-로직-추가
yhs99 Jul 25, 2025
abfffd1
AllowOrigin, methods를 List로 변환하여 적용
yhs99 Jul 25, 2025
4adf751
Merge branch 'develop' into feature/#30
yhs99 Jul 25, 2025
448a334
이미지 업로드 모듈 개발
yhs99 Jul 25, 2025
cea6c79
bug) deploy actions이 다음 job으로 수행될 수 있게끔 수정
yhs99 Jul 25, 2025
3fc199b
프론트엔드 요청사항 적용
yhs99 Jul 26, 2025
995fb09
프론트엔드 요청사항 적용
yhs99 Jul 26, 2025
17e8ef5
callback시 Referer 헤더를 참조하여 redirect 되도록 수정
yhs99 Jul 26, 2025
7824986
Merge branch 'develop' into refactor)-로그인-callback-url-유연하게-응답하도록-수정
yhs99 Jul 26, 2025
75a09b3
callback시 Referer 헤더를 참조하여 redirect 되도록 수정
yhs99 Jul 26, 2025
b42613a
Referer 캐치 시점 변경
yhs99 Jul 26, 2025
fc1c74d
Merge branch 'develop' into refactor)-로그인-callback-url-유연하게-응답하도록-수정
yhs99 Jul 26, 2025
05c46fb
Merge pull request #53 from 10teamm/refactor)-로그인-callback-url-유연하게-응…
yhs99 Jul 26, 2025
511d7c7
디렉터리 구조 변경
hwjdghks Jul 27, 2025
ff4e5fe
스프링(톰캣)에서 발생하는 에러 핸들링 추가
hwjdghks Jul 27, 2025
b740473
패키지 경로 변경
hwjdghks Jul 27, 2025
5e9c620
이미지 검증 기능 추가
hwjdghks Jul 27, 2025
deef954
이미지 검증 로직을 이미지 저장 서비스 로직에 적용
hwjdghks Jul 27, 2025
b7c7a25
Merge branch 'develop' into feature/#58
hwjdghks Jul 27, 2025
2f76938
refactor/alter tables category content region_code
yhs99 Jul 28, 2025
82b1172
bug/Builder null 초기화 버그 수정
yhs99 Jul 28, 2025
7b0dbce
rename/sigtest_information to sights_information
yhs99 Jul 28, 2025
d3344cc
feat: elasticsearch 초기 코드 작성 #32 #55
wooodev Jul 28, 2025
86f9c42
feat/batch content, content_image, content overview
yhs99 Jul 29, 2025
8aa29b1
feat: elasticsearch에서 id조회 후 mysql 값 반환 적용 #55
wooodev Jul 29, 2025
2a29ac4
Feature/#58
yhs99 Jul 30, 2025
201ca8f
feat: title, addr1, addr2, contentTypeId 조건 검색 구현 #55
wooodev Jul 30, 2025
8f821e3
feat: 여러건 저장 controller 추가 #55
wooodev Jul 30, 2025
349ce03
Merge branch 'develop' into feature/Elasticsearch-#32
wooodev Jul 30, 2025
99d7c1c
유저 정보 API 추가
hwjdghks Aug 1, 2025
9b84550
반려동물 정보 API 추가
hwjdghks Aug 1, 2025
e71e3ac
change user update method return type to void
hwjdghks Aug 2, 2025
83450f1
feat/데이터 패치 배치 스케쥴러 작성
yhs99 Aug 2, 2025
6d9c28c
Merge branch 'develop' into 57-spring-batch-데이터-마이그레이션
yhs99 Aug 2, 2025
bb84efe
user pets builder 초기화 수정
yhs99 Aug 2, 2025
304fe19
Merge branch '57-spring-batch-데이터-마이그레이션' of https://github.com/10tea…
yhs99 Aug 2, 2025
1b6f820
entity 초기화 수정
yhs99 Aug 2, 2025
88bb5ad
feat: 검색에 별점, 이미지 정보 추가
wooodev Aug 2, 2025
a25bf04
faet: 시큐리티 수정
wooodev Aug 2, 2025
329f8b2
chore: 불필요 파일 제거
wooodev Aug 2, 2025
62ab258
chore: 파일 삭제
wooodev Aug 2, 2025
5b10e56
feat: ci 파일 수정
wooodev Aug 2, 2025
7347c65
refactor/recur_information_room response 수정
yhs99 Aug 2, 2025
da64657
fix: 파일명 수정
wooodev Aug 2, 2025
18d1cf0
fix: docker 대기 루프 코드 추가
wooodev Aug 2, 2025
fa79f17
feat: 로그 출력 스텝 추가
wooodev Aug 2, 2025
b870c76
fix: test 코드 내 uris 확인 및 주소 오버라이딩
wooodev Aug 2, 2025
bae1da5
Update ci.yml
wooodev Aug 2, 2025
cdce3fc
fix: 클러스터 헬스 체크 추가
wooodev Aug 2, 2025
f9a1571
fix: docker 파일 수정
wooodev Aug 2, 2025
e48290b
fix: docker 파일 수정, ci 수정
wooodev Aug 2, 2025
d72a122
Update ci.yml
wooodev Aug 2, 2025
2f444b9
fix: analysis-nori 플러그인 추가
wooodev Aug 2, 2025
d464803
Merge branch 'feature/Elasticsearch-#32' of https://github.com/10team…
wooodev Aug 2, 2025
42b67c9
fix: 빈 항목 오타 제거
wooodev Aug 2, 2025
5f5378b
feat/리뷰 작성
yhs99 Aug 2, 2025
253da81
feat/리뷰 수정
yhs99 Aug 2, 2025
2242958
feat/리뷰 삭제 및 리뷰 이미지 삭제
yhs99 Aug 2, 2025
fb98fb4
feat/컨텐츠의 리뷰 목록 조회
yhs99 Aug 2, 2025
6962a61
Merge pull request #66 from 10teamm/Spring-batch-마이그레이션
yhs99 Aug 2, 2025
1991fae
feat/리뷰 목록 조회
yhs99 Aug 3, 2025
3629cb3
Merge branch 'develop' into 42-리뷰-기능-api
yhs99 Aug 3, 2025
3292626
feat: 찜 여부 추가 #55
wooodev Aug 3, 2025
bb18287
refactor/ 컨텐츠 리뷰 조회시 좋아요한 리뷰 상태도 반환하도록 수정
yhs99 Aug 3, 2025
3fb1624
refactor/ DetailIntro 데이터 매핑 로직 수정
yhs99 Aug 3, 2025
dc8f166
feat: 검색 api 매개변수 변경 및 로직 추가
wooodev Aug 3, 2025
7ab1a32
feat: 의존성 추가
wooodev Aug 3, 2025
120d3a5
Merge branch 'develop' into feature/Elasticsearch-#32
wooodev Aug 3, 2025
e17f132
fix: merge 후 코드 리팩토링
wooodev Aug 3, 2025
86c43ff
feat: 메서드 명 변경
wooodev Aug 3, 2025
191a0ea
feat: 시도, 시군구 자료형 변경
wooodev Aug 3, 2025
b6b06d5
feat: 공간상세 정보 조회 구현 #54
wooodev Aug 3, 2025
32e03b7
refactor: 필요없는 코드 삭제
wooodev Aug 3, 2025
c5ef9bb
Merge pull request #63 from 10teamm/feature/Elasticsearch-#32
yhs99 Aug 3, 2025
9fbd938
Merge branch 'develop' into 42-리뷰-기능-api
yhs99 Aug 3, 2025
129d28b
bug/ security 탈자 수정
yhs99 Aug 3, 2025
9090e19
bug/ content entity 구조 변경으로 인해 batch 수정
yhs99 Aug 3, 2025
fedb899
refactor/ 마이그레이션 데이터 petguide 테이블 데이터타입 확장
yhs99 Aug 3, 2025
c07b189
Merge pull request #67 from 10teamm/42-리뷰-기능-api
yhs99 Aug 3, 2025
ef66959
Merge branch 'develop' into feature/#61
yhs99 Aug 3, 2025
bd7d9ee
feat/찜 목록, 최근 본 장소 조회 기능
yhs99 Aug 3, 2025
c870a78
flyway 버전 변경
hwjdghks Aug 4, 2025
43f892a
Merge branch 'feature/#61' of github.com:10teamm/backend into feature…
hwjdghks Aug 4, 2025
995a922
Merge pull request #64 from 10teamm/feature/#61
hwjdghks Aug 4, 2025
80c790b
Update cd.yml
wooodev Aug 4, 2025
731bdbd
feat: 찜 개수 조회 추가
wooodev Aug 4, 2025
ad68e4c
feat/지역 코드 조회 API
yhs99 Aug 4, 2025
60efd5c
feat: MockitoBean 설정
wooodev Aug 4, 2025
18c2585
fix: 경로 수정
wooodev Aug 4, 2025
fc4ba29
Update CatsgotogedogApplication.java
wooodev Aug 4, 2025
dc6563c
Merge pull request #69 from 10teamm/feature/Elasticsearch-#32
wooodev Aug 4, 2025
a49d543
feat: swagger 추가
wooodev Aug 4, 2025
d3313bb
Merge pull request #70 from 10teamm/feature/Elasticsearch-#32
wooodev Aug 4, 2025
28ba284
feat: 전체 조회수 추가 #54
wooodev Aug 4, 2025
64033bb
feat: 조회 기록 저장 구현 #54
wooodev Aug 4, 2025
f52ff0b
Merge branch 'develop' into 지역-코드-조회-API
yhs99 Aug 4, 2025
016ae4d
rename/flyway 버전 수정
yhs99 Aug 4, 2025
d3e0a3e
지역-코드-조회-API
yhs99 Aug 4, 2025
e30158a
feat: 최근 본 장소 로직 구현 #71
wooodev Aug 4, 2025
5c23816
feat: 방문 여부 로직 구현 #54
wooodev Aug 4, 2025
1433292
feat: response DTO 수정
wooodev Aug 4, 2025
f1780cc
feat: swagger 작성 #54 #71
wooodev Aug 4, 2025
7701906
feat/리뷰 신고하기 및 블라인드 여부 조회 추가
yhs99 Aug 5, 2025
fa50964
fix: 필드명 수정 #55
wooodev Aug 5, 2025
db2dec1
fix: 매핑 타입 변경 #54
wooodev Aug 5, 2025
34e5c05
fix: smallImageUrl 제거
wooodev Aug 5, 2025
93be5ac
feat: 검색 결과에 해시태그 추가 구현 #55
wooodev Aug 5, 2025
f3f5ba7
feat: 휴일 정보 추가 구현 #55
wooodev Aug 5, 2025
252fe75
fix: ci 내 mysql 컨테이너 추가 테스트용
wooodev Aug 5, 2025
3e6cda4
Update ci.yml
wooodev Aug 5, 2025
3592a34
Update ci.yml
wooodev Aug 5, 2025
98c4dda
Rollback
wooodev Aug 5, 2025
fc66ecd
Merge pull request #80 from 10teamm/feature/Elasticsearch-#32
wooodev Aug 5, 2025
ebb99ba
bug/information 테이블 데이터 못받아오는 현상 수정
yhs99 Aug 5, 2025
cbbfc12
refactor/컨텐츠 리뷰 목록 조회 응답 수정
yhs99 Aug 5, 2025
1d48eb1
Merge branch 'develop' into 77-컨텐츠-타입별-information-데이터-못받아오는-현상
yhs99 Aug 5, 2025
a0d4c42
75-리뷰-신고하기-및-블라인드
yhs99 Aug 5, 2025
19fb9fe
Merge branch 'develop' into 77-컨텐츠-타입별-information-데이터-못받아오는-현상
yhs99 Aug 5, 2025
f119997
Merge branch 'develop' into 77-컨텐츠-타입별-information-데이터-못받아오는-현상
yhs99 Aug 5, 2025
a72a079
Merge branch '77-컨텐츠-타입별-information-데이터-못받아오는-현상' of https://github.…
yhs99 Aug 5, 2025
36a84cd
스케쥴러 2시 20분에 동작하도록 수정
yhs99 Aug 5, 2025
e7800ec
77-컨텐츠-타입별-information-데이터-못받아오는-현상
yhs99 Aug 5, 2025
6b912e6
반려동물 종류 필드 추가
hwjdghks Aug 5, 2025
91ac662
Merge branch 'develop' into feature/공간상세페이지-#54
wooodev Aug 5, 2025
2aaf4dc
fix: 리포지토리 메서드 수정
wooodev Aug 5, 2025
8a4cba2
fix: 리포지토리 메서드 수정
wooodev Aug 6, 2025
ba906b1
Merge pull request #72 from 10teamm/feature/공간상세페이지-#54
wooodev Aug 6, 2025
39fafc7
비속어 필터링 기능 추가 및 반려동물 및 사용자단 검증 로직 추가
hwjdghks Aug 6, 2025
aa53030
fix: 조회수 갱신 오류 해결 #54
wooodev Aug 6, 2025
2a38c96
feat: 총 조회수 조회 추가 #54
wooodev Aug 6, 2025
6492c31
feat: content 내 overview 정보 추가 #54
wooodev Aug 6, 2025
ca6cf65
feat: 상세 정보 전달에 상세 사진 추가, smallImageUrl삭제 #54
wooodev Aug 6, 2025
9b09f23
Merge pull request #87 from 10teamm/feature/공간상세페이지-#54
wooodev Aug 6, 2025
d49ee2c
feat: 방문 여부 저장 및 해제 로직 구현 #86
wooodev Aug 6, 2025
e553960
Merge pull request #88 from 10teamm/feature/방문-장소-체크api-#85
wooodev Aug 6, 2025
24ea043
feat: swagger 작성 #85
wooodev Aug 6, 2025
4e720c5
Merge pull request #90 from 10teamm/feature/방문-장소-체크api-#85
wooodev Aug 6, 2025
29f2961
feat/해시태그 생성 스케쥴러
yhs99 Aug 6, 2025
c555671
Merge branch 'develop' into 84-content-데이터-hashtag-연동
yhs99 Aug 6, 2025
82cfa41
rename/FLYWAY 버전수정 13>14
yhs99 Aug 6, 2025
65d6194
Merge pull request #82 from 10teamm/bug/#79
yhs99 Aug 6, 2025
216904f
Merge pull request #92 from 10teamm/84-content-데이터-hashtag-연동
yhs99 Aug 6, 2025
501df36
Merge pull request #83 from 10teamm/feature/#74
hwjdghks Aug 7, 2025
9601c57
fix: 생성자 주입 및 익명 처리 관련 로직 추가 #85
wooodev Aug 7, 2025
35aa1f7
fix: 메서드 이름 수정 #54
wooodev Aug 7, 2025
1f5b5f9
Merge pull request #95 from 10teamm/feature/공간상세페이지-#54
wooodev Aug 7, 2025
5df146a
feat: 검색 결과에 조회수 추가 구현 #55
wooodev Aug 7, 2025
0ea4bad
feat: 검색 결과에 좋아요수(찜) 추가 구현 #55
wooodev Aug 7, 2025
6682344
feat: 검색 결과에 장소 생성 시간 추가 구현 #55
wooodev Aug 7, 2025
9cd98a0
refactor: 데이터 조회 수 제한 해제 #55
wooodev Aug 7, 2025
ef4b235
Merge pull request #96 from 10teamm/feature/Elasticsearch-#32
wooodev Aug 7, 2025
b5ad82b
Merge pull request #97 from 10teamm/feature/Elasticsearch-#32
wooodev Aug 7, 2025
ad6b187
feat/리뷰 추천(좋아요) API
yhs99 Aug 7, 2025
96d788d
Merge pull request #98 from 10teamm/feature/방문-장소-체크api-#85
wooodev Aug 7, 2025
4e614be
feat: 찜 처리 로직 구현 #86
wooodev Aug 7, 2025
b50660e
Merge branch 'develop' into feature/찜-로직-구현-#86
wooodev Aug 7, 2025
b62dd31
fix: 오탈자 수정
wooodev Aug 7, 2025
028ea79
Merge pull request #101 from 10teamm/feature/찜-로직-구현-#86
wooodev Aug 7, 2025
a0692dd
feat/조회수 인기 장소 조회 API, 해시태그 시스템 프롬프트 수정
yhs99 Aug 7, 2025
ddbee2c
feat/ recommendedNumber 적용, 특정 리뷰 정보 조회 api 추가
yhs99 Aug 8, 2025
270734a
Merge pull request #100 from 10teamm/93-리뷰-좋아요-api
yhs99 Aug 8, 2025
ab67582
fix: mapping 메서드 유형 변경 #85
wooodev Aug 8, 2025
352a704
Merge branch 'feature/방문-장소-체크api-#85' into feature/찜-로직-구현-#86
wooodev Aug 8, 2025
6afcbfb
Merge pull request #103 from 10teamm/feature/찜-로직-구현-#86
wooodev Aug 8, 2025
b4df880
Merge pull request #104 from 10teamm/feature/방문-장소-체크api-#85
wooodev Aug 8, 2025
42c4c27
feat: 조회 시간 추가 저장 #54
wooodev Aug 8, 2025
92f7f8d
fix: 기본 생성자 어노테이션 추가 #86
wooodev Aug 8, 2025
a894c4c
Merge pull request #105 from 10teamm/feature/찜-로직-구현-#86
wooodev Aug 8, 2025
88e362e
feat: 상세 정보 조회 내 반려동물 관련 정보 추가 #54
wooodev Aug 8, 2025
78951b7
Merge branch 'develop' into feature/공간상세페이지-#54
wooodev Aug 8, 2025
3da525f
refactore: sigungu 값 다중 조회로 변경 #55
wooodev Aug 8, 2025
a38f711
Merge pull request #106 from 10teamm/feature/공간상세페이지-#54
wooodev Aug 8, 2025
4a049e3
Merge pull request #107 from 10teamm/feature/Elasticsearch-#32
wooodev Aug 8, 2025
29c4637
feat/조회 더보기 화면 데이터 추가
yhs99 Aug 8, 2025
96da360
Merge branch 'develop' into 38-조회-장소-랭킹-api
yhs99 Aug 8, 2025
be68dc9
Merge pull request #102 from 10teamm/38-조회-장소-랭킹-api
yhs99 Aug 8, 2025
fd28882
feat/회원탈퇴 및 컨텐츠 랭킹 반환 해시태그명 수정
yhs99 Aug 8, 2025
1a07a4a
refactor/hashtag 탈자 수정
yhs99 Aug 8, 2025
742e496
Merge pull request #110 from 10teamm/108-회원탈퇴-api
yhs99 Aug 8, 2025
f69fa9b
비로그인 and 데이터 부족 시 기본 랜덤 데이터 제공
hwjdghks Aug 8, 2025
5e8e1d5
Merge branch 'develop' into feature/#94
hwjdghks Aug 8, 2025
5774f72
Merge pull request #111 from 10teamm/feature/#94
hwjdghks Aug 8, 2025
19bf503
feat: 상세 정보 내 휴무정보 추가 구현 #54
wooodev Aug 9, 2025
dda0796
Merge pull request #112 from 10teamm/feature/공간상세페이지-#54
wooodev Aug 9, 2025
3dc18ea
로그인 사용자면서 데이터가 충분할 경우 개인화된 AI 추천. 아직 결과는 별도의 DB 저장 로직 없음
hwjdghks Aug 9, 2025
169c15c
비로그인 & 로그인 사용자 검증 로직 변경(버그 수정)
hwjdghks Aug 9, 2025
a2e8080
Merge branch 'develop' into feature/#94-2
hwjdghks Aug 9, 2025
07736fc
토큰 사용량 이슈로 사용자 검증 로직 제거
hwjdghks Aug 9, 2025
8d2af55
Merge pull request #113 from 10teamm/feature/#94-2
hwjdghks Aug 9, 2025
2b9cf16
refactor: 검색 결과 순서가 하루 마다 바뀌도록 변경 #55
wooodev Aug 9, 2025
a89dcef
Merge pull request #115 from 10teamm/feature/Elasticsearch-#32
wooodev Aug 9, 2025
893cc50
add jwt error handling
hwjdghks Aug 9, 2025
0d03c92
발생한 모든 에러를 401로 반환
hwjdghks Aug 9, 2025
96349df
Merge pull request #117 from 10teamm/bug/#114
hwjdghks Aug 9, 2025
5926c8d
feat/최근 본 장소 저장 기능/찜 목록 반환시 contentId 반환하도록 수정
yhs99 Aug 9, 2025
a3f21d1
Merge pull request #119 from 10teamm/최근-본-장소-저장-기능찜-목록-반환시-contentid-…
yhs99 Aug 9, 2025
047958d
wishResponse에 contentId가 반환되도록 수정
yhs99 Aug 9, 2025
9b39bff
Merge pull request #120 from 10teamm/최근-본-장소-저장-기능찜-목록-반환시-contentid-…
yhs99 Aug 9, 2025
bdc49ef
AI 추천 컨텐츠 생성 스케줄러 추가
hwjdghks Aug 9, 2025
9c295d9
Merge branch 'develop' into feature/#94-2
hwjdghks Aug 9, 2025
0c2e453
bug/리뷰 이미지 수정시 최대 이미지 갯수 limit
yhs99 Aug 9, 2025
7a8b0ad
Merge pull request #123 from 10teamm/122-리뷰-이미지-수정시-최대-이미지-갯수-리밋
yhs99 Aug 9, 2025
643fd87
bug/지원하지 않는 미디어 타입 에러 핸들링
yhs99 Aug 9, 2025
5d72390
Merge pull request #124 from 10teamm/122-리뷰-이미지-수정시-최대-이미지-갯수-리밋
yhs99 Aug 9, 2025
94182cb
feat/review 권한 핸들링 수정
yhs99 Aug 9, 2025
cb8fbd4
Merge pull request #125 from 10teamm/122-리뷰-이미지-수정시-최대-이미지-갯수-리밋
yhs99 Aug 9, 2025
655e8c5
refactor/ 최근 본 장소 저장 로직 보완
yhs99 Aug 10, 2025
d16a7ca
Merge pull request #126 from 10teamm/122-리뷰-이미지-수정시-최대-이미지-갯수-리밋
yhs99 Aug 10, 2025
d969ae3
Merge pull request #121 from 10teamm/feature/#94-2
hwjdghks Aug 10, 2025
53c5ff1
스웨거 문서 추가 및 기본 경로 수정
hwjdghks Aug 10, 2025
5483476
반려동물 정보 기본 이미지 경로 변경
hwjdghks Aug 10, 2025
7b267ba
문서 표현 수정
hwjdghks Aug 10, 2025
237e96f
Merge pull request #128 from 10teamm/bug/#127
hwjdghks Aug 10, 2025
976e995
refactor: 정보 조회 방식 변경 #129
wooodev Aug 11, 2025
11fa1be
refactor: 별점 평균 null 로직 보완 #129
wooodev Aug 11, 2025
482bf61
refactor: 코드 스트림화 #129
wooodev Aug 11, 2025
6c3fe50
Merge pull request #132 from 10teamm/feature/검색-성능-최적화-#129
wooodev Aug 11, 2025
8c93922
refactor: 지역명 조회 방식 변경
wooodev Aug 11, 2025
ca427f0
Merge pull request #133 from 10teamm/feature/검색-성능-최적화-#129
wooodev Aug 11, 2025
aea9d06
이메일 유니크 제거
hwjdghks Aug 12, 2025
33bbd28
Merge pull request #134 from 10teamm/bug/drop-email-unique-index
hwjdghks Aug 12, 2025
e07c7e6
Merge branch 'main' into develop
yhs99 Aug 24, 2025
20d4548
CI 충돌 수정
yhs99 Aug 24, 2025
37476e6
feat: 상세 정보 페이지 카테고리 작업 #135
wooodev Sep 3, 2025
616ac55
Merge pull request #139 from 10teamm/feature/상세-정보-내-카테고리-작업-#135
wooodev Sep 3, 2025
6cdfa26
feat: contentTypeId 사용 방법 변경 #135
wooodev Sep 3, 2025
da0a207
Merge pull request #140 from 10teamm/feature/상세-정보-내-카테고리-작업-#135
wooodev Sep 3, 2025
3f8045d
AI플래너 구현
yhs99 Sep 3, 2025
c6160bf
Merge pull request #141 from 10teamm/131-ai-플래너-데이터-임베딩
yhs99 Sep 3, 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
14 changes: 11 additions & 3 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ jobs:
- name: Build with Gradle Wrapper
run: ./gradlew clean build

- name: Upload test report on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-report
path: build/reports/tests/test

- name: Upload build artifact # only cd.yml
uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -71,6 +78,7 @@ jobs:
key: ${{ secrets.NCP_SSH_PRIVATE_KEY }}
script: |
cd ${{ secrets.NCP_SERVER_PATH }}
chmod -R 755 log
# 실행 중인 애플리케이션 중지 및 중지 실패 시 action 중단 방지
if [ -f pid.file ]; then
kill $(cat pid.file) || true
Expand All @@ -80,7 +88,7 @@ jobs:

# 새 애플리케이션 실행 - 일단 임시로 와일드 카드 사용
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
nohup java -jar -Dspring.profiles.active=dev *-SNAPSHOT.jar > dev_${TIMESTAMP}.log 2>&1 & echo $! > pid.file
nohup java -jar -Dspring.profiles.active=dev *-SNAPSHOT.jar > /dev/null 2>&1 & echo $! > pid.file
echo "Development server deploy done."

# product
Expand Down Expand Up @@ -112,6 +120,7 @@ jobs:
key: ${{ secrets.NCP_SSH_PRIVATE_KEY }}
script: |
cd ${{ secrets.NCP_SERVER_PATH }}
chmod -R 755 log
# 실행 중인 애플리케이션 중지 및 중지 실패 시 action 중단 방지
if [ -f pid.file ]; then
kill $(cat pid.file) || true
Expand All @@ -120,6 +129,5 @@ jobs:
fi

# 새 애플리케이션 실행 - 일단 임시로 와일드 카드 사용
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
nohup java -jar -Dspring.profiles.active=prod *-SNAPSHOT.jar > prod_${TIMESTAMP}.log 2>&1 & echo $! > pid.file
nohup java -jar -Dspring.profiles.active=prod *-SNAPSHOT.jar > /prod/null 2>&1 & echo $! > pid.file
echo "Production server deploy done."
23 changes: 22 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,21 @@ jobs:
java-version: '17'
distribution: 'temurin'

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
- name: Start Elasticsearch & Kibana
run: |
docker compose up -d
timeout 120s bash -c '
until [[ "$(curl -s http://localhost:9200/_cluster/health | jq -r ".status" 2>/dev/null)" =~ ^(green|yellow)$ ]]; do
echo "Waiting for Elasticsearch"
sleep 5
done
echo "-- ES health is ok "
'

- name: Check ES container logs
run: docker compose logs --tail=50 elasticsearch || true

# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
Expand All @@ -41,3 +55,10 @@ jobs:

- name: Build with Gradle Wrapper
run: ./gradlew clean build

- name: Upload test report on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-report
path: build/reports/tests/test
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,5 @@ out/

### properties ###
application.properties
application-local.properties
application-dev.properties
application-prod.properties
30 changes: 30 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,38 @@ dependencies {
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// Swagger
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.8.9'
// Spring Cloud AWS
implementation "io.awspring.cloud:spring-cloud-aws-starter-s3:3.3.1"
// S3
implementation group: 'com.amazonaws', name: 'aws-java-sdk-s3', version: '1.12.787'

//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'

// Milvus Java SDK
implementation group: 'io.milvus', name: 'milvus-sdk-java', version: '2.5.10'
// Flyway
implementation group: 'org.flywaydb', name: 'flyway-mysql', version: '11.10.2'
implementation 'org.flywaydb:flyway-core'


// elastic search
implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'

//Spring Batch
implementation 'org.springframework.boot:spring-boot-starter-batch'
implementation 'org.springframework.batch:spring-batch-core'
testImplementation 'org.springframework.batch:spring-batch-test'
implementation 'jakarta.persistence:jakarta.persistence-api'

// Tika
implementation 'org.apache.tika:tika-core:3.1.0'

//로그인 관련
implementation 'org.apache.commons:commons-lang3:3.14.0'

}

tasks.named('test') {
Expand Down
48 changes: 48 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.6.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- xpack.security.http.ssl.enabled=false

command: >
bash -c "
if [ ! -d '/usr/share/elasticsearch/plugins/analysis-nori' ]; then
elasticsearch-plugin install --batch analysis-nori;
fi &&
/usr/local/bin/docker-entrypoint.sh eswrapper
"

ports:
- "9200:9200"
- "9300:9300"

extra_hosts:
- "elasticsearch:127.0.0.1"
volumes:
- esdata:/usr/share/elasticsearch/data
networks:
- es_network

kibana:
image: docker.elastic.co/kibana/kibana:8.6.0
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- "5601:5601"
depends_on:
- elasticsearch
networks:
- es_network

networks:
es_network:
driver: bridge

volumes:
esdata:
driver: local
136 changes: 136 additions & 0 deletions src/main/java/com/batch/client/MigrationClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
package com.batch.client;

import java.io.IOException;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpRequest;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.MediaType;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClient;
import org.springframework.web.util.UriComponentsBuilder;

import com.batch.dto.AreaBasedListResponse;
import com.batch.dto.CategoryCodeResponse;
import com.batch.dto.ContentTypeId;
import com.batch.dto.DetailImageResponse;
import com.batch.dto.DetailInfoResponse;

import lombok.extern.slf4j.Slf4j;

@Service
@Slf4j
public class MigrationClient {

@Value("${tour.api.base-url}")
private String baseUrl;

@Value("${tour.api.service-key}")
private String serviceKey;

private RestClient restClient;

public MigrationClient(RestClient.Builder restClientBuilder) {
this.restClient = restClientBuilder.build();
}

private static void handle(HttpRequest request, ClientHttpResponse response) throws IOException {
// 5xx 서버 에러 처리
String errorBody = new String(response.getBody().readAllBytes(), StandardCharsets.UTF_8);
log.error("에러 응답 areaBasedList API ({} {}): Status {}, Body: {}",
request.getMethod(), request.getURI(), response.getStatusCode(), errorBody);
throw new RuntimeException("AreaBasedList API 호출 오류 : " + errorBody);
}

// areaBasedList
public AreaBasedListResponse getAreaBasedLists(int pageNo, int numOfRows, String contentTypeId, String modifiedTime) {
UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUrl + "/areaBasedList")
.queryParam("serviceKey", serviceKey)
.queryParam("pageNo", pageNo)
.queryParam("numOfRows", numOfRows)
.queryParam("MobileOS", "ETC")
.queryParam("MobileApp", "CatsGoToGedog")
.queryParam("contentTypeId", contentTypeId) // 관광타입(12:관광지, 14:문화시설, 15:축제공연행사, 28:레포츠, 32:숙박, 38:쇼핑, 39:음식점) ID
.queryParam("_type", "json");

if(modifiedTime != null && !modifiedTime.isEmpty()) {
uri.queryParam("modifiedtime", modifiedTime);
}
URI fullUri = uri.encode(StandardCharsets.UTF_8).build().toUri();

log.info("API Request URL (areaBasedList) : {}", uri.toUriString());

try {
return restClient.get()
.uri(fullUri)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.onStatus(HttpStatus.BAD_REQUEST::equals, (request, response) -> {
String errorBody = new String(response.getBody().readAllBytes(), StandardCharsets.UTF_8);
log.error("에러 응답 areaBasedList API ({} {}): Status {}, Body {}",request.getMethod(), request.getURI(), response.getStatusCode(), errorBody);
})
.onStatus(HttpStatusCode::is4xxClientError, MigrationClient::handle)
.onStatus(HttpStatusCode::is5xxServerError, MigrationClient::handle)
.body(AreaBasedListResponse.class);
}catch (RuntimeException e) {
log.error("areaBasedList API 요청중 오류 발생 : {}", e.getMessage(), e);
throw e; // 배치 스탭에서 재시도/스킵 위해 재throw
}catch (Exception e) {// 기타 exception
log.error("areaBasedList API 요청중 예상치 못한 오류 발생: {}", e.getMessage(), e);
throw new RuntimeException("areaBasedList API 요청중 예상치 못한 오류 발생", e);
}
}

public AreaBasedListResponse getAreaBasedLists(int pageNo, int numOfRows, String contentTypeId) {
return getAreaBasedLists(pageNo, numOfRows, contentTypeId, null);
}

// categoryCode
public List<CategoryCodeResponse.Item> getCategoryCode(String contentTypeId, String cat1, String cat2) {
UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUrl + "/categoryCode")
.queryParam("serviceKey", serviceKey)
.queryParam("pageNo", 1)
.queryParam("numOfRows", 100)
.queryParam("MobileOS", "ETC")
.queryParam("MobileApp", "CatsGoToGedog")
.queryParam("contentTypeId", contentTypeId) // 관광타입(12:관광지, 14:문화시설, 15:축제공연행사, 28:레포츠, 32:숙박, 38:쇼핑, 39:음식점) ID
.queryParam("_type", "json");
if(cat1 != null && !cat1.isEmpty()) {
uri.queryParam("cat1", cat1);
}
if(cat2 != null && !cat2.isEmpty()) {
uri.queryParam("cat2", cat2);
}
URI fullUri = uri.encode(StandardCharsets.UTF_8).build().toUri();

try {
CategoryCodeResponse response = restClient.get()
.uri(fullUri)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.onStatus(HttpStatusCode::isError, MigrationClient::handle)
.body(CategoryCodeResponse.class);
return Optional.ofNullable(response)
.map(CategoryCodeResponse::getResponse)
.map(CategoryCodeResponse.Response::getBody)
.map(CategoryCodeResponse.Body::getItems)
.map(CategoryCodeResponse.Items::getItem)
.orElse(Collections.emptyList());
} catch (RuntimeException e) {
log.error("categoryCode API 요청 중 오류 발생 (contentTypeId: {}, cat1: {}, cat2: {}): {}",
contentTypeId, cat1, cat2, e.getMessage(), e);
return Collections.emptyList();
} catch (Exception e) {
log.error("categoryCode API 요청 중 예상치 못한 오류 발생 (contentTypeId: {}, cat1: {}, cat2: {}): {}",
contentTypeId, cat1, cat2, e.getMessage(), e);
return Collections.emptyList();
}
}
}
Loading