Skip to content

Commit b42e567

Browse files
wjdwnsdnjs13LeeHanEumcoderabbitai[bot]Copilotits-sky
authored
deploy: 운영 배포 (#309)
* docs: 이슈 및 PR 템플릿 설정 (#1) * docs: 이슈 및 PR 템플릿 설정 * docs: PR 템플릿에 ETC 추가 * refactor: bug template 이모지 변경 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * refactor: refactor template 이모지 변경 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * docs: 주석처리 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: 공통 응답 모델 정의 및 Exception Handling 추가 (#3) * chore: 의존성 정리 및 kotlin-logging 의존성 추가 * feat: 공통 응답 모델 및 에러 응답 모델 정의 * feat: GlobalExceptionHandler 구현 * refactor: MethodArgumentNotValidException 엣지 케이스 대응 * refactor: 오버로딩을 통한 코드 중복 제거 * Feat : swagger 추가 (#5) * build : spring doc 의존성 추가 * feat : Swagger Config 추가 * refactor : 리뷰 반영(도메인에 속하지 않는 것은 common 내부로) * chore: compileKotlin CI 도입 및 Gradle 구성/빌드 캐시 적용 (#8) * refactor: gitignore에 github 디렉터리 제외 * refactor: gitignore에 github actions 스크립트 제외 * refactor: gitignore에 gradle-wrapper.properties 제외 * chore: compileKotlin 스크립트 작성 * chore: 빌드 실패 알림 스크립트 추가 * fix: compileKotlin으로 변경 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * feat: ktlint 및 spotless 적용 (#11) * feat: ktlint 및 spotless 플러그인 적용 (#10) * feat: pre-commit 훅 적용 및 스크립트 생성 (#10) * style: ktlint 코드 적용 (#10) * feat: Member 도메인 물리 모델링 및 JPA 엔티티 설계 (#16) * chore: lombok 의존성 제거 * feat: Member 도메인 모델링 * feat: Member 도메인 모델링 * feat: 도메인 모델 주석 추가 * feat: JPA 엔티티 모델 구현 * feat: lint 적용 * feat: 패키지 구조 명시를 위한 .gitkeep 파일 추가 * feat: JPA 엔티티 JoinColumn간 양방향 매핑 추가 * refactor: 식별자 private 접근제한자 제거 * feat: db 설정 추가 * fix: MemberCohort 참조 식별자 밸류 타입으로 변경 * fix: grantedAt CreationTimestamp 어노테이션으로 변경 * refactor: MutableList로 컬렉션 명시 * refactor: LocalDateTime 도메인 모델에서는 nullable 하게 변경 * feat: 동일성 판단 성능 향상을 위한 equals/hashCode 오버라이드 * refactor: ktlint 적용 * refactor: .gitkeep 추가 * refactor: 식별자 생성 정적팩토리메서드 호출하도록 변경 * refactor: domain 패키지 내에서 model과 port로 분리 * refactor: UUID에서 Auto Increment 방식으로 식별자 생성 방식 변경 * refactor: 도메인 모델에서 id null로 표시 * refactor: Auto Increment에 따른 엔티티 식별자 Long 타입으로 변경 * refactor: equals 및 hashCode 재구현 * refactor: 양방향 매핑에 따른 도메인 모델 연결 * refactor: Instant Epoch 사용으로 인한 타입 변경 * refactor: 애그리거트 간 식별자 참조 방식으로 변경하여 DDD 원칙 준수 * refactor: class로 변경 후 디버깅을 위해 toString 재구현 * refactor: klint 적용 * feat: 논의를 위한 이슈 템플릿 추가 (#24) * feat: 논의를 위한 이슈 템플릿 추가 * refactor: Suggestion으로 변경 * feat: Session 도메인 및 JPA 엔티티 설계/구현 (#21) * feat: Session 애그리거트 도메인 모델 구현 (#19) * feat: Session JPA 엔티티 구현 (#19) * feat: Session Infrastructure Layer 구현 (#19) * refactor: KtLint 설정 변경 (#19) * refactor: Session 애그리거트 Command 분리 및 생성자 접근제어자 변경 (#19) * style: 변경된 KtLint에 맞게 스타일 변경 (#19) * chore: .gitignore .env 추가 (#19) * refactor: 코드리뷰 반영 (#19) * chore: 세션 애그리거트 테이블명 변경 (#19) * chore: MySQLDialect 에러 로그에 따른 변경 (#19) * chore: Session 애그리거트 아이디 네이밍 변경 (#19) * refactor: Session 도메인 모델 cohortId 타입 value class로 변경 (#19) * refactor: Session Entity Session 변경에 맞게 수정 (#19) * refactor: AttendancePolicy 도메인모델 및 엔티티 class로 변경 (#19) * feat: Attendance 도메인 및 JPA 엔티티 설계/구현 (#26) * feat: Session 애그리거트 도메인 모델 구현 (#19) * feat: Session JPA 엔티티 구현 (#19) * refactor: KtLint 설정 변경 (#19) * refactor: Session 애그리거트 Command 분리 및 생성자 접근제어자 변경 (#19) * refactor: 코드리뷰 반영 (#19) * refactor: Session 도메인 모델 cohortId 타입 value class로 변경 (#19) * refactor: Session Entity Session 변경에 맞게 수정 (#19) * feat: Attendance 도메인 모델 구현 (#25) * feat: Attendance 생성 Command 구현 (#25) * feat: Attendance JPA 엔티티 구현 (#25) * feat: Attendance Persistence Layer 구현 (#25) * feat: 출석 정책 도메인 모델 toString 재정의 (#25) * refactor: Session equals 날짜까지 비교하도록 변경 (#25) * chore: AttendanceRepository @repository 어노테이션 누락된 것 정정 (#25) * refactor: 코드리뷰 반영 (#25) * fix: 충돌 해결 (#25) * feat: CI Gradle Wrapper 검증 스텝 변경 (#31) (#32) * feat 정산, 회식 도메인 모델링 및 JPA Entity 설계 (#27) * feat : 회식 Entity 추가 * feat : 회식 참여자 Entity 추가 * feat : 회식 영수증 Entity 추가 * feat : 회식 영수증 사진 Entity 추가 * feat : 정산 Entity 추가 * feat : 정산 계좌 Entity 추가 * feat : .gitkeep 추가 * refactor : 엔티티 양식 통일 * refactor : 정책에 따른 엔티티 수정 * feat : Bill 도메인 추가 * feat : BillAccount 도메인 추가 * feat : Gathering 도메인 추가 * feat : GatheringMember 도메인 추가 * feat : GatheringReceipt 도메인 추가 * feat : GatheringReceiptPhoto 도메인 추가 * feat : GatheringMemberRepository 추가 * feat : GatheringMemberRepository 추가 * feat : GatheringRepository 추가 * feat : ReceiptRepository 추가 * feat : ReceiptPhotoRepository 추가 * feat : BillAccountRepository 추가 * feat : BillRepository 추가 * refactor : 패키지 구조 통일 * feat : 정산 정책에 따른 상태 enum 추가 * refactor : 정산 정책에 따른 회식의 isCompleted 삭제 * refactor : 참석/불참석을 관리하기 위한 컬럼 추가 * refactor : 리뷰 반영 * refactor : 기획 변경에 따른 엔티티, 도메인 수정 * refactor : 정산 총 금액과 혼동 없게 네이밍 수정 * refactor : 상수 대문자 변환 * feat: Session 조회 및 출석 API 구현 (#29) * refactor: Session 도메인 필드 not null 변경 (#28) * chore: kotlin-jdsl dependency 설정 (#28) * feat: kotlin-jdsl singleQueryOrNull 확장함수 구현 (#28) * refactor: 출석 정책 변경으로 인한 도메인 모델 변경 (#28) * feat: 금주 세션 정보 조회 API 구현 (#28) * feat: 기수별 세션 전체 리스트 조회 API 구현 (#28) * feat: 세션 상세 조회 API 구현 (#28) * feat: SessionMapper 코드 리뷰 반영 (#28) * refactor: 세션 시작 시간 시스템 변수 관리 (#31) * refactor: 중복 코드 제거 (#28) * refactor: 시간 변환 TimeMapper로 책임 분리 (#28) * feat: 세션 API Swagger 연동 (#28) * chore: 세션 조회 서비스 명칭 변경 (#28) * refactor: 출석 도메인 출석 시간 추가 및 도메인 로직 추가 (#28) * feat: 세션 도메인에 출석 도메인 로직 추가 (#28) * feat: 세션 조회 서비스 명칭 변경 대응 (#28) * feat: 출석체크 API 구현 (#28) * feat: 출석 Swagger 구현 (#28) * feat: Spring Security 기반 카카오 OAuth 연동 (#30) * chore: Spring Security 의존성 추가 * feat: SecurityConfig 기본 필터 구성 * refactor: 조직 룰에 의거하여 테이블 명을 복수형으로 변경 * feat: OAuth 클라이언트 연동 Security 필터체인 구성 * feat: ktlint 적용 * fix: 코드 컨벤션 준수 * feat: CD 및 인프라 구축 (#38) * feat: 프로덕션 CD 스크립트 추가 (#37) * feat: 개발 CD 스크립트 추가 (#37) * feat: 운영 CD 스크립트 수정 (#37) * feat: Spring actuator 추가 (#37) * feat: Spring 프로필 별 yml 분리 (#37) * refactor: deploy 쉘 스크립트 이미지 태그 추가 (#37) * refactor: 코드 리뷰 반영 (#37) * refactor: CD deploy job에 jdk 설정 step 추가 (#37) * fix: 쉘 스크립트 실행 방식 수정 (#37) * fix: 배포 step에서 docker login 추가 (#37) * fix: 배포 환경에 맞게 설정 변경 (#37) * fix: 배포 환경에 맞게 설정 변경 (#37) * fix: 개발 서버 변경사항 반영 (#37) * remove: CD 성공 Slack 알림 제거 (#37) * chore: 코드 리뷰 반영 (#37) * chore: CD 스크립트 변경 (#37) * feat: SuccessHandler 및 토큰 발급 전략 구현 (#39) * feat: OAuthSuccessHandler 구현 * feat: 멤버 엔티티 저장 로직 구현 * feat: 로그인 api 구현 * refactor: 리다이렉트 경로 상수화 * refactor: 날짜 형식 Instant로 변경 * refactor: 도메인 타임스탬프 값 무시 문제 해결 * refactor: part NPE 방지 * refactor: equals 및 hashCode 추가 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * refactor: 컨벤션에 따라 블럭 제거 * refactor: 로그인 관련 설정 중복 제거 * refactor: 가독성을 위해 개행 추가 * feat: reissue api 구현 * fix: 컴파일 에러 픽스 인터페이스 구현 * feat: FE 로컬 도메인 추가 * refactor: Domain to Entity 정적팩토리메서드 from으로 메서드명 변경 * refactor: this 키워드 컨벤션 적용 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat : 회식 관련 Create 추가 (#43) * refactor : 코드 포맷 적용 * feat : 회식 참여 멤버, 조회한 멤버 구현 * refactor : 정책에 따른 도메인 변경 * refactor : enum 추가 리팩토링 * feat : 도메인 - 엔티티 변환 메서드 추가 * feat : 도메인 - 엔티티 변환 메서드 추가 * refactor : port로 변경 * feat : 회식 참여 멤버 Create * feat : 회식 Create * refactor : 코드 포맷 * feat : Receipt Create 추가 * refactor : 포맷 적용 * refactor : 코드 리뷰 반영 * refactor: CI/CD 실패 시 알림 채널 Slack에서 Discord로 변경 (#45) * refactor: 알림 채널 slack에서 discord로 변경 * refactor: pull request 타이틀 메시지에 포함 * refactor: 테스트 제거 및 웹훅 이미지 변경 * refactor: CD 알림 적용 * refactor: dev CD 알림 적용 * refactor: 마침표 추가 * refactor: actor 추가 * refactor: actor 추가 테스트 * refactor: cd에 actor 추가 * fix: cache 들여쓰기 해결 * feat: 출석시간 조회/수정 및 출석부 조회 API 구현 (#40) * feat: 세션 출석시간 조회 API 구현 (#35) * refactor: SessionController response 구성 형식 통일화 (#35) * refactor: AttendancePolicy VO로 copy 이용하기 위해 data class로 변경 (#35) * feat: 세션 출석시간 갱신 API 구현 (#35) * chore: 다음 세션 조회 API Swagger 응답 수정 (#35) * style: 코드 ktlint 적용 (#35) * chore: jOOQ 설정 추가 (#35) * remove: dev 파일 import 설정 제거 (#35) * feat: 세션별 출석 조회 API 구현 (#35) * feat: 세션별 출석 조회 API Swagger 추가 (#35) * refactor: 세션별 출석 조회 API에서 불필요한 컬럼 조회 삭제 (#35) * feat: 멤버별 출석 리스트 조회 API 구현 (#35) * feat: 빌드 시 jOOQ 빌드 제외 (#35) * chore: 메소드명 변경 (#35) * refactor: 리스트 페이지네이션 기능 확장함수로 분리 (#35) * chore: Swagger 이상 응답 수정 (#35) * fix: jOOQ 생성 파이프라인 수정 (#35) * style: ktlint 적용 (#35) * refactor: 출석기준 환경변수로 주입받도록 변경 (#35) * chore: source directory jOOQ에 맞게 수정 (#35) * chore: schema.sql 위치 변경 (#35) * feat: 로그아웃 및 탈퇴 API 구현 (#47) * feat: ktlint 적용 * feat: 로그아웃 핸들러 및 서비스 생성 * feat: 로그아웃 핸들러 구현 * feat: 로그인한 유저 정보 조회 구현 * feat: 로그아웃 api 구현 * feat: 스웨거 문서 작성 * feat: 멤버 탈퇴 및 탈퇴 시 로그인 불가 처리 * feat: 회원 탈퇴 시 인가 토큰 무효화 처리 * fix: responseCode 불일치 수정 * feat : 정산 추가 구현 및 API (#46) * refactor : AccountType 값 수정 * refactor : 영수증 정책 변경에 따른 도메인 수정 * refactor : 영수증 정책 변경에 따른 도메인 수정 * refactor : 회식 정책 변경에 따른 도메인 수정 * refactor : 정산 계좌 정책 변경에 따른 도메인 수정 * refactor : 정산 정책 변경에 따른 도메인 수정 * feat : 회식 참여자 추가 구현 * feat : 회식 Create 구현 (with. 영수증, 참여자 추가) * feat : 정산 Repository 구현 * feat : BillAccount Repository 구현 * feat : Create Code 추가 * feat : 정산 Repository 삭제 * feat : 정산 관련 Request 추가 * feat : 정산 관련 Response 추가 * feat : Create 응답 추가 * feat : 정산 관련 Mapper 추가 * feat : 정산 Create Service 구현 * feat : 정산 추가 API 구현 * feat : Bill 커스텀 Exception 추가 * refactor : Bill 커스텀 Exception으로 변경 * refactor : 필요없는 gitkeep 파일 제거 * refactor : 코드 리뷰 적용 * refactor : 코드 리뷰 적용 * refactor : 패키지 명 오타 수정 * Create copilot-instructions.md (#54) * refactor: CustomResponse 성공 응답 세분화 및 상태코드 적용 Aspect 추가 (#55) * feat: 201, 204 팩토리 응답 메서드 구현 * feat: 상태 코드 적용 aspect 추가 * fix: 응답 모델 변경으로 인한 컴파일 에러 픽스 * refactor: 어드민 권한 여부에 따라 리다이렉트 url 분기 처리 (#65) * refactor: 어드민 권한 여부에 따라 분기처리 * refactor: Security 필터에서 loginUrl 명시 제거 * feat: 세션 생성, 세션 및 사람별 출석 현황, 세션 주차 조회 API 구현 (#58) * feat: 세션 생성 API 구현 (#51) * feat: 최신 기수 아이디 조회 구현 (#51) * feat: 현재 기수 세션 주차 조회 API 구현 (#51) * feat: 출석 상태 변경 API 구현 (#51) * refactor: 세션 관련 조회 스펙 변경 (#51) * feat: 세션별 멤버 출석 상세 조회 API 구현 (#51) * chore: Response DTO 클래스명 변경 (#51) * refactor: 멤버 조회 API 필드 수정 * refactor: 멤버 상태 변경 및 비휴면화 API * feat: 사람별 출석 상세 조회 API 구현 (#51) * feat: API Swagger 추가 (#51) * chore: 출석 상태 변경 API 204 응답으로 변경 (#51) * chore: 시간 응답 일관화(yyyy-MM-dd HH:mm:ss) (#51) * refactor: 출석 쿼리 String 리터럴에서 Enum class로 변경 (#51) * chore: Swagger 응답 수정 (#51) * chore: Swagger 응답 수정 (#51) * feat: 나의 출석 상세 정보 조회 API 구현 (#51) * refactor: 출석 API 요청 구조 변경 (#51) * refactor: 출석 생성 팩토리 변경 (#51) * feat: 세션별 나의 출석 상세 조회 API 구현 (#51) * chore: Swagger 표현 수정 (#51) * refactor: 예외 클래스 일관화 (#51) * refactor: 유효하지 않은 ID PathVariable에 대한 예외 핸들링 (#51) * refactor: API 응답 변경 및 Swagger 수정 (#51) * refactor: String 리터럴 상수로 관리 변경 (#51) * chore: 클라이언트 COR 도메인 추가 (#51) * refactor: 클라이언트 사이드 시간처리 LocalDateTime으로 통일 (#51) * chore: jOOQ 타입 설정 추가 (#51) * fix: 다음 세션 조회 쿼리 수정 (#51) * fix: SecurityConfig CORS 수정 (#51) * fix: 미사용 API 삭제 (#51) --------- Co-authored-by: leehaneum <leehaneum160924@kyonggi.ac.kr> * Fix : Bill 순환 참조 문제 해결 (#66) * feat : 정산, 회식 예외 추가 * feat : 회식 조회 추가 * feat : 정산 - 회식 관계 수정(도메인 직접 참조 -> id만 참조) * refactor : 정산 상태 추가 * feat: 정산서 저장 로직 구현 및 엔티티 간 순환 참조 해결 --------- Co-authored-by: leehaneum <leehaneum160924@kyonggi.ac.kr> * feat: 정산서 생성 시 멤버 저장 하도록 변경 및 정산서 조회 구현 (#68) * refactor: 불필요한 메서드 삭제 * refactor: GatheringReceipt로 도메인 명 변경 * feat: 권한 목록 조회 API 구현 * feat: requestBody 구조 개선 및 스웨거 명시 * refactor: 스웨거 개발 서버 server url 변경 * feat: 회식 멤버 저장 로직 구현 * refactor: 영수증 사진 첨부 관련 필드 주석 처리 * refactor: hostUserId에 현재 로그인한 사용자를 주입받도록 변경 * refactor: 권한 이름 변경 * refactor: 애그리거트 하위 도메인이 애그리거트 루트를 가지지 않도록 변경 * feat: Bill 정산서 조회 API 구현 * refactor: 나의 세션 출석 상세 조회 API 수정 구현 (#70) * refactor: 나의 세션 출석 상세 조회 API 구현 (#69) * refactor: DTO 클래스 명칭 변경 (#69) * feat: 세션 생성 이벤트 발행 및 구독을 통한 출석부 생성 구현 (#72) * refactor: Attendance JPA Entity 컬럼명 지정 (#71) * refactor: 세션별 디퍼 출석 리스트 조회 API Path week으로 변경 (#71) * refactor: actuator 설정 변경 (#71) * refactor: jOOQ 설정 충돌 해결 (#71) * feat: 세션 생성 이벤트 발행하여 출석부 생성 구현 (#71) * feat: CodeRabbit 코드리뷰 반영 (#71) * chore: API 형식에 맞게 메소드명 변경 (#71) * chore: 불필요한 toList() 삭제 (#71) * refactor: 세션 생성 이벤트 수신 시 기수에 해당하는 멤버가 없으면 예외 발생시키도록 변경 (#71) * refactor: 사람별 출석 리스트 조회 API 쿼리 수정 (#75) * refactor: 사람별 출석 리스트 조회 API 쿼리 수정 (#74) * chore: build.gradle.kts 불필요한 라인 삭제 (#74) * refactor: 세션별 사람 출석 리스트 조회 엔드포인트 변경 (#74) * refactor: 세션 주차 조회 API 스펙 변경 (#74) * refactor: application.yml 값 변경 (#71) * refactor: Member 회원 가입 시 OAuth 연관 관계 정보 저장하도록 수정 (#77) * refactor: 예외 코드 변경 * refactor: status 가변으로 변경 * feat: Member 가입 시 OAUTH 제공자 저장하도록 수정 * refactor: 기본 권한 INACTIVE * refactor: 예외처리 코드 리뷰 반영 * refactor: id 관련 null 예외처리 리뷰 반영 * refactor: profile에 따른 status 값 분기 * refactor: 출석 페이지네이션 쿼리 조건 변경 및 출석일자 nullable 처리 (#79) * refactor: 페이지네이션 쿼리 조건 변경 및 nullable 핸들링 (#78) * refactor: attended_at nullable 처리 (#78) * refactor: fetch 컬럼 변경 (#78) * feat : 정산/정산 계좌 조회, 참여 인원 마감 구현 (#80) * feat : Bill Account 조회 구현 * refactor : 코드 포맷 적용 * refactor : 기본 정산 상태 변경(Pendig -> Open) * feat : 영수증 조회 구현 * feat : 회식 조회 구현 * feat : 정산 참여 마감 예외 추가 * feat : 정산 조회 구현 * feat : 정산 참여 마감 구현 * refactor : 충돌 해결 * .. * feat : 정산서 조회 구현 * feat : 회식 참여 멤버 조회 구현 * feat : 정산 목록 조회 구현 * refactor : 분할 금액/정산 상태 추가, 네이밍 수정 * refactor : 불필요한 로그 제거 * feat : 정산 관련 예외 추가 * feat : 정산 참여 마감 구현 * refactor : 코드 포맷 * refactor : ENUM값 넣도록 수정 * refactor : 커스텀 에러 분리 * refactor : 코드리뷰 반영 * fix : 영수증 pk 값으로 조회하는 메서드 버그 수정(gahteringId로 혼용 사용했던 버그 해결) * refactor : 코드리뷰 반영 * fix : 포트 수정 8088 -> 8080 * refactor : 애그리것 단위로 API 엔드포인트 수정(bill-account -> bills/accounts) * fix : ddl-auto 수정 * refactor : billAccountId 사용하도록 수정 * refactor : 양방향 참조 제거 * fix : 정산 조회 시 Gathering이 조회되지 않던 버그 수정 * refactor : 공통 응답 코드 컨벤션에 맞도록 수정 * refactor : 공통 응답 코드 컨벤션에 맞도록 수정 * refactor : 코드리뷰 반영(하위 에그리것 의존성 제거) * refactor : 코드리뷰 반영(값 검증 도메인 로직으로 분리) * refactor : 코드리뷰 반영 * refactor : 영수증, 정산서 Gathering을 통하도록 수정 * refactor : 영수증, 정산서 Gathering을 통하도록 수정 * refactor : 불필요한 로깅 제거 * feat: 정산서 조회 체크 및 회식 참여 관련 API 구현 (#84) * feat: 정산서 조회 처리 API 구현 * feat: 단일 회식 참여 추가 API 구현 * feat: 조건에 맞는 GatheringMember 없을 시 예외처리 * refactor: update null 처리 로직 변경 * refactor: 각 회식의 참석 여부를 받도록 변경 * feat: 정산 중 회식 참여 멤버 조회 API 구현 (#88) * fix : dev swagger cors 추가 (#92) * Feat : 정산 목록, 상세 조회 API 수정 (#90) * refactor : 정산을 참여 제출 여부 확인을 위한 컬럼 추가 * refactor : 정산 목록 조회 API 수정(초대된 멤버/답변한 멤버/확인한 멤버 수, billId/gatheringId 추가) * refactor : 네이밍 명확하도록 수정(group -> Authority) * refactor : id 값 long -> value Object * Feat : GatheringMemberId 필수 예외 추가 * refactor : 정산 초대 멤버 기본 값 설정 * refactor : 정산 상세 조회 API(답변 제출자와 총 인원수, 회식 pk 추가, 회식 참여 멤버 삭제) * refactor : 정산 목록 조회 API(기본 초대 목록 추가, 필드 순서 수정) * refactor : 정산 목록/상세 조회 응답 예시 최신화 * refactor : 정산서 조회 API 엔드포인트 수정(confirm -> check : 용어 정리) * refactor: 세션 및 개인 출석 리스트 조회 API 내 팀 조회 조건 추가 및 기타 수정 (#94) * refactor: 다음 세션 조회 API 조건 변경 (#89) * feat: 멤버별 출석부 조회 API 내 팀 조건 추가 (#89) * feat: 세션별 출석부 조회 API 내 팀 조건 추가 (#89) * chore: MemberServiceQuery 명칭 변경 (#89) * chore: Session 예외 코드 변경 (#89) * chore: Attendance 예외 코드 변경 (#89) * chore: MemberServiceQuery 명칭 변경 (#89) * chore: CohortNotFoundException 형식 통일 (#89) * chore: 빌드 에러 해결 (#89) * fix: 멤버 로그인 관련 1차 이슈 수정 (#96) * fix: 리다이렉트 시 권한 파라미터 제공 * fix: 어드민 client로 접근 시 client로 리다이렉션 * fix: client 붙여서 리다이렉트 대상 명시화 * fix: 닉네임 받아오도록 스코프 수정 * fix: 스프링 시큐리티 기본 페이지로 리다이렉트 되지 않도록 수정 * fix: 로컬 환경변수 분기 contains 로 변경 * feat: API 권한 기반 접근 제어 처리 (#100) * feat: role 조회해서 부여 * feat: SpringSecurityContextHolder 에 권한 저장 * feat: API PreAuthorize 처리 * feat: reissue API permitAll 처리 * refactor : client 서브도메인 변경으로 인한 리다이렉트 로직 수정 (#103) * refactor: core로 서브도메인에 따른 분기 수정 * feat: FE prod 도메인 허용 * feat: 스웨거 도메인 허용 * refactor: 운영계 CD 파이프라인 스크립트 변경 (#104) * refactor: 운영계 CD 파이프라인 스크립트 변경 (#101) * refactor: 코드리뷰 반영 (#101) * refactor: 출석 인정시간 변경 (#105) (#106) * Feat : 정산 참여 응답 상태 업데이트 구현, 정산 참여 API 리팩토링 (#99) * refactor : getGatheringMembersByGatheringIdAndMemberId 단일 멤버로 변경 * feat : 회식 참여 제출 API 구현 * refactor : 네이밍 명확화(confirmed -> submitted, 초대 응답 제출 여부 컬럼) * feat : 예외 추가 * refactor : 불필요한 request 제거 * refactor : 정산(각 회식) 참여 정책에 맞도록 수정(gathering -> bill, 각 회식 별로 참여 여부 결정) * refactor : 오타 수정(submmit -> submit) * refactor : 오타 수정 * refactor : API 설명 수정 * feat : 정산에 포함되지 않은 회식 예외 추가 * refactor : billId 사용해서 정산 포함 여부 검증 추가 * refactor : 코드 리뷰 적용(gathering Member 단수형 변경) * refactor : 코드 리뷰 적용(id 검증 책임 이관) * refactor : 코드 conflict 해결(회식 참여 API Bill로 이관) * refactor: 내 정보 조회 API에 권한 관련 필드 추가 (#109) * refactor: me에 권한 필드 추가 * refactor: 디버깅용 로그 추가 * refactor: 출석 시간 변경 (#108) * refactor: 출석 인정시간 변경 (#105) * refactor: 세션 생성 시 시간 로직 변경 (#111) * refactor: 내 정보 조회 API에서 파트 없을 경우 null로 명시 (#117) * refactor: 파트 없을 경우 null로 명시 * refactor: nullable api 문서에 명시 * refactor: 코드리뷰 반영 * feat: 멤버 승인 및 초기 데이터 주입 개발용 API 구현 (#115) * refactor: AuthorityType으로 타입 안정성 개선 * feat: 멤버 Activate 및 초기 데이터 주입 API 구현 * refactor: kotlin 문법 간결화 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * refactor: 코드리뷰 반영 네이밍 변경 * refactor: 타임존 변경 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * fix: 어드민이 core 접근 시 admin 도메인으로 리다이렉트 되는 문제 수정 (#114) * fix: Origin과 Referer 기반으로 도메인 추출 * fix: 요청 도메인 쿠키에 저장 * fix: dev 도메인 대응 * refactor: 디버깅 코드 제거 * refactor: 코드리뷰 반영 * refactor: 코드리뷰 반영 상수 처리 * refactor : 정산 조회 API '정산 중' 이후 상태에서 참석자 수 추가 (#120) * refactor : 정산 참여 멤버 추가 * refactor : 초대에 응답한 멤버 필드 이름 명확하도록 수정 * refactor : 정산 참여 멤버 계산 로직 수정 * refactor : 정산 API Request Schema 설명 추가 (#122) * refactor : 정산 상세 조회 API(분할된 금액 리턴) * refactor : Swagger Schema 추가 * refactor : authorityName 통일(운영진/디퍼 -> ORGNIZER/DEEPER) * refactor : list가 명확하게 보이도록 수정 * refactor : 코드리뷰 반영 * refactor : 코드리뷰 반영(Authority 기수 추가) * refactor : Schema 추가 * refactor : nullable 추가 * feat: Kotlin Null validation을 위한 HttpMessageNotReadableException 핸들링 (#125) * feat : 타입 미스매치 예외 추가 * feat : Json Parse 예외 추가 * feat : HttpMessageNotReadableException 핸들링 추가 * feat: Null validation을 위한 HttpMessageNotReadableException 핸들링 --------- Co-authored-by: junwon <wjdwnsdnjs13@naver.com> * refactor : splitAmount 불필요한 throw 제거 (#126) * feat : 이전에 제출한 정산 참여 내용 조회 API 추가 (#128) * refactor : Swagger Schema 오타 수정 * feat : 이전 제출한 정산 참여 응답 response 추가 * feat : 이전 제출한 정산 참여 응답 쿼리 모델 추가 * feat : 이전 제출한 정산 참여 응답 로직 구현 * feat : 이전 제출한 정산 참여 응답 API 구현 * refactor : 코드 포매팅 * refactor : response data class로 변경 * refactor : 다중 파라미터 of로 변경 * refactor : 코드 리뷰 반영(권한 수정) * refactor : 코드 리뷰 반영(queryModel Domian 계층으로 이동) * refactor: 출석 조퇴 상태 추가 (#131) * feat: Member 도메인 validation 적용 및 KDoc 기반 문서화 (#130) * feat: request validation 및 Open API Schema 명시 * feat: KDoc 문서화 * feat: 17기 추가 * fix: Valid 어노테이션 추가 * refactor: ID 명칭 식별자로 통일 * refactor : 참여 멤버 조회 리팩토링(Authority 다중 처리, 팀 번호 추가) (#136) * refactor : 팀 번호 추가 * refactor : Swagger Schema 추가 * refactor : 기수 정보가 다중일 때의 처리 추가(최신 기수 우선, ORG 우선) * refactor : API 엔드포인트 명확하도록 수정 * refactor : 코드 리뷰 반영(팀 미소속 구성원 누락 해결) * feat : 정산 참여 멤버들 응답 제출 여부 조회 API 구현 (#137) * refactor : gatheringMemeber DDL 변경 사항 적용 * feat : 정산 참여 제출한 멤버 리스트 조회(쿼리 모델 추가) * feat : 정산 참여 제출한 멤버 리스트 조회(Swagger Schema 추가) * feat : 정산 참여 제출한 멤버 리스트 조회(쿼리 조회 구현) * feat : 정산 참여 제출한 멤버 리스트 조회(API, Controller 구현) * refactor : 코드 리뷰 반영(팀 미소속 구성원 누락 해결) * refactor : 코드 리뷰 반영(Null처리) * refactor : 코드 리뷰 반영(Null처리) * refactor : 코드 리뷰 반영(예시 이름 명확하도록 수정) * refactor : 정산, 정산 상세 조회 API 스펙 변경 (#139) * refactor : 정산서 조회/참여/참여_제출 여부 추가 * feat : 정산 분할 금액 계산 로직 추가 * refactor : Bill 도메인에서 처리하도록 이관(totalAmount, SplitAmount) * refactor : bill null 여부 실드 패턴 적용 * refactor : gatheringMember 조회 시 모든 gathering에 대한 멤버 가져오도록 수정 * refactor : 정산 금액 로직 수정(조회하는 유저만 조회하도록 수정) * refactor : Bill 도메인에서 처리하도록 이관(초대된 멤버, 제출한 멤버, 열람한 멤버 수 계산) * refactor : Bill 도메인 static으로 처리되도록 변경 * refactor : Bill이 하나도 없을 경우 예외가 발생하지 않도록 수정 * refactor : 사용하지 않는 함수 제거 * refactor : 필요 없는 null 체크 제거 * hotfix: gathering_members schema 변경에 따른 필드명 수정 반영 (#144) * chore: CustomReponse 타입 OpenApi Schema로 변환하도록 ModelConverter 구현 (#142) - Add SwaggerConvertersConfig to register a custom OpenAPI converter - Implement ResponseModelConverter to auto-generate schemas for common responses * refactor: 도메인 서비스 간 의존 관계 추상화 및 모델 패키지 구조 개선 (#146) * refactor: command, query 모델 패키지 구조 개선 * refactor: 도메인간 서비스 의존관계 UseCase로 추상화 * refactor: 오탈자 수정 * feat : GatheringMember 정산 상태 변경 API 구현 (#147) * refactor : 스키마 변경(is_checked -> is_viewed, memo 추가) * feat : 입금 상태 변경 단수 Request 추가 * feat : 입금 상태 변경 복수 Request 추가 * feat : memberId와 gatheringId 목록으로 gatheringMember 조회 추가 * feat : 입금 상태 변경 구현 * feat : 입금 상태 변경 API 구현 * refactor : 코드 포메팅 * refactor : 코드 리뷰 반영 * feat : Swagger Schema 추가 * refactor : 코드 리뷰 반영(Swagger Content 제거) * refactor : memo와 isInvitationSubmitted 도 업데이트 하도록 수정 * refactor : valid 추가 * refactor : nullable 추가 * refactor : valid 추가 * fix : API-Controller 어노테이션 일치화 (#151) * fix : Member Authority 리스트 가져와서 정제하도록 변경 (#153) * fix : Member Authority 리스트 가져와서 정제하도록 변경 * refactor : 코드 리뷰 반영(불필요한 var 사용 제거) * fix : 정산 상세 조회 joinMemberCount 버그 수정 (#154) * refactor : 변수명 통일(초대된 그룹 일련번호) * fix : 회식 참여 멤버 수 오류 수정 * refactor : 사용되지 않는 gatheringMember 제거 * feat : 정산에 참여하지 않는 멤버 예외 추가 * refactor : 올바른 예외 코드 사용하도록 변경 * refactor : gathering에 포함되지 않는 멤버가 있을 경우 예외 처리 * refactor : 오타 수정 * refactor : GatheringId null 검증 추가 * refactor : splitamount isjoined nullable 처리 (#156) * refactor : splitAmount Nullable로 변경 * refactor : 조회하는 멤버의 정산 분할 금액 추가 * refactor : isJoined Nullable 로 변경 * refactor : nullable 오타 수정 * refactor : 사용하지 않는 메서드 제거 * refactor : 코드 리뷰 반영(가독성 증가) * refactor : 코드 리뷰 반영 * refactor : Bill 목록 조회 splitAmount nullable처리 * refactor: Kotlin JDSL 쿼리 타 ORM으로 이관 후 의존성 제거 (#158) * refactor: Member 도메인 단순 조회 쿼리 JPA로 마이그레이션 * refactor: 연관 객체의 hard delete를 막기 위해 orphanRemoval 옵션 제거 * refactor: 멤버 탈퇴 시 도메인 규칙에 따른 Soft Delete 적용 및 연관 관계 삭제 또는 Soft Delete 처리 * refactor: SoftDelete 된 멤버 검증 쿼리 JPA로 마이그레이션 * refactor: Session Kotlin JDSL 쿼리 JPA로 마이그레이션 * refactor: RefreshToken Kotlin JDSL 쿼리 JPA로 마이그레이션 * refactor: Attendance Kotlin JDSL 쿼리 JPA로 마이그레이션 * refactor: Authority Kotlin JDSL 쿼리 JPA로 마이그레이션 * refactor: Bill Gathering Kotlin JDSL 쿼리 JPA로 마이그레이션 * refactor: GatheringMember 일부 컬럼에 대해 jOOQ로 업데이트 처리 * refactor: Gathering 익셉션 책임 분리 * refactor: Bill 익셉션 책임 분리 * refactor: GatheringMember isSubmitted 컬럼에 대해 jOOQ로 업데이트 처리 * refactor: GatheringReceipt jOOQ로 업데이트 처리 * refactor: Cohort 조회 쿼리 JPA로 마이그레이션 * refactor: GatheringMember에서 kotlin jdsl 의존성 제거 * chore: 프로젝트에서 Kotlin JDSL 의존성 제거 * refactor: Bill save 시 ID 반환하도록 변경 * refactor: Bill 도메인 모델이 application 익셉션에 의존하지 않도록 변경 * refactor: 메서드 시그니처 오류 수정 * refactor: command 모델 계층 의존성 수정 * refactor: where절 오류 수정 * refactor: 포맷팅 * refactor: 메서드 시그니처 오류 수정 * refactor: splitAmount 쿼리 반환 값 리턴 시 0 안들어가게 nullable하도록 수정 * refactor: null 체크로 이미 삭제된 레코드의 무결성 보장 * refactor: jOOQ 쿼리 인자로 도메인 모델 사용하도록 변경 * refactor: 출석 세션별/사람별 정렬 조건 추가 및 paginate 정렬 제거 (#160) * refactor: 정렬 조건 추가 및 paginate 정렬 제거 * refactor: 정렬 3차 키 추가 * refactor: 도메인 모델에서 애플리케이션 종속 Exception 의존성 제거 (#166) * refactor: 식별자 value class에서 양수 검증 익셉션 제거 * refactor: Bill 도메인 익셉션 제거 * refactor: Gathering 도메인 모델에서 익셉션 제거 및 규칙 단순화 * refactor: GatheringMember 도메인 모델에서 익셉션 제거 * refactor: GatheringReceipt 도메인 모델에서 익셉션 제거 * refactor: Session 도메인 모델에서 익셉션 제거 * refactor: 코드리뷰 반영 및 메서드 문서화 * refactor: apply 스코프 관련 리뷰 반영 * refactor: 주요 메서드 문서화 * refactor: 세션 메서드 문서화 * refactor: sealed class 네이밍 코드리뷰 반영 * refactor: validation 메서드 분리 리뷰 반영 * refactor: 명시적 타입 선언 리뷰 반영 * refactor: cohort 관련 익셉션 계층 이동 * refactor: 도메인 규칙 이름 변경 * feat: 사람별 출석 리스트 상세 조회 조퇴 상태 값 포함 (#168) * feat: 나의 출석 리스트 상세 조회 조퇴 상태값 포함 * feat: swagger docs 반영 * feat: Composite 패턴 기반 리다이렉트 구조 재설계 (#170) * feat: 로컬환경 리다이렉트 처리 및 핸들러 분리 * feat: composition 패턴 적용하여 리디렉션 분기 처리 * feat: memberId NPE 방지 * feat: 최우선 하위 권한 when절에서 직접 매핑 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: 권한 타입 enum으로 변경 * feat: CompositeRedirectStrategy @component 제거 및 RedirectConfig에서 Bean 반환하도록 수정 * feat: 도메인 판별 시 startsWith 사용 * feat: swagger 리다이렉트 판별식 조건 수정 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * feat: swagger 리다이렉트 조건식 수정 * feat: fallback 프로파일 지정 * docs: 리다이렉트 전략 관련 KDoc 주석 작성 * feat: 프론트엔드 로컬 구동 도메인 CORS * feat: CORS 코드 분리 * feat: profile 못찾을 때 예외처리 리뷰 반영 * feat: 요청 url 추출 시점 변경 리뷰 반영 --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * refactor: 모놀리식에서 멀티모듈 아키텍처로 전환 (#171) * refactor: 모놀리식에서 멀티모듈로 마이그레이션 * refactor: 엔티티 모듈 분리 * refactor: 멀티모듈 컴파일 * refactor: 멀티모듈 애플리케이션 빌드 * refactor: jooq 쿼리 생성 문법 오류 픽스 * refactor: JpaConfig 분리 * refactor: 불필요한 의존성 정리 * refactor: 각 묘듈 ktlint 적용 * refactor: ktlint pre-commit 적용 * refactor: 포맷팅 적용 * refactor: 포맷팅 적용 * refactor: 포맷팅 적용 확인 * refactor: gradle version catalog를 이용한 버전 중앙 집중화 * refactor: jdbc 로깅 레벨 원상복구 * refactor: where 절 조건 수정 * refactor: jib 설정 추가 * fix: 개발 도메인 변경으로 인한 리다이렉트 경로 반영 (#175) * fix: 개발 도메인 변경으로 인한 리다이렉트 경로 반영 * fix: 변경 도메인 CORS 픽스 * feat(auth): cors 허용 도메인에서 불필요한 도메인 제거 * feat(auth): cors 허용 중복 도메인 제거 * feat: pc뷰 전환으로 인한 session 및 attendance API 스펙 변경 (#177) * feat(session): /v1/session/next에 attandanceCode 필드 추가 * feat(attendance): 출석 조회 시 totalElements 함께 반환 * docs(session): attendanceCode 필드 문서 정리 * fix: CustomResponseStatusAspect Pointcut 올바르게 조정 (#184) * feat: pc뷰 전환으로 인한 출석 API 추가/변경 (#185) * feat(attendance): 여러 명 출석 일괄 변경 API * feat(session): 출석 주차 날짜 정보 추가 * feat(session): 스웨거 문서 반영 * feat(attendance): 엔티티에 updated_at 컬럼 추가 * feat(attendance): 세션별 개인 출석 상세 조회 시 출석 수정된 시간 함께 반환 * feat(attendance): 출석 필터링 조회 Member 타입에 team 식별 필터링 필드 추가 * feat(attendance): onlyMyTeam 이 false인데 본인 team을 쿼리 파라미터로 넘기는 경우 대응 * feat(attendance): updateInBatch에서 updated_at 컬럼 반영하도록 수정 * feat(session): AttendancePolicy 컬럼 추가 및 세션 추가 API 구현 * feat(session): 세션 수정 API 구현 및 수정 이벤트 발행 * feat(session): 스웨거 필드 수정 * feat(session): 이벤트 발행 순서 변경 * feat(session): AttendanceStatusBulkUpdateRequest 바디 validation 추가 * style(formatting): ktlint 코드 포맷팅 적용 * feat(attendance): jOOQ batchUpdate() 사용, N+1 쿼리 방지 * style(formatting): 포맷팅 적용 * feat: 세션 시간 수정 이벤트 리스너 핸들링 및 기타 출석 API 리스폰스 변경 (#187) * feat(session): 모델에 deleted_at 컬럼 추가 * feat(attendance): 모델에 deleted_at 컬럼 추가 * feat(session): session 삭제 구현 및 attendance 배치 삭제 이벤트 핸들링 * feat(session): session 조회 시 소프트 딜리트 된 항목 필터링 * feat(attendance): attendance 조회 시 소프트 딜리트 된 항목 필터링 * feat(attendance): 출석 시간 수정 따른 출석 상태 변경 * feat(session): 출석 시간 수정 시 출석 변경 대상자 조회 * feat(session): 리스폰스 응답 필드명 수정 * feat(session): 조회 API에 클라이언트 요청 필드 추가 * feat(session): sessionId, eventName 필드 값 수정 * feat(session): 스웨거 문서 반영 * feat(session): 서비스 메서드 명 변경 * hotfix(member): 멤버 조회 시 팀 숫자 함께 반환하도록 변경 * hotfix(attendance): 세션별 출석 조회 페이지 기반 페이징 처리로 변경 * hotfix(attendance): 멤버별 출석 조회 페이지 기반 페이징 처리로 변경 * refactor(session): 세션 이벤트 리스너에 예외 추적 가능하도록 로그 작성 * refactor(session): 세션 시간 수정 시 출석 상태 변경 대상 조회 성능 개선 및 N+1 문제 해결 * refactor(session): api 문서 수정 * refactor(session): OpenAPI 문서의 필드명 업데이트 * refactor(session): 메서드명 명시적으로 변경 * refactor(member): 소프트 딜리트 필터링 * refactor(session): 멤버 찾지 못한 경우 익셉션 * refactor(session): 소프트 딜리트 된 멤버 때문에 익셉션 발생하지 않게 필터링 * refactor(style): 포맷팅 적용 * refactor: 세션 생성 API 200으로 내려주기, cohort가 잘못 들어가는 문제 해결 (#191) * refactor(session): 세션 생성 API 200으로 내려주기, cohort가 잘못 들어가는 문제 해결 * refactor: 204로 내려주는 api 200으로 변경 * refactor: api 명세 불일치 해결 * refactor: 역할 권한 기반 접근 제어 시스템으로 전환 (#195) * feat(authorization): RBAC1 도메인 객체 모델링 * feat(authorization): 도메인 객체 주석 작성 * feat(authorization): RBAC JPA 엔티티 모델링 * feat: RoleHierarchy 제거 * feat: 중간 테이블 모델링 * feat: Authority에서 Role, Permission으로 이관 * feat: Controller 권한 처리 * feat: 코드 리뷰 반영 * feat: 코드 리뷰 반영 * feat: 코드 리뷰 반영 * feat: 컨벤션 일치 * feat: 메서드 이름 수정 * feat: 화이트리스트 멤버 체크하고 승인하는 API 추가 * feat: compile error 픽스 * feat: 코드래빗 리뷰 반영 * feat: 리뷰 반영 * feat: 코드래빗 리뷰 반영 * feat: 회원 가입 시 사소한 오류 수정 * feat: 역할 권한 관련 초기화 데이터 * feat: DML 수정 * docs: 프로젝트 리드미 작성 (#193) * docs: 프로젝트 리드미 작성 * docs: 너비 오류 수정 * docs: 팀 문화 추가 Co-authored-by: junwon <67488973+wjdwnsdnjs13@users.noreply.github.com> * docs: 팀 문화 섹션 추가 --------- Co-authored-by: junwon <67488973+wjdwnsdnjs13@users.noreply.github.com> * Fix: local admin redirect 오류 수정 (#199) * fix : admin redirect 주소 변경 * refactor : ktlint 적용 * refactor : redirect 순서 변경(운영진 우선) * fix: 화이트리스트 체크 안된 멤버 auth 페이지로 리다이렉트 되도록 변경 (#196) * fix: 리디렉션 로깅 * fix: 화이트리스트 체크 안한 멤버 리다이렉트 * feat: 현재 기수 조회 api 추가 * feat: 임시 로깅 제거 * feat: 리턴 타입 명시 * feat: 멤버 상태 필드 추가 --------- Co-authored-by: junwon <wjdwnsdnjs13@naver.com> * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV (#203) refactor CD flow and parameter * [fix] : apple secret key dev action dir path error fix (#204) * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * feat/user/#198-apple (#205) * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * reafactor: resource style to string of authentication p8 file * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: distribute environment apple client parameter * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * * [refactor]: change rediredt url to uri * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * [refactor]: change rediredt url to uri * [refactor]: request form post url style for apple oAuth2.0 * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * [refactor]: change rediredt url to uri * [refactor]: request form post url style * [feat]: to allow CSRF policy targetting only Apple (SameSite, Secure Option) (#210) * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * [refactor]: change rediredt url to uri * [refactor]: request form post url style * [feat]: to allow CSRF policy targetting only Apple (SameSite, Secure Option) * [feat]: to restrict only api request to prevent apple api stateless (#211) * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * [refactor]: change rediredt url to uri * [refactor]: request form post url style * [feat]: to allow CSRF policy targetting only Apple (SameSite, Secure Option) * [feat]: to restrict only api request to prevent apple api stateless oauth * [feat]: compositeRedirectStrategy to handle implementation (#212) * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * [refactor]: change rediredt url to uri * [refactor]: request form post url style * [feat]: to allow CSRF policy targetting only Apple (SameSite, Secure Option) * [feat]: to restrict only api request to prevent apple api stateless oauth * [feat]: compositeRedirectStrategy to handle implementation of failure handling * [feat]: registration from post to client_secret_post (#213) * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * [refactor]: change rediredt url to uri * [refactor]: request form post url style * [feat]: to allow CSRF policy targetting only Apple (SameSite, Secure Option) * [feat]: to restrict only api request to prevent apple api stateless oauth * [feat]: compositeRedirectStrategy to handle implementation of failure handling * [feat]: registration from post to client_secret_post * [feat]: OAuth2User add id_token of validator * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * [refactor]: change rediredt url to uri * [refactor]: request form post url style * [feat]: to allow CSRF policy targetting only Apple (SameSite, Secure Option) * [feat]: to restrict only api request to prevent apple api stateless oauth * [feat]: compositeRedirectStrategy to handle implementation of failure handling * [feat]: registration from post to client_secret_post * [feat]: OAuth2User add id_token * [fix]: redirect bug fix(rest controller -> controller) * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * [refactor]: change rediredt url to uri * [refactor]: request form post url style * [feat]: to allow CSRF policy targetting only Apple (SameSite, Secure Option) * [feat]: to restrict only api request to prevent apple api stateless oauth * [feat]: compositeRedirectStrategy to handle implementation of failure handling * [feat]: registration from post to client_secret_post * [feat]: OAuth2User add id_token * [fix]: redirect bug fix(rest controller -> controller) * [fix]: register and after validate memberOAuth (#216) * [feat]: apple oauth 2.0 login / DRAFT_FOR_DEV refactor CD flow and parameter * fix: resolve Jib build failure caused by secrets path mismatch - Align GitHub Actions secret generation path with Jib extraDirectories configuration - Ensure Apple AuthKey.p8 is correctly included in container image - Fix CI failure after Apple OAuth feature merge * fix: resolve Jib build failure caused by build workspace directory mismatch * refactor: change Resource File of p8 authentication file to String type * [refactor]: change apple client parameter style * [refactor]: distribute environment apple client parameter * [refactor]: change rediredt url to uri * [refactor]: request form post url style * [feat]: to allow CSRF policy targetting only Apple (SameSite, Secure Option) * [feat]: to restrict only api request to prevent apple api stateless oauth * [feat]: compositeRedirectStrategy to handle implementation of failure handling * [feat]: registration from post to client_secret_post * [feat]: OAuth2User add id_token * [fix]: redirect bug fix(rest controller -> controller) * [fix]: register and after validate memberOAuth * Revert "[fix]: register and after validate memberOAuth" (#217) * Revert "[fix]: register and after validate memberOAuth (#216)" This reverts commit 31d435c. * [fix]: register and after validate memberOAuth * [fix]: refactor spring security endpoint (#218) * Revert "[fix]: register and after validate memberOAuth (#216)" This reverts commit 31d435c. * [fix]: register and after validate memberOAuth * [fix]: refactor spring security endpoint * [fix]: inject refresh token configuration change (#219) * Revert "[fix]: register and after validate memberOAuth (#216)" This reverts commit 31d435c. * [fix]: register and after validate memberOAuth * [fix]: refactor spring security endpoint * [fix]: inject refresh token configuration change * [fix]: cookie invalid Checking * Revert "[fix]: register and after validate memberOAuth (#216)" This reverts commit 31d435c. * [fix]: register and after validate memberOAuth * [fix]: refactor spring security endpoint * [fix]: inject refresh token configuration change * [fix]: cookie invalid Checking * [fix]: rollback cookie logic * Revert "[fix]: register and after validate memberOAuth (#216)" This reverts commit 31d435c. * [fix]: register and after validate memberOAuth * [fix]: refactor spring security endpoint * [fix]: inject refresh token configuration change * [fix]: cookie invalid Checking * [fix]: rollback cookie logic * [fix]: rollback cookie logic * Revert "[fix]: register and after validate memberOAuth (#216)" This reverts commit 31d435c. * [fix]: register and after validate memberOAuth * [fix]: refactor spring security endpoint * [fix]: inject refresh token configuration change * [fix]: cookie invalid Checking * [fix]: rollback cookie logic * [fix]: rollback cookie logic * Revert 216 feat/user/#198 apple (#223) * Revert "[fix]: register and after validate memberOAuth (#216)" This reverts commit 31d435c. * [fix]: register and after validate memberOAuth * [fix]: refactor spring security endpoint * [fix]: inject refresh token configuration change * [fix]: cookie invalid Checking * [fix]: rollback cookie logic * [fix]: rollback cookie logic * [fix]: rollback cookie logic * Revert "[fix]: register and after validate memberOAuth (#216)" This reverts commit 31d435c. * [fix]: register and after validate memberOAuth * [fix]: refactor spring security endpoint * [fix]: inject refresh token configuration change * [fix]: cookie invalid Checking * [fix]: rollback cookie logic * [fix]: rollback cookie logic * [fix]: resolve type mismatch (#225) * [fix]: oAuth cookie policy changing * [fix]: resolve type mismatch * [fix]: oAuth cookie policy changing * [fix]: oAuth logging level and forward redirect configuration * [fix]: resolve type mismatch * [fix]: oAuth cookie policy changing * [fix]: oAuth logging level and forward redirect configuration * [fix]: deprecated secret folder during build * [reafctor]: memberOAuth null checking (#230) * [refactor]: add cd apple parameter pipeline of prod * [refactor] : Apple OAuth redirect in production, and invisible Swagger of @controller annotation (#233) * [fix]: fix apple oauth 500 error and swagger controller visibility This commit fixes two critical issues: 1. Apple OAuth 2.0 500 Error Fix (#232): - Separated Apple OAuth configuration from base application.yml - Added Apple client configuration to profile-specific YAML files - LOCAL_APPLE_* variables for local environment - DEV_APPLE_* variables for dev environment - PROD_APPLE_* variables for prod environment - This resolves the YAML merge conflict that caused 500 errors 2. Swagger @controller Visibility Fix: - Changed GET redirect endpoints to return RedirectView instead of String - Added @responsebody to GET endpoints (/login/kakao, /login/apple) - Added @operation annotations with proper documentation - All MemberLoginController endpoints now visible in Swagger UI - Maintains proper OAuth2 redirect functionality (302 responses) Changes: - MemberLoginController: Use RedirectView for OAuth2 redirects - SwaggerConfig: Updated documentation - YAML configs: Separated Apple OAuth2 configuration by profile Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * [document]: claude automation guide document --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> * fix]: fix cookie domain validation and CORS for OAuth2 login endpoints (#234) * [fix]: fix apple oauth 500 error and swagger controller visibility This commit fixes two critical issues: 1. Apple OAuth 2.0 500 Error Fix (#232): - Separated Apple OAuth configuration from base application.yml - Added Apple client configuration to profile-specific YAML files - LOCAL_APPLE_* variables for local environment - DEV_APPLE_* variables for dev environment - PROD_APPLE_* variables for prod environment - This resolves the YAML merge conflict that caused 500 errors 2. Swagger @controller Visibility Fix: - Changed GET redirect endpoints to return RedirectView instead of String - Added @responsebody to GET endpoints (/login/kakao, /login/apple) - Added @operation annotations with proper documentation - All MemberLoginController endpoints now visible in Swagger UI - Maintains proper OAuth2 redirect functionality (302 responses) Changes: - MemberLoginController: Use RedirectView for OAuth2 redirects - SwaggerConfig: Updated documentation - YAML configs: Separated Apple OAuth2 configuration by profile Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * [document]: claude automation guide document * [fix]: fix cookie domain validation and CORS for OAuth2 login endpoints This commit fixes the cookie domain validation error that prevented refreshToken from being saved after Apple OAuth2 login. **Changes**: 1. **CORS Configuration** (CorsRegistryConfig.kt) - Extended CORS support to /login/**, /v1/**, and /oauth2/** endpoints - Previously only /api/** had CORS, excluding login endpoints - allowCredentials=true was already configured correctly 2. **Cookie Creation** (MemberLoginController.kt) - createCookie() now sets domain from configuration (except localhost) - Sets secure flag from configuration (true for dev/prod, false for local) - Sets SameSite=None for cross-subdomain cookie access - Cookies now work correctly across subdomains 3. **Documentation** - Created research document for cookie domain validation issue - Created implementation plan for the fix - Added .env.example with proper cookie domain format - Updated AUTOMATION_GUIDE.md with cookie configuration section **Root Cause**: COOKIE_DOMAIN environment variable had leading dot (.depromeet.shop) which violated RFC6265, causing Tomcat's Rfc6265CookieProcessor to reject cookies. **Solution**: Code changes complete. Next step: Update CI/CD environment variables to remove leading dot from COOKIE_DOMAIN: - Dev: COOKIE_DOMAIN=depromeet.shop (not .depromeet.shop) - Prod: COOKIE_DOMAIN=depromeet.com (not .depromeet.com) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> * [fix]: rollback of login redirect response * [fix]: fix apple oauth 500 error and swagger controller visibility This commit fixes two critical issues: 1. Apple OAuth 2.0 500 Error Fix (#232): - Separated Apple OAuth configuration from base application.yml - Added Apple client configuration to profile-specific YAML files - LOCAL_APPLE_* variables for local environment - DEV_APPLE_* variables for dev environment - PROD_APPLE_* variables for prod environment - This resolves the YAML merge conflict that caused 500 errors 2. Swagger @controller Visibility Fix: - Changed GET redirect endpoints to return RedirectView instead of String - Added @responsebody to GET endpoints (/login/kakao, /login/apple) - Added @operation annotations with proper documentation - All MemberLoginController endpoints now visible in Swagger UI - Maintains proper OAuth2 redirect functionality (302 responses) Changes: - MemberLoginController: Use RedirectView for OAuth2 redirects - SwaggerConfig: Updated documentation - YAML configs: Separated Apple OAuth2 configuration by profile Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * [document]: claude automation guide document * [fix]: fix cookie domain validation and CORS for OAuth2 login endpoints This commit fixes the cookie domain validation error that prevented refreshToken from being saved after Apple OAuth2 login. **Changes**: 1. **CORS Configuration** (CorsRegistryConfig.kt) - Extended CORS support to /login/**, /v1/**, and /oauth2/** endpoints - Previously only /api/** had CORS, excluding login endpoints - allowCredentials=true was already configured correctly 2. **Cookie Creation** (MemberLoginController.kt) - createCookie() now sets domain from configuration (except localhost) - Sets secure flag from configuration (true for dev/prod, false for local) - Sets SameSite=None for cross-subdomain cookie access - Cookies now work correctly across subdomains 3. **Documentation** - Created research document for cookie domain validation issue - Created implementation plan for the fix - Added .env.example with proper cookie domain format - Updated AUTOMATION_GUIDE.md with cookie configuration section **Root Cause**: COOKIE_DOMAIN environment variable had leading dot (.depromeet.shop) which violated RFC6265, causing Tomcat's Rfc6265CookieProcessor to reject cookies. **Solution**: Code changes complete. Next step: Update CI/CD environment variables to remove leading dot from COOKIE_DOMAIN: - Dev: COOKIE_DOMAIN=depromeet.shop (not .depromeet.shop) - Prod: COOKIE_DOMAIN=depromeet.com (not .depromeet.com) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> * [fix]: add OAuth2 provider origins to CORS allowed origins Critical fix: Apple OAuth2 callback was failing with 403 Forbidden because the request comes from https://appleid.apple.com origin, which was not in the CORS allowed origins list. **Root Cause**: When Apple redirects back with the authorization code using response_mode=form_post, the browser submits a POST request from https://appleid.apple.com to the callback endpoint. This request was being rejected by Spring Security CORS because Apple's origin was not in the allowedOrigins list. **Changes**: - Added https://appleid.apple.com to CORS allowed origins - Added https://kauth.kakao.com to CORS allowed origins - Added comments…
1 parent 56e08f1 commit b42e567

File tree

70 files changed

+1565
-125
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+1565
-125
lines changed

application/src/main/kotlin/core/application/announcement/application/service/AnnouncementQueryService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import core.application.announcement.presentation.response.AnnouncementDetailRes
55
import core.application.announcement.presentation.response.AnnouncementListResponse
66
import core.application.announcement.presentation.response.AnnouncementViewMemberListItemResponse
77
import core.application.announcement.presentation.response.AnnouncementViewMemberListResponse
8-
import core.application.session.presentation.mapper.TimeMapper.instantToLocalDateTime
8+
import core.application.common.converter.TimeMapper.instantToLocalDateTime
99
import core.domain.announcement.aggregate.Announcement
1010
import core.domain.announcement.aggregate.AnnouncementRead
1111
import core.domain.announcement.port.inbound.AnnouncementQueryUseCase

application/src/main/kotlin/core/application/announcement/presentation/controller/AnnouncementCommandController.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package core.application.announcement.presentation.controller
33
import core.application.announcement.application.service.AnnouncementCommandService
44
import core.application.announcement.presentation.request.CreateAnnouncementRequest
55
import core.application.announcement.presentation.request.UpdateSubmitStatusRequest
6+
import core.application.common.converter.TimeMapper.localDateTimeToInstant
67
import core.application.common.exception.CustomResponse
78
import core.application.security.annotation.CurrentMemberId
89
import core.domain.announcement.vo.AnnouncementId
@@ -33,9 +34,9 @@ class AnnouncementCommandController(
3334
title = createAnnouncementRequest.title,
3435
content = createAnnouncementRequest.content,
3536
submitLink = createAnnouncementRequest.submitLink,
36-
startAt = createAnnouncementRequest.startAt,
37-
dueAt = createAnnouncementRequest.dueAt,
38-
scheduledAt = createAnnouncementRequest.scheduledAt,
37+
startAt = localDateTimeToInstant(createAnnouncementRequest.startAt),
38+
dueAt = localDateTimeToInstant(createAnnouncementRequest.dueAt),
39+
scheduledAt = localDateTimeToInstant(createAnnouncementRequest.scheduledAt),
3940
shouldSendNotification = createAnnouncementRequest.shouldSendNotification,
4041
)
4142
return CustomResponse.ok()

application/src/main/kotlin/core/application/announcement/presentation/request/CreateAnnouncementRequest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ package core.application.announcement.presentation.request
22

33
import core.domain.announcement.enums.AnnouncementType
44
import core.domain.announcement.enums.SubmitType
5-
import java.time.Instant
5+
import java.time.LocalDateTime
66

77
data class CreateAnnouncementRequest(
88
val announcementType: AnnouncementType,
99
val submitType: SubmitType,
1010
val title: String,
1111
val content: String?,
1212
val submitLink: String?,
13-
val startAt: Instant,
14-
val dueAt: Instant,
15-
val scheduledAt: Instant?,
13+
val startAt: LocalDateTime,
14+
val dueAt: LocalDateTime,
15+
val scheduledAt: LocalDateTime?,
1616
val shouldSendNotification: Boolean,
1717
)

application/src/main/kotlin/core/application/announcement/presentation/response/AnnouncementListItemResponse.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package core.application.announcement.presentation.response
22

3-
import core.application.session.presentation.mapper.TimeMapper.instantToLocalDateTime
3+
import core.application.common.converter.TimeMapper.instantToLocalDateTime
44
import core.domain.announcement.enums.AnnouncementType
55
import core.domain.announcement.enums.SubmitType
66
import core.domain.announcement.port.outbound.query.AnnouncementListItemQueryModel
@@ -16,15 +16,14 @@ data class AnnouncementListItemResponse(
1616
val readMemberCount: Int,
1717
) {
1818
companion object {
19-
fun from(queryModel: AnnouncementListItemQueryModel): AnnouncementListItemResponse {
20-
return AnnouncementListItemResponse(
19+
fun from(queryModel: AnnouncementListItemQueryModel): AnnouncementListItemResponse =
20+
AnnouncementListItemResponse(
2121
announcementId = queryModel.announcementId,
2222
title = queryModel.title,
2323
announcementType = queryModel.announcementType,
2424
assignmentType = queryModel.submitType,
2525
createdAt = instantToLocalDateTime(queryModel.createdAt),
2626
readMemberCount = queryModel.readMemberCount ?: 0,
2727
)
28-
}
2928
}
3029
}

application/src/main/kotlin/core/application/attendance/presentation/mapper/AttendanceMapper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import core.application.attendance.presentation.response.MyDetailAttendanceInfo
1414
import core.application.attendance.presentation.response.MyDetailAttendanceSessionInfo
1515
import core.application.attendance.presentation.response.MyTeamFilterResponse
1616
import core.application.attendance.presentation.response.SessionAttendancesResponse
17-
import core.application.session.presentation.mapper.TimeMapper.instantToLocalDateTime
17+
import core.application.common.converter.TimeMapper.instantToLocalDateTime
1818
import core.domain.attendance.enums.AttendanceStatus
1919
import core.domain.attendance.port.inbound.command.AttendanceStatusUpdateCommand
2020
import core.domain.attendance.port.outbound.query.MemberDetailAttendanceQueryModel

application/src/main/kotlin/core/application/bill/presentation/mapper/BillMapper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import core.application.bill.presentation.response.BillDetailResponse
77
import core.application.bill.presentation.response.BillListDetailResponse
88
import core.application.bill.presentation.response.BillListGatheringDetailResponse
99
import core.application.bill.presentation.response.BillListResponse
10+
import core.application.common.converter.TimeMapper.instantToLocalDateTime
1011
import core.application.gathering.application.exception.GatheringNotFoundException
1112
import core.application.gathering.application.exception.GatheringRequiredException
1213
import core.application.gathering.application.exception.receipt.GatheringReceiptNotFoundException
13-
import core.application.session.presentation.mapper.TimeMapper.instantToLocalDateTime
1414
import core.domain.bill.aggregate.Bill
1515
import core.domain.gathering.aggregate.Gathering
1616
import core.domain.gathering.port.inbound.GatheringQueryUseCase

application/src/main/kotlin/core/application/common/configuration/SwaggerConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class SwaggerConfig(
1919
private val PROFILE_SERVER_URL_MAP =
2020
mapOf(
2121
"local" to "http://localhost:8080",
22-
"dev" to "https://api.depromeet-core.shop",
22+
"dev" to "https://api.depromeet.shop",
2323
"prod" to "https://api.depromeet.com",
2424
)
2525
}

application/src/main/kotlin/core/application/session/presentation/mapper/TimeMapper.kt renamed to application/src/main/kotlin/core/application/common/converter/TimeMapper.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package core.application.session.presentation.mapper
1+
package core.application.common.converter
22

33
import java.time.Instant
44
import java.time.LocalDateTime
@@ -17,6 +17,11 @@ object TimeMapper {
1717
fun instantToLocalDateTimeString(instant: Instant): String =
1818
instantToLocalDateTime(instant).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
1919

20+
@JvmName("localDateTimeToInstantNonNull")
2021
fun localDateTimeToInstant(localDateTime: LocalDateTime): Instant =
2122
localDateTime.atZone(ZoneId.of("Asia/Seoul")).toInstant()
23+
24+
@JvmName("localDateTimeToInstantNullable")
25+
fun localDateTimeToInstant(localDateTime: LocalDateTime?): Instant? =
26+
localDateTime?.atZone(ZoneId.of("Asia/Seoul"))?.toInstant()
2227
}

application/src/main/kotlin/core/application/gathering/application/exception/GatheringExceptionCode.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ enum class GatheringExceptionCode(
1515
GATHERING_ID_REQUIRED(HttpStatus.BAD_REQUEST, "GATHERING-400-03", "회식 ID는 필수로 존재해야합니다."),
1616
GATHERING_NOT_INCLUDED_IN_BILL(HttpStatus.BAD_REQUEST, "GATHERING-400-04", "해당 정산에 포함되지 않은 회식입니다."),
1717
GATHERING_NOT_PARTICIPANT_MEMBER(HttpStatus.BAD_REQUEST, "GATHERING-400-05", "정산에 참여하지 않은 멤버입니다."),
18+
INVITE_TAG_NAME_NOT_FOUND(HttpStatus.BAD_REQUEST, "GATHERING-400-06", "초대 태그 이름과 매칭되는 태그를 찾을 수 없습니다."),
1819
;
1920

2021
override fun getStatus(): HttpStatus = status
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package core.application.gathering.application.exception
2+
3+
import core.application.common.exception.BusinessException
4+
5+
class InviteTagNameNotFoundException(
6+
tagName: String,
7+
) : BusinessException(
8+
GatheringExceptionCode.INVITE_TAG_NAME_NOT_FOUND,
9+
) {
10+
override val message: String = "초대 태그 이름과 매칭되는 태그를 찾을 수 없습니다: $tagName"
11+
}

0 commit comments

Comments
 (0)