Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
221 commits
Select commit Hold shift + click to select a range
181ba8c
chore: 초기 DB 스키마 생성 (schema.sql)
userjin2123 Oct 23, 2025
76ce4e2
chore: schema.sql 상세 내용 추가
userjin2123 Oct 23, 2025
4974e73
Merge pull request #2 from codeit-part3-team2/feature/setup-schema
JaehyeokLim Oct 23, 2025
811b208
style: 정적 리소스 추가
JaehyeokLim Oct 23, 2025
b1fcbe6
chore: h2 주석 제거, bcrypt, swagger 의존성 추가
JaehyeokLim Oct 23, 2025
9758c24
chore: QueryDSL, Swagger Configuration 구성
JaehyeokLim Oct 23, 2025
aeceaca
chore: Security Configuration 구성
JaehyeokLim Oct 23, 2025
0b321ff
chore: MDC 로깅 및 Logback 설정 추가
JaehyeokLim Oct 23, 2025
254167a
feat: 커스텀 예외 구조 추가
JaehyeokLim Oct 23, 2025
3343477
feat: 공통 베이스 엔티티 추가 및 Auditing 활성화
JaehyeokLim Oct 23, 2025
bba00be
chore: monew-api / monew-batch 환경 설정 보완 (dev, prod)
JaehyeokLim Oct 23, 2025
d16ae4a
chore: 테스트 환경용 H2 PostgreSQL 모드 구성
JaehyeokLim Oct 23, 2025
615cfc3
Merge pull request #3 from codeit-part3-team2/feature/setup-base-conf…
JaehyeokLim Oct 24, 2025
497f35e
chore : 더미데이터 추가
yeahlimm Oct 24, 2025
8fc0597
Merge pull request #4 from yeahlimm/feature/setup-schema-data-
JaehyeokLim Oct 24, 2025
876911d
feat: 사용자 기능 추가
DoHanChoi Oct 24, 2025
06416b7
Merge branch 'develop' into api/feature/user
DoHanChoi Oct 24, 2025
6c5e4d5
feat: 사용자 도메인 로깅 추가
DoHanChoi Oct 24, 2025
36269a2
chore: 개발 환경 개선 및 DB 파일 구조 정리
DoHanChoi Oct 24, 2025
edc5190
refactor: User 엔티티 중복 id 필드 제거
DoHanChoi Oct 24, 2025
6687dfc
Merge pull request #5 from codeit-part3-team2/api/feature/user
JaehyeokLim Oct 24, 2025
a3b8c54
fix: 로그인 API 응답 상태 OK로 수정
DoHanChoi Oct 27, 2025
0327c1a
Merge pull request #6 from codeit-part3-team2/api/feature/user
DoHanChoi Oct 27, 2025
b8c21a1
fix: 알림 리소스 타입 수정 (article -> interest) 및 페이징 처리용 더미 데이터 추가
truuuely Oct 28, 2025
7f05f9d
fix: 맵핑 테이블명 변경 (interests_articles -> interest_articles, interests_k…
truuuely Oct 28, 2025
171eb42
Merge pull request #7 from codeit-part3-team2/api/feature/notification
JaehyeokLim Oct 28, 2025
7f09bff
feat: Article, ArticleView 엔티티 추가
JaehyeokLim Oct 24, 2025
1f31f53
feat: ArticleDto, ArticleViewDto, CursorPageResponseArticleDto 추가
JaehyeokLim Oct 24, 2025
2361f3c
feat: 계층 파일 추가 (기본 환경)
JaehyeokLim Oct 24, 2025
f87d936
feat: ArticleViewDto -> viewedBy와 articleId Long 타입으로 변경
JaehyeokLim Oct 24, 2025
33bae71
feat: QueryDSL용 인터페이스와 구현체 추가 (기본 환경)
JaehyeokLim Oct 24, 2025
8ea6674
feat: 중복 조회 커스텀 예외 추가 생성
JaehyeokLim Oct 24, 2025
8feae6d
feat: 임시 Interest와 InterestArticles 추가 및 Article과 연결
JaehyeokLim Oct 28, 2025
caaf886
feat: Article Controller, Service 구현
JaehyeokLim Oct 28, 2025
cfa7bfd
feat: Article과 ArticleView JPARepository 쿼리 메소드 구현 및 특정 쿼리 구현을 위한 Cus…
JaehyeokLim Oct 28, 2025
fb3bac8
chore: Article Controller, Service 로깅 추가
JaehyeokLim Oct 28, 2025
16b660a
refactor: interest_articles 테이블 이름 변경으로 인한 코드 수정
JaehyeokLim Oct 28, 2025
672653b
refactor: Setter 제거 및 생성자, 의미있는 도메인 메서드 추가
JaehyeokLim Oct 28, 2025
1ff49da
refactor: 수정된 엔티티에 따라 코드 수정
JaehyeokLim Oct 28, 2025
aa2f3f0
refactor: 따로 RequestDTO 생성 후 @ModelAttribute 및 Bean Validation 적용
JaehyeokLim Oct 28, 2025
e4ea5e9
feat: 로그인 후 요청 헤더에 사용자 ID 추가
DoHanChoi Oct 28, 2025
26b1832
Merge pull request #8 from codeit-part3-team2/api/feature/article
chanhyeok0201 Oct 28, 2025
67d9f14
Merge pull request #9 from codeit-part3-team2/api/feature/user
truuuely Oct 28, 2025
3d79f5a
feat: 사용자별 미확인 알림 조회 기능 추가
truuuely Oct 28, 2025
21bc99b
fix: 알림 더미데이터 값 수정
truuuely Oct 28, 2025
55b4270
feat: 알림 단건 확인 기능 구현
truuuely Oct 28, 2025
aee505c
feat: 알림 전체 확인 기능 구현
truuuely Oct 28, 2025
fb2dcb9
fix: 알림 컨트롤러 내 잘못 작성된 로그 수정
truuuely Oct 29, 2025
9264552
chore: show-sql 옵션 해제
truuuely Oct 29, 2025
e16c9e2
Merge pull request #15 from codeit-part3-team2/api/feature/notification
truuuely Oct 29, 2025
d6b157c
build : 유사도 계산용 의존성 추가
yeahlimm Oct 28, 2025
616eb7b
feat : dto 및 엔티티 설계
yeahlimm Oct 29, 2025
1d8be31
refactor : article 내 interest 엔티티 삭제
yeahlimm Oct 29, 2025
6649ff2
feat : 관심사 수정 dto 추가
yeahlimm Oct 29, 2025
095c5db
feat : 관심사 CRUD 기능 구현
yeahlimm Oct 29, 2025
c46200c
refactor : 빌더 어노테이션 삭제
yeahlimm Oct 29, 2025
d202e2c
refactor : 코드 정렬
yeahlimm Oct 29, 2025
224070a
refactor : InterestRepositoryCustomImpl 메서드 분리
yeahlimm Oct 30, 2025
0dab5b3
refactor : InterestServiceImpl 메서드 분리
yeahlimm Oct 30, 2025
6cd3611
refactor : 사용하지 않는 빌더 삭제
yeahlimm Oct 30, 2025
00793e2
chore: 엔티티 푸시 테스트
chanhyeok0201 Oct 24, 2025
72c95c5
feat: 댓글 기능 구현
chanhyeok0201 Oct 24, 2025
bab2e3d
feat: 댓글 기능 구현
chanhyeok0201 Oct 28, 2025
dfe4f6d
feat: 댓글 DTO 8개 추가
chanhyeok0201 Oct 28, 2025
b0dd75c
feat: 댓글 ErrorCode 추가
chanhyeok0201 Oct 28, 2025
d0446bc
feat: 엔티티에 article 연관 관계 추가 및 DTO, Repository 수정
chanhyeok0201 Oct 28, 2025
e4a7c39
refactor: 댓글 기능 코드 구조 및 로직 일부 수정
chanhyeok0201 Oct 28, 2025
8a11e40
refactor: 댓글 수정/삭제 버튼 생성을 위해 일부 수정
chanhyeok0201 Oct 28, 2025
6b23529
feat: 댓글 수정/삭제 기능 추가
chanhyeok0201 Oct 28, 2025
48984b7
feat: 댓글 수정/삭제 기능 추가
chanhyeok0201 Oct 28, 2025
d44d6b2
refactor: 댓글 DTO에서 id 타입 변환 및 프론트엔드 코드 원복
chanhyeok0201 Oct 29, 2025
a2800f6
refactor: 댓글 CommentController, CommentService, CommentRepositoryImpl…
chanhyeok0201 Oct 30, 2025
2db4687
작업 중인 내용 임시 커밋
userjin2123 Oct 24, 2025
2389874
feat: add 활동내역 기본 기능 구현
userjin2123 Oct 28, 2025
9ceafcb
chore : build.gradle mongoDB 의존성 추가
userjin2123 Oct 29, 2025
536fdad
chore : application-dev.yml, application-prod.yml
userjin2123 Oct 29, 2025
2ed71ee
feat : postgreDB에서 직접 조회 기능 추가
userjin2123 Oct 29, 2025
391728d
feat : add mongoDB
userjin2123 Oct 29, 2025
8176260
feat : 누락된 에러 throw 추가
userjin2123 Oct 29, 2025
c0a0991
feat : 단일쿼리 조회시 object[]로 반환 하던걸 tuple로 반환하고
userjin2123 Oct 30, 2025
ea5e6e4
feat : modify UserActivityDto @Setter 제거, 다른 곳에서는 builder 패턴으로 적용
userjin2123 Oct 30, 2025
59f29ab
refactor : 폴더명 entit -> entity 오탈자 수정
userjin2123 Oct 30, 2025
7114f14
refactor : subscribe.entity 패키지명 변경에 따른 import 수정
userjin2123 Oct 30, 2025
9d19cbc
refactor : 관심사 이름순으로 정렬 및 조회 기능 재구현
yeahlimm Oct 30, 2025
8037e48
refactor: 로직 재구성 (검사 로직 서비스에 할당, Dto는 최소한의 기본값만 보장)
JaehyeokLim Oct 30, 2025
142a11e
feat: 기본 생성자 접근 레벨 부여 및 생성자와 엔티티 메서드 추가
JaehyeokLim Oct 30, 2025
f576a0d
feat: 커서 조건 추가 및 코드 리팩토링
JaehyeokLim Oct 30, 2025
8c14f3b
feat : delete UserActivityRepositoryImpl.java -> 단일쿼리 조회할 때 record타입으…
userjin2123 Oct 30, 2025
1651ecc
feat: 배치 작업에서 중복되는 출처의 뉴스 기사의 저장을 막기 위한 findBySourceUrl 메서드 추가
JaehyeokLim Oct 30, 2025
6564aa4
Merge pull request #17 from codeit-part3-team2/api/feature/interest
JaehyeokLim Oct 31, 2025
d18dc54
Merge pull request #18 from codeit-part3-team2/api/feature/activity
JaehyeokLim Oct 31, 2025
1e0d2e7
Merge pull request #19 from chanhyeok0201/api/feature/comments
JaehyeokLim Oct 31, 2025
5538151
Merge pull request #20 from codeit-part3-team2/api/feature/article
JaehyeokLim Oct 31, 2025
b339c60
chore: monew-api와 monew-batch 모듈의 모든 타임존을 UTC 기준으로 변경
truuuely Oct 31, 2025
cfb422f
feat: 테스트용 알림 생성자 추가
truuuely Oct 31, 2025
2f8509e
feat: 확인된 알림 중 일주일 경과된 알림 삭제 로직 추가 - 레포지토리
truuuely Oct 31, 2025
51be61d
feat: 확인된 알림 중 일주일 경과된 알림 삭제 기능 배치 처리
truuuely Oct 31, 2025
48ee699
chore: 테스트 JVM의 기본 시간대를 UTC 기준으로 변경
truuuely Oct 31, 2025
e144063
test: 알림 레포지토리 - 확인된지 일주일 지난 알림만 삭제되는지 테스트
truuuely Oct 31, 2025
e8d93f8
fix : interests_keywords -> interest_keywords 테이블명 변경 반영 완료
userjin2123 Oct 31, 2025
fb41f3b
feat: 배치 기본 설정 및 Naver API 프로퍼티 추가
JaehyeokLim Oct 31, 2025
c5f4b1b
feat: Naver 뉴스 배치 Job 구성
JaehyeokLim Oct 31, 2025
76a3a40
feat: 배치용 엔티티 및 리포지토리 확장
JaehyeokLim Oct 31, 2025
647fded
docs: schema.sql 로그 테이블 및 설정 추가
JaehyeokLim Oct 31, 2025
07966e2
feat: 오래된 기사 및 로그 정리 스케줄러 추가
JaehyeokLim Oct 31, 2025
7c6d4f9
remove: 테스트용 JobConfig 및 Scheduler 삭제
JaehyeokLim Oct 31, 2025
1ae92b4
refactor: 타임존을 UTC로 통일하기 위해 ZoneId.systemDefault()로 수정
chanhyeok0201 Oct 31, 2025
a2164ac
refactor: 타임존 UTC로 통일
JaehyeokLim Oct 31, 2025
5b522f7
refactor: 알림 삭제 스케줄러 이름 변경
truuuely Oct 31, 2025
d73b6d3
refactor: 알림 자동 삭제 스케줄러, JobConfig 파일 패키지 변경
truuuely Oct 31, 2025
627bb51
Merge pull request #21 from codeit-part3-team2/api/feature/notification
JaehyeokLim Oct 31, 2025
5f9b1da
Merge pull request #23 from codeit-part3-team2/batch/feature/article
truuuely Oct 31, 2025
c8e2199
Merge pull request #22 from codeit-part3-team2/api/feature/activity
truuuely Oct 31, 2025
f17d075
Merge pull request #24 from chanhyeok0201/api/feature/comments
truuuely Oct 31, 2025
7ed977b
feat : 구독 dto 추가
yeahlimm Oct 31, 2025
1a99175
feat : Subscribe 엔티티 밒 dto 설게
yeahlimm Oct 31, 2025
cbb7af0
feat : Subscribe 예외 추가
yeahlimm Oct 31, 2025
fb09863
refactor : Interest 엔티티에 @Setter 추가
yeahlimm Oct 31, 2025
007fbeb
refactor : subscriberCount int로 타입 변경
yeahlimm Oct 31, 2025
1d38dfc
feat : 구독 및 구독 취소 서비스 구현
yeahlimm Oct 31, 2025
93b53fa
Refactor : 컨트롤러에 @Valid 추가
yeahlimm Oct 31, 2025
fd30116
feat : 구독 기능 구현
yeahlimm Oct 31, 2025
2d8a184
test: 알림 레포지토리 테스트 내 불필요한 로그 출력 제거
truuuely Oct 31, 2025
07fb214
chore: api 타임존 KST로 변경
truuuely Nov 1, 2025
94796eb
chore: batch 타임존 KST로 변경
truuuely Nov 1, 2025
6bd248e
chore: 테스트 시 타임존 KST로 변경
truuuely Nov 1, 2025
869a41b
chore: api 및 배치 JVM 타임존 KST로 변경
truuuely Nov 1, 2025
adbefcc
feat: 좋아요 발생 시 알림 생성
truuuely Nov 1, 2025
a1777e6
chore: 스키마에 article_keyword_logs 테이블 추가
truuuely Nov 1, 2025
690bdc5
fix: 누락된 @EnableAsync 추가
truuuely Nov 1, 2025
bbf3098
Merge pull request #26 from codeit-part3-team2/api/feature/notification
JaehyeokLim Nov 1, 2025
b826659
refactor: 뉴스-키워드 연결 구조 개선 및 스키마 수정
JaehyeokLim Nov 1, 2025
00f2dd6
refactor: 관심사 및 기사 연관 Repository 리팩토링
JaehyeokLim Nov 1, 2025
63c041f
feat: 배치 로직 개선 및 스케줄러 타임존 수정
JaehyeokLim Nov 1, 2025
ee0994e
feat: 댓글 카운트 기능 구현
chanhyeok0201 Nov 1, 2025
1b1f8e4
refactor : 어노테이션 삭제
yeahlimm Nov 1, 2025
edf6434
refactor : 리뷰 내용 수정
yeahlimm Nov 1, 2025
4524f43
refactor : 관심사 조회 수정
yeahlimm Nov 1, 2025
59e6387
Merge pull request #25 from codeit-part3-team2/api/feature/interest
JaehyeokLim Nov 2, 2025
9eaaee5
Merge pull request #27 from codeit-part3-team2/batch/feature/article
JaehyeokLim Nov 2, 2025
1e48996
Merge pull request #28 from chanhyeok0201/api/feature/comments
JaehyeokLim Nov 2, 2025
04e278c
feat : add event파일 추가, 구현체는 Impl폴더로 이동
userjin2123 Nov 2, 2025
5842e9d
feat : add 이벤트 리스너, mongoDB cache, reverse-index Document,
userjin2123 Nov 2, 2025
3deb461
feat : add 각 서비스에 이벤트 발행
userjin2123 Nov 2, 2025
d9dc34f
fix: 알림 배치 스케줄러 동작 시간 수정 - KST 기준 오전 04:30
truuuely Nov 2, 2025
9ecaf6e
feat : add comment 서비스에서 빠진 이벤트 발행 추가
userjin2123 Nov 2, 2025
f76a8a7
refactor : log [event] 로 잘못 표기된것 [Listener] 이전 로그와 동일하게 수정
userjin2123 Nov 2, 2025
1a4ff3f
feat: 관심사 id로 활성 구독자 목록 조회 기능 추가
truuuely Nov 2, 2025
35f9d7c
feat: 관심사별 새 기사 알림 생성 기능 구현 (NotificationService)
truuuely Nov 2, 2025
4bfbede
feat: 관심사 알림 엔드포인트 추가 (임시)
truuuely Nov 2, 2025
493136e
feat: 뉴스 배치 처리 시 관심사별 기사 개수 집계 및 알림 생성 api 호출 기능 구현 (임시)
truuuely Nov 2, 2025
c6d76f9
feat: S3 설정 추가
JaehyeokLim Nov 3, 2025
b250863
refactor: Naver API 설정명 변경
JaehyeokLim Nov 3, 2025
358e58f
feat: 뉴스 수집 로직 리팩토링 (Keyword 단위 구조)
JaehyeokLim Nov 3, 2025
710aa06
feat: 백업 및 복원 기능 추가
JaehyeokLim Nov 3, 2025
7379afb
feat: 관심사 삭제 시 연관 뉴스 논리삭제
JaehyeokLim Nov 3, 2025
80c55f2
fix : rebase에서 CommentService에서 commit: ee0994e feat: 댓글 카운트 기능 구현 누락…
userjin2123 Nov 3, 2025
32b0eb5
fix : 키워드 수정 컨트롤러 헤더 삭제
yeahlimm Nov 3, 2025
1136fed
refactor : 키워드 수정 매개변수 userId 삭제 및 조회부분 수정
yeahlimm Nov 3, 2025
88e13a7
fix : 키워드 조회 수정
yeahlimm Nov 3, 2025
54457f1
refactor: domain.user 패키지를 common.user로 이동
DoHanChoi Oct 31, 2025
e378ba4
gfeat: 사용자 삭제 배치 구현
DoHanChoi Nov 3, 2025
8f5b655
feat: 사용자 삭제 배치 기능
DoHanChoi Nov 3, 2025
d32c9df
refactor: user 경로 오류 수정
DoHanChoi Nov 3, 2025
759005e
refactor: user 중복 파일 삭제
DoHanChoi Nov 3, 2025
a124e76
Merge pull request #29 from codeit-part3-team2/api/feature/activity
JaehyeokLim Nov 3, 2025
fe62568
Merge pull request #30 from codeit-part3-team2/batch/feature/notifica…
JaehyeokLim Nov 3, 2025
c8e2ffa
Revert "[feat] mongoDB를 통한 캐시 사용 기능 구현"
truuuely Nov 3, 2025
d29253c
Merge pull request #35 from codeit-part3-team2/revert-29-api/feature/…
JaehyeokLim Nov 3, 2025
2d33ea8
Merge branch 'develop' into batch/feature/user
truuuely Nov 3, 2025
f68fc5b
Merge pull request #32 from codeit-part3-team2/batch/feature/user
truuuely Nov 3, 2025
458e2df
Merge branch 'develop' into batch/feature/article
JaehyeokLim Nov 3, 2025
bc09768
Merge pull request #33 from codeit-part3-team2/batch/feature/article
JaehyeokLim Nov 3, 2025
171358d
Merge pull request #34 from codeit-part3-team2/api/feature/interest
JaehyeokLim Nov 3, 2025
4b58250
refactor: 누락 어노테이션 추가
JaehyeokLim Nov 3, 2025
6bb2079
Merge pull request #36 from codeit-part3-team2/api/feature/article
JaehyeokLim Nov 3, 2025
1e4e6cb
fix: 좋아요 알림 생성 실패 로그 내용 수정
truuuely Nov 3, 2025
fef4348
fix : revert PR#29,
userjin2123 Nov 3, 2025
29957ed
refactor : 인터페이스에 javadoc 추가
userjin2123 Nov 3, 2025
40124e0
chore: batch 내 application-prod.yml에 기사 등록 알림 생성용 MONEW_API_URL 추가
truuuely Nov 3, 2025
4590b01
fix : InterestRepository.java 메서드명 수정 ( 충돌할 때 잘못했습니다. )
userjin2123 Nov 3, 2025
39a6f18
feat: 기사 수집 완료 후 알림 생성 api 자동 호출 기능 구현
truuuely Nov 3, 2025
d951eb5
refactor: 불필요한 변수 제거
yeahlimm Nov 3, 2025
cb623f5
refactor: 구독 취소 조건 추가
yeahlimm Nov 3, 2025
cc83569
refactor: 메서드명 동일해서 구분하기 위한 변경
yeahlimm Nov 3, 2025
dcf5693
feat : 관심사 서비스 부분 충돌 해결
yeahlimm Nov 3, 2025
0ec2510
feat: 배포 Dockerfile, docker-compose.prod.yml 구현
chanhyeok0201 Nov 4, 2025
886a153
Merge pull request #38 from codeit-part3-team2/api/feature/activity
JaehyeokLim Nov 4, 2025
d003649
Merge pull request #39 from codeit-part3-team2/api/feature/notification
JaehyeokLim Nov 4, 2025
9c16f14
Merge branch 'develop' into api/feature/interest
JaehyeokLim Nov 4, 2025
02dd212
Merge pull request #40 from codeit-part3-team2/api/feature/interest
JaehyeokLim Nov 4, 2025
d652f60
chore: jacoco 설정
JaehyeokLim Nov 4, 2025
cfa623d
feat: Matric 추가
JaehyeokLim Nov 4, 2025
37679d4
refactor: mapper 메서드 이름 변경에 따른 코드 수정
JaehyeokLim Nov 4, 2025
89e18ab
chore: prometheus.yml 설정
JaehyeokLim Nov 4, 2025
c455b42
chore: H2 프로필 강제 적용
JaehyeokLim Nov 4, 2025
82fcc24
chore: 더미 추가
JaehyeokLim Nov 4, 2025
ff6ac27
refactor: 설정 파일 대거 수정
JaehyeokLim Nov 4, 2025
dfdb0cd
chore: 필요없는 빈 Mock으로 처리
JaehyeokLim Nov 4, 2025
cb30602
remove: ApplicationTests 제거
JaehyeokLim Nov 4, 2025
1b22dba
feat: 기사 수집 시 알림 생성 로직 비동기로 변경
truuuely Nov 4, 2025
3d4398f
Merge pull request #42 from codeit-part3-team2/batch/feature/article
truuuely Nov 4, 2025
ac44bd5
Merge pull request #43 from codeit-part3-team2/batch/feature/notifica…
truuuely Nov 4, 2025
aab75dd
feat: 배포 Dockerfile, docker-compose.prod.yml 구현
chanhyeok0201 Nov 4, 2025
9d09bd2
fix: 배포 Dockerfile, docker-compose.prod.yml 컨테이너 실행 가능하게 수정
chanhyeok0201 Nov 4, 2025
bdc3bb5
fix: application.yml 배포로(prod) 변경
chanhyeok0201 Nov 4, 2025
789a3eb
Merge remote-tracking branch 'origin/api/feature/comments' into api/f…
chanhyeok0201 Nov 4, 2025
852eb5b
fix: 로그 디렉토리 생성 및 권한 설정 추가
chanhyeok0201 Nov 4, 2025
a81897c
Merge pull request #45 from codeit-part3-team2/api/feature/comments
userjin2123 Nov 4, 2025
c9151e1
feat : UserActivityMapper에서 CommentLikeActivityDto.commentUserId 의 맵핑…
userjin2123 Nov 4, 2025
5e306a5
Merge pull request #46 from codeit-part3-team2/api/feature/activity
userjin2123 Nov 4, 2025
04b4c05
fix: 기사 수집 일부 실패시에도 알림 생성하도록 ArticleNotificationRequestListener 내부의 조…
truuuely Nov 5, 2025
7229bec
Merge pull request #47 from codeit-part3-team2/batch/feature/notifica…
truuuely Nov 5, 2025
5363372
feat: 조선, 연합, 한국 RSS 수집 기능 추가
JaehyeokLim Nov 5, 2025
ea39ff2
rename: News -> Article로 네이밍 통일 및 config나 processor 등 올바른 위치로 패키지 이동
JaehyeokLim Nov 5, 2025
0f2e4c9
feat: 배포 설정 추가 및 User 삭제 스케줄러 시간 배포용으로 변경
chanhyeok0201 Nov 6, 2025
1d2eec9
Merge pull request #48 from codeit-part3-team2/batch/feature/article
userjin2123 Nov 6, 2025
c1ecb93
Merge pull request #50 from codeit-part3-team2/api/feature/comments
userjin2123 Nov 6, 2025
3d2e1f7
Update README.md
chanhyeok0201 Nov 7, 2025
9cdfdc0
Revise README with project and team information
JaehyeokLim Nov 12, 2025
4792790
Update README.md
JaehyeokLim Nov 12, 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
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ SPRING_PROFILES_ACTIVE=
DB_URL=
DB_USERNAME=
DB_PASSWORD=
MongoDB_URI=

# AWS
AWS_ACCESS_KEY=
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Run Tests and Upload Coverage

on:
push:
branches: [ main, develop ]
pull_request:

jobs:
test:
runs-on: ubuntu-latest

env:
SPRING_PROFILES_ACTIVE: test
AWS_S3_ACCESS_KEY: ${{ secrets.AWS_S3_ACCESS_KEY }}
AWS_S3_SECRET_KEY: ${{ secrets.AWS_S3_SECRET_KEY }}
AWS_S3_REGION: ${{ secrets.AWS_S3_REGION }}
AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
NAVER_CLIENT_ID: ${{ secrets.NAVER_CLIENT_ID }}
NAVER_CLIENT_SECRET: ${{ secrets.NAVER_CLIENT_SECRET }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

steps:
- name: Checkout
uses: actions/checkout@v4

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

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Run Tests and Coverage
run: ./gradlew clean test jacocoTestReport

- name: Upload to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: |
monew-api/build/reports/jacoco/test/jacocoTestReport.xml
monew-batch/build/reports/jacoco/test/jacocoTestReport.xml
fail_ci_if_error: true
107 changes: 107 additions & 0 deletions Dockerfile.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# ====================================
# Dockerfile for API Module
# ====================================

# Stage 1: Build
FROM gradle:8.5-jdk17-alpine AS builder

# 빌드 인자 선언 (docker-compose.prod.yml에서 전달)
ARG BUILD_DATE
ARG VCS_REF
ARG VERSION

WORKDIR /app

# 루트 프로젝트 설정 파일 복사
#COPY settings.gradle ./
#COPY build.gradle ./
#COPY gradlew ./
#COPY gradle gradle/

COPY settings.gradle ./
COPY build.gradle ./
COPY gradlew ./
COPY gradle gradle/
COPY monew-monitor/build.gradle monew-monitor/

# 2) CRLF 제거 + 실행권한 + 존재 확인
RUN sed -i 's/\r$//' gradlew && chmod +x gradlew && \
ls -al && ls -al gradle/wrapper && head -n1 gradlew && \
./gradlew --version

# 모든 서브모듈의 build.gradle 복사 (의존성 캐싱)
COPY monew-api/build.gradle monew-api/build.gradle
COPY monew-batch/build.gradle monew-batch/build.gradle
COPY monew-monitor/build.gradle monew-monitor/build.gradle

# Gradle wrapper 실행 권한
RUN chmod +x gradlew || true

# 의존성 다운로드 (캐시 레이어)
RUN ./gradlew dependencies --no-daemon || true

# API 모듈 소스 코드 복사
COPY monew-api/ monew-api/

# API 모듈만 빌드 (테스트 제외)
RUN ./gradlew :monew-api:bootJar -x test --no-daemon

# JAR 파일 위치 확인 및 복사
RUN mkdir -p /app/build && \
find monew-api/build/libs -name "*.jar" -not -name "*-plain.jar" -exec cp {} /app/build/app.jar \;

# Stage 2: Runtime
FROM eclipse-temurin:17-jre-alpine

# 빌드 인자 다시 선언 (runtime stage에서 사용)
ARG BUILD_DATE
ARG VCS_REF
ARG VERSION

WORKDIR /app

# 이미지 메타데이터 레이블 추가
LABEL org.opencontainers.image.created="${BUILD_DATE}" \
org.opencontainers.image.revision="${VCS_REF}" \
org.opencontainers.image.version="${VERSION}" \
org.opencontainers.image.title="Monew API" \
org.opencontainers.image.description="Monew API Server"

# 보안을 위한 non-root 사용자 생성
RUN addgroup -S spring && adduser -S spring -G spring

# 타임존 설정
RUN apk add --no-cache tzdata wget && \
cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
echo "Asia/Seoul" > /etc/timezone && \
apk del tzdata

# 빌드 스테이지에서 JAR 파일 복사
COPY --from=builder /app/build/app.jar app.jar

# 로그 디렉토리 생성 및 권한 설정
RUN mkdir -p /app/.logs && chown -R spring:spring /app/.logs

# 소유권 변경
RUN chown spring:spring app.jar

# 사용자 변경
USER spring:spring

# 헬스체크 설정
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:8080/actuator/health || exit 1

# JVM 옵션 설정 (환경변수로 오버라이드 가능)
ENV JAVA_OPTS="-XX:+UseContainerSupport \
-XX:MaxRAMPercentage=75.0 \
-XX:InitialRAMPercentage=50.0 \
-XX:+UseG1GC \
-XX:+OptimizeStringConcat \
-Djava.security.egd=file:/dev/./urandom"

# 애플리케이션 포트
EXPOSE 8080

# 애플리케이션 실행
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
87 changes: 87 additions & 0 deletions Dockerfile.batch
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# ====================================
# Dockerfile for Batch Module
# ====================================

# Stage 1: Build
FROM gradle:8.5-jdk17-alpine AS builder

WORKDIR /app

# Gradle wrapper 및 설정 파일 복사
#COPY monew-batch/build.gradle settings.gradle ./
#COPY build.gradle ./
#COPY gradlew* ./
#COPY gradle gradle/

COPY settings.gradle ./
COPY build.gradle ./
COPY gradlew ./
COPY gradle gradle/

# 2) CRLF 제거 + 실행권한 + 래퍼 존재/버전 확인
RUN sed -i 's/\r$//' gradlew && chmod +x gradlew && \
ls -al && ls -al gradle/wrapper && head -n1 gradlew && \
./gradlew --version

# 모든 서브모듈의 build.gradle 복사 (의존성 캐싱)
COPY monew-api/build.gradle monew-api/
COPY monew-batch/build.gradle monew-batch/
COPY monew-monitor/build.gradle monew-monitor/

# Gradle wrapper 실행 권한
RUN chmod +x gradlew || true

# 의존성 다운로드 (캐시 레이어)
RUN ./gradlew dependencies --no-daemon || true

# 전체 소스 코드 복사
#COPY monew-batch .
COPY monew-api/ monew-api/
COPY monew-batch/ monew-batch/

# Batch 모듈만 빌드 (테스트 제외)
RUN ./gradlew :monew-batch:bootJar -x test --no-daemon

# JAR 파일 위치 확인 및 복사
RUN mkdir -p /app/build && \
find monew-batch/build/libs -name "*.jar" -not -name "*-plain.jar" -exec cp {} /app/build/app.jar \;

# Stage 2: Runtime
FROM eclipse-temurin:17-jre-alpine

WORKDIR /app

# 보안을 위한 non-root 사용자 생성
RUN addgroup -S spring && adduser -S spring -G spring

# 타임존 설정
RUN apk add --no-cache tzdata && \
cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
echo "Asia/Seoul" > /etc/timezone && \
apk del tzdata

# 빌드 스테이지에서 JAR 파일 복사
COPY --from=builder /app/build/app.jar app.jar

# 로그 디렉토리 생성 및 권한 설정
RUN mkdir -p /app/.logs && chown -R spring:spring /app/.logs

# 소유권 변경
RUN chown spring:spring app.jar

# 사용자 변경
USER spring:spring

# JVM 옵션 설정 (배치 작업용 최적화)
ENV JAVA_OPTS="-XX:+UseContainerSupport \
-XX:MaxRAMPercentage=75.0 \
-XX:InitialRAMPercentage=50.0 \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-Djava.security.egd=file:/dev/./urandom"

# 애플리케이션 포트
EXPOSE 8081

# 애플리케이션 실행
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
87 changes: 87 additions & 0 deletions Dockerfile.monitor
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# ====================================
# Dockerfile for Monitor Module
# ====================================

# Stage 1: Build
FROM gradle:8.5-jdk17-alpine AS builder

WORKDIR /app

# Gradle wrapper 및 설정 파일 복사
#COPY monew-monitor/build.gradle settings.gradle ./
#COPY build.gradle ./
#COPY gradlew* ./
#COPY gradle gradle/

COPY settings.gradle ./
COPY build.gradle ./
COPY gradlew ./
COPY gradle gradle/
COPY monew-monitor/build.gradle monew-monitor/

# 2) CRLF 제거 + 실행권한 + 래퍼 존재/버전 확인
RUN sed -i 's/\r$//' gradlew && chmod +x gradlew && \
ls -al && ls -al gradle/wrapper && head -n1 gradlew && \
./gradlew --version

# 모든 서브모듈의 build.gradle 복사 (의존성 캐싱)
COPY monew-api/build.gradle monew-api/
COPY monew-batch/build.gradle monew-batch/
COPY monew-monitor/build.gradle monew-monitor/

# Gradle wrapper 실행 권한
RUN chmod +x gradlew || true

# 의존성 다운로드 (캐시 레이어)
RUN ./gradlew dependencies --no-daemon || true

# 전체 소스 코드 복사
#COPY monew-monitor .
COPY monew-monitor/ monew-monitor/

# Monitor 모듈만 빌드 (테스트 제외)
RUN ./gradlew :monew-monitor:bootJar -x test --no-daemon

# JAR 파일 위치 확인 및 복사
RUN mkdir -p /app/build && \
find monew-monitor/build/libs -name "*.jar" -not -name "*-plain.jar" -exec cp {} /app/build/app.jar \;

# Stage 2: Runtime
FROM eclipse-temurin:17-jre-alpine

WORKDIR /app

# 보안을 위한 non-root 사용자 생성
RUN addgroup -S spring && adduser -S spring -G spring

# 타임존 설정
RUN apk add --no-cache tzdata wget && \
cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
echo "Asia/Seoul" > /etc/timezone && \
apk del tzdata

# 빌드 스테이지에서 JAR 파일 복사
COPY --from=builder /app/build/app.jar app.jar

# 소유권 변경
RUN chown spring:spring app.jar

# 사용자 변경
USER spring:spring

# 헬스체크 설정
HEALTHCHECK --interval=30s --timeout=3s --start-period=30s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:8082/actuator/health || exit 1

# JVM 옵션 설정 (모니터링 경량화)
ENV JAVA_OPTS="-XX:+UseContainerSupport \
-XX:MaxRAMPercentage=70.0 \
-XX:InitialRAMPercentage=40.0 \
-XX:+UseG1GC \
-Djava.security.egd=file:/dev/./urandom"

# 애플리케이션 포트
EXPOSE 8082

# 애플리케이션 실행
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
Loading