Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
391 commits
Select commit Hold shift + click to select a range
856df89
chore: 불필요한 주석 제거
yuseok0215 Jul 11, 2025
88653f7
feat: 루틴 등록 서비스 로직에 대한 테스트 코드 추가
yuseok0215 Jul 11, 2025
2369d7c
feat: 루틴 등록 API 스웨거 추가
yuseok0215 Jul 11, 2025
9eee645
refactor: DayOfWeek를 커스텀 enum 클래스 대신 Java에서 제공하는 enum으로 변경
yuseok0215 Jul 11, 2025
8f2507c
chore: 메스드 설명 주석 추가
yuseok0215 Jul 11, 2025
c93a283
feat: executionTime 스키마 필수 필드 설정
yuseok0215 Jul 11, 2025
b937354
chore: init sql 추가(추천루틴, 추천서브루틴, 온보딩, 케이스)
thisishwan2 Jul 12, 2025
da07851
feat: entity 추가(Onboarding, Case, RecommendedRoutine, RecommendedSubR…
thisishwan2 Jul 12, 2025
5597c33
fix: 공통 응답 처리 버그 수
thisishwan2 Jul 12, 2025
4ff1fb1
feat: 온보딩 스웨거 추가
thisishwan2 Jul 12, 2025
856d984
feat: http request login 추가
thisishwan2 Jul 12, 2025
db12d21
feat: 온보딩 로직 추
thisishwan2 Jul 12, 2025
479335f
fix: jpa ddl 시 enum -> varchar 로 수정
thisishwan2 Jul 12, 2025
b676d1b
feat: onboarding 추가
thisishwan2 Jul 12, 2025
46d03f4
feat: 서브모듈 업데이트
thisishwan2 Jul 12, 2025
3497176
fix: Onboarding 응답 response 수정
thisishwan2 Jul 12, 2025
1399841
refactor: global/utils 경로로 이동
yuseok0215 Jul 12, 2025
63b2b0e
remove: @Table 어노테이션 삭제
yuseok0215 Jul 12, 2025
9713368
remove: 불필요한 어노테이션 삭제
yuseok0215 Jul 12, 2025
e6b8124
refactor: 엔티티 생성 빌더 service 레이어로 이동
yuseok0215 Jul 12, 2025
cc338c0
chore: submodule 업데이트
yuseok0215 Jul 12, 2025
a7993c0
refactor: 이력을 관리하는 시간을 LocalDateTime으로 변경
yuseok0215 Jul 12, 2025
1f0fa1f
refactor: END_DATE_TIME 수정
yuseok0215 Jul 12, 2025
392febf
refactor: 반복요일 필드명 수정
yuseok0215 Jul 12, 2025
27c2d4a
Merge pull request #18 from YAPP-Github/feat/T3-85
yuseok0215 Jul 12, 2025
669bf66
refactor: 테스트 코드 수정
yuseok0215 Jul 12, 2025
227d2d2
Merge remote-tracking branch 'origin/develop' into feat/T3-84
thisishwan2 Jul 12, 2025
fa1052d
chore: pull request 템플릿 추가
yuseok0215 Jul 12, 2025
69fb347
feat: 온보딩시 추천 루틴에 대한 수정
thisishwan2 Jul 12, 2025
184f9ec
Merge pull request #19 from YAPP-Github/feat/T3-84
yuseok0215 Jul 12, 2025
1f75cd8
feat: 변경 루틴 엔티티 및 레포지토리 추
thisishwan2 Jul 12, 2025
dbac7ad
fix: BaseTimeEntity 추
thisishwan2 Jul 12, 2025
133ecf0
chore: init sql 수정
thisishwan2 Jul 12, 2025
f789581
feat: 온보딩 시 추천 루틴 등록 API 추
thisishwan2 Jul 12, 2025
7931474
fix: null return 대신 Object 리턴
thisishwan2 Jul 13, 2025
8b33480
remove: 불필요한 user 조회 로직 제거
thisishwan2 Jul 13, 2025
2bf4057
Merge pull request #20 from YAPP-Github/feat/T3-97
yuseok0215 Jul 13, 2025
780ad9a
feat: RegisterRoutineRequest, UpdateRoutineRequest의 공통 필드들을 하나의 메서드에서…
yuseok0215 Jul 14, 2025
93da866
feat: 루틴, 서브루틴 업데이트 메서드 추가
yuseok0215 Jul 14, 2025
9d4c8d7
feat: 객체 동등성 수행을 위해 equals, hashCode 메서드 오버라이드
yuseok0215 Jul 14, 2025
dab465a
feat: 루틴 및 서브루틴 업데이트 API 추가
yuseok0215 Jul 14, 2025
1826bb4
chore: develop 브랜치에서 변경사항 병합
yuseok0215 Jul 14, 2025
f69014a
feat: 루틴, 서브루틴 업데이트 메서드 추가
yuseok0215 Jul 14, 2025
0abdaa3
feat: 루틴 및 서브루틴 삭제 로직 추가
yuseok0215 Jul 14, 2025
a4a1157
feat: 루틴 및 서브루틴 삭제 API 추가
yuseok0215 Jul 14, 2025
bc4dfcf
feat: 이력 관리를 위해 복합키 객체 HistoryPk 추가
yuseok0215 Jul 15, 2025
5c30a08
feat: 추가된 복합키를 고려해서 루틴 관련 Request 객체 수정
yuseok0215 Jul 15, 2025
3cff98b
remove: LocalDateTime.now() 상수 삭제
yuseok0215 Jul 15, 2025
d9577cc
refactor: 추가된 복합키를 고려하여 루틴 및 서브루틴 업데이트 서비스 로직 수정
yuseok0215 Jul 15, 2025
6396b28
feat: 에러 관련 스웨거 스펙 추가
yuseok0215 Jul 15, 2025
7093da1
refactor: updateHistoryEndDate 메서드명 변경
yuseok0215 Jul 16, 2025
0891e84
refactor: 복합키 기반으로 루틴 삭제 메서드 수정
yuseok0215 Jul 16, 2025
761ddb0
refactor: 삭제 루틴 API 및 스웨거 설명 수정
yuseok0215 Jul 16, 2025
fd07520
refactor: User 엔티티 복합키로 변환
yuseok0215 Jul 16, 2025
70667f7
refactor: user 엔티티 복합키를 외래키로 설정
yuseok0215 Jul 16, 2025
e299ed4
refactor: changedRoutine 및 changedSubRoutine 테이블에 PK를 복합키로 수정
yuseok0215 Jul 16, 2025
30c274e
refactor: BaseTimeEntity 디렉토리 변경으로 인해 import 수정
yuseok0215 Jul 16, 2025
de47862
refactor: BaseTimeEntity 디렉토리 변경으로 인해 import 수정 (Case 클래스 추가)
yuseok0215 Jul 16, 2025
9741b40
refactor: User 복합키를 바탕으로 기존 JWT 생성 및 인증 단계 로직 수정
yuseok0215 Jul 16, 2025
f46a419
fix: 컬럼 관련 설정 오류 수정
yuseok0215 Jul 16, 2025
afcdb58
remove: 불필요한 주석 삭제
yuseok0215 Jul 16, 2025
d545d45
chore: 주석 추가
yuseok0215 Jul 16, 2025
4b3601d
refactor: 인증 과정에서 유저 식별시 이력 시작 및 종료일시를 고려하여 현재 활성 사용자인지 검증 후, 유저 조회하도…
yuseok0215 Jul 16, 2025
d6d4919
fix: Transactional 추가
yuseok0215 Jul 16, 2025
23456a3
refactor: historyStartDateTime를 포함하지 않는 쿼리 메서드로 변경
yuseok0215 Jul 16, 2025
780ddab
refactor: LocalDateTime.now() 의 변수명을 now로 변경
yuseok0215 Jul 16, 2025
7632a2f
Merge pull request #21 from YAPP-Github/feat/T3-87
yuseok0215 Jul 16, 2025
fe8ba95
fix: 테스트 코드 리팩터링 및 TODO 작성
yuseok0215 Jul 16, 2025
9cb094a
fix: Routine 테이블에서 User의 외래키를 삭제하고 userId 값으로 컬럼 값 수정
yuseok0215 Jul 17, 2025
408aa2d
feat: 서브루틴 테이블에 정렬순서(sortOrder) 필드 추가
yuseok0215 Jul 17, 2025
eb79922
refactor: 서브루틴에 업데이트 대한 케이스 수정
yuseok0215 Jul 17, 2025
1a1a3e6
refactor: Jwt AccessToken으로 로그인했을 때 해당 유저를 조회하는 쿼리 메서드 변경
yuseok0215 Jul 18, 2025
bb89cae
remove: 불필요한 로직 삭제
yuseok0215 Jul 18, 2025
fac0241
feat: Jwt 인증 관련 쿼리메서드 수정
yuseok0215 Jul 18, 2025
cc38d2f
refactor: Jwt 관련 처리 기능들을 관리하는 Util 클래스로 명명
yuseok0215 Jul 18, 2025
24f9eeb
refactor: 주석 변경
yuseok0215 Jul 18, 2025
ed161ec
refactor: 테스트 코드 주석 설정
yuseok0215 Jul 18, 2025
d5079e7
refactor: 루틴 업데이트 특정 케이스 수정
yuseok0215 Jul 18, 2025
c9002d8
Merge pull request #22 from YAPP-Github/fix/T3-87
yuseok0215 Jul 18, 2025
61aa1c4
[T3-98] 루틴 조회 API 수정 (#23)
thisishwan2 Jul 18, 2025
2ecd5a0
[T3-106] 감정구슬 테이블 구축, API 개발 (#24)
thisishwan2 Jul 20, 2025
a70c078
refactor: 스웨거 설정 보완
yuseok0215 Jul 21, 2025
871929a
feat: 루틴 완료여부 엔티티 클래스 추가
yuseok0215 Jul 21, 2025
d48f151
feat: 루틴 완료여부 갱신 api에 필요한 request 객체 추가
yuseok0215 Jul 21, 2025
db8c9d4
feat: 루틴 완료여부 갱신 서비스 로직 추가
yuseok0215 Jul 21, 2025
446fa95
feat: 루틴 완료여부 갱신 api 추가
yuseok0215 Jul 21, 2025
e7c0c60
feat: 루틴 삭제 시 deleteAt 설정 추가
yuseok0215 Jul 21, 2025
879e03c
refactor: request 객체에서 필드명 변경
yuseok0215 Jul 21, 2025
e252b95
feat: 주석 추가
yuseok0215 Jul 21, 2025
9b86c08
Merge pull request #25 from YAPP-Github/feat/T3-109
yuseok0215 Jul 21, 2025
8c4c2d0
feat: 선택한 요일(당일)만 루틴을 삭제하는 서비스 로직 추가
yuseok0215 Jul 22, 2025
ee5ad92
feat: 선택한 요일(당일)만 루틴을 삭제하는 API 추가
yuseok0215 Jul 22, 2025
e1ea9d3
refactor: reissue api response 수정
yuseok0215 Jul 22, 2025
b3182e2
fix: 스웨거 스펙 오류 수정
yuseok0215 Jul 22, 2025
8cd372b
refactor: JWT 인증 실패 시 response 형식 수정
yuseok0215 Jul 22, 2025
2332ca4
[T3-107] 홈 루틴 조회 API 수정 (#26)
thisishwan2 Jul 22, 2025
498019c
fix: 회원 탈퇴 로직에서 영속 상태로 설정
yuseok0215 Jul 22, 2025
2711780
chore: develop 브랜치 변경사항 병합
yuseok0215 Jul 22, 2025
9b53410
feat: 데이터 정합성을 위해 검증 로직 추가
yuseok0215 Jul 24, 2025
58a6659
Merge pull request #27 from YAPP-Github/feat/T3-111
yuseok0215 Jul 24, 2025
b4cb9e1
refactor: 루틴 검증 로직을 RoutineValidator 클래스로 책임 분리
yuseok0215 Jul 25, 2025
bec2c2b
refactor: 루틴 관련 엔티티 생성, 초기화에 대한 로직을 RoutineFactory 클래스로 책임을 분리
yuseok0215 Jul 25, 2025
23e227b
[T3-108] 추천 루틴 조회 API (#28)
thisishwan2 Jul 26, 2025
5361695
Feat/t3 108 (#29)
thisishwan2 Jul 26, 2025
68d4713
[T3-119] 홈 루틴 조회 응답값 추가 (#30)
thisishwan2 Jul 26, 2025
b6adc0f
Merge branch 'develop' into refactor/T3-117
yuseok0215 Jul 26, 2025
dad7f63
chore: release tag 생성 자동화
thisishwan2 Jul 26, 2025
43c1b6e
refactor: 홈 조회 로직에서 DTO로 변환하는 로직 RoutineMapper로 책임을 분리
yuseok0215 Jul 26, 2025
6bafa57
refactor: queryRoutines 메서드의 흐름을 정리하기 위해 메서드 분리
yuseok0215 Jul 26, 2025
26fee51
Merge branch 'develop' into refactor/T3-117
yuseok0215 Jul 26, 2025
15e5fb3
chore: prod 환경 oom 방지를 위한 메모리 증설
thisishwan2 Jul 26, 2025
5c32419
remove: 불필요한 어노테이션 삭제
yuseok0215 Jul 26, 2025
348ade0
fix: label 파싱 오류 수정
thisishwan2 Jul 26, 2025
fa60ecd
refactor: 감정 구슬 엔티티 생성 관련 로직을 EmotionMarbleFactory 클래스로 책임을 분리
yuseok0215 Jul 26, 2025
f760e54
Merge branch 'release' into develop
thisishwan2 Jul 26, 2025
a490e1f
Merge remote-tracking branch 'origin/release' into develop
thisishwan2 Jul 26, 2025
2a7d91c
submodule update
thisishwan2 Jul 26, 2025
2cb974b
refactor: EmotionMarbleService, OnboardingService에 쓰이는 공통 로직을 행위의 주체인…
yuseok0215 Jul 26, 2025
fa078b5
fix: enum 오타 수정
thisishwan2 Jul 26, 2025
de7fd1c
remove: 중복 클래스 삭제
yuseok0215 Jul 27, 2025
27b00a0
refactor: 변경 루틴 관련 엔티티 생성 로직을 ChangedRoutineFactory로 책임을 위임
yuseok0215 Jul 27, 2025
093af7d
chore: ChangedRoutineFactory 주석 추가
yuseok0215 Jul 27, 2025
94dc599
refactor: 공통 로직 메서드 분리
yuseok0215 Jul 27, 2025
f2b861f
refactor: DTO 관련 로직을 RecommendedRoutineMapper로 책임을 위임
yuseok0215 Jul 27, 2025
6b2ec90
refactor: 중복 클래스 제거 및 변수명 통일
yuseok0215 Jul 27, 2025
fbb10fe
Merge remote-tracking branch 'origin/release' into develop
thisishwan2 Jul 27, 2025
5a7f846
refactor: 메서드명 변경 및 주석의 의도 강화
yuseok0215 Jul 27, 2025
f16c9c0
Merge branch 'develop' into refactor/T3-117
yuseok0215 Jul 27, 2025
9610f36
refactor: RecommendedRoutine 관련 공통 로직을 Service가 아닌 Manager 클래스로 위임하여 …
yuseok0215 Jul 28, 2025
498b0f2
refactor: 생성, 변환과 같은 단순 책임의 모듈을 @Component로 변경
yuseok0215 Jul 28, 2025
b54d983
refactor: response 관련 변수명 수정
yuseok0215 Jul 28, 2025
7efe7b2
Merge pull request #33 from YAPP-Github/refactor/T3-117
yuseok0215 Jul 28, 2025
86d6c00
[T3-120] 추천 루틴 단건 조회 API (#36)
thisishwan2 Jul 28, 2025
bed67cb
fix: release 태그 생성 자동화 수정 (#37)
thisishwan2 Jul 28, 2025
b0c87f8
[T3-124] S3 설정 추가 및 감정구슬 전체 조회 수정 (#38)
thisishwan2 Jul 28, 2025
ff3b9cb
remove: 루틴 조회 시 불필요한 응답값 제거
thisishwan2 Jul 28, 2025
3dbaff5
Merge pull request #39 from YAPP-Github/feat/T3-126
yuseok0215 Jul 28, 2025
0f58fc5
feat: 유저 정보를 조회하는 API 추가
yuseok0215 Jul 29, 2025
451d06b
feat: 검색 날짜 기준으로 홈 화면의 감정 구슬 조회 API 추가
yuseok0215 Jul 29, 2025
ae5dc9e
refactor: DTO 변환 로직 Mapper 클래스로 이동
yuseok0215 Jul 29, 2025
38eb008
refactor: 업데이트를 위해 User를 영속 상태로 만드는 로직을 UserManager 클래스로 위임
yuseok0215 Jul 29, 2025
76f76cd
Merge pull request #40 from YAPP-Github/feat/T3-125
yuseok0215 Jul 29, 2025
879ca65
chore: 테스트코드 리팩터링 TODO 주석 추가
yuseok0215 Jul 29, 2025
a2f7afd
feat: 수정 페이지에서 사용되는 루틴 단건 조회 API 추가
yuseok0215 Jul 29, 2025
3136543
Merge pull request #41 from YAPP-Github/feat/T3-128
yuseok0215 Jul 29, 2025
cbf66bd
refactor: 감정 구슬 조회 API 수정
yuseok0215 Jul 30, 2025
2f7daee
fix: 서브 루틴 조회시 활성상태인 서브 루틴을 조회하도록 쿼리 메서드 수정
yuseok0215 Jul 30, 2025
83559a4
refactor: 유저 정보 조회 엔드포인트 변경
yuseok0215 Jul 30, 2025
9fea2bf
Merge pull request #42 from YAPP-Github/fix/T3-131
yuseok0215 Jul 30, 2025
1b16d8c
fix: onboarding insert sql 수정
thisishwan2 Jul 30, 2025
5a5c0e4
chore: 배포 Slack 알림 추가
thisishwan2 Jul 30, 2025
3a13a0d
chore: release drafter 실행 조건 수정
thisishwan2 Jul 30, 2025
70276e6
chore: 서브모듈 업데이트 및 data.sql 수정
thisishwan2 Jul 31, 2025
a4fd902
Merge remote-tracking branch 'origin/release' into develop
thisishwan2 Jul 31, 2025
03b408e
refactor: release drafter를 cicd 워크플로우 안으로 병합
thisishwan2 Jul 31, 2025
fc5cb0b
fix: onboarding 수행시 null 체크
thisishwan2 Jul 31, 2025
b68ad2b
fix: slack message parameter 수정(toJson 처리)
thisishwan2 Jul 31, 2025
5482765
fix: 반복일자에 null 대신 empty list 응답
thisishwan2 Jul 31, 2025
3953723
fix: payload json-safe 문자열로 수정
thisishwan2 Jul 31, 2025
3e3a32e
refactor: 유저 PK를 userId(Long)으로 변경
yuseok0215 Aug 4, 2025
dbcccdf
feat: RoutineV2 엔티티 생성
yuseok0215 Aug 4, 2025
d75b866
feat: 루틴 관련 엔티티 생성
yuseok0215 Aug 4, 2025
31acf3b
feat: 컨트롤러 로깅 인터셉터 생성
thisishwan2 Aug 4, 2025
58c0c9c
fix: 당일 삭제 시 변경된 루틴에 대한 분기처리가 없는 것을 보완
yuseok0215 Aug 5, 2025
e1f2692
Merge pull request #46 from YAPP-Github/fix/T3-143
yuseok0215 Aug 5, 2025
22ccb36
refactor: 컨버터 클래스명 변경 및 ObjectMapper 반영
yuseok0215 Aug 5, 2025
972b80f
chore: 필드 별 주석 추가
yuseok0215 Aug 5, 2025
fae2eaf
Merge branch 'develop' into refactor/T3-142
yuseok0215 Aug 5, 2025
970ef98
feat: Routine 스웨거 스펙에 에러코드 추가
yuseok0215 Aug 5, 2025
d1b5928
chore: 주석 추가
yuseok0215 Aug 5, 2025
28ccbe8
Merge pull request #45 from YAPP-Github/refactor/T3-142
yuseok0215 Aug 5, 2025
ca4892b
fix: 토큰 디코드 로직 수정
yuseok0215 Aug 5, 2025
e32a1c0
Merge remote-tracking branch 'origin/develop' into feat/T3-129
thisishwan2 Aug 5, 2025
ebfc285
feat: swagger url exclude
thisishwan2 Aug 5, 2025
fc9865b
feat: @SQLDelete, @Where를 이용한 soft delete 추가
thisishwan2 Aug 5, 2025
8dafb05
refactor: routineType을 nullable하게 서비스 로직 리팩터링
yuseok0215 Aug 6, 2025
16826e0
refactor: EmotionMarble PK 타입 변경
yuseok0215 Aug 6, 2025
13d0fe3
Merge pull request #47 from YAPP-Github/feat/T3-129
yuseok0215 Aug 6, 2025
a023f32
Merge pull request #48 from YAPP-Github/feat/T3-145
yuseok0215 Aug 6, 2025
629da53
refactor: reissue api response에 유저 role 추가
yuseok0215 Aug 6, 2025
cf3d21c
Merge branch 'develop' into refactor/T3-147
yuseok0215 Aug 6, 2025
ade58cd
Merge branch 'develop' into refactor/T3-148
yuseok0215 Aug 6, 2025
c2b0c11
fix: performedDate를 포함한 쿼리메서드로 수정 (#51)
yuseok0215 Aug 6, 2025
08d314f
refactor: routineType nullable하지 않도록 수정
yuseok0215 Aug 6, 2025
0979b26
Merge pull request #49 from YAPP-Github/refactor/T3-147
yuseok0215 Aug 6, 2025
c191f6e
chore: merge develop
yuseok0215 Aug 6, 2025
3c27f00
Merge pull request #50 from YAPP-Github/refactor/T3-148
yuseok0215 Aug 6, 2025
571afa4
[T3-140] DB Flyway 적용 (#52)
thisishwan2 Aug 7, 2025
05d7a17
chore: 서브 모듈 업데이트
thisishwan2 Aug 7, 2025
69fec77
Merge remote-tracking branch 'origin/develop' into develop
thisishwan2 Aug 7, 2025
78adf14
chore: DB v4 변경사항 추가
yuseok0215 Aug 8, 2025
d53e772
Merge pull request #53 from YAPP-Github/fix/T3-140
yuseok0215 Aug 8, 2025
96f68e0
chore: DB v4 변경사항 중 rename 추가
yuseok0215 Aug 8, 2025
3d95963
Merge pull request #54 from YAPP-Github/fix/T3-140
yuseok0215 Aug 8, 2025
d9cda0c
fix: 추천 루틴이 모두 보이도록 변경
yuseok0215 Aug 8, 2025
e9f9b62
fix: 당일 루틴 등록 추가
yuseok0215 Aug 8, 2025
8f7f521
Merge pull request #55 from YAPP-Github/fix/T3-151
yuseok0215 Aug 8, 2025
dc76e5b
[T3-152] 온보딩 등록 V2 API 및 유저 Role 추가 (#57)
thisishwan2 Aug 9, 2025
8995abb
refactor: 서브루틴의 완료 여부 초기화를 Factory에게 위임
yuseok0215 Aug 10, 2025
f0e27f7
feat: 루틴 정보 등록 및 루틴 시작, 종료일자 기반의 루틴 내역 생성
yuseok0215 Aug 10, 2025
aadd141
feat: 루틴 등록 API controller 추가
yuseok0215 Aug 10, 2025
7fffc1b
refactor: subRoutineCnt를 삭제함으로써 캡슐화, 데이터 정합성 강화
yuseok0215 Aug 10, 2025
fe731bd
chore: 주석 추가
yuseok0215 Aug 10, 2025
7c17a23
refactor: repeatDay에 대한 분기 처리를 if-else에서 삼항연산자로 변경
yuseok0215 Aug 10, 2025
385a54e
refactor: 서브 루틴 완료 여부 리스트 생성 책임을 Factory에서 Service 클래스로 위임
yuseok0215 Aug 10, 2025
fa3ddce
feat: RoutineInfoV2, RoutineV2 에 BaseTimeEntity 상속
yuseok0215 Aug 10, 2025
4869e50
Merge pull request #58 from YAPP-Github/feat/T3-150
yuseok0215 Aug 10, 2025
d0ae425
fix: v2 엔티티 컬럼 추가 및 role 인가 처리
thisishwan2 Aug 10, 2025
635be01
refactor: 기존 루틴 삭제 서비스 로직에 v2를 추가
yuseok0215 Aug 11, 2025
e565caf
refactor: controller 요청 타입 수정
yuseok0215 Aug 11, 2025
f7e2909
[T3-153] 루틴 단건, 다건 조회 API V2 (#59)
thisishwan2 Aug 11, 2025
659eb6b
fix: 엔티티 SQL 설정을 활용한 soft delete로 수정
yuseok0215 Aug 11, 2025
900155a
feat: 루틴 삭제 시 루틴 정보의 종료 일자를 당일로 수정
yuseok0215 Aug 11, 2025
fa26627
refactor: 루틴을 물리적 삭제로 jpql 변경
yuseok0215 Aug 11, 2025
1f067e9
chore: merge develop branch
yuseok0215 Aug 11, 2025
c49deee
feat: 삭제 여부 컬럼을 추가 및 루틴 삭제 로직 수정
yuseok0215 Aug 12, 2025
b7f852d
[T3-160] 감정 구슬 이미지 추가 및 조회 V2 API (#61)
thisishwan2 Aug 12, 2025
0dfa7ab
refactor: JPQL을 활용해 물리 삭제하도록 변경
yuseok0215 Aug 12, 2025
bdc67c9
Merge pull request #60 from YAPP-Github/refactor/T3-157
yuseok0215 Aug 13, 2025
967c008
feat: 오늘만 삭제 API 추가
yuseok0215 Aug 13, 2025
574504e
feat: 루틴 완료 여부 갱신 서비스 로직 추가
yuseok0215 Aug 13, 2025
f40d03c
feat: 루틴 완료 여부 갱신 API 추가
yuseok0215 Aug 13, 2025
ff8c74a
refactor: 스웨거 스펙 설명 수정
yuseok0215 Aug 13, 2025
1942bd5
Merge pull request #62 from YAPP-Github/feat/T3-164
yuseok0215 Aug 13, 2025
fc26b26
[T3-162] 홈 루틴 조회 시 일자별 루틴전체 완료 구분값 추가 (#63)
thisishwan2 Aug 14, 2025
9e8f359
[T3-166] 추천루틴 조회 응답값에 추천 루틴 타입 추가 및 루틴 등록시 요청값에 추천 루틴 추가 (#64)
thisishwan2 Aug 15, 2025
ef39668
feat: 루틴 수정 서비스 로직 추가
yuseok0215 Aug 16, 2025
3b32846
feat: 루틴 수정 API 추가
yuseok0215 Aug 16, 2025
ad2be7a
chore: merge develop
yuseok0215 Aug 16, 2025
a2eebc2
refactor: request prefix로 변환
yuseok0215 Aug 16, 2025
925ef8b
fix: 컴파일 에러 해결
yuseok0215 Aug 16, 2025
2d7a5b9
feat: API URL 변경 및 Deprecated 추가
yuseok0215 Aug 16, 2025
99bbd8b
Merge pull request #65 from YAPP-Github/feat/T3-163
yuseok0215 Aug 16, 2025
5501668
fix: request 타입 수정
yuseok0215 Aug 16, 2025
7d261c5
fix: @Transaction 어노테이션 누락 수정
thisishwan2 Aug 17, 2025
fccaac8
fix: url path 수정
thisishwan2 Aug 17, 2025
6929347
feat: 유저 온보딩 조회 API 추가
yuseok0215 Aug 17, 2025
998ce7a
Merge pull request #67 from YAPP-Github/feat/T3-172
yuseok0215 Aug 17, 2025
ab704a5
[T3-161] 추천 루틴 조회 캐시 적용 (#66)
thisishwan2 Aug 17, 2025
2226273
feat: 루틴 삭제 여부, 루틴 시작, 종료일자 응답값 추가 (#68)
thisishwan2 Aug 18, 2025
0f461d8
refactor: 유저 관련 enums를 user/domain 하위로 이동
yuseok0215 Aug 19, 2025
34c4f79
feat: 안드로이드 버전 확인 API 추가
yuseok0215 Aug 19, 2025
9970b40
feat: 버전 관련 API는 인증 없이 요청을 허용하도록 설정
yuseok0215 Aug 19, 2025
3f4ce7b
feat: android_app_version 엔티티 flyway 스크립트 추가
yuseok0215 Aug 19, 2025
ad84436
chore: 파일명 변경
yuseok0215 Aug 19, 2025
1ef981b
fix: 가장 최신 버전을 조회하는 쿼리 메서드로 변경
yuseok0215 Aug 19, 2025
c94c07c
Merge pull request #69 from YAPP-Github/feat/T3-175
yuseok0215 Aug 19, 2025
e67d9c3
[T3-176] UserOnboardingInfo 엔티티 생성 및 온보딩 등록 API V2 개발 (#70)
thisishwan2 Aug 19, 2025
2f434de
feat: /api/v2/onboardings 인가 설정
thisishwan2 Aug 20, 2025
8e5d0f6
Merge branch 'release' into develop
thisishwan2 Aug 21, 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
4 changes: 4 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ dependencies {
// flyway
implementation 'org.flywaydb:flyway-core'
implementation 'org.flywaydb:flyway-mysql'

// cache
implementation 'org.springframework.boot:spring-boot-starter-cache'

}

tasks.named('test') {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package bitnagil.bitnagil_backend.appVersion.Repository;

import org.springframework.data.jpa.repository.JpaRepository;

import bitnagil.bitnagil_backend.appVersion.domain.AndroidAppVersion;

public interface AndroidAppVersionRepository extends JpaRepository<AndroidAppVersion, Long> {

// major, minor가 가장 높은 AndroidAppVersion을 조회
AndroidAppVersion findFirstByOrderByMajorDescMinorDesc();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package bitnagil.bitnagil_backend.appVersion.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import bitnagil.bitnagil_backend.appVersion.controller.spec.AndroidAppVersionSpec;
import bitnagil.bitnagil_backend.appVersion.response.ForceUpdateResponse;
import bitnagil.bitnagil_backend.appVersion.service.AndroidAppVersionService;
import bitnagil.bitnagil_backend.global.response.CustomResponseDto;
import lombok.RequiredArgsConstructor;

@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/v1/version")
public class AndroidAppVersionController implements AndroidAppVersionSpec {

private final AndroidAppVersionService androidAppVersionService;

@GetMapping("/android/check")
public CustomResponseDto<ForceUpdateResponse> validateForceUpdateRequired(
@RequestParam int major,
@RequestParam int minor,
// 추후에 patch를 최소 버전 기준에 추가될 때 사용하기 위함
@RequestParam int patch) {

return CustomResponseDto.from(androidAppVersionService.validateForceUpdateRequired(major, minor));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package bitnagil.bitnagil_backend.appVersion.controller.spec;

import bitnagil.bitnagil_backend.appVersion.response.ForceUpdateResponse;
import bitnagil.bitnagil_backend.global.response.CustomResponseDto;
import bitnagil.bitnagil_backend.global.swagger.ApiTags;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;

@Tag(name = ApiTags.APP_VERSION)
public interface AndroidAppVersionSpec {

@Operation(
summary = "강제 업데이트 여부 검증",
description = "사용자의 앱 Major, Minor, Patch 버전을 받아 강제 업데이트 필요 여부를 판단합니다."
)
@Parameters({
@Parameter(name = "major", description = "앱 Major 버전", required = true, example = "1"),
@Parameter(name = "minor", description = "앱 Minor 버전", required = true, example = "5"),
@Parameter(name = "patch", description = "앱 Patch 버전 (추후 사용 예정)", required = true, example = "0")
})
CustomResponseDto<ForceUpdateResponse> validateForceUpdateRequired(int major, int minor, int patch);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package bitnagil.bitnagil_backend.appVersion.domain;

import bitnagil.bitnagil_backend.global.entity.BaseTimeEntity;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.validation.constraints.NotNull;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class AndroidAppVersion extends BaseTimeEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long versionId; // 버전 ID

@NotNull
private Integer major; // 버전의 가장 좌측 숫자

@NotNull
private Integer minor; // 버전의 가장 중앙 숫자

@NotNull
private Integer patch; // 버전의 가장 우측 숫자
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package bitnagil.bitnagil_backend.appVersion.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@AllArgsConstructor
@Builder
public class ForceUpdateResponse {
private boolean forceUpdateYn;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package bitnagil.bitnagil_backend.appVersion.service;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import bitnagil.bitnagil_backend.appVersion.Repository.AndroidAppVersionRepository;
import bitnagil.bitnagil_backend.appVersion.domain.AndroidAppVersion;
import bitnagil.bitnagil_backend.appVersion.response.ForceUpdateResponse;
import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class AndroidAppVersionService {

private final AndroidAppVersionRepository androidAppVersionRepository;

@Transactional(readOnly = true)
public ForceUpdateResponse validateForceUpdateRequired(Integer clientMajor, Integer clientMinor) {

AndroidAppVersion latestVersion = androidAppVersionRepository.findFirstByOrderByMajorDescMinorDesc();

// major 비교
if (clientMajor < latestVersion.getMajor()) {
// major 버전이 최소 요구 major 버전보다 낮으면 강제 업데이트 필요
return ForceUpdateResponse.builder()
.forceUpdateYn(true)
.build();
}

if (clientMajor.equals(latestVersion.getMajor())) {
// major 같으면 minor 비교
if (clientMinor < latestVersion.getMinor()) {
return ForceUpdateResponse.builder()
.forceUpdateYn(true)
.build();
}
}

// 강제 업데이트 필요하지 않은 경우
return ForceUpdateResponse.builder()
.forceUpdateYn(false)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.core.user.DefaultOAuth2User;

import bitnagil.bitnagil_backend.enums.Role;
import bitnagil.bitnagil_backend.global.entity.HistoryPk;
import bitnagil.bitnagil_backend.user.domain.enums.Role;
import lombok.Getter;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import java.util.HashMap;
import java.util.Map;

import bitnagil.bitnagil_backend.enums.SocialType;
import bitnagil.bitnagil_backend.user.domain.enums.SocialType;
import bitnagil.bitnagil_backend.global.errorcode.ErrorCode;
import bitnagil.bitnagil_backend.global.exception.CustomException;
import bitnagil.bitnagil_backend.user.domain.User;
import bitnagil.bitnagil_backend.enums.Role;
import bitnagil.bitnagil_backend.user.domain.enums.Role;
import lombok.Builder;
import lombok.Getter;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package bitnagil.bitnagil_backend.auth.kakao.service;

import java.time.LocalDateTime;
import java.util.Collections;
import java.util.Map;

Expand All @@ -17,7 +16,7 @@
import bitnagil.bitnagil_backend.global.errorcode.ErrorCode;
import bitnagil.bitnagil_backend.global.exception.CustomException;
import bitnagil.bitnagil_backend.user.repository.UserRepository;
import bitnagil.bitnagil_backend.enums.SocialType;
import bitnagil.bitnagil_backend.user.domain.enums.SocialType;
import bitnagil.bitnagil_backend.user.domain.User;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import bitnagil.bitnagil_backend.emotionMarble.controller.spec.EmotionMarbleSpec;
import bitnagil.bitnagil_backend.emotionMarble.request.RegisterEmotionMarbleRequest;
import bitnagil.bitnagil_backend.emotionMarble.response.EmotionMarbleTypeResponse;
import bitnagil.bitnagil_backend.emotionMarble.response.EmotionMarbleTypeResponseV2;
import bitnagil.bitnagil_backend.emotionMarble.response.RegisterEmotionMarbleResponse;
import bitnagil.bitnagil_backend.emotionMarble.service.EmotionMarbleService;
import bitnagil.bitnagil_backend.global.annotation.CurrentUser;
Expand All @@ -18,27 +19,38 @@

@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/v1/emotion-marbles")
@RequestMapping(value = "/api")
public class EmotionMarbleController implements EmotionMarbleSpec {
private final EmotionMarbleService emotionMarbleService;

// 감정구슬 조회 API
@GetMapping("")
@GetMapping("/v1/emotion-marbles")
public CustomResponseDto<List<EmotionMarbleTypeResponse>> getEmotionMarbles() {
return CustomResponseDto.from(emotionMarbleService.getEmotionMarbles());
}

// 감정구슬 등록 API
@PostMapping("")
@PostMapping("/v1/emotion-marbles")
public CustomResponseDto<RegisterEmotionMarbleResponse> registryEmotionMarble(
@CurrentUser User user,
@RequestBody RegisterEmotionMarbleRequest request) {

return CustomResponseDto.from(emotionMarbleService.registryEmotionMarble(user, request));
}

// todo: 당일의 유저가 선택한 감정 구슬 조회 API V2로 변환
@GetMapping("/v2/emotion-marbles/{searchDate}")
public CustomResponseDto<EmotionMarbleTypeResponseV2> getEmotionMarbleBySearchDateV2(
@CurrentUser User user,
@PathVariable LocalDate searchDate) {

return CustomResponseDto.from(emotionMarbleService.getEmotionMarbleBySearchDateV2(user, searchDate));
}

// 당일의 유저가 선택한 감정 구슬 조회 API
@GetMapping("/{searchDate}")
// TODO: v2로 전환 시 deprecated 처리
@Deprecated()
@GetMapping("/v1/emotion-marbles/{searchDate}")
public CustomResponseDto<EmotionMarbleTypeResponse> getEmotionMarbleBySearchDate(
@CurrentUser User user,
@PathVariable @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate searchDate) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import bitnagil.bitnagil_backend.emotionMarble.request.RegisterEmotionMarbleRequest;
import bitnagil.bitnagil_backend.emotionMarble.response.EmotionMarbleTypeResponse;
import bitnagil.bitnagil_backend.emotionMarble.response.EmotionMarbleTypeResponseV2;
import bitnagil.bitnagil_backend.emotionMarble.response.RegisterEmotionMarbleResponse;
import bitnagil.bitnagil_backend.global.annotation.CurrentUser;
import bitnagil.bitnagil_backend.global.errorcode.ErrorCode;
import bitnagil.bitnagil_backend.global.response.CustomResponseDto;
import bitnagil.bitnagil_backend.global.swagger.ApiErrorCodeExamples;
Expand All @@ -14,14 +14,11 @@
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.constraints.NotNull;

import java.time.LocalDate;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

@Tag(name = ApiTags.EMOTION_MARBLE)
public interface EmotionMarbleSpec {
Expand All @@ -34,6 +31,14 @@ public interface EmotionMarbleSpec {
public CustomResponseDto<RegisterEmotionMarbleResponse> registryEmotionMarble(
User user, RegisterEmotionMarbleRequest request);

@Operation(summary = "(V2) 검색 날짜 기준으로 대한 유저의 감정구슬 정보를 조회합니다.")
@Parameters({
@Parameter(name = "searchDate", description = "감정 구슬 조회 날짜", required = true, example = "2025-08-15",
in = ParameterIn.PATH)
})
CustomResponseDto<EmotionMarbleTypeResponseV2> getEmotionMarbleBySearchDateV2(
User user, @PathVariable LocalDate searchDate);

@Operation(summary = "검색 날짜 기준으로 대한 유저의 감정구슬 정보를 조회합니다.")
@Parameters({
@Parameter(name = "searchDate", description = "감정 구슬 조회 날짜", required = true, example = "2025-07-01",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,42 @@
@RequiredArgsConstructor
@Getter
public enum EmotionMarbleType implements EnumType {
CALM("평온함", 5L, "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_calm.png", "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_calm.png"),
VITALITY("활기참", 6L, "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_vitality.png", "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_vitality.png"),
LETHARGY("무기력함", 7L, "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_lethargy.png", "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_lethargy.png"),
ANXIETY("불안함", 8L, "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_anxiety.png", "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_anxiety.png"),
SATISFACTION("만족함", 9L, "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_satisfaction.png", "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_satisfaction.png"),
FATIGUE("피로함", 10L, "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_fatigue.png", "https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_fatigue.png")
CALM("평온함", 5L,
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_calm.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_calm_v2.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_calm.png",
"오늘은 평온하군요~"),
VITALITY("활기참", 6L,
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_vitality.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_vitality_v2.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_vitality.png",
"오늘은 활기차군요~"),
LETHARGY("무기력함", 7L,
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_lethargy.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_lethargy_v2.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_lethargy.png",
"오늘은 무기력한가요?"),
ANXIETY("불안함", 8L,
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_anxiety.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_anxiety_v2.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_anxiety.png",
"오늘은 불안한가요?"),
SATISFACTION("만족함", 9L,
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_satisfaction.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_satisfaction_v2.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_satisfaction.png",
"오늘은 만족하는군요~"),
FATIGUE("피로함", 10L,
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_fatigue.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/home_fatigue_v2.png",
"https://bitnagil-s3.s3.ap-northeast-2.amazonaws.com/marble_fatigue.png",
"오늘은 피곤한가요?"),
;

private final String description;
private final Long caseId;
private final String homeMarbleImageUrl;
private final String homeMarbleImageUrlV1;
private final String homeMarbleImageUrlV2;
private final String marbleImageUrl;
private final String homeMessage;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package bitnagil.bitnagil_backend.emotionMarble.response;

import bitnagil.bitnagil_backend.emotionMarble.domain.enums.EmotionMarbleType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@AllArgsConstructor
@Builder
@Schema(description = "감정 구슬 조회 DTO")
public class EmotionMarbleTypeResponseV2 {
@Schema(description = "감정 구슬 타입", example = "CALM")
private EmotionMarbleType emotionMarbleType;

@Schema(description = "감정 구슬 명칭", example = "평온함")
private String emotionMarbleName;

@Schema(description = "감정 구슬 이미지 URL (홈/구슬 선택 화면 이미지 다름)", example = "https://example.com/image/calm.png")
private String imageUrl;

@Schema(description = "감정 구슬 홈 화면 메시지", example = "오늘은 평온하군요~")
private String emotionMarbleHomeMessage;
}
Loading