Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
466 commits
Select commit Hold shift + click to select a range
479597e
fix: fix env
devkeon Nov 5, 2024
5f6eede
fix: fix version of ssh
devkeon Nov 5, 2024
427604d
feat: add nickname for ticket review
devkeon Nov 6, 2024
acedb2b
chore: fix deploy script
devkeon Nov 6, 2024
b869b82
fix: Column to Schema
anselmo228 Nov 6, 2024
b31eb26
fix: Business Exception Handling
anselmo228 Nov 6, 2024
3cfcbb9
chore: add ci/cd condition
devkeon Nov 6, 2024
7b01ad2
Merge pull request #53 from Curate-Me/fix/#48-refactoring-concert-crud
devkeon Nov 6, 2024
f5b0945
chore: change ddl auto for update
devkeon Nov 6, 2024
5992c6d
feat: add probe controller
devkeon Nov 6, 2024
ce3d2f5
Merge pull request #54 from Curate-Me/chore/#50-cicd
devkeon Nov 6, 2024
1685f15
feature: Preference List to FLASK
anselmo228 Nov 7, 2024
224e5e6
fix: Preference List to FLASK URL
anselmo228 Nov 7, 2024
a18ad96
Merge pull request #56 from Curate-Me/feature/#55-feature-사용자-취향
anselmo228 Nov 7, 2024
ae24c89
feature: 온보딩 결과 기반 맞춤 추천 API
anselmo228 Nov 7, 2024
dea869a
feature: Swagger Operation 추가
anselmo228 Nov 7, 2024
7dd3d1c
fix: API 변경
anselmo228 Nov 7, 2024
83723e9
fix: Swagger 추가
anselmo228 Nov 7, 2024
95d2372
feature: 유저가 최근 좋아요한 공연 기반 추천 API
anselmo228 Nov 7, 2024
96590b3
Merge pull request #58 from Curate-Me/feature/#57-feature-추천시스템-로직
devkeon Nov 8, 2024
36ecacd
feature: Claco Book 가져오기
anselmo228 Nov 8, 2024
c58042d
feature: Claco Book Response DTO
anselmo228 Nov 8, 2024
05a412c
feature: Claco Book Service 추가
anselmo228 Nov 8, 2024
4b88f92
feature: DTO Schema 추가
anselmo228 Nov 8, 2024
e9ee7bd
Merge pull request #60 from Curate-Me/feature/#59-유저기반-클라코북-추천
anselmo228 Nov 8, 2024
bac8b69
fix: securityContextUtil get memberId
anselmo228 Nov 8, 2024
04aacaa
fix: Flask 서버 URL 환경변수 저장
anselmo228 Nov 8, 2024
56b0262
fix: CICD 환경변수 추가
anselmo228 Nov 8, 2024
581fdf9
fix: CICD 환경변수 수정
anselmo228 Nov 8, 2024
e3dfd3d
Merge pull request #62 from Curate-Me/fix/#61-fix-securitycontextutil
devkeon Nov 9, 2024
889311b
feature: 내가 좋아요한 공연 API
anselmo228 Nov 11, 2024
7b4c627
feature: ConcertLiked Response 정의
anselmo228 Nov 11, 2024
492b414
fix: MemberId From securityContextUtil
anselmo228 Nov 11, 2024
c86f1a2
fix: For Each Stream api
anselmo228 Nov 11, 2024
691149a
fix: Collectors.toList() To toList()
anselmo228 Nov 11, 2024
ce367ba
fix: Method Naming to MemberId
anselmo228 Nov 11, 2024
f86ddfe
Merge pull request #64 from Curate-Me/feature/#63-feature-마이페이지
anselmo228 Nov 11, 2024
650128e
fix: MemberId from securityContextUtil
anselmo228 Nov 11, 2024
11d9d05
refactoring: Recommend based on liked Concert Exception Handling
anselmo228 Nov 11, 2024
af08999
Merge pull request #66 from Curate-Me/refactoring/#65-refactoring-공연추…
anselmo228 Nov 12, 2024
61f056c
refactoring: Concert Response DTO Schema
anselmo228 Nov 13, 2024
e8fc5e2
refactoring: Concert Request DTO Schema
anselmo228 Nov 13, 2024
55a4f53
refactoring: Recommendation DTO Response Schema
anselmo228 Nov 13, 2024
ca8fc4b
Merge pull request #68 from Curate-Me/refactoring/#65-refactoring-공연추…
devkeon Nov 15, 2024
94fcc65
refactoring: DTO Schema Description
anselmo228 Nov 15, 2024
3d946c4
Merge pull request #70 from Curate-Me/refactoring/#65-refactoring-공연추…
devkeon Nov 15, 2024
6b5bc88
refactoring: 좋아요 기반 추천 좋아요 기록 여부 필드 추가
anselmo228 Nov 15, 2024
e57e420
refactoring: 둘러보기 날짜 필터링 쿼리 수정
anselmo228 Nov 15, 2024
189b9d9
refactoring: 자동완성 API
anselmo228 Nov 15, 2024
524f9e5
refactoring: 콘서트 조회 날짜 필터링 추가
anselmo228 Nov 15, 2024
aef7b10
requirements: add ticket image on ticket review detail get
devkeon Nov 16, 2024
61b51ab
hotfix: fix cookie policy
devkeon Nov 16, 2024
e5fb8a3
Merge pull request #73 from Curate-Me/requirements/#72-ticket-image-data
anselmo228 Nov 16, 2024
6e61d42
requirements: add nickname on login param
devkeon Nov 16, 2024
1a1dd1e
hotfix: erase nickname on before onboarding
devkeon Nov 16, 2024
d001c6c
hotfix: exclude refresh token check for frontend test
devkeon Nov 16, 2024
ce3bf26
Merge pull request #77 from Curate-Me/hotfix/#76-exclude-refresh-check
anselmo228 Nov 16, 2024
35811c5
Merge pull request #75 from Curate-Me/requirements/#74-login-nickname
anselmo228 Nov 16, 2024
f54b043
Merge pull request #78 from Curate-Me/refactoring/#69-자동완성-및-수정기능
devkeon Nov 16, 2024
9aec42b
fix: 둘러보기 검색하기
anselmo228 Nov 16, 2024
b9797b4
fix: 둘러보기 4.0.0 쿼리 수정
anselmo228 Nov 16, 2024
aae8a07
refactor: 파라미터 설명 추가
anselmo228 Nov 16, 2024
bb5a3fe
refactor: 파라미터 설명 추가
anselmo228 Nov 16, 2024
fe60eb8
refactor: Concert Detail Response 간소화
anselmo228 Nov 16, 2024
9f56840
refactor: Concert Response 간소화
anselmo228 Nov 16, 2024
bfc4aea
refactor: Concert Response 간소화
anselmo228 Nov 16, 2024
4de7aed
Merge branch 'main' into fix/#79-성격-필터링-추가
anselmo228 Nov 16, 2024
283cc85
Merge pull request #80 from Curate-Me/fix/#79-성격-필터링-추가
devkeon Nov 16, 2024
91a7ce8
feature: Concert Summary 추가
anselmo228 Nov 17, 2024
c27ad4a
feature: Concert Controller Description 추가
anselmo228 Nov 17, 2024
3eb8b78
Merge pull request #82 from Curate-Me/requirements/#81i-공연-요약
devkeon Nov 17, 2024
3f673ef
hotfix: fix redirect url nickname param
devkeon Nov 17, 2024
877e46a
Merge pull request #87 from Curate-Me/hotfix/#86-login-nickname
anselmo228 Nov 17, 2024
f295833
feature: Concert Repository Test Code 추가
anselmo228 Nov 17, 2024
3daa8a2
feature: Concert Service Test Code
anselmo228 Nov 17, 2024
e0c883b
feature: ConcertDetail Response 수정
anselmo228 Nov 18, 2024
a5976ba
feature: ConcertDetail Response 수정
anselmo228 Nov 18, 2024
f799640
Merge pull request #90 from Curate-Me/fix/#84-concert-detail-response
devkeon Nov 18, 2024
60bc5f0
fix: ConcertLikeRepositoryTest 수정
anselmo228 Nov 18, 2024
030206c
fix: ConcertRepositoryTest 수정
anselmo228 Nov 18, 2024
c98d5c7
chore: add image prune script
devkeon Nov 18, 2024
be6cadd
fix: ConcertCategoryRepositoryTest 수정
anselmo228 Nov 18, 2024
f97e9f1
fix: ConcertServiceTest test Code 수정
anselmo228 Nov 18, 2024
94fccd7
Merge branch 'main' into feature/#83-concert-testcode
anselmo228 Nov 18, 2024
a6a4059
fix: testFindMostRecentLikedConcert test Code 수정
anselmo228 Nov 18, 2024
4931afd
Merge remote-tracking branch 'origin/feature/#83-concert-testcode' in…
anselmo228 Nov 18, 2024
a4b85ed
Merge pull request #91 from Curate-Me/chore/#88-docker-image-prune
anselmo228 Nov 18, 2024
7ce97f2
Merge pull request #93 from Curate-Me/feature/#83-concert-testcode
devkeon Nov 18, 2024
6fbdaa3
feat: add ThreadLocal holder for checking token refreshed
devkeon Nov 18, 2024
ff3ebd1
feat: add Refresh context and refreshed field on ApiResponse
devkeon Nov 18, 2024
605e015
feat: add refreshed check AOP
devkeon Nov 18, 2024
bc57e5f
feat: add RefreshedCheck AOP on Controllers
devkeon Nov 18, 2024
0511608
chore: remove Dockerfile
devkeon Nov 18, 2024
fb0ba24
chore: add dockerfiles & docker-compose file
devkeon Nov 18, 2024
d1f4ae6
chore: migrate cicd script to docker-compose
devkeon Nov 18, 2024
576eeec
refactor: rename health-check controller
devkeon Nov 18, 2024
499a532
hotfix: url 위치 수정
anselmo228 Nov 18, 2024
e8d5acc
Merge pull request #97 from Curate-Me/hotfix/url-edit
devkeon Nov 18, 2024
624ce33
Merge pull request #95 from Curate-Me/feature/#94-refresh-field
anselmo228 Nov 18, 2024
3e7a9a3
Merge pull request #96 from Curate-Me/chore/#92-infra-reconfigure
devkeon Nov 18, 2024
8dc2b41
hotfix: add docker setup on CI/CD script
devkeon Nov 18, 2024
6f04160
Merge pull request #99 from Curate-Me/chore/#92-infra-reconfigure
devkeon Nov 18, 2024
63d462e
hotfix: fix ci-cd docker-compose
devkeon Nov 18, 2024
2e765f0
Merge pull request #100 from Curate-Me/chore/#92-infra-reconfigure
devkeon Nov 18, 2024
b6477d7
hotfix: open health check controller uri
devkeon Nov 18, 2024
edf0ae6
Merge pull request #101 from Curate-Me/chore/#92-infra-reconfigure
devkeon Nov 18, 2024
5765f51
fix: Concert Response 수정
anselmo228 Nov 19, 2024
6a40c0c
fix: concert 좋아요 request DTO 수정
anselmo228 Nov 19, 2024
339b8d4
fix: 추천 시스템 좋아요 기반 수정
anselmo228 Nov 19, 2024
781407f
requirements: 추천 시스템 선택한 공연 추천
anselmo228 Nov 19, 2024
0fd20d7
fix: 테스트 코드 임시 제외
anselmo228 Nov 19, 2024
7272e15
Merge pull request #103 from Curate-Me/fix/#98-concertresponse-수정
devkeon Nov 19, 2024
42ac3fd
feat: add actuator pass
devkeon Nov 19, 2024
e0e485b
chore: add actuator dependency
devkeon Nov 19, 2024
4945ecb
chore: add prometheus settings
devkeon Nov 19, 2024
2d1359b
chore: add prometheus & grafana image
devkeon Nov 19, 2024
ae25c78
chore: add CI/CD script for prometheus & grafana
devkeon Nov 19, 2024
138afac
hotfix: 추천 Response 수정 및 URL 수정
anselmo228 Nov 19, 2024
3c6c01b
Merge pull request #104 from Curate-Me/fix/#98-concertresponse-수정
devkeon Nov 19, 2024
ed424e2
hotfix: 좋아요가 없더라도 Keyword 3개 반환
anselmo228 Nov 19, 2024
9078572
hotfix: ClacoBook 3개 반환
anselmo228 Nov 19, 2024
ecd9f37
hotfix: ClacoBook 3개 반환
anselmo228 Nov 19, 2024
ac02bbd
hotfix: Clacobook Response 수정
anselmo228 Nov 19, 2024
8722b59
hotfix: genre all 필드 추가
anselmo228 Nov 19, 2024
09980c2
Merge pull request #105 from Curate-Me/fix/#98-concertresponse-수정
devkeon Nov 19, 2024
e7f70a6
Merge pull request #106 from Curate-Me/chore/#102-monitoring
anselmo228 Nov 19, 2024
a9215e5
hotfix: fix image tag on CI/CD script
devkeon Nov 19, 2024
e941575
chore: remove prometheus and grafana for build
devkeon Nov 19, 2024
41771cf
Merge branch 'main' of https://github.com/Curate-Me/claco-server into…
devkeon Nov 19, 2024
c3d60d7
Merge pull request #107 from Curate-Me/chore/#102-monitoring
anselmo228 Nov 19, 2024
3731de1
hotfix: restore PR deploy task
devkeon Nov 19, 2024
f042f25
Merge pull request #108 from Curate-Me/chore/#102-monitoring
anselmo228 Nov 19, 2024
d50a6b5
requirements: 추천 공연 갯수 Custom
anselmo228 Nov 19, 2024
32ae312
Merge pull request #109 from Curate-Me/fix/#98-concertresponse-수정
devkeon Nov 19, 2024
8675749
hotfix: 페이지네이션 수정
anselmo228 Nov 20, 2024
8158eda
hotfix: 공연 상세보기 좋아요 필드 추가
anselmo228 Nov 20, 2024
708977e
hotfix: testcode 수정
anselmo228 Nov 20, 2024
9ab9cb3
Merge pull request #110 from Curate-Me/fix/#98-concertresponse-수정
devkeon Nov 20, 2024
6de766c
TestCode: Concert TestCode 최종
anselmo228 Nov 20, 2024
13ca66c
fix: Category Mock 생성
anselmo228 Nov 20, 2024
a4e0cc1
fix: Category Mock 생성
anselmo228 Nov 20, 2024
40a5d1b
Merge pull request #111 from Curate-Me/refactoring/#84-recommendation…
anselmo228 Nov 20, 2024
597f682
feature: Recommendation Domain TestCode
anselmo228 Nov 21, 2024
e16e137
feature: Recommendation Domain TestCode
anselmo228 Nov 21, 2024
f177c6c
feature: Concert Domain TestCode(Coverage-100%)
anselmo228 Nov 21, 2024
6b80280
feature: Recommendation TestCode(coverage -88)
anselmo228 Nov 21, 2024
5aa5804
chore: erase show sql property
devkeon Nov 22, 2024
ba503b0
Merge pull request #114 from Curate-Me/chore/erase-sql-log
devkeon Nov 22, 2024
b99bb9c
fix: fix file require to false
devkeon Nov 22, 2024
28ebc87
Merge pull request #116 from Curate-Me/hotfix/#115-empty-image
anselmo228 Nov 22, 2024
4ad6e32
hotfix: Concert Filtering 수정
anselmo228 Nov 22, 2024
21b395d
Merge pull request #113 from Curate-Me/feature/#112-recommendation-te…
devkeon Nov 22, 2024
76bbe04
hotfix: Concert 검색어 없을시 자동 추천
anselmo228 Nov 22, 2024
35b0de8
Merge pull request #118 from Curate-Me/feature/#112-recommendation-te…
devkeon Nov 22, 2024
f9166f3
hotfix: fix image null issue
devkeon Nov 23, 2024
3fb331d
Merge pull request #119 from Curate-Me/hotfix/#115-empty-image
devkeon Nov 23, 2024
156c6ff
requirements: add clacobook id on create ticket-review
devkeon Nov 23, 2024
eedcad7
Merge pull request #121 from Curate-Me/requirements/#120-ticket-claco…
devkeon Nov 23, 2024
82d4005
refactor: remove claco book interface
devkeon Nov 23, 2024
f7ab552
feat: move ticket review feature added
devkeon Nov 23, 2024
9129154
Merge pull request #123 from Curate-Me/feature/#122-move-clacobook
devkeon Nov 23, 2024
1cd7b72
test: add ticket move test
devkeon Nov 23, 2024
39dbcc3
hotfix: fix nickname duplicate auth
devkeon Nov 23, 2024
e7dad73
hotfix: fix nickname nullable
devkeon Nov 23, 2024
3a54c86
hotfix: revert nickname check
devkeon Nov 23, 2024
3a026db
Merge pull request #126 from Curate-Me/hotfix/#125-profile-image-null
devkeon Nov 23, 2024
42b9fae
hotfix: erase empty check
devkeon Nov 23, 2024
ab70ff7
Merge pull request #127 from Curate-Me/hotfix/#125-profile-image-null
devkeon Nov 23, 2024
aa734ed
Merge pull request #124 from Curate-Me/feature/#122-move-clacobook
anselmo228 Nov 24, 2024
cbdb51a
chore: increase nginx worker connection
devkeon Nov 24, 2024
738e118
hotfix: Concert Liked Concert DTO 변경
anselmo228 Nov 24, 2024
dc881ee
hotfix: Pagination 수정
anselmo228 Nov 24, 2024
01962e3
hotfix: TestCode 수정
anselmo228 Nov 24, 2024
e91c42d
Merge pull request #130 from Curate-Me/hotfix/concert-검색-수정
devkeon Nov 24, 2024
dbcc9c9
Merge branch 'main' of https://github.com/Curate-Me/claco-server into…
devkeon Nov 24, 2024
0c3a086
requirements: add concert response poster
devkeon Nov 24, 2024
96a74ee
Merge pull request #129 from Curate-Me/chore/#128-nginx-readme
anselmo228 Nov 24, 2024
f18a121
document: update README.md
devkeon Nov 24, 2024
53f42c2
requirements: add concert info on ticket review info response
devkeon Nov 24, 2024
ecc8f96
Merge pull request #132 from Curate-Me/chore/#128-nginx-readme
anselmo228 Nov 24, 2024
b3aa31e
Merge pull request #134 from Curate-Me/requirements/#133-ticket-revie…
anselmo228 Nov 24, 2024
42b4cf5
refactoring: DTO Naming 변경및 추가
anselmo228 Nov 25, 2024
b6d55fb
Merge pull request #135 from Curate-Me/hotfix/DTO-수정
devkeon Nov 25, 2024
384cf75
refactoring: DTO Naming 변경및 추가
anselmo228 Nov 25, 2024
e25f7c5
Merge pull request #136 from Curate-Me/hotfix/DTO-수정
devkeon Nov 25, 2024
2bba427
hotfix: liked 필드 추가
anselmo228 Nov 26, 2024
7bb7914
Merge pull request #137 from Curate-Me/hotfix/#IsLiked-Field-추가
kimzini Nov 26, 2024
4d0f1e9
hotfix: Clacobook 여러개 추가 가능
anselmo228 Nov 27, 2024
bb0e1e7
Merge pull request #139 from Curate-Me/hotfix/#IsLiked-Field-추가
devkeon Nov 27, 2024
4566142
chore: add front url env
devkeon Nov 27, 2024
68a1fce
chore: add front url env on code
devkeon Nov 27, 2024
2e80277
hotfix: TicketReview 여러개 추가 가능
anselmo228 Nov 27, 2024
a4478bb
Merge pull request #140 from Curate-Me/hotfix/#IsLiked-Field-추가
devkeon Nov 27, 2024
42e2d52
feat: add exception handler filter
devkeon Nov 27, 2024
9c3c712
feat: add cookie settings
devkeon Nov 27, 2024
a203487
Merge pull request #141 from Curate-Me/feature/#138-exception-filter-…
anselmo228 Nov 27, 2024
86cc7f6
hotfix: fix token settings
devkeon Nov 27, 2024
1bd3598
Merge pull request #143 from Curate-Me/feature/#138-exception-filter-…
devkeon Nov 27, 2024
e81c053
requirements: Kopis 포스터 API
anselmo228 Nov 27, 2024
5efb9b7
requirements: remove system.err
anselmo228 Nov 27, 2024
773466b
Merge pull request #144 from Curate-Me/requirements/#142-feature-포스터-이미지
devkeon Nov 27, 2024
ea8562c
refactor: erase refresh token check for test
devkeon Nov 27, 2024
17aa2ad
Merge pull request #145 from Curate-Me/feature/#138-exception-filter-…
anselmo228 Nov 27, 2024
7b2a588
refactor: refresh token check
devkeon Nov 27, 2024
55d3315
Update README.md
anselmo228 Nov 27, 2024
179fbf2
Update README.md
anselmo228 Nov 27, 2024
ce66dde
Merge pull request #147 from Curate-Me/anselmo228-patch-1
devkeon Nov 27, 2024
64f8257
hotfix: Concert 필터 수정
anselmo228 Nov 28, 2024
dc0b1cb
Merge pull request #149 from Curate-Me/hotfix/#148-concert-filters
anselmo228 Nov 28, 2024
7bd7b61
Merge branch 'main' of https://github.com/Curate-Me/claco-server into…
devkeon Nov 28, 2024
96273f8
Merge pull request #146 from Curate-Me/feature/#138-exception-filter-…
devkeon Nov 28, 2024
093878f
hotfix: remove soutv and null exception
anselmo228 Nov 28, 2024
d7debf1
hotfix: remove soutv and null exception
anselmo228 Nov 28, 2024
3595abb
Merge pull request #150 from Curate-Me/hotfix/remove-sys-null
devkeon Nov 28, 2024
87883c2
refactor: for local test
devkeon Nov 28, 2024
ea2d7d1
Merge branch 'main' of https://github.com/Curate-Me/claco-server into…
devkeon Nov 28, 2024
83f16a6
Merge pull request #151 from Curate-Me/feature/#138-exception-filter-…
anselmo228 Nov 28, 2024
75e9855
refactor: for deploy
devkeon Nov 28, 2024
b1f62b3
Merge pull request #152 from Curate-Me/feature/#138-exception-filter-…
devkeon Nov 28, 2024
08ffcc4
refactor: refactor refresh
devkeon Nov 28, 2024
8cb1b56
Merge pull request #153 from Curate-Me/feature/#138-exception-filter-…
anselmo228 Nov 28, 2024
0f6d764
refactor: refresh token check again
devkeon Nov 28, 2024
88ad172
Merge pull request #154 from Curate-Me/feature/#138-exception-filter-…
anselmo228 Nov 28, 2024
f2d6e28
bug: add cors header on OAuthSuccessHandler
devkeon Nov 28, 2024
e1bc4af
Merge pull request #156 from Curate-Me/bug/#155-cookie-for-mobile
devkeon Nov 28, 2024
58c1584
Requirements: 리뷰 공연 둘러보기 쿼리 변경
anselmo228 Nov 28, 2024
16edf56
hotfix: 리뷰 공연 둘러보기 검색 제거
anselmo228 Nov 28, 2024
e4a2e6c
hotfix: 리뷰 공연 둘러보기 검색 제거
anselmo228 Nov 28, 2024
97eab93
Merge pull request #157 from Curate-Me/requirements/ticket-concerts-view
anselmo228 Nov 29, 2024
9f6a3ab
feat: check cookie by env
devkeon Nov 29, 2024
433e230
Merge pull request #158 from Curate-Me/bug/#155-cookie-for-mobile
anselmo228 Nov 29, 2024
443f741
hotfix: fix max file size
devkeon Nov 29, 2024
b84ea29
Merge pull request #160 from Curate-Me/hotfix/#159-image-max-size
devkeon Nov 29, 2024
9782f68
hotfix: 리뷰 공연 둘러보기 전체보여주기
anselmo228 Nov 29, 2024
fc2744e
Merge pull request #161 from Curate-Me/requirements/ticket-concerts-view
anselmo228 Nov 29, 2024
e12da3c
feat: add refresh cookie init method
devkeon Dec 3, 2024
c1e2a69
feat: remove refresh cookie method
devkeon Dec 3, 2024
a9695cf
feat: add cookie uri for filter pass list
devkeon Dec 3, 2024
b8e7ef7
Merge pull request #162 from Curate-Me/bug/#155-cookie-for-mobile
devkeon Dec 4, 2024
fc5d32f
hotfix: fix URI check
devkeon Dec 6, 2024
b9764b2
Merge pull request #163 from Curate-Me/bug/#155-cookie-for-mobile
anselmo228 Dec 6, 2024
3dd4b98
hotfix: Clacobook 없을경우 예외 처리
anselmo228 Dec 6, 2024
b015435
hotifx: add domain on cookie
devkeon Dec 6, 2024
33b81e0
refactor: rename env
devkeon Dec 6, 2024
86d3bf5
chore: add backend domain env
devkeon Dec 6, 2024
caea44e
Merge pull request #164 from Curate-Me/hotfix/clacobook-null-error
devkeon Dec 6, 2024
4119450
Merge pull request #165 from Curate-Me/bug/#155-cookie-for-mobile
anselmo228 Dec 6, 2024
a140d77
hotifx: revert
devkeon Dec 7, 2024
5fdbf65
hotfix: add allow
devkeon Dec 7, 2024
d48d773
Merge pull request #166 from Curate-Me/bug/#155-cookie-for-mobile
devkeon Dec 7, 2024
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
24 changes: 24 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
name: Feature request
about: 추가될 기능에 대해 제안해주세요!
title: "[✨FEATURE]"
labels: "✨ Feature"
assignees: ''

