Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
358 commits
Select commit Hold shift + click to select a range
335e6db
feat: 일정 관련 API 생성
HoyeongJeon Apr 23, 2025
eae90bd
feat: CustomUserDetails 에 getCouple 추가
HoyeongJeon Apr 23, 2025
a6424ba
feat: 일정 생성 및 삭제 request dto 생성
HoyeongJeon Apr 23, 2025
576b276
feat: 일정 생성 및 수정 , 삭제 구현
HoyeongJeon Apr 23, 2025
08d01dd
test: 성공 케이스 테스트 작성
HoyeongJeon Apr 23, 2025
53af343
refactor: 리뷰 적용
HoyeongJeon Apr 23, 2025
bfbf0e9
refactor: 트랜잭션에 readonly 추가
HoyeongJeon Apr 24, 2025
b76c486
fix: swagger 요청 주소 설정
HoyeongJeon Apr 24, 2025
52d0e1f
chore: ci 수정
HoyeongJeon Apr 24, 2025
ec01266
fix: swagger cors 수정
HoyeongJeon Apr 24, 2025
c7145a1
fix : cors에러 해결(https는 같은 근원지이기 때문에 필요없음 http로 수정해야함)
kimyeoungrok Apr 24, 2025
26eb435
fix: preflight 허용
HoyeongJeon Apr 25, 2025
8a1baa0
chore: aws 의존성 추가 및 minio 컨테이너 생성
HoyeongJeon Apr 25, 2025
008c9c4
feat: S3 업로드 구현
HoyeongJeon Apr 25, 2025
2943933
feat: API 추가
HoyeongJeon Apr 25, 2025
440dda0
feat: Picture 도메인 구현
HoyeongJeon Apr 25, 2025
565fcff
feat: 편지 도메인 및 레포지토리 구현
HoyeongJeon Apr 25, 2025
0802741
feat: 편지 CUD 구현
HoyeongJeon Apr 25, 2025
bc45cb9
feat: 댓글 도메인 CUD 구현
HoyeongJeon Apr 25, 2025
0577797
feat: 댓글 도메인 CUD 비즈니스 로직 구현
HoyeongJeon Apr 25, 2025
b85e999
refactor: 스웨거 태그 수정
HoyeongJeon Apr 25, 2025
ab0abc1
test: 성공 케이스 테스트
HoyeongJeon Apr 25, 2025
7abd3c7
refactor: 일정 생성에 대한 권한 확인 추가
HoyeongJeon Apr 25, 2025
11af4c7
fix: BadRequestException import 수정
HoyeongJeon Apr 25, 2025
f7eae82
refactor: s3 물리적 삭제
HoyeongJeon Apr 25, 2025
a873f02
refactor: 불필요한 트랜잭션 제거
HoyeongJeon Apr 25, 2025
40e8260
fix: 쿠키 및 보안 설정 완화
HoyeongJeon Apr 25, 2025
f4d9da8
fix: https 환경 통일
HoyeongJeon Apr 25, 2025
28d9d3b
fix : cookie sameSite설정 변경
kimyeoungrok Apr 26, 2025
f0d0717
feat : 나의 이모지조회 API 구현 #36
kimyeoungrok Apr 25, 2025
04d3525
test : 나의 이모지조회 API 테스트 코드 작성 #36
kimyeoungrok Apr 25, 2025
cf28a37
feat : 닉네임 수정 API 구현 #36
kimyeoungrok Apr 25, 2025
1099649
test : 닉네임 수정 API 테스트 코드 작성 #36
kimyeoungrok Apr 25, 2025
e052b0d
feat : 생년월일 수정 API 구현 #36
kimyeoungrok Apr 25, 2025
42090e9
test : 생년월일 수정 API 테스트 코드 작성 #36
kimyeoungrok Apr 25, 2025
e444129
feat : 입대, 전역일 수정 API 구현 #36
kimyeoungrok Apr 26, 2025
13ba638
test : 입대, 전역일 수정 API 테스트 코드 작성 #36
kimyeoungrok Apr 26, 2025
fdd2537
feat : 만난날 수정 API 구현 #36
kimyeoungrok Apr 26, 2025
304a56f
test : 만난날 수정 API 테스트 코드 작성 #36
kimyeoungrok Apr 26, 2025
bb59fd6
chore : 입대, 전역일 수정api, 만난날 수정 api controller따로 파서 관리(기존의 CoupleInfoCo…
kimyeoungrok Apr 26, 2025
258c5c5
fix : 리뷰 반영 (description에는 에러가 발생했을 때 어떤 메서드와 연관되어있는지 바로 파악 가능하도록 메서드…
kimyeoungrok Apr 26, 2025
bf866bf
fix : 리뷰 반영 (couple가져오는 로직은 facade에서 하게 수정(service에는 다른 비즈니스 로직 안 섞이게…
kimyeoungrok Apr 26, 2025
94cc7b3
fix: 쿠키 설정 수정
HoyeongJeon Apr 26, 2025
b384dfa
fix: cors 추가
HoyeongJeon Apr 27, 2025
05ef33b
feat : 알림 변경 API 구현 #40
kimyeoungrok Apr 26, 2025
28af0bb
test : 알림 변경 API 구현 테스트 #40
kimyeoungrok Apr 26, 2025
d900361
feat : 커플 연동 해제 api 구현 #40
kimyeoungrok Apr 26, 2025
199fc0d
fix : 리뷰 반영(불필요한 return문 제거, leaveService를 leaveFacade로 옮기기, Transact…
kimyeoungrok Apr 27, 2025
6290543
fix : 리뷰 반영(불필요한 return문 제거) #40
kimyeoungrok Apr 27, 2025
a7a1a1f
fix: cors 추가
HoyeongJeon Apr 27, 2025
e31a42e
feat: docker-compose 레디스 추가
HoyeongJeon Apr 27, 2025
28905e4
feat: docker-compose 레디스 추가
HoyeongJeon Apr 27, 2025
ce7e913
refactor: request dto 위치 변경
HoyeongJeon Apr 26, 2025
0e8aa50
chore: 쿠키 설정의 도메인 환경변수로 관리
HoyeongJeon Apr 26, 2025
11652c0
feat: 캘린더 일정 조회 컨트롤러 구현
HoyeongJeon Apr 26, 2025
7247875
feat: 캘린더 일정 조회 응답 Response 구현
HoyeongJeon Apr 26, 2025
2bc00db
feat: 캘린더 일별 조회, 연도와 달 기준 조회 구현
HoyeongJeon Apr 26, 2025
956e1e9
test: 일정 조회 성공 테스트
HoyeongJeon Apr 26, 2025
da25dff
feat: GUEST , MEMBER에 따른 접근 에러 처리 구현
HoyeongJeon Apr 26, 2025
9001ada
feat: 캘린더 일별 조회, 연도와 달 기준 조회 구현
HoyeongJeon Apr 26, 2025
4db7f6a
feat: 일정에 따른 편지 API 추가
HoyeongJeon Apr 27, 2025
155b609
feat: 엔티티 수정
HoyeongJeon Apr 27, 2025
e5d4986
feat: 일정 가져오기
HoyeongJeon Apr 27, 2025
cb8bfb2
feat: 일정 및 댓글 repository 구현
HoyeongJeon Apr 27, 2025
64866b2
feat: Picture 서비스 수정
HoyeongJeon Apr 27, 2025
0a88e6e
feat: Picture 레포지토리 미리보기 사진 추가
HoyeongJeon Apr 27, 2025
3233d25
feat: 응답 dto 생성
HoyeongJeon Apr 27, 2025
edad9ef
refactor: 매직넘버 상수로 분리
HoyeongJeon Apr 27, 2025
af75dc2
refactor: 스케쥴 엔티티 내용을 제목으로 변경 (contetn -> title)
HoyeongJeon Apr 27, 2025
eecfa01
refactor: 월 별 일정 응답 시 기념일 제외, 일 별 일정 응답 시 기념일 추가
HoyeongJeon Apr 27, 2025
d812881
feat: 나에게 온 편지 API 엔드포인트 생성
HoyeongJeon Apr 28, 2025
2aabe67
feat: key offset 페이지네이션 dto 생성
HoyeongJeon Apr 28, 2025
b2f3058
feat: 나에게 온 편지 컨트롤러
HoyeongJeon Apr 28, 2025
86feb08
feat: 키 오프셋 페이지네이션 네이티브 쿼리 생성
HoyeongJeon Apr 28, 2025
c49dbed
feat: 키 오프셋 페이지네이션 구현
HoyeongJeon Apr 28, 2025
c2ac495
test: ReadFacadeTest 생성자 호출하는 방식으로 변경
HoyeongJeon Apr 28, 2025
96e0c18
refactor: 네이티브 쿼리에 안쓰는 파라미터 제거
HoyeongJeon Apr 28, 2025
1cbd82d
feat : 커플 이모지 조회 api 구현 #50
kimyeoungrok Apr 28, 2025
c47ddaf
chore : 커플 이모지 조회시 이모지 없을 때 에러케이스 추가 #50
kimyeoungrok Apr 28, 2025
6a0f565
test : 커플 이모지 조회 api 테스트 코드 작성 #50
kimyeoungrok Apr 28, 2025
4717f74
feat : 이모지 업데이트 시 비정기적 알림 전송 구현 #45
kimyeoungrok Apr 28, 2025
b8cd4ce
test : memberInfoFacade.updateMyEmotionAndStatusMessage 구현에서 fcm알림 보내…
kimyeoungrok Apr 28, 2025
09e8432
feat : fcm.json파일 주입 #45
kimyeoungrok Apr 28, 2025
25bad14
fix : 리뷰 반영(OkHttpClient를 sendMessageTo를 호출할 때마다 새로 생성하는건 비효율적이라 싱글톤으…
kimyeoungrok Apr 29, 2025
8f8a30a
fix : 리뷰 반영(에러 로그 추가 및 exception에러 메시지 커스텀) #45
kimyeoungrok Apr 29, 2025
21e201f
fix : 리뷰 반영(emoji -> emotion으로 변경(지금까지 해 온거랑 씽크 맞추기 위해서) 그리고 emotion …
kimyeoungrok Apr 29, 2025
778a50f
fix : 리뷰 반영(코드 컨벤션 맞추기) #45
kimyeoungrok Apr 29, 2025
f506182
build : 리뷰 반영(빌드 파일 최신버전으로 업데이트) #45
kimyeoungrok Apr 29, 2025
6c2edfc
fix : 리뷰 반영(스웨거 수정) #45
kimyeoungrok Apr 29, 2025
9cdc4f7
fix : member의 emotion타입 enum으로 관리함에 member변수 및 관련 메서드 수정 #54
kimyeoungrok Apr 29, 2025
cca7082
fix : emotion타입 바꿈에 따라서 테스트 코드 실행안되는거 수정 #54
kimyeoungrok Apr 29, 2025
1521c66
chore : swagger request 설명 수정(emotion타입이 바뀌어서 그거에 맞춰 예시 리퀘스트도 수정) #54
kimyeoungrok Apr 29, 2025
2718dee
refactor: 유저 정보 반환 시 커플 여부 , 온보딩 여부 반환
HoyeongJeon Apr 30, 2025
1087c68
feat : 기념일 생성 api 제작 #61
kimyeoungrok Apr 30, 2025
f44579b
feat : 기념일 추가 api 테스트코드 작성 #61
kimyeoungrok Apr 30, 2025
59ff288
feat: 커플 조회 컨트롤러 추가
HoyeongJeon May 1, 2025
6e199ae
feat: 커플 조회 파사드와 리스폰스 구현
HoyeongJeon May 1, 2025
0e94f23
feat: 커플 기념일 초기화 여부 확인
HoyeongJeon May 1, 2025
a49ddf4
refactor: CoupleFacadeTest 폴더 위치 변경
HoyeongJeon May 1, 2025
55db75d
refactor: CoupleService에 섞여있는 기념일 등록 로직을 CoupleFacade 로 분리
HoyeongJeon May 1, 2025
2736bd5
refactor: 기념일 초기화 여부 컬럼 이름 변경
HoyeongJeon May 1, 2025
5e32bab
feat : 일정 상세조회 api 구현 #65
kimyeoungrok May 1, 2025
c6ce42f
test : 일정 상세조회 api 테스트 코드 작성 #65
kimyeoungrok May 1, 2025
a720394
refactor : 리뷰 반영(코드 스타일 수정) #65
kimyeoungrok May 1, 2025
de4a6c7
feat: 메인 페이지의 디데이와 앞으로 일주일 일정, 나에게 온 편지 최근 5개 API 생성
HoyeongJeon May 1, 2025
467bb1b
feat: 메인 페이지의 디데이와 앞으로 일주일 일정, 나에게 온 편지 최근 5개 리스폰스 생성
HoyeongJeon May 1, 2025
32304d0
feat: 메인 페이지의 디데이와 앞으로 일주일 일정, 나에게 온 편지 최근 5개 구현
HoyeongJeon May 1, 2025
c0ee4ab
fix: 기념일 일자 1일 차이나는거 수정
HoyeongJeon May 1, 2025
d585b00
fix: 쿼리 반환타입 수정
HoyeongJeon May 1, 2025
d41abc6
fix: 충돌 병합
HoyeongJeon May 1, 2025
1bc5ea8
build : 코루틴 의존성 추가 #57
kimyeoungrok May 1, 2025
f0ab0e7
feat : 19시마다 모든 커플 유저에게 질문형 메시지 보내기 #57
kimyeoungrok May 1, 2025
f5b984a
fix : 리뷰 반영(Logger객체 사용, 전송실패 시 잘못된 에러메시지 삽입된거 수정) #57
kimyeoungrok May 1, 2025
4ab8e82
fix : 리뷰 반영(에러 처리 로직 제외 : 에러 발생 시 전체 프로세스 중단되기 때문) #57
kimyeoungrok May 1, 2025
a3c7b78
feat: 디데이(기념일) 페이지네이션 API , dto 생성
HoyeongJeon May 1, 2025
3243e62
feat: 페이지네이션 구현
HoyeongJeon May 1, 2025
0a152cd
refactor: url 에 불필요한 파라미터 제거
HoyeongJeon May 2, 2025
02b7db0
refactor: multipart 형식 제거
HoyeongJeon May 3, 2025
4f67301
fix: 쿼리 테이블 명 수정
HoyeongJeon May 3, 2025
6a6ec43
feat : 디데이 기반 푸시알림 구현 #72
kimyeoungrok May 3, 2025
762ae73
chore : cron식 변경(원래 기획의도인 0시마다 전송되게) #72
kimyeoungrok May 3, 2025
2453f1e
fix : AL_01 질문형 푸시알림 제약조건 추가 #78
kimyeoungrok May 3, 2025
9535771
fix: 일정 조회 emoji 추가
HoyeongJeon May 3, 2025
a7bd944
fix: PageResponse에 next 제외
HoyeongJeon May 3, 2025
4936d6d
fix: PageResponse에 next 제외
HoyeongJeon May 3, 2025
04afaed
fix: PageResponse에 next 제외
HoyeongJeon May 3, 2025
5579038
fix: PageResponse에 next 제외
HoyeongJeon May 3, 2025
ccc9da1
fix: 편지에 일정 이름 추가
HoyeongJeon May 3, 2025
23d0486
fix: 나에게 온 편지가 아닌 커플 전체 편지 조회로 수정
HoyeongJeon May 3, 2025
362761e
refactor: 안쓰는 url 제거
HoyeongJeon May 4, 2025
df38f3e
refactor: LetterPreviewResponse 응답에 scheduleId 추가
HoyeongJeon May 4, 2025
7d1efc9
refactor: 나에게 온 편지 잘못 사용한 서비스 변경
HoyeongJeon May 4, 2025
5c0acf8
fix : 알림 기능 수정(토글 식이 아니라 true면 알림 on, false면 off이게끔 -> 직관적이게 수정) #83
kimyeoungrok May 5, 2025
6a6bd45
feat : 알림 조회 기능 #83
kimyeoungrok May 5, 2025
e79a5b7
test : 알림 조회 기능 테스트 #83
kimyeoungrok May 5, 2025
2766319
fix : 알림기능 업데이트 하는 메서드 updateDday()랑 updatePartnerStatus()로 해결하게끔 수정(…
kimyeoungrok May 5, 2025
95c5043
refactor : if문 제거 #83
kimyeoungrok May 5, 2025
bbbe746
feat : 커플 생년월일 조회 기능 api 구현 #85
kimyeoungrok May 5, 2025
498787a
test : 커플 생년월일 조회 기능 api 테스트 코드 작성 #85
kimyeoungrok May 5, 2025
1fe5193
refactor : 응답 변수 수정(coupleBirthday보다는 partnerBirthday로 하는 게 상대방(애인)의 …
kimyeoungrok May 5, 2025
17af8ff
feat : 푸시 알림 전송 할 때 마다 알림 내용 redis에 저장 #80
kimyeoungrok May 6, 2025
7b91107
build : Kotlin 클래스 및 데이터 클래스의 직렬화/역직렬화하기 위한 모듈 빌드 #80
kimyeoungrok May 6, 2025
78e0f56
config : objectMapper는 재사용할 수 있기에 bean으로 주입해서 관리하는 것이 편하겠다는 판단이 들었음 #80
kimyeoungrok May 6, 2025
9841460
feat : 푸시 알림 기록 조회 api 구현 #80
kimyeoungrok May 6, 2025
ef84519
test : redisService 모킹 추가 #80
kimyeoungrok May 6, 2025
b74a01f
build : 중복된 의존성 제거 #80
kimyeoungrok May 6, 2025
7fc5cb5
refactor : 필요없는 파일 제거(redisConfiguration없어도 정상동작함), 클래스명 변경(여러 서비스를 이…
kimyeoungrok May 6, 2025
175c64d
refactor: 에러 응답 커스텀
HoyeongJeon May 7, 2025
d8e4d5a
refactor: ObjectMapper 빈으로 주입 받음
HoyeongJeon May 7, 2025
61b756f
fix: 일정 불러올 때 날짜가 겹쳐있는 경우도 전부 가져오도록 수정
HoyeongJeon May 7, 2025
4ec8972
fix: jackson config 응답 serializer 설정 추가
HoyeongJeon May 7, 2025
21786d0
feat : 연결해제시 상대방의 isCoupled필드도 false로 되바꿔주는 로직 추가 #89
kimyeoungrok May 8, 2025
dcd2c70
fix: 페이지 기반 페이지네이션으로 응답 수정
HoyeongJeon May 11, 2025
4243f94
fix: 페이지네이션 응답 수정
HoyeongJeon May 11, 2025
a8c12ba
fix: Pageable 사용하는 방식으로 쿼리 수정
HoyeongJeon May 11, 2025
8a9762f
feat: 기념일 초기화 시 발생할 수 있는 동시성 문제 Lock 으로 방지
HoyeongJeon May 11, 2025
9f7fc4c
fix: minio 환경변수 수정
HoyeongJeon May 12, 2025
9cb211b
fix: JwtTokenProviderImpl를 TokenService로 변경
HoyeongJeon May 12, 2025
d9d2e94
fix: s3 file url 수정
HoyeongJeon May 12, 2025
72c4b60
feat: 로깅 추가
HoyeongJeon May 13, 2025
8b3cb28
feat: 일정 삭제 시 연관된 편지, 댓글, 사진 전부 삭제
HoyeongJeon May 13, 2025
2a5212f
fix: 스케쥴 반환 시 디데이도 함께 반환
HoyeongJeon May 13, 2025
dfd0326
fix : 페이지네이션시 페이지에서 발생할 수 있는 에러 방지
HoyeongJeon May 13, 2025
c3bac6c
feat : 리프레쉬 토큰 도입(로그인시 리프레쉬 토큰도 쿠키에 같이 발급해주기) #90
kimyeoungrok May 16, 2025
0e6a9be
refactor : 리프레쉬 토큰 발급 관련 메서드 tokenSerive로 옮김 #90
kimyeoungrok May 16, 2025
8fbadb0
refactor : 쿠키만드는 메서드 서비스 클래스로 따로 분리해서 관리(확장성 위함, reissueFacade에서도 쿠키 …
kimyeoungrok May 11, 2025
47597ca
feat : 토큰 재발급 로직 구현 #90
kimyeoungrok May 11, 2025
2b4b978
refactor : refreshToken redis에 저장 및 삭제하는 로직 tokenSerive로 이동 #90
kimyeoungrok May 16, 2025
254a96d
refactor : 에러 메시지 통일감 있게 수정(유효하지 않은 => invalid로) #90
kimyeoungrok May 15, 2025
1ec4e05
fix : 일부 코드 버그 수정(불필요한 override연산자, 지금은 존재하지 않은 객체(tokenProvider)사용한거…
kimyeoungrok May 16, 2025
ffecc6a
fix : 스케쥴 상세조회 하루종일 여부 추가
HoyeongJeon May 16, 2025
a998d61
refactor : 알림내역 redis저장 로직 따로 서비스 파서 분리하기 #108
kimyeoungrok May 16, 2025
d88bcb3
feat: mockK 의존성 추가
HoyeongJeon May 17, 2025
a8ba02a
feat: anniversaryService 리팩토링
HoyeongJeon May 17, 2025
aed0ad2
feat: AnniversaryFacadeTest, AnniversaryServiceTest 작성
HoyeongJeon May 17, 2025
9f34ac9
fix: 검증 효과가 없는 테스트 라인 제거
HoyeongJeon May 18, 2025
bcd0dca
fix : "/" api 삭제 (프론트 주소와 겹칠 우려있음)
kimyeoungrok May 18, 2025
c91d4a4
fix : 사귀기 시작한 날짜에 +1해주기 #116
kimyeoungrok May 20, 2025
eeb5260
chore : cors 도메인 추가(도메인 sarangkkun.site새로 사서 추가함)
kimyeoungrok May 23, 2025
ca3e00f
feat: 디데이 삭제
HoyeongJeon May 22, 2025
58f4ecb
Feat: 유저 Role 에 따른 리다이렉트 주소 변경
HoyeongJeon May 24, 2025
7651e35
fix: 온보딩 에러 수정
HoyeongJeon May 24, 2025
05510fc
fix: my-info 접근권한 풀기
HoyeongJeon May 24, 2025
47c5f38
fix: my-info filter 제거
HoyeongJeon May 24, 2025
993738d
fix: 로컬 주소 cors 추가
HoyeongJeon May 25, 2025
d7e3c30
refactor: ScheduleService 메서드 네이밍 명 리팩토링
HoyeongJeon May 21, 2025
912ba6b
refactor: 일주일 계산을 위한 매직넘버 상수로 분리
HoyeongJeon May 21, 2025
5749e73
refactor: S3 내 이미지 삭제 로직 이벤트 발생하도록 수정
HoyeongJeon May 21, 2025
fa48f62
refactor: ReadScheduleFacade LocalDate.now() 를 파라미터로 받도록 변경
HoyeongJeon May 21, 2025
2438e8a
test: MockK 사용하는 테스트 분리
HoyeongJeon May 21, 2025
f9a6eb1
test: 실패 케이스에 대한 테스트 작성
HoyeongJeon May 21, 2025
eaaab57
refactor: ScheduleServiceTest 전부 MockK로 리팩토링
HoyeongJeon May 22, 2025
826d6bf
test: MockK로 변경
HoyeongJeon May 25, 2025
6c3a1f0
feat: 로그아웃 API 추가
HoyeongJeon May 25, 2025
3fe3efe
feat: 컨트롤러 ApiPath 추가
HoyeongJeon May 25, 2025
9f3126e
chore : 메인 화면 편지 리스트 가져오는거에서 스케줄 아이디 같이 보내주기 #132
kimyeoungrok May 25, 2025
2873b77
chore : 편지조회에서 내가 썼는지 여부도 같이 내주게 수정 #132
kimyeoungrok May 25, 2025
c2cb43c
refactor : [리뷰반영] 메서드 통일성 위해서 memberId대신 member엔티티 객체를 파라미터로 지정 #132
kimyeoungrok May 25, 2025
91e3dd8
feat: 탈퇴 시 연관 데이터 전부 삭제
HoyeongJeon May 25, 2025
9bbc187
fix: 중복 삭제 코드 제거 및 트랜잭션 순서 보장을 위한 코드 순서 변경
HoyeongJeon May 25, 2025
e43c024
feat: 파트너가 쓴 편지의 사진도 제거
HoyeongJeon May 25, 2025
906d1b9
feat : 입대일, 전역일 수정 시 Dday초기설정한거 다시 재업데이트 #134
kimyeoungrok May 25, 2025
b00eb4f
test : 기존 기념일 삭제하는 거에 대한 테스트 코드 추가 #134
kimyeoungrok May 25, 2025
ddc87ee
refactor : 메서드명 수정 및 트레일링 콤마 추가 #134
kimyeoungrok May 25, 2025
2f6f5d0
chore : Transactional 처리 #134
kimyeoungrok May 25, 2025
1ddd9fc
feat: 기념일 상세조회
HoyeongJeon May 25, 2025
a94ecf7
feat: 기념일 수정 dto 생성
HoyeongJeon May 25, 2025
1da5468
feat: 기념일 수정 메서드 생성
HoyeongJeon May 25, 2025
467e60c
feat: 기념일 수정 구현
HoyeongJeon May 25, 2025
92a76da
refactor: dto에 트레일링 콤마 추가
HoyeongJeon May 25, 2025
cda9833
fix : 디데이 정보 조회시 양수이면 +붙이고, 0이면 -DAY로 표기되게끔 수정 #140
kimyeoungrok May 25, 2025
cd0dff8
test : 응답객체가 달라짐에 따라 테스트코드 수정 #140
kimyeoungrok May 25, 2025
45a7aef
refactor : 관리의 편리함을 위해서(푸시알림 전송 시각바꿀 때 yml파일만 조정해서 reaction시키면 되게끔) 스…
kimyeoungrok May 25, 2025
92814e1
feat: 편지 업로드 시 사진 관련 수정
HoyeongJeon May 26, 2025
ce5d58b
feat : 디데이 알림에 리다이렉트 url추가 #149
kimyeoungrok May 27, 2025
25ccbc5
refactor : 변수명 CamelCase 스타일로 변경(코드 컨벤션 맞추기 위함) #149
kimyeoungrok May 28, 2025
52bdf38
refactor : 푸시 알림 리다이렉트 url 경로 정보 yml에 주입 #149
kimyeoungrok May 28, 2025
0f740de
Update deploy.yml
kimyeoungrok Jul 9, 2025
f466deb
Update docker-compose.yml
kimyeoungrok Jul 9, 2025
d5bc136
fix : compose수정(임시서버라 blue/green x)
kimyeoungrok Jul 9, 2025
9ff1498
Update deploy.yml
kimyeoungrok Jul 9, 2025
8dddbf2
Update deploy.yml
kimyeoungrok Jul 9, 2025
96095f3
chore: kotest 의존성 추가
HoyeongJeon Jun 9, 2025
b031e77
refactor: CommentService 와 ReadLetterFacade 리팩토링
HoyeongJeon Jun 9, 2025
dc6b723
refactor: test 를 위해 context 를 public 으로 변경
HoyeongJeon Jun 9, 2025
6e480e9
test: Comment 도메인 테스트 작성
HoyeongJeon Jun 9, 2025
7fa6b55
fix: 테스트 코드 사용 시 잘못된 verify 사용 수정
HoyeongJeon Jul 12, 2025
844d02c
feat: blue-green 배포 재개
kimyeoungrok Jul 16, 2025
13bdd51
docker-compose업데이트
kimyeoungrok Jul 16, 2025
c157f54
Update deploy.yml
kimyeoungrok Jul 16, 2025
46a2984
Update deploy.yml
kimyeoungrok Jul 16, 2025
982290b
feat: 컨트롤러 로깅 AOP 구현 #153
kimyeoungrok Jul 15, 2025
3853009
feat: 에러 핸들러 로깅 AOP 구현 #153
kimyeoungrok Jul 15, 2025
d4915ed
feat: 커플연동 부분에 로깅 추가 #153
kimyeoungrok Jul 15, 2025
e4a6655
fix : [리뷰반영] 로그레벨 조정 및 로그 컨텍스트 수정
kimyeoungrok Jul 17, 2025
b01087d
hotfix : 삭제할 쿠키 도메인 명시, secure설정 true로 변경 #157
kimyeoungrok Jul 19, 2025
17f742b
feat: 커플 탈퇴 시 커플 상태를 제거하는 메서드 엔티티와 서비스에 추가
HoyeongJeon Jul 19, 2025
48c9966
fix: 탈퇴 시 커플 메시지도 함께 삭제
HoyeongJeon Jul 19, 2025
e1cf20d
feat : findByCoupleIdAndYearAndMonth에 endDate필드 상대로도 검색하는 조건 추가 #161
kimyeoungrok Jul 21, 2025
e97a464
test : findByCoupleIdAndYearAndMonth에 endDate필드 상대로도 검색하는 조건 추가 -> 해당…
kimyeoungrok Jul 21, 2025
cc42484
test : endDate 기준으로 검색이 되는지 테스트하는 코드에 검증구문 수정(startDate또는 endDate가 8월…
kimyeoungrok Jul 21, 2025
aa1e367
fix : requestpart 명시적 바인딩 수행 #163
kimyeoungrok Jul 21, 2025
13bcbbf
fix : multipart일때는 controller에서 로깅을 수행 #163
kimyeoungrok Jul 21, 2025
aadb38b
chore : [리뷰반영] return구문 추가 #163
kimyeoungrok Jul 21, 2025
fa71ac0
feat : Loki, promtail, grafana 구축 #155
kimyeoungrok Jul 19, 2025
8cf466a
chore : [리뷰반영] loki버전 명시 #155
kimyeoungrok Aug 4, 2025
247da8e
chore : [리뷰반영] grafana 암호화 #155
kimyeoungrok Aug 4, 2025
b1c6d18
chore : [리뷰반영] grafana 암호화 #155
kimyeoungrok Aug 4, 2025
c128a7e
chore : [리뷰반영] 잘못된 경로 개선 및 경로 환경변수화 #155
kimyeoungrok Aug 4, 2025
fb2f06c
chore : [리뷰반영] loki버전 수정 #155
kimyeoungrok Aug 4, 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
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/issue_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: "\bIssue 생성 템플릿"
about: 해당 Issue 생성 템플릿을 통하여 Issue를 생성해주세요.
title: 'Feat: Issue 제목'
labels: ''
assignees: ''

---

### 📝 Description

- 구현할 내용 1
- 구현할 내용 2

---

### 📝 Todo

- [ ] 구현할 내용 1
- [ ] 구현할 내용 2
35 changes: 35 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
## ✅ PR 유형
어떤 변경 사항이 있었나요?

- [ ] 새로운 기능 추가
- [ ] 버그 수정
- [ ] 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
- [ ] 코드 리팩토링
- [ ] 주석 추가 및 수정
- [ ] 문서 수정
- [ ] 빌드 부분 혹은 패키지 매니저 수정
- [ ] 파일 혹은 폴더명 수정
- [ ] 파일 혹은 폴더 삭제

---

## 📝 작업 내용
이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)

- 작업한 내용 1
- 작업한 내용 2

---

## ✏️ 관련 이슈
본인이 작업한 내용이 어떤 Issue Number와 관련이 있는지만 작성해주세요

ex)
- Fixes : #00 (수정중인 이슈)
- Resolves : #100 (무슨 이슈를 해결했는지)
- Ref : #00 #01 (참고할 이슈)
- Related to : #00 #01 (해당 커밋과 관련)

---

## 🎸 기타 사항 or 추가 코멘트
114 changes: 114 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: Sarang Backend CI/CD

on:
push:
branches: [ main ]

jobs:
ci:
runs-on: ubuntu-latest

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

- name: Set up SSH key
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}

- name: Gradle 캐시 적용
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle

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

- name: YML 파일 세팅 및 fcm.json 주입
env:
APPLICATION_PROPERTIES: ${{ secrets.APPLICATION_PROPERTIES }}
TEST_APPLICATION_PROPERTIES: ${{ secrets.TEST_APPLICATION_PROPERTIES }}
ERROR_MESSAGES_PROPERTIES: ${{ secrets.ERROR_MESSAGES_PROPERTIES }}
FCM_JSON: ${{secrets.FCM_JSON}}
run: |
cd ./src
rm -rf main/resources/application.yml
mkdir -p test/resources
mkdir -p main/resources
mkdir -p main/resources/firebase
echo "$APPLICATION_PROPERTIES" > main/resources/application.yml
echo "$ERROR_MESSAGES_PROPERTIES" > main/resources/api-error-messages.properties
echo "$FCM_JSON" > main/resources/firebase/fcm.json
echo "$TEST_APPLICATION_PROPERTIES" > test/resources/application.yml

- name: gradlew 권한 부여
run: chmod +x gradlew

- name: 테스트 수행
run: ./gradlew test

- name: 테스트 리포트 아티팩트 업로드
if: failure()
uses: actions/upload-artifact@v4
with:
name: test-report
path: build/reports/tests/test

- name: 스프링부트 빌드
run: ./gradlew build

- name: Docker Buildx 세팅
uses: docker/setup-buildx-action@v3

- name: 도커 로그
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: 도커 이미지 빌드 후 푸시
if: success()
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/sarang-backend:${{ github.sha }}
platforms: linux/amd64,linux/arm64

- name: Docker Compose 파일 EC2 서버로 전송
run: scp -o StrictHostKeyChecking=no -P ${{ secrets.EC2_PORT }} docker-compose.yml ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:./

- name: Docker Compose Mornitoring 파일 EC2 서버로 전송
run: scp -o StrictHostKeyChecking=no -P ${{ secrets.EC2_PORT }} ./observability/docker-compose.monitoring.yml ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:~/observability/

- name: EC2 접속 후 이미지 다운로드 및 배포
if: success()
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
port: ${{ secrets.EC2_PORT }}
script: |
echo "DOCKER_CONTAINER_REGISTRY=${{ secrets.DOCKERHUB_USERNAME }}" > .env
echo "DOCKERHUB_PASSWORD=${{secrets.DOCKERHUB_PASSWORD}}" >> .env
echo "GITHUB_SHA=${{ github.sha }}" >> .env
echo "MINIO_ROOT_USER=${{secrets.MINIO_ROOT_USER}}" >> .env
echo "MINIO_ROOT_PASSWORD=${{secrets.MINIO_ROOT_PASSWORD}}" >> .env
echo "MINIO_SERVER_URL=${{secrets.MINIO_SERVER_URL}}" >> .env
echo "MINIO_BROWSER_REDIRECT_URL=${{secrets.MINIO_BROWSER_REDIRECT_URL}}" >> .env
echo "GF_SECURITY_ADMIN_PASSWORD=${{secrets.GF_SECURITY_ADMIN_PASSWORD}}" >> .env
echo "HOST_LOG_DIR=${{secrets.HOST_LOG_DIR}}" >> .env
chmod 600 .env
sudo chmod +x ./deploy.sh
./deploy.sh
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,4 @@ src/test/resources/application-test.yml
.env

api-error-messages.properties
.json
6 changes: 6 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM openjdk:17.0.1-jdk-slim
WORKDIR /app
COPY ./build/libs/backend-0.0.1-SNAPSHOT.jar /app/backend.jar
EXPOSE 80
ENTRYPOINT ["java"]
CMD ["-jar", "backend.jar"]
63 changes: 58 additions & 5 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
plugins {
kotlin("jvm") version "1.9.25"
kotlin("plugin.spring") version "1.9.25"
kotlin("plugin.jpa") version "1.9.25"
kotlin("jvm") version "2.1.0"
kotlin("plugin.spring") version "2.1.0"
kotlin("plugin.jpa") version "2.1.0"
kotlin("plugin.allopen") version "2.1.0"
kotlin("plugin.serialization") version "2.1.0"
id("org.springframework.boot") version "3.4.3"
id("io.spring.dependency-management") version "1.1.7"
}

group = "gomushin"
version = "0.0.1-SNAPSHOT"

val mockkVersion = "1.13.10"
val kotestVersion = "5.5.4"

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
Expand All @@ -32,18 +37,65 @@ dependencies {
// mysql
runtimeOnly("mysql:mysql-connector-java:8.0.33")

// h2
runtimeOnly("com.h2database:h2")

// swagger
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.1")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0")

// mail
implementation("org.springframework.boot:spring-boot-starter-mail")

// logging
implementation("io.github.microutils:kotlin-logging:2.0.11")

// cache
implementation("org.springframework.boot:spring-boot-starter-cache:3.3.10")
implementation("com.github.ben-manes.caffeine:caffeine:3.1.8")

// redis
implementation("org.springframework.boot:spring-boot-starter-data-redis:3.3.10")
implementation("org.redisson:redisson:3.44.0")

//security
implementation("org.springframework.boot:spring-boot-starter-security")

//jwt
implementation("io.jsonwebtoken:jjwt-api:0.12.6")
implementation("io.jsonwebtoken:jjwt-impl:0.12.6")
implementation("io.jsonwebtoken:jjwt-jackson:0.12.6")

// oauth2
implementation("org.springframework.boot:spring-boot-starter-oauth2-client")

// configuration processor
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")

// aws
implementation("software.amazon.awssdk:s3:2.30.38")

//okhttp3
implementation("com.squareup.okhttp3:okhttp:4.12.0")

//google auth
implementation("com.google.auth:google-auth-library-oauth2-http:1.33.1")

//coroutine
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")

//serializable
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1")

//logback-encoder
implementation ("net.logstash.logback:logstash-logback-encoder:7.4")

implementation("org.springframework.boot:spring-boot-starter-validation")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.mockito.kotlin:mockito-kotlin:5.0.0")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
testImplementation("io.mockk:mockk:${mockkVersion}")
testImplementation("io.kotest:kotest-runner-junit5:$kotestVersion")
testImplementation("io.kotest:kotest-assertions-core:$kotestVersion")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

Expand All @@ -55,8 +107,9 @@ kotlin {

allOpen {
annotation("jakarta.persistence.Entity")
annotation("jakarta.persistence.MappedSuperclass")
annotation("jakarta.persistence.Embeddable")
annotation("jakarta.persistence.MappedSuperclass")
annotation("org.springframework.stereotype.Component")
}

tasks.withType<Test> {
Expand Down
16 changes: 16 additions & 0 deletions docker-compose-minio.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
version: '3.8'
services:
minio:
image: quay.io/minio/minio
command: server /data --console-address ":9001"
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=12345678
volumes:
- minio_data:/data
ports:
- "9000:9000"
- "9001:9001"
restart: always
volumes:
minio_data:
83 changes: 83 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
version: "3.8"

services:
blue:
image: "${DOCKER_CONTAINER_REGISTRY}/sarang-backend:${GITHUB_SHA}"
container_name: sarang-backend-blue
environment:
TZ: Asia/Seoul
ports:
- '8080:8080'
volumes:
- ${HOST_LOG_DIR:-./logs}:/my/logs
depends_on:
- redis
- minio
networks:
- sarang-backend-network

green:
image: "${DOCKER_CONTAINER_REGISTRY}/sarang-backend:${GITHUB_SHA}"
container_name: sarang-backend-green
environment:
TZ: Asia/Seoul
ports:
- '8081:8080'
volumes:
- ${HOST_LOG_DIR:-./logs}:/my/logs
depends_on:
- redis
- minio
networks:
- sarang-backend-network

redis:
image: redis:6.0.9
container_name: redis
ports:
- '6379:6379'
volumes:
- redis-data:/data
networks:
- sarang-backend-network

minio:
image: quay.io/minio/minio
container_name: minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
MINIO_SERVER_URL: ${MINIO_SERVER_URL}
MINIO_BROWSER_REDIRECT_URL: ${MINIO_BROWSER_REDIRECT_URL}

volumes:
- minio_data:/data
ports:
- "9002:9000"
- "9003:9001"
networks:
- sarang-backend-network
restart: unless-stopped

mc:
image: minio/mc
depends_on:
- minio
entrypoint: >
/bin/sh -c "
until mc alias set myminio http://minio:9000 ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD}; do echo 'MinIO 아직 준비 안됨...'; sleep 5; done;
mc mb -p myminio/gomushin;
mc anonymous set download myminio/gomushin;
exit 0;
"
networks:
- sarang-backend-network

volumes:
redis-data:
minio_data:

networks:
sarang-backend-network:
driver: bridge
Loading