Commit b42e567
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- application/src/main/kotlin/core/application
- announcement
- application/service
- presentation
- controller
- request
- response
- attendance/presentation/mapper
- bill/presentation/mapper
- common
- configuration
- converter
- gathering
- application
- exception
- service
- presentation
- controller
- invitee
- request
- response
- member
- application
- exception
- service
- auth
- role
- presentation
- controller
- request
- refreshToken/presentation/controller
- security
- configuration
- oauth/token
- session
- application/service
- presentation
- controller
- mapper
- domain/src/main/kotlin/core/domain
- gathering
- aggregate
- port
- inbound
- outbound
- vo
- membercredential
- aggregate
- port/outbound
- member/port
- inbound
- outbound
- entity/src/main/kotlin/core/entity
- gathering
- membercredential
- persistence/src/main/kotlin/core/persistence
- gathering/repository
- membercredential/repository
- member/repository
- src/main/kotlin/com/server/dpmcore
- common/configuration
- security/configuration
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 changedLines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
Lines changed: 4 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
36 | | - | |
37 | | - | |
38 | | - | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
39 | 40 | | |
40 | 41 | | |
41 | 42 | | |
| |||
Lines changed: 4 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
14 | | - | |
15 | | - | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
Lines changed: 3 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | | - | |
| 19 | + | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
29 | 28 | | |
30 | 29 | | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
13 | | - | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
22 | 27 | | |
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
| |||
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
0 commit comments