---

**🚀 기능 설명**
추가하고 싶은 기능에 대해 명확하고 간결하게 설명해주세요.

**🔍 원하는 솔루션 설명**

**🙌 해야 할 일**
- [ ] 할일 1
- [ ] 할일 2
- [ ] 할일 3

**❓ 고려한 대안들**
고려한 대체 솔루션이나 기능에 대해 설명해주세요.

**📜 추가 내용**
기능 요청에 대한 다른 맥락이나 스크린샷을 추가해주세요.
13 changes: 13 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## 📌 요약

-

## 📝 상세 내용

-

## 🗣️ 질문 및 이외 사항

-

### ☑️ 누구에게 리뷰를 요청할까요?
89 changes: 89 additions & 0 deletions .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: 'CI/CD'

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
CI:
runs-on: ubuntu-latest
env:
KAKAO_CLIENT_ID: ${{ secrets.TEST_STRING_ENV }}
KAKAO_CLIENT_SECRET: ${{ secrets.TEST_STRING_ENV }}
KAKAO_REDIRECT_URI: ${{ secrets.TEST_STRING_ENV }}
JWT_SECRET_KEY: ${{ secrets.TEST_JWT_KEY }}
JWT_REFRESH_EXPIRE: ${{ secrets.TEST_INT_ENV }}
JWT_ACCESS_EXPIRE: ${{ secrets.TEST_INT_ENV }}
AWS_BUCKET_NAME: ${{ secrets.TEST_STRING_ENV }}
AWS_ACCESS_KEY: ${{ secrets.TEST_STRING_ENV }}
AWS_SECRET_KEY: ${{ secrets.TEST_STRING_ENV }}
AWS_REGION: 'ap-northeast-2'
FLASK_SERVER: ${{ secrets.TEST_STRING_ENV }}
FRONT_URL: ${{ secrets.TEST_STRING_ENV }}
BACKEND_DOMAIN: ${{ secrets.TEST_STRING_ENV }}
steps:
- name: Check out repository
uses: actions/checkout@v3

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

