Skip to content

Commit

Permalink
🚀 [Deploy] - 다른 유저 정보 API (#129)
Browse files Browse the repository at this point in the history
* 🐛 [FIx] - 버전 일치.. 수술 성공 (#115)

* 🚀 [Deploy] - 에러 수정 후, 재배포 (#111)

* ✨ Feat: 도메인 생성 #31  (#34)

* Feat: User 도메인 생성

* Feat: Member 도메인 생성

* Feat: Team 도메인 생성

* Feat: Scrum 도메인 생성

* Feat: 도메인 상태 관리

* ✨ [Feature/#2] - boiler plate 추가 (#37)

* Feat: dependency 추가 및 정리

* Feat: global dto -> ResponseDto, ExceptionDto 생성

* Feat: ErrorCode 지정, CommonException 생성

* Feat: Global Exception Handler 추가

* Feat: Custom Annotation 생성

* Feat: UserId annotation -> interceptor, resolver 추가

* Feat: annotation 적용

* Feat: response status code 일치해주는 interceptor 생성

* Feat: 문자열 파편화 방지 클래스 생성

* ✨ [Feature/#3] - Spring Security 적용하기 (#39)

* Chore: json dependency 추가

* Feat: authentication filter, exception filter 생성

* Feat: authentication manager, provider 생성

* Feat: CustomUserDetailService 생성

* Feat: login handler 추가

* Feat: logout handler 추가

* Feat: exception handler 추가

* Feat: spring security info 생성

* Feat: 쿠키 유틸 생성

* Feat: 헤더 유틸 생성

* Feat: jwt util 생성

* Feat: Security Config 설정

* Feat: Token Dto 생성

* Feat: user repository -> security용 조회 로직 생성

* Feat: Passowrd Encoder 등록

* Feat: Spring Security 등록

* fix: Credential 업데이트

* ✨ [Feat/#3] - Spring Security api test (#43)

* Chore: json dependency 추가

* Feat: authentication filter, exception filter 생성

* Feat: authentication manager, provider 생성

* Feat: CustomUserDetailService 생성

* Feat: login handler 추가

* Feat: logout handler 추가

* Feat: exception handler 추가

* Feat: spring security info 생성

* Feat: 쿠키 유틸 생성

* Feat: 헤더 유틸 생성

* Feat: jwt util 생성

* Feat: Security Config 설정

* Feat: Token Dto 생성

* Feat: user repository -> security용 조회 로직 생성

* Feat: Passowrd Encoder 등록

* Feat: Spring Security 등록

* Chore: api path 수정

* Feat: refresh token update 추가

* Chore: api path 수정

* Chore: response json 수정

* Feat: 회원가입, reissue api 생성

* ✨ [ Feature /#4 ] - QuestionList API 구현 (#45)

* feat: QuestionList API 구현

* feat: TeamRepository 생성

* ✨ [Feature/#5] - 웹과 연동하기 discord action 구현 (#46)

* Chore: discord token 추가

* Chore: jda dependency 추가

* Feat: builder 추가, 칼럼 수정

* Feat: leader 추가 로직 생성

* Feat: user 조회 로직 추가

* Feat: 생성 로직 추가

* Feat: jda 적용, slash command 추가

* Feat: 웹과 연동하기 명령어 액션 추가

* Chore: discord token 추가 (#47)

* Chore: discord token 추가 (#48)

* 🐛 [Fix/#6] - user, team 예외처리 추가 (#50)

* Chore: discord token 추가

* Feat: 팀 구분용 칼럼 추가, builder 수정

* Feat: 조회 로직 추가

* Chore: 주석 추가, 약간의 최적화

* Feat: Team 유일성 부여

* ✨ [Feature/#7] - discord slash command, 질문하기 (#52)

* Chore: discord token 추가

* Feat: Question column 추가

* Feat: code 관련 조회 로직 추가

* Chore: 서비스 단 조회 로직 추가

* Feat: generate code 로직 생성

* Feat: 질문하기 slash command 추가

* Feat: slash command action 추가

* 🐛  [Fix/#4] - 팀 작업 기록 페이지 API 구현 (#55)

* feat: QuestionList API 구현

* feat: TeamRepository 생성

* fix: questionDtoList의 길이를 재는 것으로 수정

* feat: 팀 멤버 목록 조회 API 구현

* fix: 멤버가 존재하는지 예외처리

* refactor: 메소드 이름 수정 findByReceiverAndStatus => findAllByReceiverAndStatus

* feat: 팀원들의 작업 목록 서비스, 팀 작업 척도 서비스 구현

* refactor: Repository의 메소드 수정에 따른 메소드 수정

* feat: 팀 작업 척도 서비스 구현

* ✨ [Feature/#9] - discord '답변하기' command 생성 (#57)

* Chore: discord token 추가

* Feat: builder 추가

* Feat: Answer Repository 생성

* Feat: question status update 로직 생성

* Feat: Answer 생성 로직 추가

* Feat: question 조회, 수정 서비스 로직 추가

* Feat: NOT_FOUND_QUESTION error 추가

* Feat: 답변하기 slash commnad 추가

* Feat: slash command action 추가

* ✨ [Feature/#10] - discord 업무 시간 파악 (#59)

* Chore: discord token 추가

* Feat: builder 추가

* Feat: errorcode 추가

* Feat: 업무 중인 작업 조회 로직 추가

* Feat: Scrum 상태에 따른 조회 추가

* Feat: DB 조회 로직 적용

* Feat: 업무 시작 하기 slash command 추가

* Feat: 업무 시작 답변 action 추가

* ✨ [Feature/#8] - 질문 목록 페이지 API 구현 (#60)

* feat: 전체 프로젝트 목록 API

* feat: 질문 남기기 API 구현

* feat: Member 연결

* feat: 답변 남기기 API 구현

* feat: 질문 목록(받은 질문) API 구현

* feat: 질문 목록(보낸 질문) API 구현

* fix: 사용하지 않는 라이브러리 삭제

* 🐛 [!HOTFIX] - 오류 수정 (#61)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* ✨ [Feature/#12] - discord command 업무 종료 (#64)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Chore: member 업무 기본값 추가

* Chore: error code 추가

* Feat: 누적 업무 시간, 업무 종료시 데이터 업데이트 로직 추가

* Chore: 조회 로직 추가

* Feat: 업무 시간 관련 update 서비스 로직 생성

* Feat: 업무 종료 slash command 추가

* Feat: 업무 종료시 이벤트 처리 로직 생성

* ✨ [Feature/#11] - 작업 기록 API 구현 (#65)

* feat: 스크럼 타임라인 API 구현

* fix: 필요없는 코드 삭제

* fix: 예외처리 코드 오류 수정

* feat: 프로젝트 팀 정보(상세) API 구현

* feat: 팀 권한 조회 API 구현

* feat: 권한 수정 API 구현

* fix: 프로젝트 Public 여부를 Team에서 Member에서 관리 (#67)

* ✨ [Feature] - 나의 대시보드 API #13 (#69)

* fix: 프로젝트 Public 여부를 Team에서 Member에서 관리

* feat: 프로필 정보 조회 API 구현

* feat: 프로필 정보 수정 API 구현

* fix: 프로젝트 팀 정보(상세)의 Dto 이름 수정

* feat: 참여 프로젝트 목록 API 구현

* feat: 프로젝트 공개 여부 전환 API 구현

* feat: 개인 프로젝트 기여도 API 구현

* ✨ [Feature/#14] - discord command 스크럼 종료 (#71)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: gpt api용 request, response dto 생성

* Feat: 스크럼 종료 시 데이터 업데이트 로직 작성

* Feat: using gpt api 서비스 로직 작성

* Chore: 코드 수정

* Feat: slash command 추가

* Feat: slash command action 추가

* ✨ [Feature/#15] - 동료 평가 API 구현 (#72)

* feat: 동료 평가 조회 API 구현

* fix: 동료 평가 조회 로직 수정

* feat: 동료 평가 작성 API 구현

* ✨ [Feature/#17] - discord command 프로젝트 종료 (#75)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: 프로젝트 상태 변경 로직 추가

* Feat: 프로젝트 종료, slash command 생성

* Feat: 프로젝트 종료, event 처리

* ✨ [Feature/#18] - 팀 관리 API 구현 (#76)

* feat: 업무 시간 상세 조회 API 구현

* feat: 업무 시간 상세 수정 API 구현

* ✨ [Feature/#19] - discord command 서버 최신화 적용 (#79)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: Team information 최신화 로직 추가

* Feat: 서버 최신화 slash command 추가

* Feat: 서버 최신화 slash command action 추가

* ✨ [Feature/#20] - 작업 척도 API (#80)

* fix: uri path 수정

* feat: 개인 작업 척도 API 구현

* fix: uri 경로 수정

* feat: 개인 전체 프로젝트 작업 척도 API 구현

* 🎨 [Refactor/#21] - discord command 질문 & 답변하기 완료  (#83)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Refactor: Quetion 저장 로직 변경

* Refactor: 예외처리 추가, 로직 변경점 적용

* 🎨 [Refactor/#22] - discord command 업무시작 & 업무종료  (#85)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Refactor: discord bot 예외처리 추가

* Refactor: 코드 리팩토링, 변경점 적용

* feat: 프로젝트 R&R 작성 및 수정 (#87)

* chore: 크레덴셜 수정 (#89)

* ✨ [Feature/#23] discord command '파트 입력' (#91)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: EPart 매칭 로직 작성

* Feat: 팀원의 파트를 입력하는 로직 생성

* Feat: slash command 추가

* Feat: action 추가, 예외처리 추가

* 🐛 [FIX/#26] - 테스트에서 확인된 오류 수정 (#93)

* chore: 크레덴셜 수정

* fix: API URI 수정

* fix: Builder 수정

* fix: Transactional 추가

* 🐛 [!HOTFIX] 업무 시간 상세 수정 API 오류 (#95)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* 🐛 [!HOTFIX] 동료 평가 조회 API (#97)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* 🐛 [!HOTFIX] R&R 작성 API (#99)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* ✨ [Feature/#34] - 크레덴셜 수정 반영 (#103)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* feat: Query parameter 예외 처리 코드

* feat: 받은 요청 리스트, 보낸 요청 리스트 쿼리파라미터 추가

* feat: 프로젝트 리스트 쿼리 파라미터 추가

* fix: endAt => startAt으로 변경

* feat: 팀원 작업 리스트 쿼리 파라미터 추가

* ✨ [Feature/#36] - 동료 평가 GPT 연결 및 오류 해결 (#106)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* fix: GPT 코드 리팩토링

* feat: 동료평가 GPT 연결

* fix: 오류 해결

* 🎨 [Refactor/#26] - discord command 코드 분리 (#108)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: 서버 한국 시간으로 지정

* Feat: discord exception handling 추가

* Chore: 문자열 파편화 방지

* Chore: discord 관심사의 분리 적용, 파일 분리

* Feat: 서버 시간 변경 적용

* 🐛 [Fix] - 에러 수정 (#110)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: 서버 한국 시간으로 지정

* Feat: discord exception handling 추가

* Chore: 문자열 파편화 방지

* Chore: discord 관심사의 분리 적용, 파일 분리

* Feat: 서버 시간 변경 적용

* Fix: 에러 수정

---------

Co-authored-by: JeongHeumChoi <[email protected]>
Co-authored-by: JeongHeumChoi <[email protected]>

* Fix: 응급수술, 이전 버전으로 롤백

* 🚀 [Deploy] - 에러 해결 불가, 이전 버전 롤백.. (#113)

* ✨ Feat: 도메인 생성 #31  (#34)

* Feat: User 도메인 생성

* Feat: Member 도메인 생성

* Feat: Team 도메인 생성

* Feat: Scrum 도메인 생성

* Feat: 도메인 상태 관리

* ✨ [Feature/#2] - boiler plate 추가 (#37)

* Feat: dependency 추가 및 정리

* Feat: global dto -> ResponseDto, ExceptionDto 생성

* Feat: ErrorCode 지정, CommonException 생성

* Feat: Global Exception Handler 추가

* Feat: Custom Annotation 생성

* Feat: UserId annotation -> interceptor, resolver 추가

* Feat: annotation 적용

* Feat: response status code 일치해주는 interceptor 생성

* Feat: 문자열 파편화 방지 클래스 생성

* ✨ [Feature/#3] - Spring Security 적용하기 (#39)

* Chore: json dependency 추가

* Feat: authentication filter, exception filter 생성

* Feat: authentication manager, provider 생성

* Feat: CustomUserDetailService 생성

* Feat: login handler 추가

* Feat: logout handler 추가

* Feat: exception handler 추가

* Feat: spring security info 생성

* Feat: 쿠키 유틸 생성

* Feat: 헤더 유틸 생성

* Feat: jwt util 생성

* Feat: Security Config 설정

* Feat: Token Dto 생성

* Feat: user repository -> security용 조회 로직 생성

* Feat: Passowrd Encoder 등록

* Feat: Spring Security 등록

* fix: Credential 업데이트

* ✨ [Feat/#3] - Spring Security api test (#43)

* Chore: json dependency 추가

* Feat: authentication filter, exception filter 생성

* Feat: authentication manager, provider 생성

* Feat: CustomUserDetailService 생성

* Feat: login handler 추가

* Feat: logout handler 추가

* Feat: exception handler 추가

* Feat: spring security info 생성

* Feat: 쿠키 유틸 생성

* Feat: 헤더 유틸 생성

* Feat: jwt util 생성

* Feat: Security Config 설정

* Feat: Token Dto 생성

* Feat: user repository -> security용 조회 로직 생성

* Feat: Passowrd Encoder 등록

* Feat: Spring Security 등록

* Chore: api path 수정

* Feat: refresh token update 추가

* Chore: api path 수정

* Chore: response json 수정

* Feat: 회원가입, reissue api 생성

* ✨ [ Feature /#4 ] - QuestionList API 구현 (#45)

* feat: QuestionList API 구현

* feat: TeamRepository 생성

* ✨ [Feature/#5] - 웹과 연동하기 discord action 구현 (#46)

* Chore: discord token 추가

* Chore: jda dependency 추가

* Feat: builder 추가, 칼럼 수정

* Feat: leader 추가 로직 생성

* Feat: user 조회 로직 추가

* Feat: 생성 로직 추가

* Feat: jda 적용, slash command 추가

* Feat: 웹과 연동하기 명령어 액션 추가

* Chore: discord token 추가 (#47)

* Chore: discord token 추가 (#48)

* 🐛 [Fix/#6] - user, team 예외처리 추가 (#50)

* Chore: discord token 추가

* Feat: 팀 구분용 칼럼 추가, builder 수정

* Feat: 조회 로직 추가

* Chore: 주석 추가, 약간의 최적화

* Feat: Team 유일성 부여

* ✨ [Feature/#7] - discord slash command, 질문하기 (#52)

* Chore: discord token 추가

* Feat: Question column 추가

* Feat: code 관련 조회 로직 추가

* Chore: 서비스 단 조회 로직 추가

* Feat: generate code 로직 생성

* Feat: 질문하기 slash command 추가

* Feat: slash command action 추가

* 🐛  [Fix/#4] - 팀 작업 기록 페이지 API 구현 (#55)

* feat: QuestionList API 구현

* feat: TeamRepository 생성

* fix: questionDtoList의 길이를 재는 것으로 수정

* feat: 팀 멤버 목록 조회 API 구현

* fix: 멤버가 존재하는지 예외처리

* refactor: 메소드 이름 수정 findByReceiverAndStatus => findAllByReceiverAndStatus

* feat: 팀원들의 작업 목록 서비스, 팀 작업 척도 서비스 구현

* refactor: Repository의 메소드 수정에 따른 메소드 수정

* feat: 팀 작업 척도 서비스 구현

* ✨ [Feature/#9] - discord '답변하기' command 생성 (#57)

* Chore: discord token 추가

* Feat: builder 추가

* Feat: Answer Repository 생성

* Feat: question status update 로직 생성

* Feat: Answer 생성 로직 추가

* Feat: question 조회, 수정 서비스 로직 추가

* Feat: NOT_FOUND_QUESTION error 추가

* Feat: 답변하기 slash commnad 추가

* Feat: slash command action 추가

* ✨ [Feature/#10] - discord 업무 시간 파악 (#59)

* Chore: discord token 추가

* Feat: builder 추가

* Feat: errorcode 추가

* Feat: 업무 중인 작업 조회 로직 추가

* Feat: Scrum 상태에 따른 조회 추가

* Feat: DB 조회 로직 적용

* Feat: 업무 시작 하기 slash command 추가

* Feat: 업무 시작 답변 action 추가

* ✨ [Feature/#8] - 질문 목록 페이지 API 구현 (#60)

* feat: 전체 프로젝트 목록 API

* feat: 질문 남기기 API 구현

* feat: Member 연결

* feat: 답변 남기기 API 구현

* feat: 질문 목록(받은 질문) API 구현

* feat: 질문 목록(보낸 질문) API 구현

* fix: 사용하지 않는 라이브러리 삭제

* 🐛 [!HOTFIX] - 오류 수정 (#61)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* ✨ [Feature/#12] - discord command 업무 종료 (#64)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Chore: member 업무 기본값 추가

* Chore: error code 추가

* Feat: 누적 업무 시간, 업무 종료시 데이터 업데이트 로직 추가

* Chore: 조회 로직 추가

* Feat: 업무 시간 관련 update 서비스 로직 생성

* Feat: 업무 종료 slash command 추가

* Feat: 업무 종료시 이벤트 처리 로직 생성

* ✨ [Feature/#11] - 작업 기록 API 구현 (#65)

* feat: 스크럼 타임라인 API 구현

* fix: 필요없는 코드 삭제

* fix: 예외처리 코드 오류 수정

* feat: 프로젝트 팀 정보(상세) API 구현

* feat: 팀 권한 조회 API 구현

* feat: 권한 수정 API 구현

* fix: 프로젝트 Public 여부를 Team에서 Member에서 관리 (#67)

* ✨ [Feature] - 나의 대시보드 API #13 (#69)

* fix: 프로젝트 Public 여부를 Team에서 Member에서 관리

* feat: 프로필 정보 조회 API 구현

* feat: 프로필 정보 수정 API 구현

* fix: 프로젝트 팀 정보(상세)의 Dto 이름 수정

* feat: 참여 프로젝트 목록 API 구현

* feat: 프로젝트 공개 여부 전환 API 구현

* feat: 개인 프로젝트 기여도 API 구현

* ✨ [Feature/#14] - discord command 스크럼 종료 (#71)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: gpt api용 request, response dto 생성

* Feat: 스크럼 종료 시 데이터 업데이트 로직 작성

* Feat: using gpt api 서비스 로직 작성

* Chore: 코드 수정

* Feat: slash command 추가

* Feat: slash command action 추가

* ✨ [Feature/#15] - 동료 평가 API 구현 (#72)

* feat: 동료 평가 조회 API 구현

* fix: 동료 평가 조회 로직 수정

* feat: 동료 평가 작성 API 구현

* ✨ [Feature/#17] - discord command 프로젝트 종료 (#75)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: 프로젝트 상태 변경 로직 추가

* Feat: 프로젝트 종료, slash command 생성

* Feat: 프로젝트 종료, event 처리

* ✨ [Feature/#18] - 팀 관리 API 구현 (#76)

* feat: 업무 시간 상세 조회 API 구현

* feat: 업무 시간 상세 수정 API 구현

* ✨ [Feature/#19] - discord command 서버 최신화 적용 (#79)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: Team information 최신화 로직 추가

* Feat: 서버 최신화 slash command 추가

* Feat: 서버 최신화 slash command action 추가

* ✨ [Feature/#20] - 작업 척도 API (#80)

* fix: uri path 수정

* feat: 개인 작업 척도 API 구현

* fix: uri 경로 수정

* feat: 개인 전체 프로젝트 작업 척도 API 구현

* 🎨 [Refactor/#21] - discord command 질문 & 답변하기 완료  (#83)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Refactor: Quetion 저장 로직 변경

* Refactor: 예외처리 추가, 로직 변경점 적용

* 🎨 [Refactor/#22] - discord command 업무시작 & 업무종료  (#85)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Refactor: discord bot 예외처리 추가

* Refactor: 코드 리팩토링, 변경점 적용

* feat: 프로젝트 R&R 작성 및 수정 (#87)

* chore: 크레덴셜 수정 (#89)

* ✨ [Feature/#23] discord command '파트 입력' (#91)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: EPart 매칭 로직 작성

* Feat: 팀원의 파트를 입력하는 로직 생성

* Feat: slash command 추가

* Feat: action 추가, 예외처리 추가

* 🐛 [FIX/#26] - 테스트에서 확인된 오류 수정 (#93)

* chore: 크레덴셜 수정

* fix: API URI 수정

* fix: Builder 수정

* fix: Transactional 추가

* 🐛 [!HOTFIX] 업무 시간 상세 수정 API 오류 (#95)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* 🐛 [!HOTFIX] 동료 평가 조회 API (#97)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* 🐛 [!HOTFIX] R&R 작성 API (#99)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* ✨ [Feature/#34] - 크레덴셜 수정 반영 (#103)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* feat: Query parameter 예외 처리 코드

* feat: 받은 요청 리스트, 보낸 요청 리스트 쿼리파라미터 추가

* feat: 프로젝트 리스트 쿼리 파라미터 추가

* fix: endAt => startAt으로 변경

* feat: 팀원 작업 리스트 쿼리 파라미터 추가

* ✨ [Feature/#36] - 동료 평가 GPT 연결 및 오류 해결 (#106)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* fix: GPT 코드 리팩토링

* feat: 동료평가 GPT 연결

* fix: 오류 해결

* 🎨 [Refactor/#26] - discord command 코드 분리 (#108)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: 서버 한국 시간으로 지정

* Feat: discord exception handling 추가

* Chore: 문자열 파편화 방지

* Chore: discord 관심사의 분리 적용, 파일 분리

* Feat: 서버 시간 변경 적용

* 🐛 [Fix] - 에러 수정 (#110)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: 서버 한국 시간으로 지정

* Feat: discord exception handling 추가

* Chore: 문자열 파편화 방지

* Chore: discord 관심사의 분리 적용, 파일 분리

* Feat: 서버 시간 변경 적용

* Fix: 에러 수정

* 🐛 [FIx] - 에러 해결 불가, 이전 버전으로 롤백 (#112)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: 에러해결 불가, 이전 버전으로 롤백

---------

Co-authored-by: JeongHeumChoi <[email protected]>
Co-authored-by: JeongHeumChoi <[email protected]>

* Fix: 응급수술 2차 (#114)

* ✨ Feat: 도메인 생성 #31  (#34)

* Feat: User 도메인 생성

* Feat: Member 도메인 생성

* Feat: Team 도메인 생성

* Feat: Scrum 도메인 생성

* Feat: 도메인 상태 관리

* ✨ [Feature/#2] - boiler plate 추가 (#37)

* Feat: dependency 추가 및 정리

* Feat: global dto -> ResponseDto, ExceptionDto 생성

* Feat: ErrorCode 지정, CommonException 생성

* Feat: Global Exception Handler 추가

* Feat: Custom Annotation 생성

* Feat: UserId annotation -> interceptor, resolver 추가

* Feat: annotation 적용

* Feat: response status code 일치해주는 interceptor 생성

* Feat: 문자열 파편화 방지 클래스 생성

* ✨ [Feature/#3] - Spring Security 적용하기 (#39)

* Chore: json dependency 추가

* Feat: authentication filter, exception filter 생성

* Feat: authentication manager, provider 생성

* Feat: CustomUserDetailService 생성

* Feat: login handler 추가

* Feat: logout handler 추가

* Feat: exception handler 추가

* Feat: spring security info 생성

* Feat: 쿠키 유틸 생성

* Feat: 헤더 유틸 생성

* Feat: jwt util 생성

* Feat: Security Config 설정

* Feat: Token Dto 생성

* Feat: user repository -> security용 조회 로직 생성

* Feat: Passowrd Encoder 등록

* Feat: Spring Security 등록

* fix: Credential 업데이트

* ✨ [Feat/#3] - Spring Security api test (#43)

* Chore: json dependency 추가

* Feat: authentication filter, exception filter 생성

* Feat: authentication manager, provider 생성

* Feat: CustomUserDetailService 생성

* Feat: login handler 추가

* Feat: logout handler 추가

* Feat: exception handler 추가

* Feat: spring security info 생성

* Feat: 쿠키 유틸 생성

* Feat: 헤더 유틸 생성

* Feat: jwt util 생성

* Feat: Security Config 설정

* Feat: Token Dto 생성

* Feat: user repository -> security용 조회 로직 생성

* Feat: Passowrd Encoder 등록

* Feat: Spring Security 등록

* Chore: api path 수정

* Feat: refresh token update 추가

* Chore: api path 수정

* Chore: response json 수정

* Feat: 회원가입, reissue api 생성

* ✨ [ Feature /#4 ] - QuestionList API 구현 (#45)

* feat: QuestionList API 구현

* feat: TeamRepository 생성

* ✨ [Feature/#5] - 웹과 연동하기 discord action 구현 (#46)

* Chore: discord token 추가

* Chore: jda dependency 추가

* Feat: builder 추가, 칼럼 수정

* Feat: leader 추가 로직 생성

* Feat: user 조회 로직 추가

* Feat: 생성 로직 추가

* Feat: jda 적용, slash command 추가

* Feat: 웹과 연동하기 명령어 액션 추가

* Chore: discord token 추가 (#47)

* Chore: discord token 추가 (#48)

* 🐛 [Fix/#6] - user, team 예외처리 추가 (#50)

* Chore: discord token 추가

* Feat: 팀 구분용 칼럼 추가, builder 수정

* Feat: 조회 로직 추가

* Chore: 주석 추가, 약간의 최적화

* Feat: Team 유일성 부여

* ✨ [Feature/#7] - discord slash command, 질문하기 (#52)

* Chore: discord token 추가

* Feat: Question column 추가

* Feat: code 관련 조회 로직 추가

* Chore: 서비스 단 조회 로직 추가

* Feat: generate code 로직 생성

* Feat: 질문하기 slash command 추가

* Feat: slash command action 추가

* 🐛  [Fix/#4] - 팀 작업 기록 페이지 API 구현 (#55)

* feat: QuestionList API 구현

* feat: TeamRepository 생성

* fix: questionDtoList의 길이를 재는 것으로 수정

* feat: 팀 멤버 목록 조회 API 구현

* fix: 멤버가 존재하는지 예외처리

* refactor: 메소드 이름 수정 findByReceiverAndStatus => findAllByReceiverAndStatus

* feat: 팀원들의 작업 목록 서비스, 팀 작업 척도 서비스 구현

* refactor: Repository의 메소드 수정에 따른 메소드 수정

* feat: 팀 작업 척도 서비스 구현

* ✨ [Feature/#9] - discord '답변하기' command 생성 (#57)

* Chore: discord token 추가

* Feat: builder 추가

* Feat: Answer Repository 생성

* Feat: question status update 로직 생성

* Feat: Answer 생성 로직 추가

* Feat: question 조회, 수정 서비스 로직 추가

* Feat: NOT_FOUND_QUESTION error 추가

* Feat: 답변하기 slash commnad 추가

* Feat: slash command action 추가

* ✨ [Feature/#10] - discord 업무 시간 파악 (#59)

* Chore: discord token 추가

* Feat: builder 추가

* Feat: errorcode 추가

* Feat: 업무 중인 작업 조회 로직 추가

* Feat: Scrum 상태에 따른 조회 추가

* Feat: DB 조회 로직 적용

* Feat: 업무 시작 하기 slash command 추가

* Feat: 업무 시작 답변 action 추가

* ✨ [Feature/#8] - 질문 목록 페이지 API 구현 (#60)

* feat: 전체 프로젝트 목록 API

* feat: 질문 남기기 API 구현

* feat: Member 연결

* feat: 답변 남기기 API 구현

* feat: 질문 목록(받은 질문) API 구현

* feat: 질문 목록(보낸 질문) API 구현

* fix: 사용하지 않는 라이브러리 삭제

* 🐛 [!HOTFIX] - 오류 수정 (#61)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* ✨ [Feature/#12] - discord command 업무 종료 (#64)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Chore: member 업무 기본값 추가

* Chore: error code 추가

* Feat: 누적 업무 시간, 업무 종료시 데이터 업데이트 로직 추가

* Chore: 조회 로직 추가

* Feat: 업무 시간 관련 update 서비스 로직 생성

* Feat: 업무 종료 slash command 추가

* Feat: 업무 종료시 이벤트 처리 로직 생성

* ✨ [Feature/#11] - 작업 기록 API 구현 (#65)

* feat: 스크럼 타임라인 API 구현

* fix: 필요없는 코드 삭제

* fix: 예외처리 코드 오류 수정

* feat: 프로젝트 팀 정보(상세) API 구현

* feat: 팀 권한 조회 API 구현

* feat: 권한 수정 API 구현

* fix: 프로젝트 Public 여부를 Team에서 Member에서 관리 (#67)

* ✨ [Feature] - 나의 대시보드 API #13 (#69)

* fix: 프로젝트 Public 여부를 Team에서 Member에서 관리

* feat: 프로필 정보 조회 API 구현

* feat: 프로필 정보 수정 API 구현

* fix: 프로젝트 팀 정보(상세)의 Dto 이름 수정

* feat: 참여 프로젝트 목록 API 구현

* feat: 프로젝트 공개 여부 전환 API 구현

* feat: 개인 프로젝트 기여도 API 구현

* ✨ [Feature/#14] - discord command 스크럼 종료 (#71)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: gpt api용 request, response dto 생성

* Feat: 스크럼 종료 시 데이터 업데이트 로직 작성

* Feat: using gpt api 서비스 로직 작성

* Chore: 코드 수정

* Feat: slash command 추가

* Feat: slash command action 추가

* ✨ [Feature/#15] - 동료 평가 API 구현 (#72)

* feat: 동료 평가 조회 API 구현

* fix: 동료 평가 조회 로직 수정

* feat: 동료 평가 작성 API 구현

* ✨ [Feature/#17] - discord command 프로젝트 종료 (#75)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: 프로젝트 상태 변경 로직 추가

* Feat: 프로젝트 종료, slash command 생성

* Feat: 프로젝트 종료, event 처리

* ✨ [Feature/#18] - 팀 관리 API 구현 (#76)

* feat: 업무 시간 상세 조회 API 구현

* feat: 업무 시간 상세 수정 API 구현

* ✨ [Feature/#19] - discord command 서버 최신화 적용 (#79)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: Team information 최신화 로직 추가

* Feat: 서버 최신화 slash command 추가

* Feat: 서버 최신화 slash command action 추가

* ✨ [Feature/#20] - 작업 척도 API (#80)

* fix: uri path 수정

* feat: 개인 작업 척도 API 구현

* fix: uri 경로 수정

* feat: 개인 전체 프로젝트 작업 척도 API 구현

* 🎨 [Refactor/#21] - discord command 질문 & 답변하기 완료  (#83)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Refactor: Quetion 저장 로직 변경

* Refactor: 예외처리 추가, 로직 변경점 적용

* 🎨 [Refactor/#22] - discord command 업무시작 & 업무종료  (#85)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Refactor: discord bot 예외처리 추가

* Refactor: 코드 리팩토링, 변경점 적용

* feat: 프로젝트 R&R 작성 및 수정 (#87)

* chore: 크레덴셜 수정 (#89)

* ✨ [Feature/#23] discord command '파트 입력' (#91)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: EPart 매칭 로직 작성

* Feat: 팀원의 파트를 입력하는 로직 생성

* Feat: slash command 추가

* Feat: action 추가, 예외처리 추가

* 🐛 [FIX/#26] - 테스트에서 확인된 오류 수정 (#93)

* chore: 크레덴셜 수정

* fix: API URI 수정

* fix: Builder 수정

* fix: Transactional 추가

* 🐛 [!HOTFIX] 업무 시간 상세 수정 API 오류 (#95)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* 🐛 [!HOTFIX] 동료 평가 조회 API (#97)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* 🐛 [!HOTFIX] R&R 작성 API (#99)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* ✨ [Feature/#34] - 크레덴셜 수정 반영 (#103)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* feat: Query parameter 예외 처리 코드

* feat: 받은 요청 리스트, 보낸 요청 리스트 쿼리파라미터 추가

* feat: 프로젝트 리스트 쿼리 파라미터 추가

* fix: endAt => startAt으로 변경

* feat: 팀원 작업 리스트 쿼리 파라미터 추가

* ✨ [Feature/#36] - 동료 평가 GPT 연결 및 오류 해결 (#106)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* fix: GPT 코드 리팩토링

* feat: 동료평가 GPT 연결

* fix: 오류 해결

* 🎨 [Refactor/#26] - discord command 코드 분리 (#108)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: 서버 한국 시간으로 지정

* Feat: discord exception handling 추가

* Chore: 문자열 파편화 방지

* Chore: discord 관심사의 분리 적용, 파일 분리

* Feat: 서버 시간 변경 적용

* 🐛 [Fix] - 에러 수정 (#110)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Feat: 서버 한국 시간으로 지정

* Feat: discord exception handling 추가

* Chore: 문자열 파편화 방지

* Chore: discord 관심사의 분리 적용, 파일 분리

* Feat: 서버 시간 변경 적용

* Fix: 에러 수정

* 🐛 [FIx] - 에러 해결 불가, 이전 버전으로 롤백 (#112)

* Chore: discord token 추가

* Hotfix: api path 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: db 구조 변경에 따른 builder 수정

* Fix: 에러해결 불가, 이전 버전으로 롤백

* Fix: 오타 수정

---------

Co-authored-by: JeongHeumChoi <[email protected]>
Co-authored-by: JeongHeumChoi <[email protected]>

* Fix: 3차 응급수술..

---------

Co-authored-by: JeongHeumChoi <[email protected]>
Co-authored-by: JeongHeumChoi <[email protected]>

* ✨ [Feature/#28] discord command '동료평가작성' #28 (#118)

* Feat: '동료평가작성' 커멘드 추가

* Feat: '동료평가작성' 완료시 gpt 요약 기능 적용

* Feat: '동료평가작성' 로직 작성

* Feat: '동료평가작성' event 처리 및 적용

* 🐛 [FIx/#29] - 유저 정보 API (#119)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* fix: memberId 추가

* 🐛 [FIx/#31] - 스크럼 조회 API 수정 (#123)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* fix: 스크럼 타임라인 API URI 수정 및 쿼리 파라미터 추가

* ✨ [Feature/#30] - discord command 동료평가 (#125)

* Feat: '동료평가조회' 로직 추가

* Feat: '동료평가조회' 커멘드, event 처리 추가

* ✨ [Feature/#33] - 다른 유저 정보 API (#128)

* chore: 크레덴셜 수정

* fix: 업무시간 상세 수정 API 오류 해결

* fix: 동료 평가 조회 API 수정

* fix: R&R 작성 API 수정

* feat: 다른 유저 정보 API

---------

Co-authored-by: Lim jeong woo <[email protected]>
  • Loading branch information
JeongHeumChoi and dlawjddn authored Mar 23, 2024
1 parent 7503797 commit 633e8b5
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,10 @@ public static void main(String[] args) {
Commands.slash("서버최신화", "디스코드의 서버 이름과 이미지의 변경점을 웹에 적용해요 ! "),
Commands.slash("동료평가작성", "개발이 마무리 되셨나요? 프로젝트 종료 이후에 팀원들 사이에 동료평가를 작성할 수 있습니다 !")
.addOption(OptionType.USER, "receiver", "동료평가를 할 사람을 지정해주세요", true)
.addOption(OptionType.STRING, "evaluate", "동로평가의 내용을 작성해주세요", true)
.addOption(OptionType.STRING, "evaluate", "동로평가의 내용을 작성해주세요", true),
Commands.slash("동료평가조회", "팀원들 사이의 동료평가를 조회할 수 있어요 !")
.addOption(OptionType.USER, "writer", "동료평가의 평가자를 선택해주세요", true)
.addOption(OptionType.USER, "receiver", "동료평가의 피평가자를 선택해주세요", true)
).queue();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,9 @@ public ResponseDto<?> getUserInfo(@UserId Long userId) {
public ResponseDto<?> patchUser(@UserId Long userId, @RequestBody UserPatchDto userPatchDto) {
return ResponseDto.ok(userService.patchUser(userId, userPatchDto));
}

@GetMapping("/members/{membersId}/user-info")
public ResponseDto<?> getUserInfoByMembersId(@UserId Long userId, @PathVariable Long membersId) {
return ResponseDto.ok(userService.getUserInfoByMembersId(userId, membersId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -291,17 +291,24 @@ public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
event.reply("이미 동료평가를 작성한 팀원입니다 ! 다른 분의 동료평가를 작성해주세요 !").setEphemeral(true).queue();
return ;
}

// 본인에게 작성할 수 없음
if (sendMember.getId().equals(receiveMember.getId())){
event.reply("본인에게 동료평가를 작성할 수 없습니다 ! 다른 분의 동료평가를 작성해주세요 !").setEphemeral(true).queue();
return ;
}

// 동료평가 작성
reviewService.saveReview(targetTeam, sendMember, receiveMember, event.getOption("evaluate").getAsString());
log.info("동료평가 작성 완료");

// 받은 사람을 기준으로 개수 파악 -> 팀 멤버 - 1 -> gpt로 요약 ㄱㄱ
List<Review> findReviews = reviewService.findAllByReceiver(receiveMember);
List<Member> discordPeople = event.getGuild().getMembers();
List<Member> discordPeople = event.getGuild().getMembers()
.stream().filter(teamMate -> !teamMate.getUser().isBot()).toList();

// 모두가 동료평가를 작성한 경우 -> gpt 요약 필요
if (findReviews.size() == discordPeople.size() - 2) {// 봇과 자기 자신
if (findReviews.size() == discordPeople.size() - 1) {// 봇과 자기 자신
List<String> reviews = findReviews.stream()
.map(review -> review.getContent())
.toList();
Expand All @@ -317,10 +324,36 @@ public void onSlashCommandInteraction(SlashCommandInteractionEvent event) {
event.reply("gpt 요약 기능에서 문제가 생겼어요.. ㅠㅠ 잠시후 시도해 주세요..!").setEphemeral(true).queue();
return ;
}
/*
모두의 동료평가가 끝난 경우 프로젝트 상태 변경? FINISH로?
*/
} else { // 그렇지 않은 경우
event.reply("동료평가 작성이 완료 되었습니다 !, 다른 동료평가도 진행해주세요 ~ !").setEphemeral(true).queue();
}
break;

case "동료평가조회":
Team mine = myTeam(event);
if (!mine.getStatus().equals(EProjectStatus.PEER_REVIEW)){
event.reply("동료평가 단계가 아닙니다 ㅠㅠ. 프로젝트를 종료해주세요 !").setEphemeral(true).queue();
return ;
}
goormthon.team28.startup_valley.domain.Member findSender = getMember(event, event.getOption("writer").getAsUser().getName());
goormthon.team28.startup_valley.domain.Member findReceiver = getMember(event, event.getOption("receiver").getAsUser().getName());
Optional<Review> optionalReview = reviewService.findBySenderAndReceiver(findSender, findReceiver);
if (optionalReview.isEmpty()){
event.reply("아직 진행되지 않은 동료평가입니다 ! 동료평가를 얼른 진행해주세요 ~ !").setEphemeral(true).queue();
return ;
}

event.reply(
event.getOption("writer").getAsUser().getAsMention() + "께서 " +
event.getOption("receiver").getAsUser().getAsMention() +"께 한 동료평가 입니다 ! \n\n" +
"동료평가 : " + optionalReview.get().getContent()
).setEphemeral(true).queue();

break;
// R&R 작성시 -> 프로젝트 상태 고려 해야할 듯? 그러면 그 상태는 어디에서?
}
}
public List<String> findNoSignUp(List<Member> members) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;

@Slf4j
@Service
Expand Down Expand Up @@ -123,4 +124,7 @@ public boolean isAlreadyExistReview(Member sender, Member receiver){
public List<Review> findAllByReceiver(Member receiver){
return reviewRepository.findAllByReceiver(receiver);
}
public Optional<Review> findBySenderAndReceiver(Member sender, Member receiver){
return reviewRepository.findBySenderAndReceiver(sender, receiver);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,17 @@ public Boolean patchUser(Long userId, UserPatchDto userPatchDto) {

return Boolean.TRUE;
}

public UserDto getUserInfoByMembersId(Long userId, Long membersId) {

Member targetMember = memberRepository.findById(membersId)
.orElseThrow(() -> new CommonException(ErrorCode.NOT_FOUND_MEMBER));
User targetUser = targetMember.getUser();
return UserDto.of(
targetUser.getId(),
membersId,
targetUser.getNickname(),
targetUser.getProfileImage()
);
}
}

0 comments on commit 633e8b5

Please sign in to comment.