Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
607 commits
Select commit Hold shift + click to select a range
5cc785d
Update JwtUtil.java
oneeee822 Feb 15, 2025
2a7fed7
refactor: 전체조회&검색 api 추가 리팩토링
chaeone02 Feb 15, 2025
3981710
Update JwtUtil.java
oneeee822 Feb 15, 2025
b787d23
Update JwtUtil.java
oneeee822 Feb 15, 2025
2bb3164
Merge branch 'develop' into refactor/126
chaeone02 Feb 15, 2025
03e74a8
Update build.gradle
oneeee822 Feb 16, 2025
48ec4ec
❕ [!HOTFIX] #129 access 토큰 재발급 수정 (#137)
oneeee822 Feb 16, 2025
5f2772e
chore: 회원가입/로그인 응답dto 수정 (#140)
oneeee822 Feb 16, 2025
d006dac
chore: 개인정보 관련 api 코드 순서만 변경
chaeone02 Feb 16, 2025
dc8c2e4
refactor: 개인정보(닉네임) 설정 api QA
chaeone02 Feb 16, 2025
e09eba2
refactor: 개인정보 변경 api QA
chaeone02 Feb 16, 2025
6832b0f
refactor: 라벨 엔티티 수정
Sunho12 Feb 17, 2025
06c1016
refactor: 라벨 SYNC API 수정
Sunho12 Feb 17, 2025
a0e0b6f
refactor: 라벨 목록 조회 API 수정
Sunho12 Feb 17, 2025
403ddb3
refactor: 라벨 상세 조회 API 수정
Sunho12 Feb 17, 2025
57e53a9
refactor: 버블 SYNC API 수정
Sunho12 Feb 17, 2025
4919361
➖로그출력문 삭제
Sunho12 Feb 17, 2025
47b360a
Merge pull request #144 from UMC-Edison/hotfix/143
Sunho12 Feb 17, 2025
1e3536f
Merge pull request #138 from UMC-Edison/refactor/126
chaeone02 Feb 17, 2025
6580344
refactor: 개인정보 service단 로직 setter 사용하여 간소화
chaeone02 Feb 17, 2025
1ecce84
Merge pull request #142 from UMC-Edison/refactor/141
chaeone02 Feb 17, 2025
1914efd
🛠️refactor: 버블 엔티티 수정, 필요없어진 로직 삭제
Sunho12 Feb 17, 2025
59bb919
🛠️refactor: 버블 SYNC API 수정
Sunho12 Feb 17, 2025
a47f5f1
🛠️refactor: 반환값도 로컬Idx로 수정
Sunho12 Feb 17, 2025
38071b8
🛠️refactor: 목록 조회(전체, 7일 이내, 휴지통) API 수정
Sunho12 Feb 17, 2025
2e50d03
🛠️refactor: 버블 상세조회 API 수정
Sunho12 Feb 17, 2025
2f31c2e
🛠️refactor: 코드 중복 최소화
Sunho12 Feb 17, 2025
8113bae
refactor: 아트레터 추천바 2개 api QA
chaeone02 Feb 17, 2025
bead392
Merge pull request #148 from UMC-Edison/hotfix/146
Sunho12 Feb 18, 2025
ec18845
refactor: 그룹 반환 안하도록 수정, 클러스터 정보 api 제거
yooniicode Feb 18, 2025
a8d75ee
refactor: 로그인(웹),로그아웃,회원탈퇴 관련 코드 수정 + MemberServiceImpl 전체적인 수정
oneeee822 Feb 18, 2025
794dd7d
refactor: 썸네일 not null로 엔티티 수정
yooniicode Feb 18, 2025
81b86a3
Merge pull request #151 from UMC-Edison/refactor/150
yooniicode Feb 18, 2025
63169ef
refactor: 썸네일 null일 경우 에러 처리
yooniicode Feb 18, 2025
c57396a
🛠️refactor: 어노테이션으로 코드 축소, dto 수정
Sunho12 Feb 18, 2025
d341766
🐛@Valid 추가
Sunho12 Feb 18, 2025
d1100ca
hotfix: 아트레터 추천바 - 카테고리 조회 로직 간소화 및 응답수정
chaeone02 Feb 18, 2025
03c7ad9
Merge pull request #155 from UMC-Edison/refactor/154
yooniicode Feb 19, 2025
72fe32b
chore: 사용하지 않는 엔티티 제거
yooniicode Feb 19, 2025
084229f
chore: 카테고리 3개 지정
chaeone02 Feb 19, 2025
168b770
refactor: 아이덴티티 변경 QA
yooniicode Feb 19, 2025
f12f241
Merge branch 'develop' into refactor/147
chaeone02 Feb 19, 2025
ad880b4
chore: Update Artletter.java
chaeone02 Feb 19, 2025
63ec03c
Merge pull request #156 from UMC-Edison/refactor/133
yooniicode Feb 19, 2025
064cf8f
Merge pull request #149 from UMC-Edison/refactor/147
chaeone02 Feb 19, 2025
42779eb
refactor: 에디터픽 countByArtletterIn으로 한 번 쿼리 조회하도록 수정
yooniicode Feb 19, 2025
23a2b41
chore: pull develop
yooniicode Feb 19, 2025
9202c90
refactor: 에디터픽 아트레터 조회 QA
yooniicode Feb 19, 2025
e2fd413
Merge pull request #158 from UMC-Edison/refactor/157
yooniicode Feb 19, 2025
56455a7
🛠️ [REFACTOR] #152 로그인(웹),로그아웃,회원탈퇴, 토큰재발급 QA (#153)
oneeee822 Feb 19, 2025
bf40eed
Update RefreshToken.java
oneeee822 Feb 19, 2025
77c931e
chore: Update build.gradle
yooniicode Feb 19, 2025
6448c6c
hotfix: Update application.properties
yooniicode Feb 19, 2025
3bfb8bb
chore: Update build.gradle
yooniicode Feb 19, 2025
cf8fbd8
refactor: 휴지통에 있는 버블 포함하여 조회하도록 버블 조회 API 수정 (#161)
oneeee822 Feb 19, 2025
0c7236e
chore: Update build.gradle
yooniicode Feb 19, 2025
e98768b
chore: Update build.gradle
yooniicode Feb 19, 2025
eaddf70
❕ [!HOTFIX] #160 전체(휴지통포함으로) 버블 조회 api 수정 (#162)
oneeee822 Feb 19, 2025
920af4f
chore: Update ExceptionAdvice.java
yooniicode Feb 19, 2025
6105fb9
Update dev_deploy.yml
oneeee822 Feb 19, 2025
1dea323
Update SpaceServiceImpl.java
oneeee822 Feb 19, 2025
f7ea6b2
Update SpaceServiceImpl.java
oneeee822 Feb 19, 2025
571b671
❕ [!HOTFIX] #160 스페이스 버블 localIdx반환하도록 수정 (#163)
oneeee822 Feb 19, 2025
ae804dd
feat: 스페이스 프롬프팅 관한 sub api 추가
yooniicode Feb 20, 2025
d3c7724
feat: 사용자 페르소나 들어가도록 프롬프팅
yooniicode Feb 20, 2025
430a53c
fix: 매번 문맥 까먹도록 수정
yooniicode Feb 20, 2025
55a2f8d
chore: 오타 수정
yooniicode Feb 20, 2025
8beed09
Merge pull request #164 from UMC-Edison/feature/96
yooniicode Feb 20, 2025
8328911
feat: 아트레터-최근검색어 저장/조회/삭제 로직 구현
chaeone02 Feb 20, 2025
1de3e41
chore: 중복 검증 삭제 (#167)
oneeee822 Feb 20, 2025
6c3525e
chore: 로그인 안 했을 경우 에러처리 추가
oneeee822 Feb 20, 2025
d58987d
chore: 중복된 검증 코드 삭제
oneeee822 Feb 20, 2025
abb32a5
Merge pull request #168 from UMC-Edison/feat/165
chaeone02 Feb 20, 2025
e32af8d
hotfix: 아트레터 최근 검색어 삭제 query params로 수정
chaeone02 Feb 20, 2025
af6b8de
Merge pull request #171 from UMC-Edison/hotfix/170
chaeone02 Feb 20, 2025
30cb230
chore: 아트레터 검색, 조회 api 로그인 없을 때 에러 수정 (#172)
oneeee822 Feb 20, 2025
8e84f52
feat: 아트레터 카테고리별로 조회하는 API
yooniicode Feb 20, 2025
67abdcf
feat: 조회창 dto 작성
yooniicode Feb 20, 2025
20b2d94
Merge pull request #173 from UMC-Edison/feature/169
yooniicode Feb 20, 2025
70320aa
docs: Update README.md
yooniicode Feb 20, 2025
0e3f02f
docs: Update README.md
yooniicode Feb 20, 2025
8836c9c
docs: Update README.md
yooniicode Feb 20, 2025
d920784
docs: Update README.md
yooniicode Feb 20, 2025
32944d8
hotfix: istrashed 스페이스뷰에서 매번 삭제하도록 처리
yooniicode Feb 21, 2025
12d4504
hotfix: istrashed 스페이스뷰에서 매번 삭제하도록 처리
yooniicode Feb 21, 2025
efa61e5
hotfix: 빈리스트 반환하는 오류, hashmap 사용 안하도록 수정
yooniicode Feb 21, 2025
ca9e397
Merge branch 'develop' of https://github.com/UMC-Edison/Edison-Server…
yooniicode Feb 21, 2025
5b11eba
Merge pull request #175 from UMC-Edison/feature/169
yooniicode Feb 21, 2025
e2c0e2d
hotfix:버블 백링크 삭제 수정
oneeee822 Feb 21, 2025
f379b05
chore: 백링크 엔티티 isTrashed추가
oneeee822 Feb 21, 2025
3b63f93
Merge pull request #177 from UMC-Edison/hotfix/176
yooniicode Feb 21, 2025
2f99340
docs: Update README.md
yooniicode Feb 23, 2025
2a18310
docs: Update README.md
yooniicode Mar 17, 2025
0345848
docs: Update README.md
yooniicode Mar 17, 2025
298da4c
docs: Update README.md
yooniicode Mar 17, 2025
2339cb1
docs: Update README.md
yooniicode Mar 17, 2025
93ef275
chore: Update README.md
yooniicode Mar 17, 2025
69907a5
docs: refactor template 추가
yooniicode Mar 30, 2025
05962eb
docs: refactor template 추가
yooniicode Mar 30, 2025
cb31a46
chore: scrapped 용어 scraped로 교체
yooniicode Mar 30, 2025
d83385c
refactor: 버블 soft delete할 경우, 관련 백링크 엔티티도 soft delete
oneeee822 Mar 30, 2025
54857ba
refactor: 아트레터 검색 정렬 메서드 제거 및 native query + full text search 도입
yooniicode Mar 30, 2025
461e66d
refactor: 아트레터 검색 정렬 메서드 제거 및 native query + full text search 도입
yooniicode Mar 30, 2025
a82e50f
refactor: 버블 soft delete와 hard delete시 관련된 백링크 엔티티도 soft delete, hard…
oneeee822 Apr 7, 2025
ab78be3
fix : server connection timeout 제한 없이 설정
yooniicode Apr 11, 2025
8a46a6b
fix: connect time out 수정
yooniicode Apr 11, 2025
38c4621
Update dev_deploy.yml
oneeee822 Apr 13, 2025
3a24722
Update SecurityConfig.java
oneeee822 Apr 13, 2025
b7a3017
refactor: 버블과 백링크 soft delete 수정
oneeee822 May 1, 2025
9f4f2e7
hotfix: 수동배포 추가
yooniicode May 28, 2025
2af2d21
Merge pull request #189 from UMC-Edison/hotfix/188
yooniicode May 28, 2025
7ba3115
hotfix: test단의 mockbean 제거
yooniicode May 28, 2025
be4d0de
Merge pull request #190 from UMC-Edison/hotfix/188
yooniicode May 28, 2025
6967efa
hotfix: Update ProjectApplicationTests.java
yooniicode May 28, 2025
87ac12f
hotfix: Update ProjectApplicationTests.java
yooniicode May 28, 2025
b4a5aa9
hotfix: Update ProjectApplicationTests.java
yooniicode May 28, 2025
1d53b2e
hotfix: Update ProjectApplicationTests.java
yooniicode May 28, 2025
412ca01
hotfix: application-test.properties 추가
yooniicode May 28, 2025
6807df1
Merge pull request #191 from UMC-Edison/hotfix/188
yooniicode May 28, 2025
a048202
hotfix: application-test.properties 추가
yooniicode May 28, 2025
c3eedf7
Merge pull request #192 from UMC-Edison/hotfix/188
yooniicode May 28, 2025
60df315
hotfix: Update application-test.properties
yooniicode May 29, 2025
63dae2a
docs: Update dev_deploy.yml
yooniicode May 29, 2025
8532aea
fix: Update ProjectApplicationTests.java
yooniicode May 30, 2025
5819aa7
refactor: Bubble localIdx String으로 변경
yooniicode May 30, 2025
ddd51cd
refactor: label localIdx String으로 자료형 변경
yooniicode May 30, 2025
8cdf240
refactor: space 관련 API bubbleIdx string으로 수정
yooniicode May 30, 2025
612032a
refactor: 아트레터 에디터픽 랜덤 조회 수정
oneeee822 May 30, 2025
bdb478d
Merge pull request #195 from UMC-Edison/refactor/193
yooniicode May 30, 2025
39bce06
refactor: 아트레터 카테고리 랜덤조회 수정
oneeee822 May 30, 2025
f7202aa
refactor: EditorPick엔티티 생성하여 백엔드에서 에디터픽 아트레터 관리하도록 수정
oneeee822 May 30, 2025
38b3cda
feat: presigned s3 post api 설계
yooniicode Jun 19, 2025
7a629f2
fix: octet-stream으로 put 가능하도록 오류 수정
yooniicode Jun 19, 2025
bc98da3
feat: presigned get url 설계
yooniicode Jun 19, 2025
6d6b055
feat: presigned get url 설계
yooniicode Jun 19, 2025
2704285
chore: Update ArtletterDTO.java
yooniicode Jun 25, 2025
5fed8ae
chore: Update ArtletterServiceImpl.java
yooniicode Jun 25, 2025
fb788b9
Merge pull request #184 from UMC-Edison/refactor/183
yooniicode Jun 25, 2025
3af7c84
chore: 사용하지 않는 코드 제거
yooniicode Mar 6, 2025
47b465a
chore: rebase with main
yooniicode Mar 6, 2025
110a1fc
Revert "chore: rebase with main"
yooniicode Jun 25, 2025
caca21e
Merge branch 'develop' into refactor/182
yooniicode Jun 25, 2025
5794eda
refactor: 코드 간소화
yooniicode Jun 25, 2025
b573ff7
Merge pull request #185 from UMC-Edison/refactor/182
yooniicode Jun 25, 2025
a932e35
chore: merge develop
yooniicode Jun 25, 2025
8b567b2
Merge branch 'develop' into refactor/194
yooniicode Jun 25, 2025
a55592f
Merge pull request #196 from UMC-Edison/refactor/194
yooniicode Jun 25, 2025
45e8314
Merge branch 'develop' into refactor/197
yooniicode Jun 25, 2025
6f7325a
chore: merge develop
yooniicode Jun 25, 2025
926ae9c
Merge branch 'develop' into refactor/197
yooniicode Jun 25, 2025
55aa732
Merge pull request #198 from UMC-Edison/refactor/197
yooniicode Jun 25, 2025
71d1c44
bug: localidx 기반으로 전체 변경
yooniicode Jun 25, 2025
fdbcb35
fix: localidx로 space 반환하도록 로직 수정
yooniicode Jun 25, 2025
3390ee1
Merge pull request #202 from UMC-Edison/bug/201
yooniicode Jun 25, 2025
4b6f31b
Delete .idea/.gitignore
yooniicode Jun 26, 2025
fdd6d14
bug: ai 서버 관련 conf 파일 수정 및 route53 세팅 수정
yooniicode Jun 26, 2025
3f41eda
Merge pull request #204 from UMC-Edison/bug/203
yooniicode Jun 26, 2025
db49add
Merge branch 'develop' into feature/199
oneeee822 Jun 26, 2025
8e940a7
docs: Update dev_deploy.yml
yooniicode Jun 26, 2025
3521c9a
chore: Update GptConfig.java
yooniicode Jun 26, 2025
2e07e76
chore: delete .idea/
yooniicode Jun 27, 2025
f430fa0
docs: 환경변수 이름 변경, github secret도 변경 완료함
yooniicode Jun 27, 2025
2808b40
Merge pull request #200 from UMC-Edison/feature/199
yooniicode Jun 27, 2025
ba50089
chore: ai 포트 열고 ec2에 배포
yooniicode Jun 27, 2025
ff39171
chore: ai 포트 열고 ec2에 배포
yooniicode Jun 27, 2025
152fa54
chore: dev_deploy 수정
yooniicode Jun 27, 2025
f36f402
docs: nginx.conf 수정
yooniicode Jun 27, 2025
61de5b4
docs: Update dev_deploy.yml
yooniicode Jun 27, 2025
14e1c2e
service: Ai 서버 인터페이스
Sunho12 Jun 30, 2025
db0fed2
✨feat: service, controller 구현
Sunho12 Jun 30, 2025
8c8e33f
✨feat: 구현 완료
Sunho12 Jun 30, 2025
9c3d222
✨feat: 구현 완료
Sunho12 Jun 30, 2025
ac01f9b
Update dev_deploy.yml
yooniicode Jun 30, 2025
2f9d365
Update dev_deploy.yml
yooniicode Jun 30, 2025
01c992a
Update dev_deploy.yml
yooniicode Jun 30, 2025
d92f0e9
Merge pull request #208 from UMC-Edison/feature/207
Sunho12 Jun 30, 2025
e1d849a
✨feat: Dataset 엔티티 생성
Sunho12 Jul 4, 2025
cf03c14
✨feat: Controller, Repository
Sunho12 Jul 4, 2025
3f54a66
✨feat: Service단 구현
Sunho12 Jul 4, 2025
439a096
✨chore: 보안처리 수정
Sunho12 Jul 4, 2025
1482cc8
🚧 [REFACTOR] #205: 버블 cud와 복구 , 라벨 cud api 구현 (#206)
oneeee822 Jul 6, 2025
94db5fc
Update SecurityConfig.java
oneeee822 Jul 8, 2025
3b1db70
docs: Update SecurityConfig.java
yooniicode Jul 28, 2025
deec342
chore: Update SecurityConfig.java
yooniicode Jul 28, 2025
01c8e21
Update SecurityConfig.java
yooniicode Jul 28, 2025
ccaea4b
chore: Update JwtAuthenticationFilter.java
yooniicode Jul 28, 2025
1de00e8
chore: Update S3Service.java
yooniicode Jul 31, 2025
215ecb6
chore: Update ProjectApplication.java
yooniicode Aug 3, 2025
185027e
chore: rebasing develop
yooniicode Aug 6, 2025
a1a38b7
docs: authentication filter 수정
yooniicode Aug 6, 2025
f13ace8
chore: Update build.gradle
yooniicode Aug 6, 2025
4d5670d
docs: Update application.properties
yooniicode Aug 6, 2025
514de12
Merge branch 'develop' into feature/209
Sunho12 Aug 6, 2025
11ccad1
chore: 주석 제거
yooniicode Aug 6, 2025
a4c7ecd
Merge branch 'develop' into feature/209
Sunho12 Aug 7, 2025
5719c0d
Merge pull request #210 from UMC-Edison/feature/209
Sunho12 Aug 7, 2025
9f5e137
Fix: import 오류 수정
yooniicode Aug 7, 2025
1fcade3
[HOTFIX] #214: localIdx 반환하도록 수정, 버블 조회 관련 오류 수정, closes #214 (#215)
yooniicode Aug 10, 2025
6cf5a42
Chore: Delete .idea directory
yooniicode Aug 11, 2025
a61a29e
Chore: Delete application.log
yooniicode Aug 11, 2025
e19467c
✨feat: AiClient 엔드포인트 추가
Sunho12 Aug 11, 2025
b842e83
✨feat: MVC 구현
Sunho12 Aug 11, 2025
e64e33a
🔨chore: config bean 등록
Sunho12 Aug 18, 2025
ff83153
🐛Map 대신 DTO를 사용하도록 변경, JSON 배열을 직접 보내도록 수정
Sunho12 Aug 18, 2025
fa9e4a4
🐛DTO, 서비스 로직 수정
Sunho12 Aug 18, 2025
66b72d0
🐛키워드매핑 유사도 미만 에러처리
Sunho12 Aug 18, 2025
13f1895
Merge branch 'develop' into feat/213
Sunho12 Aug 18, 2025
4701c8a
🐛Dto 추가 및 오류 해결
Sunho12 Aug 18, 2025
9538e21
fix: ObjectMapper에 JavaTimeModule 추가하여 LocalDateTime 직렬화 문제 해결
oneeee822 Aug 18, 2025
5bc68fc
Merge pull request #219 from UMC-Edison/feat/213
Sunho12 Aug 18, 2025
466c036
docs: Update nginx.conf
yooniicode Aug 19, 2025
a8ac51d
fix: AI 입력값 수정
Sunho12 Aug 20, 2025
3b15a96
Merge pull request #221 from UMC-Edison/refactor/220
Sunho12 Aug 20, 2025
1c5467a
✨[FEAT] #211: 모든 버블(소프트 딜리트 포함) 조회 API 구현 (#212)
oneeee822 Aug 20, 2025
bbb9c02
Hotfix: 버킷 이름 수정
yooniicode Aug 31, 2025
20bef9e
hotfix: Update S3Config.java
yooniicode Sep 2, 2025
2b9e88a
[FEAT] #216: 현재 아트레터 제외 랜덤 추천 API 설계, closes #216 (#218)
yooniicode Sep 2, 2025
99ba48d
🚧 [REFACTOR] #231 아트레터 조회시 작가 정보도 같이 반환되도록 수정 (#232)
yooniicode Sep 29, 2025
79a59c9
chore: content-type 삭제
yooniicode Oct 11, 2025
f4203a5
Update SecurityConfig.java
yooniicode Oct 11, 2025
e791c08
chore: JwtAuthenticationFilter.java s3 추가
yooniicode Oct 11, 2025
8cfb6b8
chore: s3 관련 주소 허용
yooniicode Oct 11, 2025
49cd5a9
chore: 버킷 이름 수정
yooniicode Oct 11, 2025
2cbfc5a
[Chore] Update build.gradle (#233)
Sunho12 Oct 11, 2025
8203a73
chore: 도메인 이전
yooniicode Oct 30, 2025
f845b83
docs: Update dev_deploy.yml
yooniicode Nov 2, 2025
a0d5bda
bug: yaml 파싱 에러 해결
yooniicode Nov 2, 2025
22c3b34
docs: Update dev_deploy.yml
yooniicode Nov 2, 2025
811ac66
docs: Update dev_deploy.yml
yooniicode Nov 2, 2025
a0c9641
docs: Enable debug output in deployment script
yooniicode Nov 2, 2025
5217888
docs: 로그 추가
yooniicode Nov 2, 2025
030045d
chore: 배포 경로 변경
yooniicode Nov 2, 2025
010e28d
chore: Add --no-build-cache option to Gradle build
yooniicode Nov 2, 2025
49ac55a
chore: Update dev_deploy.yml
yooniicode Nov 2, 2025
767041f
chore: Update dev_deploy.yml
yooniicode Nov 3, 2025
6b27f48
docs: Update dev_deploy.yml
yooniicode Nov 3, 2025
a74e928
Update AiClient.java
yooniicode Nov 6, 2025
ef495b5
🚧 [REFACTOR] #229 회원가입/로그인 로직과 아이덴티티 설정 로직 병합 (#230)
oneeee822 Nov 7, 2025
7f2d2ce
🚧 [REFACTOR] #229 회원가입/로그인 로직에 닉네임 추가 (#234)
oneeee822 Nov 16, 2025
36adc26
🚧 [REFACTOR] #229 /identity/{category}경로 로그인 없이 접근 가능하게 수정 (#235)
oneeee822 Nov 23, 2025
3b16cc7
🚧 [REFACTOR] #236 회원가입관련 리팩토링 (#237)
oneeee822 Nov 26, 2025
fd67a2c
infra: docker-compose 도입 관련
yooniicode Jan 6, 2026
d2e4a60
Merge branch 'main' into develop
yooniicode Jan 6, 2026
945f6d1
refactor: 코드리뷰 반영 (#240)
yooniicode Jan 13, 2026
74c1cf2
Replace MySQL connector with PostgreSQL dependency
yooniicode Feb 1, 2026
afa0df9
Merge branch 'main' into develop
yooniicode Feb 1, 2026
c7f7dfd
chore: Delete nginx directory
yooniicode Feb 1, 2026
da7cdcc
Update dev_deploy.yml
yooniicode Feb 1, 2026
f28abb7
Merge branch 'main' into develop
yooniicode Feb 1, 2026
914fdd1
[FEAT] 버블 임베딩 모델 도입 (#245)
yooniicode Feb 1, 2026
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
88 changes: 80 additions & 8 deletions .github/workflows/dev_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ jobs:
spring.jpa.hibernate.ddl-auto=update
server.forward-headers-strategy=framework

# PostgreSQL 설정 추가 ✅
spring.datasource.url=\${SPRING_DATASOURCE_URL}
spring.datasource.username=\${SPRING_DATASOURCE_USERNAME}
spring.datasource.password=\${SPRING_DATASOURCE_PASSWORD}
Expand Down Expand Up @@ -91,25 +90,98 @@ jobs:
cache-from: type=gha
cache-to: type=gha,mode=max

deploy:
deploy-dev:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/develop'
environment: development

steps:
- name: Deploy to Dev Server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ vars.EC2_HOST }}
username: ${{ vars.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
cd /home/ubuntu/edison-infra

cat > .env << 'ENVEOF'
DOCKERHUB_USERNAME=${{ vars.DOCKERHUB_USERNAME }}

SPRING_TAG=${{ github.sha }}
AI_TAG=latest

RDS_URL=${{ vars.RDS_URL }}
RDS_USERNAME=${{ vars.RDS_USERNAME }}
RDS_PASSWORD=${{ secrets.RDS_PASSWORD }}

REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }}

JWT_SECRET=${{ secrets.JWT_SECRET }}
JWT_ACCESS_EXPIRATION=${{ vars.JWT_ACCESS_EXPIRATION }}
JWT_REFRESH_EXPIRATION=${{ vars.JWT_REFRESH_EXPIRATION }}

GOOGLE_CLIENT_ID=${{ vars.GOOGLE_CLIENT_ID }}
GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}

OPENAI_KEY=${{ secrets.OPENAI_KEY }}

AWS_ACCESS_KEY=${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_KEY=${{ secrets.AWS_SECRET_KEY }}
CLOUD_AWS_CREDENTIALS_ACCESS_KEY=${{ secrets.AWS_ACCESS_KEY }}
CLOUD_AWS_CREDENTIALS_SECRET_KEY=${{ secrets.AWS_SECRET_KEY }}
CLOUD_AWS_S3_BUCKET=${{ vars.AWS_S3_BUCKET }}
ENVEOF

./deploy.sh spring ${{ github.sha }} dev

echo "✅ Deployed to DEV server"

deploy-prod:
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
environment: production

steps:
- name: Deploy to EC2
- name: Deploy to Prod Server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
host: ${{ vars.EC2_HOST }}
username: ${{ vars.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
cd /home/ubuntu/edison-infra

cat > .env << 'ENVEOF'
${{ secrets.ENV_FILE }}
DOCKERHUB_USERNAME=${{ vars.DOCKERHUB_USERNAME }}

SPRING_TAG=${{ github.sha }}
AI_TAG=latest

RDS_URL=${{ vars.RDS_URL }}
RDS_USERNAME=${{ vars.RDS_USERNAME }}
RDS_PASSWORD=${{ secrets.RDS_PASSWORD }}

REDIS_PASSWORD=${{ secrets.REDIS_PASSWORD }}

JWT_SECRET=${{ secrets.JWT_SECRET }}
JWT_ACCESS_EXPIRATION=${{ vars.JWT_ACCESS_EXPIRATION }}
JWT_REFRESH_EXPIRATION=${{ vars.JWT_REFRESH_EXPIRATION }}

GOOGLE_CLIENT_ID=${{ vars.GOOGLE_CLIENT_ID }}
GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}

OPENAI_KEY=${{ secrets.OPENAI_KEY }}

AWS_ACCESS_KEY=${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_KEY=${{ secrets.AWS_SECRET_KEY }}
CLOUD_AWS_CREDENTIALS_ACCESS_KEY=${{ secrets.AWS_ACCESS_KEY }}
CLOUD_AWS_CREDENTIALS_SECRET_KEY=${{ secrets.AWS_SECRET_KEY }}
CLOUD_AWS_S3_BUCKET=${{ vars.AWS_S3_BUCKET }}
ENVEOF

sed -i 's/^SPRING_TAG=.*/SPRING_TAG=${{ github.sha }}/' .env
./deploy.sh spring ${{ github.sha }} prod

./deploy.sh spring ${{ github.sha }}
echo "✅ Deployed to PROD server"
14 changes: 14 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# local redis용 docker-compose
services:
redis:
image: redis:alpine
container_name: edison-redis
ports:
- "6379:6379"
volumes:
- redis_volume:/data
command: redis-server --appendonly yes
restart: always

volumes:
redis_volume:
96 changes: 0 additions & 96 deletions nginx/nginx.conf

This file was deleted.

3 changes: 2 additions & 1 deletion project/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,5 @@ out/
### VS Code ###
.vscode/
.idea/
.idea/

load-test.js
11 changes: 11 additions & 0 deletions project/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,24 @@ dependencies {

implementation 'com.fasterxml.jackson.core:jackson-databind'
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.3'

// Lombok 설정
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

runtimeOnly 'com.mysql:mysql-connector-j'
runtimeOnly 'org.postgresql:postgresql'

// Vector Database (pgvector)
implementation 'com.pgvector:pgvector:0.1.6'
implementation 'org.hibernate.orm:hibernate-vector:6.6.4.Final'
implementation 'io.hypersistence:hypersistence-utils-hibernate-63:3.7.0'
implementation 'com.github.haifengl:smile-core:3.1.1'

// 차원 축소 (PCA, t-SNE)
implementation 'org.apache.commons:commons-math3:3.6.1'

// 테스트 관련
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
@AllArgsConstructor
@Table(name = "Artletter", indexes = {
@Index(name = "idx_artletter_title", columnList = "title"),
@Index(name = "idx_artletter_writer", columnList = "writer")
@Index(name = "idx_artletter_writer", columnList = "writer_id")
})
public class Artletter extends BaseEntity {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,5 +147,44 @@ public ResponseEntity<ApiResponse> getAllBubbles(
return bubbleService.getAllBubbles(userPrincipal, pageable);
}

/**
* 단일 버블 벡터화
* POST /bubbles/{localIdx}/vectorize
*/
@PostMapping("/{localIdx}/vectorize")
@PreAuthorize("isAuthenticated()")
public ResponseEntity<ApiResponse> vectorizeBubble(
@AuthenticationPrincipal CustomUserPrincipal userPrincipal,
@PathVariable String localIdx) {
BubbleResponseDto.VectorizeResultDto result = bubbleService.vectorizeBubble(userPrincipal, localIdx);
return ApiResponse.onSuccess(SuccessStatus._OK, result);
}

/**
* 모든 버블 벡터화
* POST /bubbles/vectorize-all
*/
@PostMapping("/vectorize-all")
@PreAuthorize("isAuthenticated()")
public ResponseEntity<ApiResponse> vectorizeAllBubbles(
@AuthenticationPrincipal CustomUserPrincipal userPrincipal) {
return bubbleService.vectorizeAllBubbles(userPrincipal);
}

/**
* 사용자의 모든 버블 2D 벡터 좌표 조회
* GET /bubbles/embeddings
*/
@GetMapping("/embeddings")
@PreAuthorize("isAuthenticated()")
public ResponseEntity<ApiResponse> getAllBubbleEmbeddings(
@AuthenticationPrincipal CustomUserPrincipal userPrincipal,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "50") int size) {

Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "createdAt"));
return bubbleService.getAllBubbleEmbeddings(userPrincipal, pageable);
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,22 @@ public static class DeleteRestoreResultDto {
private boolean isTrashed;
}

public record VectorizeResultDto(
String localIdx,
String title,
boolean isVectorized,
Double embedding2dX,
Double embedding2dY,
LocalDateTime vectorizedAt,
String message
) {}

public record BubbleEmbeddingDto(
String localIdx,
String title,
Double embedding2dX,
Double embedding2dY,
LocalDateTime createdAt
) {}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@

import com.edison.project.domain.label.entity.Label;
import com.edison.project.domain.member.entity.Member;
import com.pgvector.PGvector;
import jakarta.persistence.*;
import lombok.*;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;

import java.time.LocalDateTime;
import java.util.HashSet;
Expand All @@ -15,7 +18,7 @@
@Setter
@Table(name = "Bubble", indexes = {
@Index(name = "idx_bubble_member_id", columnList = "member_id"),
@Index(name = "idx_localIdx", columnList = "local_idx")})
@Index(name = "idx_bubble_local_idx", columnList = "local_idx")})
public class Bubble {

@Id
Expand Down Expand Up @@ -63,6 +66,16 @@ public class Bubble {
@OneToMany(mappedBy = "backlinkBubble", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private Set<BubbleBacklink> referencingBubbles = new HashSet<>();

@Column(name = "embedding")
@JdbcTypeCode(SqlTypes.VECTOR)
private float[] embedding;

@Column(name = "embedding_2d_x")
private Double embedding2dX;

@Column(name = "embedding_2d_y")
private Double embedding2dY;

@Builder
public Bubble(Member member, String localIdx, String title, String content, String mainImg, Set<BubbleLabel> labels,
boolean isTrashed, LocalDateTime createdAt, LocalDateTime updatedAt, LocalDateTime deletedAt) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.edison.project.domain.bubble.repository;

import java.time.LocalDateTime;

public interface BubbleEmbeddingProjection {
String getLocalIdx();
String getTitle();
Double getEmbedding2dX();
Double getEmbedding2dY();
LocalDateTime getCreatedAt();
}
Loading