- name: Build with Gradle
run: ./gradlew build --no-daemon

- name: Run tests
run: ./gradlew test --no-daemon

CD:
if: ${{ github.event_name != 'pull_request' && success() }}
needs: CI
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v3

- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Set up Docker Build
uses: docker/setup-buildx-action@v1

- name: Build Docker image
run: |
docker compose build --no-cache
docker tag server ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:server
docker tag nginx ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:nginx

- name: Push Docker image to Docker Hub
run: |
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:server
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:nginx

- name: Deploy
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
port: ${{ secrets.EC2_PORT }}
script: |
echo ${{ secrets.DOCKER_PASSWORD }} | sudo docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin

sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:server
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPOSITORY }}:nginx
sudo docker pull prom/prometheus:latest
sudo docker pull grafana/grafana:latest

sudo docker-compose down
sudo docker-compose up -d
sudo docker image prune -f
39 changes: 39 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

/src/main/resources/application-local.yml
103 changes: 102 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,102 @@
# claco-server
# Claco 메인 서버 레포지토리

## 🧑‍💻 R&R
| Profile | Name | Role |
| :---: | :---: | :---: |
| <a href="https://github.com/devkeon"><img src="https://avatars.githubusercontent.com/u/121371840?v=4" height="120px"></a> | 이건(개발리드) <br> **devkeon**| 아키텍처 설계, ERD 설계, 메인 서버 인프라 및 CI/CD 구축, <br> 인증/인가, 모니터링 시스템 구축, 티켓/리뷰 기능,<br> 클라코북 기능, 회원 관련 기능|
| <a href="https://github.com/anselmo228"><img src="https://avatars.githubusercontent.com/u/24919880?v=4" height="120px"></a> | 정희찬 <br> **anselmo**| ERD 설계, AI 및 배치 서버 인프라 및 CI/CD 구축, <br> 추천 AI 모델 구현, 배치 기능(데이터 로드) 구축, <br> 공연 기능, 공연 및 티켓 추천 기능|

