{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":819813700,"defaultBranch":"main","name":"platform-core","ownerLogin":"gdsc-konkuk","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-06-25T08:50:45.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/140731649?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726128519.0","currentOid":""},"activityList":{"items":[{"before":"c802b8d8d232f5de2a06af607e5249e0572d3868","after":"6a872640df116250a0f9de4bfa7a9c6f5ae7c634","ref":"refs/heads/feat/member_register","pushedAt":"2024-09-13T03:35:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"fix: 리다이렉션 URL 수정","shortMessageHtmlLink":"fix: 리다이렉션 URL 수정"}},{"before":"d76485b43d755211af1df77e1e6687f8d170ccf2","after":"c802b8d8d232f5de2a06af607e5249e0572d3868","ref":"refs/heads/feat/member_register","pushedAt":"2024-09-12T13:15:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"fix: 리다이렉션 URL 수정","shortMessageHtmlLink":"fix: 리다이렉션 URL 수정"}},{"before":"01279ea3c5e48cdf2515bb5041ca4d41fc41d54b","after":"d76485b43d755211af1df77e1e6687f8d170ccf2","ref":"refs/heads/feat/member_register","pushedAt":"2024-09-12T08:16:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"change: 출석 URL 리다이렉션을 302로 수정","shortMessageHtmlLink":"change: 출석 URL 리다이렉션을 302로 수정"}},{"before":null,"after":"01279ea3c5e48cdf2515bb5041ca4d41fc41d54b","ref":"refs/heads/feat/member_register","pushedAt":"2024-09-12T08:08:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"test: 수정 사항 반영","shortMessageHtmlLink":"test: 수정 사항 반영"}},{"before":"c933f98289ef51d8783385a31a6ba8c80c8081f6","after":null,"ref":"refs/heads/develop","pushedAt":"2024-08-27T18:50:27.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"}},{"before":"8832e10ffcf58dd30cf63be2c093626e9a84425f","after":"a40717ea728b008826a4bf1507aacf550d2fda90","ref":"refs/heads/main","pushedAt":"2024-08-27T18:50:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"v0.0.0 (#41)\n\n* Test/test ci (#2)\r\n\r\n* Gitactions Test (#1)\r\n\r\n* feat : 소나큐브 플러그인 의존성추가\r\n\r\n* fix: 그래들 파일 수정\r\n\r\n* feat: CI용 워크플로우생성\r\n\r\n* feat : 테스트용 커밋\r\n\r\n* fix: 잘못된 디렉토리명 수정\r\n\r\n* feat : CI실패 시 디스코드 알림 추가\r\n\r\n* test : CI 테스트를 위한 커밋\r\n\r\n* feat: 그래들 캐시 추가, 불필요한 스크립트 제거\r\n\r\n* Bp 3 spring project (#3)\r\n\r\n* chore : h2, p6spy의존성 추가\r\n\r\n* feat : 응답을 위한 클래스 생성\r\n\r\n* feat : 에러코드 공통 관리를 위한 Enum생성\r\n\r\n* feat : 전역 에러 핸들러 추가\r\n\r\n* remove : 불필요한 파일 삭제\r\n\r\n* feat : 워크플로우 수정\r\n\r\n* feat : 생성자 파라매터 수정, Of 메소드 수정\r\n\r\n* Bp 4 swagger configuration (#4)\r\n\r\n* chore : RestDocs, Swagger 의존성추가\r\n\r\n* feat : 테스트용 컨트롤러 작성\r\n\r\n* feat : RestDocsTest 어노테이션 생성\r\n\r\n* test : 스웨거 컨트롤러를 위한 테스트 코드 작성\r\n\r\n* Bp 12 implement user login (#5)\r\n\r\n* chore : 스프링 시큐리티, 테스트 모듈 추가\r\n\r\n* Feat : 스프링 시큐리티를 위한 UserDetail기능 재작성, 핸들러 작성\r\n\r\n* feat : 전역 에러 핸들러에 비즈니스 에러 핸들러 추가\r\n\r\n* feat : 비즈니스 로직에서 발생하는 예외를 정의하는 클래스 정의\r\n\r\n* feat : 사용자 인증관련 에러코드 추가, 응답클래스에 메소드 추가\r\n\r\n* refactor : 사용하지 않는 클래스 의존 삭제\r\n\r\n* test : 로그인 기능 테스트 코드 작성\r\n\r\n* remove : 필요없는 파일 삭제\r\n\r\n* feat : 유저 권한 Enum클래스와 로그인 시 권한을 부여하는 기능 추가\r\n\r\n* feat : 멤버 엔티티, 레포지토리 생성\r\n\r\n* test : 로그인 통합 테스트 작성\r\n\r\n* hotfix : 불필요한 파라매터설정 제거\r\n\r\n* fix : 코드리뷰 적용 csrf 적용 및 스프링시큐리티로 세션저장 활성화\r\n\r\n* refactor : 불필요한 상태값 제거에 따른 타입 변경\r\n\r\n* Bp 24 implement user crud (#9)\r\n\r\n* Bp 25 implement user registration (#6)\r\n\r\n* feat : 회원가입 api 권한 수정, 엔드포인트 prefix 메소드 추가\r\n\r\n* feat : 에러코드, 커스텀 에러 추가, 전역 핸들러에 로직구현\r\n\r\n* feat : 회원가입 DTO추가, 멤버 컨트롤러 추가\r\n\r\n* feat : 멤버 서비스 추가, 회원가입 기능 추가\r\n\r\n* test : 컨트롤러 테스트, 유닛테스트 작성\r\n\r\n* feat : 유저 비밀번호 암호화 추가\r\n\r\n* rename : 파일 위치 수정\r\n\r\n* test : 암호화 로직 추가\r\n\r\n* rename : DTO 컨트롤러 패키지로 이동\r\n\r\n* refactor : 매직넘버 삭제, HttpStatus사용\r\n\r\n* refactor : 기존 ErrorCode를 인터페이스화, 도메인마다 에러코드 정의\r\n\r\n* refactor : 에러코드 구조 변경에 따른 코드 수정\r\n\r\n* chore : spring-validation 추가\r\n\r\n* Bp 26 implement user withdraw (#8)\r\n\r\n* feat : 객체 생성 시 필드 체크를 위한 Validator생성\r\n\r\n* feat : 멤버 엔티티객체 필드 기본값 수정, 탈퇴로직 구현\r\n\r\n* feat : 회원 탈퇴 로직 구현\r\n\r\n* feat : 시큐리티 회원가입, 로그인 csrf해제\r\n\r\n* feat : 시큐리티 유틸성 클래스 추가\r\n\r\n* feat : 멤버 서비스 예외 추가와 에러코드 추가\r\n\r\n* style : 코드 포맷 수정\r\n\r\n* test: 테스트코드 수정, 삭제 테스트코드 작성\r\n\r\n* feat : Spring Validation에서 발생하는 에러 핸들링\r\n\r\n* test : mock user 어노테이션추가\r\n\r\n* refactor : 코드리뷰 적용\r\n\r\n* fix ; csrf 비활성화\r\n\r\n* feat : 식별자 전략 명시 IDENTITY\r\n\r\n* Bp 14 attendance api (#7)\r\n\r\n* feat: Event 엔티티 생성\r\n\r\n* feat: 특정 달의 이벤트 목록 조회\r\n\r\n* feat: Participants 엔티티\r\n\r\n* feat: 출석 기능 (Google Oauth 부분은 뼈대만)\r\n\r\n* feat: Event Controller 작성 및 테스트, 문서 생성\r\n\r\n* chore: validator와 Oauth Client 추가\r\n\r\n* feat: Google OIDC를 이용한 사용자 출석 (draft)\r\n\r\n* feat: 이벤트 출석 등록 -> 출석 URL (for QR Code) 생성\r\n\r\n* comment: TODO, 출석 만료 기능 필요\r\n\r\n* fix: 출석 API를 GET으로 변경, security matcher 수정 및 request 유지\r\n\r\n* feat: security config conflict 정리\r\n\r\n* feat: validation 책임을 Entity가 아닌 Factory로 전가\r\n\r\n* feat: dto를 service layer가 아닌 presentational layer에서 정의\r\n\r\n* feat: Event 도메인의 Custom ErrorCode와 Exception 정의\r\n\r\n* style: `@RequiredArgsConstructor` 활용\r\n\r\n* style: gwt 다듬기\r\n\r\n* chore: 실 credential 반영\r\n\r\n* fix: presentational layer test에 `@SpringbootTest`를 사용하도록 일괄 변경\r\n\r\n* fix: HTTP METHOD 정정 (post -> get)\r\n\r\n* feat: QR Login 구현\r\n\r\n* chore: build 실패시 artifact로 report 보관\r\n\r\n* fix: spring build directory 정정\r\n\r\n* fix: CI, application.yml profile 맞춤\r\n\r\n* fix: CI, yml 문법\r\n\r\n* chore: jacoco 추가\r\n\r\n* fix: jacocoTestReport\r\n\r\n* Bp 35 implement email sending (#10)\r\n\r\n* chore : Spring-mail 의존성 추가\r\n\r\n* feat : 이메일, 수신자 엔티티, 레포지토리 생성\r\n\r\n* feat : Email전송 컨트롤러 작성\r\n\r\n* feat : 이메일서비스 작성\r\n\r\n* feat : 이메일 전송 클라이언트 설정, 전송 로직작성\r\n\r\n* test : 컨트롤러 테스트 작성\r\n\r\n* format : reformat codes indentation 2space로 수정\r\n\r\n* feat : 클래스 이름 수정, 연관관계 매핑\r\n\r\n* feat : toEntity생성, 적용\r\n\r\n* rename : 네이밍 수정\r\n\r\n* refactor : 컨벤션에 맞게 의존성 변경\r\n\r\n* feat : 기본 트랜잭션 설정 read only로 명시\r\n\r\n* refactor : 불필요한 import 제거\r\n\r\n* feat : 에러 처리 분기 수정\r\n\r\n* test : 이메일 기능 테스트코드 작성\r\n\r\n* Bp 27 출석현황조회 api (#11)\r\n\r\n* feat: 학과 필드 추가\r\n\r\n* feat: `AttendanceInfo` DTO, query 구현\r\n\r\n* feat: 출석 현황 조회 Controller & Test\r\n\r\n* feat: 출석 현황 조회 Service\r\n\r\n* feat: `AttendanceInfo`에 participantId field 추가\r\n\r\n* fix: 출석 현황 조회에 멤버 외의 인원이 출석한 경우 error가 발생하지 않도록 수정\r\n\r\n* feat: 멤버 출석 현황 수정 기능\r\n\r\n* feat: 멤버 출석 현황 수정 controller 작성 및 test\r\n\r\n* fix: DTO 전환 과정에서 immutable list로 초기화되어 이후 수정이 불가능했던 문제 해결\r\n\r\n* fix: 유효하지 않은 `participantId`의 출석 수정 요청 exception handling\r\n\r\n* fix: Event에 이미 출석이 존재할 경우, 중복 생성을 막음\r\n\r\n* chore: gradle task `openapi3`, type casting\r\n\r\n* style: `MemberToParticipantMapper`에서 `ParticipantMapper`로 이름 변경\r\n\r\n* feat: 출석 현황 수정 request payload 형식 변경\r\n\r\n* refactor: `Member` To` Participant` Mapping 과정에서 `Member`에 존재하지 않던 `attendance` field를 기본으로 false로 설정\r\n\r\n* Bp 36 implement email cancellation (#14)\r\n\r\n* feature : EmailTask로 네이밍 변경, VO 생성\r\n\r\n* remove : 엔티티이름 변경에 따른 클래스 삭제\r\n\r\n* feat : 이메일작업 레포지토리생성\r\n\r\n* feature : 이메일 작업등록 관련 에러, 에러코드 추가\r\n\r\n* feature : 이메일 작업 수정, 조회, 삭제 로직 추가\r\n\r\n* feature : DTO와 Mapper 작성\r\n\r\n* test : 컨트롤러 테스트 작성\r\n\r\n* feat : 이메일 서비스 작성, 헬퍼 클래스 추가\r\n\r\n* test : 이메일 서비스 코드 추가\r\n\r\n* refactor : 팀 컨벤션 적용\r\n\r\n* refactor : 생성자 접근 범위 조정\r\n\r\n* refactor : 엔티티 이름 변경에 따른 수정\r\n\r\n* test : 테스트코드 수정\r\n\r\n* rename : 이메일 클라이언트에서 발생하는 에러코드로 이름 수정\r\n\r\n* test : EmailTask 테스트코드 작성\r\n\r\n* Bp 38 retrospect crud api implementation (#12)\r\n\r\n* feat: 이벤트 및 회고 등록 기능\r\n\r\n* feat: 이벤트 등록 controller 작성 및 테스트\r\n\r\n* feat: 이벤트 회고 조회 기능\r\n\r\n* feat: 이벤트 회고 조회 controller & 테스트\r\n\r\n* feat: 이벤트 회고 수정 기능\r\n\r\n* feat: 이벤트 회고 수정 controller 및 test\r\n\r\n* refactor: `Retrospect`를 `Event`의 Embedding으로 변경\r\n\r\n* fix: `@Valid`를 통한 dto 검증 추가\r\n\r\n* Bp 39 implement email scheduler (#15)\r\n\r\n* feat : 미전송 작업 조회, 작업완료 메소드 추가\r\n\r\n* feat : 미전송 작업 쿼리 추가\r\n\r\n* feat : 스케줄러 설정파일 작성\r\n\r\n* feat : 작업 정보 메모리 저장소 작성\r\n\r\n* feat : 작업 조회 관련 에러 및 코드 추가\r\n\r\n* feat : 작업 스케줄러 추가\r\n\r\n* feat : DTO에서 entity로 파라매터 수정\r\n\r\n* feat : 스케줄 관련 업데이트 적용\r\n\r\n* feat : 이메일 전송 로그 추가\r\n\r\n* test : 이메일 스케줄 서비스 테스트코드 작성\r\n\r\n* refactor : unused import 삭제\r\n\r\n* test : 이메일 스케줄링 통합테스트 작성\r\n\r\n* feat : 작업 스케줄 서비스 추가\r\n\r\n* test : 로직 수정 테스트코드에 반영\r\n\r\n* style : 카멜케이스 적용\r\n\r\n* feat : 에러코드 정의 변경\r\n\r\n* feat : cancel중 다른 스레드 접근 불가능하게 락 적용\r\n\r\n* refactor : 함수 네이밍 변경\r\n\r\n* refactor : remove save() method\r\n\r\n* rename : EmailScheduleServiceTest 이름 수정\r\n\r\n* feat : 디스코드 알림 웹 훅을 위한 클라이언트 작성\r\n\r\n* feat : RestTemplate 설정파일 작성\r\n\r\n* feat : 디스코드 문자열 상수 정의\r\n\r\n* feat : 이메일 전송 에러처리 추가\r\n\r\n* rename : 위치 수정\r\n\r\n* test : 이메일 전송 실패시 디스코드 알림 테스트 추가\r\n\r\n* refactor : 에러를 받아서 디스코드 메세지를 만드는 로직을 디스코드 메세지에서 작성\r\n\r\n* test : 디스코드 메세지 테스트 작성\r\n\r\n* refactor : 반드시 발생하는 상황 finally로 실행부분 변경\r\n\r\n* fix : 이메일 저장후 바로 조회 시 조회가 안되는 이슈 수정 (#16)\r\n\r\n* fix : 이메일 저장후 바로 조회 시 조회가 안되는 이슈 수정\r\n\r\n* fix : 사용하는 메소드 수정에 따른 test코드 모킹 변경\r\n\r\n* Bp 37 event crud api implementation (#13)\r\n\r\n* chore: aws-s3 모듈 추가\r\n\r\n* feat: s3 presigned url 기능\r\n\r\n* feat: 당장 불필요한 Member Profile Image 주석처리\r\n\r\n* change: 이달의 출석 조회를 `EventController`에서 `AttendanceController`로 이동\r\n\r\n* feat: S3 Storage Client\r\n\r\n* feat: `EventImages`\r\n\r\n* feat: 불필요한 파일 삭제 (`ImageController/Service`)\r\n\r\n* feat: `Event` CRUD 기능\r\n\r\n* feat: `Event` CRUD Controller\r\n\r\n* fix: 일대다 Mapping에서 변경이 전파되도록 수정\r\n\r\n* fix: 이미지 URL을 반환하도록 변경\r\n\r\n* fix: 이벤트 상세 조회에 Image key를 반환하도록 수정\r\n\r\n* fix: 사진 추가를 Optional하게 변경\r\n\r\n* fix: 잘못된 에러 메시지 수정 + object key에 확장자 포함\r\n\r\n* fix: Spring Security Matcher가 정상 동작하도록 변경 (출석 Entry 수정)\r\n\r\n* fix: Spring Security Matcher가 정상 동작하도록 변경 (출석 Entry 수정)\r\n\r\n* test: 회원 출석 url 변경 반영\r\n\r\n* test: 누락되었던 인증 정보 추가\r\n\r\n* test: 이벤트 CRU 테스트\r\n\r\n* style: redundant 삭제\r\n\r\n* refactor: 혼동을 줄이기 위해 `equals` override\r\n\r\n* refactor: 혼동을 줄이기 위해 `equals`를 `isKeyEqual`로 변경\r\n\r\n* feat: S3 object URL에 object key가 포함되어 있음!!\r\n\r\n* refactor: DTO에 생성 위임\r\n\r\n* style: rename(`S3Config` -> `S3Properties`)\r\n\r\n* refactor: String format으로 + 연산 줄이기\r\n\r\n* fix: S3 property를 제대로 읽어오도록 수정\r\n\r\n* fix: 모든 Event 조회에 N+1 문제 해결\r\n\r\n* Fix redefine email receivers (#17)\r\n\r\n* fix : 이메일 개수가 증가할 시 제한에 걸리는 이슈로 컬렉션 테이블 분리\r\n\r\n* feat : 트랜잭션 템플릿으로 새로운 트랜잭션 생성 및 롤백\r\n\r\n* fix : Resttemplate Post요청시 URI타입 캐스팅\r\n\r\n* Fix: 로그인 성공 후 스태틱 페이지가 없어 발생하는 에러 수정 (#18)\r\n\r\n* fix: 로그인 성공 후 스태틱 페이지가 없어 발생하는 에러 수정\r\n\r\n* fix: test가 3xx가 아닌 200을 기다리도록 수정\r\n\r\n* fix: test가 redirection url을 기대하지 않음\r\n\r\n* Fix: error response (#21)\r\n\r\n* fix: `BusinessException`을 response 할 때, name 대신 `logMessage`를 반환하던 문제 해결\r\n\r\n* fix: 4xx 대신 5xx를 반환하던 문제 해결\r\n\r\n* fix: fallback handler의 인자를 `RuntimeException`에서 `Exception`으로 변경\r\n\r\n* Fix jpa element collection type (#20)\r\n\r\n* fix : List에서 Set으로 자료구조 변경\r\n\r\n* feat : EmailReceviers 자료구조 변경 적용\r\n\r\n* feat : Set 삭제, 추가 메소드\r\n\r\n* feat : 변경전 수신자들과 비교하는 함수 추가\r\n\r\n* feat : 시그니처 변경 및 타입수정\r\n\r\n* feat : 업데이트된 수신자와 기존 값 비교후 병합메소드 추가\r\n\r\n* refactor : optimize imports\r\n\r\n* test: 이메일 작업 전송대상 업데이트 필터링 테스트\r\n\r\n* Fix: `not found` and `login failure` response (#22)\r\n\r\n* fix: 404 응답이 500으로 가던 문제 해결\r\n\r\n* fix: 로그인 Content-Type이 `x-www-urlencoded`가 아니어서 회원 정보가 제대로 전달되지 않는 경우의 에러 코드 변경\r\n\r\n* fix: 로그인 실패 테스트 입력이 의도와 달랐던 문제 해결\r\n\r\n* fix: [dev] CORS 비활성화 (#23)\r\n\r\n* feat: 사용자가 로그인 된 상태인지 확인하는 API (#24)\r\n\r\n* fix: API에 인증받지 않은 사용자가 요청 시 302 대신 401로 반환하도록 수정 (#25)\r\n\r\n* fix: 이벤트 이미지가 없을 경우 이벤트를 조회할 수 없던 문제 해결 (#26)\r\n\r\n* fix: 이벤트에 누락된 속성(`장소`) 추가 (#27)\r\n\r\n* Refactor attendance api (#28)\r\n\r\n* Change: include retrospect into event detail (#29)\r\n\r\n* change: 이벤트 조회에 이벤트 회고가 함께 조회되도록 변경\r\n\r\n* style: DTO 파일 위치 컨벤션 통일\r\n\r\n* feat: Event 삭제 API (#30)\r\n\r\n* Fix: cors without nginx (#32)\r\n\r\n* feat: cors custom filter\r\n\r\n* feat: cors custom filter 적용\r\n\r\n* fix: cors allowed origin을 `localhost:*`에서 `localhost:5173`으로 변경 (#33)\r\n\r\n* fix: preflight시에 security filter chain을 거치기 전에 성공하도록 수정 (#34)\r\n\r\n* Change: attendance registration response (#35)\r\n\r\n* style: image upload/delete method 분리\r\n\r\n* change: 출석 및 출석 URL 생성 응답에 body 추가\r\n\r\n* change: 출석 QR 만료 요청에 QR UUID가 불필요하게끔 수정\r\n\r\n* test: 수정 사항 반영\r\n\r\n* fix: 출석 URI이 제대로 생성되도록 수정\r\n\r\n* Feat: include receiver name into mail registration (#31)\r\n\r\n* fix: 확률적으로 실패하던 Test Case 보완\r\n\r\n* feat: `EmailReceiver`에 이름 정보가 누락되어 있던 문제 해결\r\n\r\n* feat: `{이름}`을 통해 대상 이름을 이메일 양식에 포함할 수 있도록 기능 추가\r\n\r\n* test: 수정 사항 반영 (이메일 수신자에 이름 속성 추가)\r\n\r\n* refactor: 이름 토큰(`{이름}`)을 상수로 정의, 메서드 분리\r\n\r\n* test: 이름 토큰(`{이름}`) 치환 동작 확인 테스트 작성\r\n\r\n* Feat: request attendance state (#37)\r\n\r\n* feat: Attendance Status 조회 API\r\n\r\n* test: Attendance Status 조회 API Test\r\n\r\n* fix: CORS 재수정 (`List.of` 대신 `Arrays.asList` 사용) + origin에 개발/배포 서버 추가 (#36)\r\n\r\n* change: EmailTask 전체 조회시, 응답 양식을 EmailTaskDetail 양식처럼 `ReceiverInfos`를 묶음으로 표시 (#39)\r\n\r\n* Test: use fixture (#38)\r\n\r\n* test: Fixture 작성 (`Member`, `Event`)\r\n\r\n* change: 멤버 등록 필요 속성 수정\r\n\r\n* change: `WithCustomUser` Annotation을 사용하도록 통일, 관리자 권한이 필요한 API일 경우 해당 권한 테스트에 미리 반영\r\n\r\n* test: `MemberFixture` 적용\r\n\r\n* test: GWT 다듬기\r\n\r\n* style: `EmailDetails`가 Entity가 아닐 경우 단일 Data인 점을 반영하여 `EmailDetail`로 이름 변경\r\n\r\n* test: Email Fixture 작성\r\n\r\n* test: Email Fixture 적용\r\n\r\n* style: `given`절의 메서드가 when보다는 given을 사용하도록 변경\r\n\r\n* test: `Attendance` Fixture 작성\r\n\r\n* test: `Attendance` Fixture 적용\r\n\r\n* test: `Event` Fixture 작성\r\n\r\n* test: `Event` Fixture 적용\r\n\r\n* test: `Controller` Test를 단위 테스트로 전환\r\n\r\n* test: EmailFixture 적용\r\n\r\n* fix: 이미 인증된 사용자를 통해 로그인 테스트를 하던 문제 해결\r\n\r\n* change: 멤버 출석 성공 시 보여주는 정보 축소\r\n\r\n* change: 멤버 출석 등록 시 `Role`을 받도록 수정\r\n\r\n* feat: feedback 반영, Test Fixture를 좀 더 Verbose 하게\r\n\r\n* test: 변경한 Fixture 반영\r\n\r\n* chore: test build에 lombok 사용\r\n\r\n* Docs: readme (#19)\r\n\r\n* docs: readme 초본\r\n\r\n* docs: Readme에 다이어그램 추가\r\n\r\n* [Draft] Release: `v0.0.0` (#40)\r\n\r\n* chore: Dockerfile이 app version에 의존적이지 않도록 수정\r\n\r\n* chore: spring actuator 추가\r\n\r\n* style: `build.gradle` re-format\r\n\r\n* chore: 기본 타임존을 한국으로 설정\r\n\r\n* chore: API 접속 권한 조정\r\n\r\n* fix: OAuth redirect URL scheme을 https로 변경\r\n\r\n* fix: 로그인 요청은 로그아웃 상태에서도 허용하도록 변경\r\n\r\n* fix: csrf 비활성화 (Client Side 추가 설정 필요)\r\n\r\n* chore: CI를 위해, github action이 h2를 사용하도록\r\n\r\n---------\r\n\r\nCo-authored-by: ekgns33 <76658405+ekgns33@users.noreply.github.com>","shortMessageHtmlLink":"v0.0.0 (#41)"}},{"before":"742c7c91f8c09bb80ca96f7713c05403b5bc0d86","after":"c933f98289ef51d8783385a31a6ba8c80c8081f6","ref":"refs/heads/develop","pushedAt":"2024-08-27T09:14:27.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"[Draft] Release: `v0.0.0` (#40)\n\n* chore: Dockerfile이 app version에 의존적이지 않도록 수정\r\n\r\n* chore: spring actuator 추가\r\n\r\n* style: `build.gradle` re-format\r\n\r\n* chore: 기본 타임존을 한국으로 설정\r\n\r\n* chore: API 접속 권한 조정\r\n\r\n* fix: OAuth redirect URL scheme을 https로 변경\r\n\r\n* fix: 로그인 요청은 로그아웃 상태에서도 허용하도록 변경\r\n\r\n* fix: csrf 비활성화 (Client Side 추가 설정 필요)\r\n\r\n* chore: CI를 위해, github action이 h2를 사용하도록","shortMessageHtmlLink":"[Draft] Release: v0.0.0 (#40)"}},{"before":"c4bddc644347218284506377fd8a7ba0c5a10a75","after":null,"ref":"refs/heads/release/v0.0.0","pushedAt":"2024-08-27T09:12:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"}},{"before":"be1c152c09e04ef5ad8fe7aa77d6c0b001a24d0e","after":"742c7c91f8c09bb80ca96f7713c05403b5bc0d86","ref":"refs/heads/develop","pushedAt":"2024-08-27T09:12:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"[Draft] Release: `v0.0.0` (#40)\n\n* chore: Dockerfile이 app version에 의존적이지 않도록 수정\r\n\r\n* chore: spring actuator 추가\r\n\r\n* style: `build.gradle` re-format\r\n\r\n* chore: 기본 타임존을 한국으로 설정\r\n\r\n* chore: API 접속 권한 조정\r\n\r\n* fix: OAuth redirect URL scheme을 https로 변경\r\n\r\n* fix: 로그인 요청은 로그아웃 상태에서도 허용하도록 변경\r\n\r\n* fix: csrf 비활성화 (Client Side 추가 설정 필요)\r\n\r\n* chore: CI를 위해, github action이 h2를 사용하도록","shortMessageHtmlLink":"[Draft] Release: v0.0.0 (#40)"}},{"before":"aa47de616af8b6ef10301af90b35b30c65e84160","after":"c4bddc644347218284506377fd8a7ba0c5a10a75","ref":"refs/heads/release/v0.0.0","pushedAt":"2024-08-27T09:08:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"chore: CI를 위해, github action이 h2를 사용하도록","shortMessageHtmlLink":"chore: CI를 위해, github action이 h2를 사용하도록"}},{"before":"e8d5195f8140c535700cb534ca957b7cf7a29b6a","after":"aa47de616af8b6ef10301af90b35b30c65e84160","ref":"refs/heads/release/v0.0.0","pushedAt":"2024-08-27T09:02:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"fix: csrf 비활성화 (Client Side 추가 설정 필요)","shortMessageHtmlLink":"fix: csrf 비활성화 (Client Side 추가 설정 필요)"}},{"before":"a4aad751b980670d91e07692f0f9a3f539c88ca8","after":null,"ref":"refs/heads/docs/readme","pushedAt":"2024-08-27T09:00:26.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"}},{"before":"0d4cf21bb5d3d2c73a2e9b483539f00e18a51749","after":"be1c152c09e04ef5ad8fe7aa77d6c0b001a24d0e","ref":"refs/heads/develop","pushedAt":"2024-08-27T09:00:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"Docs: readme (#19)\n\n* docs: readme 초본\r\n\r\n* docs: Readme에 다이어그램 추가","shortMessageHtmlLink":"Docs: readme (#19)"}},{"before":"d148e6b184275bd3a4a63d82d8d8e68f1292e2b2","after":"a4aad751b980670d91e07692f0f9a3f539c88ca8","ref":"refs/heads/docs/readme","pushedAt":"2024-08-27T09:00:03.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"docs: Readme에 다이어그램 추가","shortMessageHtmlLink":"docs: Readme에 다이어그램 추가"}},{"before":"f6cdfa8752536538d9c848d3a2b21bfc8cfcbe66","after":null,"ref":"refs/heads/test/use-fixture","pushedAt":"2024-08-27T08:56:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"}},{"before":"a90c8a2c171b5d7fd62f7d09bf9addf086393708","after":"0d4cf21bb5d3d2c73a2e9b483539f00e18a51749","ref":"refs/heads/develop","pushedAt":"2024-08-27T08:56:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"Test: use fixture (#38)\n\n* test: Fixture 작성 (`Member`, `Event`)\r\n\r\n* change: 멤버 등록 필요 속성 수정\r\n\r\n* change: `WithCustomUser` Annotation을 사용하도록 통일, 관리자 권한이 필요한 API일 경우 해당 권한 테스트에 미리 반영\r\n\r\n* test: `MemberFixture` 적용\r\n\r\n* test: GWT 다듬기\r\n\r\n* style: `EmailDetails`가 Entity가 아닐 경우 단일 Data인 점을 반영하여 `EmailDetail`로 이름 변경\r\n\r\n* test: Email Fixture 작성\r\n\r\n* test: Email Fixture 적용\r\n\r\n* style: `given`절의 메서드가 when보다는 given을 사용하도록 변경\r\n\r\n* test: `Attendance` Fixture 작성\r\n\r\n* test: `Attendance` Fixture 적용\r\n\r\n* test: `Event` Fixture 작성\r\n\r\n* test: `Event` Fixture 적용\r\n\r\n* test: `Controller` Test를 단위 테스트로 전환\r\n\r\n* test: EmailFixture 적용\r\n\r\n* fix: 이미 인증된 사용자를 통해 로그인 테스트를 하던 문제 해결\r\n\r\n* change: 멤버 출석 성공 시 보여주는 정보 축소\r\n\r\n* change: 멤버 출석 등록 시 `Role`을 받도록 수정\r\n\r\n* feat: feedback 반영, Test Fixture를 좀 더 Verbose 하게\r\n\r\n* test: 변경한 Fixture 반영\r\n\r\n* chore: test build에 lombok 사용","shortMessageHtmlLink":"Test: use fixture (#38)"}},{"before":"0cce961897c35613b031c42d599f691d78cb6721","after":"f6cdfa8752536538d9c848d3a2b21bfc8cfcbe66","ref":"refs/heads/test/use-fixture","pushedAt":"2024-08-27T08:53:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"chore: test build에 lombok 사용","shortMessageHtmlLink":"chore: test build에 lombok 사용"}},{"before":"aa9a0a83e604c632d43369ad3f56917432c98bc7","after":"0cce961897c35613b031c42d599f691d78cb6721","ref":"refs/heads/test/use-fixture","pushedAt":"2024-08-27T08:49:03.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"test: 변경한 Fixture 반영","shortMessageHtmlLink":"test: 변경한 Fixture 반영"}},{"before":null,"after":"e8d5195f8140c535700cb534ca957b7cf7a29b6a","ref":"refs/heads/release/v0.0.0","pushedAt":"2024-08-25T07:53:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"fix: csrf 비활성화 (Client Side 추가 설정 필요)","shortMessageHtmlLink":"fix: csrf 비활성화 (Client Side 추가 설정 필요)"}},{"before":"087c641fdd26be88d1d5cd277fe3447533a15b52","after":"aa9a0a83e604c632d43369ad3f56917432c98bc7","ref":"refs/heads/test/use-fixture","pushedAt":"2024-08-23T10:15:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"test: EmailFixture 적용","shortMessageHtmlLink":"test: EmailFixture 적용"}},{"before":"906c380229485274fef41f46b4d4bbec497b53d3","after":null,"ref":"refs/heads/change/get-all-email-task-response","pushedAt":"2024-08-23T10:04:52.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"}},{"before":"af65d3c2f712465febdb6e476179f2f2356b6c50","after":"a90c8a2c171b5d7fd62f7d09bf9addf086393708","ref":"refs/heads/develop","pushedAt":"2024-08-23T10:04:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"change: EmailTask 전체 조회시, 응답 양식을 EmailTaskDetail 양식처럼 `ReceiverInfos`를 묶음으로 표시 (#39)","shortMessageHtmlLink":"change: EmailTask 전체 조회시, 응답 양식을 EmailTaskDetail 양식처럼 ReceiverInfos…"}},{"before":null,"after":"906c380229485274fef41f46b4d4bbec497b53d3","ref":"refs/heads/change/get-all-email-task-response","pushedAt":"2024-08-23T10:00:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"change: EmailTask 전체 조회시, 응답 양식을 EmailTaskDetail 양식처럼 `ReceiverInfos`를 묶음으로 표시","shortMessageHtmlLink":"change: EmailTask 전체 조회시, 응답 양식을 EmailTaskDetail 양식처럼 ReceiverInfos…"}},{"before":"2a8a3f4ed3b83b8b3af96b7c4858c50019e5d536","after":"087c641fdd26be88d1d5cd277fe3447533a15b52","ref":"refs/heads/test/use-fixture","pushedAt":"2024-08-23T09:28:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"test: EmailFixture 적용","shortMessageHtmlLink":"test: EmailFixture 적용"}},{"before":"1b4674527294791b91b10b67f7f35abd7ca651f1","after":"2a8a3f4ed3b83b8b3af96b7c4858c50019e5d536","ref":"refs/heads/test/use-fixture","pushedAt":"2024-08-23T08:03:36.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"test: `Controller` Test를 단위 테스트로 전환","shortMessageHtmlLink":"test: Controller Test를 단위 테스트로 전환"}},{"before":null,"after":"1b4674527294791b91b10b67f7f35abd7ca651f1","ref":"refs/heads/test/use-fixture","pushedAt":"2024-08-22T04:40:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"test: `MemberFixture` 적용","shortMessageHtmlLink":"test: MemberFixture 적용"}},{"before":"48174cada7618c3050a816652a05da582e8d2b99","after":null,"ref":"refs/heads/fix/cors-allow-patch","pushedAt":"2024-08-21T10:26:35.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"}},{"before":"20b453de0ca05935239a8f2f9b01879d0d7246d5","after":"af65d3c2f712465febdb6e476179f2f2356b6c50","ref":"refs/heads/develop","pushedAt":"2024-08-21T10:26:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"fix: CORS 재수정 (`List.of` 대신 `Arrays.asList` 사용) + origin에 개발/배포 서버 추가 (#36)","shortMessageHtmlLink":"fix: CORS 재수정 (List.of 대신 Arrays.asList 사용) + origin에 개발/배포 서버 추가 ("}},{"before":"7119b42ca82c6016d221fee913fde14f8d09fc35","after":null,"ref":"refs/heads/feat/request-attendance-state","pushedAt":"2024-08-21T10:09:46.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"}},{"before":"e6a94f2dfba80f7b31d0422684fd79e0a34a3ec5","after":"20b453de0ca05935239a8f2f9b01879d0d7246d5","ref":"refs/heads/develop","pushedAt":"2024-08-21T10:09:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"goldentrash","name":"WhitePiano","path":"/goldentrash","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/33625132?s=80&v=4"},"commit":{"message":"Feat: request attendance state (#37)\n\n* feat: Attendance Status 조회 API\r\n\r\n* test: Attendance Status 조회 API Test","shortMessageHtmlLink":"Feat: request attendance state (#37)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xM1QwMzozNToyOC4wMDAwMDBazwAAAAS1DWDy","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xM1QwMzozNToyOC4wMDAwMDBazwAAAAS1DWDy","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yMVQxMDowOTo0NS4wMDAwMDBazwAAAASgCJib"}},"title":"Activity · gdsc-konkuk/platform-core"}