## 개발 내용

### 📆 개발 기간
- ***2024.10.05 ~ 2024.11.24***

### 💻 개발 환경
> Language: ```Java 17``` <br>
> Framework: ```Spring Boot 3.3.4``` <br>
> Database: ```MySQL 8.x``` <br>
> ORM: ```JPA(Hibernate)``` <br>
> CI/CD: ```Github Actions``` <br>
> Cloud Platform: ```AWS(EC2, ALB, ACM), GCP(SQL)``` <br>
> Test DB: ```testcontainer```

### ⚙️ 개발 프로세스
- ```TDD (테스트 주도 개발)``` : 구문 커버지리 (Statement coverage) 기준 80%를 목표로 수행
- ```Agile (애자일 프로세스)``` : 1주 단위 스프린트 수행
- ```Github Flow 전략``` : 초기 개발 과정에서 불필요한 브랜치 관리를 피하고, 빠른 배포를 위한 전략 선택
- ```CI/CD 파이프라인을 통한 배포 자동화``` : 서비스 개발이 50% 완료된 시점에서 구축하여 배포 자동화

### 💫 TDD 결과
- Service는 단위 테스트, Repository는 통합 테스트 진행
- ```testcontainer```를 활용하여 데이터베이스 멱등성 보장
- 테스트 코드 커버리지 측정 툴: ```IntelliJ``` <br>

![img.png](readme/test-coverage.png)
- summary
- statement coverage 기준: 88%
- branch coverage: 54.8%
- class coverage: 100%
- method coverage: 96.7%

### 💫 부하 테스트 결과
- 사용 인스턴스 유형: ```t2.large (ram 8GB)```
- 부하 테스트 측정 툴: ```Jmeter```

![server-test.png](readme/server-test.png)
- summary
- 도메인별 주요 api 평균 50.3 Throughput

## 🏛️ 아키텍처
![architecture.png](readme/architecture.png)

### 보안 고려 사항
- JWT를 활용한 인증/인가
- SSL 보안 계층을 활용한 토큰 암호화 (HTTPS, ALB 설치)
- CSRF / XSS 공격에 대비한 토큰 저장 분리 (Local storage, HTTP-only Cookie)
- Nginx를 활용한 actuator와 같은 민감 정보 deny
- Spring Security를 활용한 철저한 Auth 검사 및 uri 접근 조정
- Kakao OAuth2.0을 활용한 인증/인가 기능 간편화
- docker 네트워크를 활용하여 spring 서버나, prometheus같은 인스턴스 포트 매핑x (Endpoint 단일화)

### 추천 시스템 로직

- Collaborative Filtering & Cosine Similarity 기반 추천시스템
1. 각 Concert는 AI가 추출해준 키워드 값에 대해 0 ~ 1 사이의 값을 가짐
2. 유저도 마찬가지로 온보딩에서 등록한 취향 정보로 부터 모든 키워드 값에 대해 0 ~ 1사이 값을 가짐
3. Concerts, Users CSV파일을 통해서 Cosine Similarity와 Collaborative Filtering을 통한 유사도 계산 후 추천 진행

### 메인 서버
- 서비스의 주요 로직을 처리하는 서버
- Grafana와 Prometheus에 기반한 모니터링 시스템 구축
- Nginx를 통한 리버스 프록시 설정

### AI 서버

- 공연 성격 분석이나, 유저 성격 분석, OCR을 처리하는 서버
- OCR 및 공연 성격 정보 추출은 NCP의 AI 서비스를 활용
- 추천 시스템의 경우 직접 Collaborative Filtering Model 구현

### 배치 서버

- KOPIS 시스템으로부터 공연 정보를 주기적으로 업데이트하는 서버(한달에 1번)
- KOPIS에서 데이터를 받아올때마다 AI서버에 학습 요청

### 🔄 FlowChart of AI & Batch Server
![flow-chart.png](readme/ai-flow.png)

## 📁 ERD
![erd.png](readme/erd.png)

- 카테고리에서 연관 관계 설정을 통해 관계형 데이터베이스 활용
- AI 서비스 학습을 위한 soft delete 활용

## 🛠️ CI/CD pipeline
![ci-cd.png](readme/cicd.png)
1. PR 이벤트 발생 시 CI 실행 (테스트 포함)
2. approve 및 CI 성공 시 merge 가능
3. merge 이벤트 발생 시 CI 스크립트 수행
4. CI 스크립트 성공 시 CD 스크립트 수행
5. Docker 이미지 docker hub에 push
6. SSH로 AWS EC2 연결
7. docker hub에서 이미지 pull
8. dokcer-compose를 활용해 서비스 실행 및 도커 네트워크 구축
70 changes: 70 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.4'
id 'io.spring.dependency-management' version '1.1.6'
}

group = 'com.curateme'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'

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

// S3
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'

// Testcontainer
testImplementation 'org.springframework.boot:spring-boot-testcontainers'
testImplementation 'org.testcontainers:mysql'

// Actuator
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'

testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'

implementation 'org.springframework.boot:spring-boot-starter-json'


compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

// swagger
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.2.0'
}

tasks.named('test') {
useJUnitPlatform()
}
19 changes: 19 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
version: "3.8"

services:
server:
build:
context: .
dockerfile: ./dockerfiles/dockerfile-server
image: server
container_name: server
env_file:
- ~/env.list
nginx:
build:
context: ./dockerfiles
dockerfile: dockerfile-nginx
image: nginx
container_name: nginx
ports:
- "80:80"
7 changes: 7 additions & 0 deletions dockerfiles/dockerfile-nginx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM nginx:latest

COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]
9 changes: 9 additions & 0 deletions dockerfiles/dockerfile-server
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM gradle:8.8-jdk17 AS build

COPY --chown=gradle:gradle ../ /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build --no-daemon --warning-mode=all --scan -x test

FROM openjdk:17
COPY --from=build /home/gradle/src/build/libs/*.jar /app/spring-boot-application.jar
ENTRYPOINT ["java", "-Duser.timezone=Asia/Seoul", "-jar", "/app/spring-boot-application.jar"]
Loading
Loading