Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Release] 리뷰미 v2.0.0 배포 #916

Merged
merged 49 commits into from
Oct 23, 2024
Merged

[Release] 리뷰미 v2.0.0 배포 #916

merged 49 commits into from
Oct 23, 2024

Conversation

nayonsoso
Copy link
Contributor

업데이트 내용

  • 섹션별, 질문별 모아보기 기능이 추가되었습니다.
  • 모아보기 페이지에서 형광펜을 사용할 수 있습니다.

nayonsoso and others added 30 commits October 8, 2024 16:36
* refactor: 실제와 다른 부분 api docs 에서 수정

- CHECKBOX이면, answer(서술형 답변)이 null 이어야 한다.

* refactor: 함수 이름 변경

- 이제 세션을 사용하는 것이 기본 값이므로, 다른 함수들과 형식을 통일한다.

* feat: 리뷰 요약 응답 dto 생성

* feat: 리뷰 요약 컨트롤러 메서드, 서비스 코드 작성

- 컴파일 에러만 안나게 해둔 상태

* test: 리뷰 요약 API 테스트 작성

* feat: 섹션 목록 응답 dto 생성

* feat: 섹션 목록 조회 컨트롤러, 서비스 코드 작성

* test: 섹션 목록 조회 API 테스트

* docs: RestDocs 에 추가

* feat: 섹션 별 리뷰 응답 dto 생성

* feat: 섹션 별 리뷰 조회 컨트롤러, 서비스 코드 작성

* test: 섹션 별 리뷰 조회 API 테스트

* docs: RestDocs 에 추가

* refactor: dto 이름 변경

- 복수의 리뷰들이 대한 이름이므로, s를 붙이도록

* refactor: 인자 순서 변경

* refactor: 응답 dto 이름 변경

- 하나의 모듈에는 되도록 같은 이름의 클래스가 없도록

* refactor: 응답 dto 이름 변경

- GatheredReviewsResponse -> ReviewsGatherBySectionResponse
- GatheredReviewResponse ->
ReviewsGatherByQuestionResponse

* fix: API 테스트 수정

- DTO 인자 순서 변경 반영

* refactor: Nested 클래스 이름 영어로 변경

* refactor: Nested 클래스 이름 대문자로 변경

* docs: 쿠키 설명 변경

- 세션 쿠키 -> 세션 ID

* docs: 문서 구조 변경

- 모이보기 파트 따로 분리

* refactor: dto 이름 수정

- GatherBy -> GatheredBy

* docs: 응답 내용에 대한 설명 보충
* feat: 하이라이트 요청 dto 생성

* feat: 하이라이트 뼈대 코드 작성

* docs: API 문서 작성

* docs: request cookie 필드 추가

* fix: 재귀적 `@Valid` 적용

* fix: 세션 값 추가

* refactor: API에 질문 ID 필드 추가

* refactor: 비어있지 않으면 안 되는 부분들에 대한 검증 추가
* feat: Switch 컴포넌트 제작

* chore: Switch 컴포넌트 이름 변경

* feat: 리뷰 모아보기에 대한 라우팅 추가 및 임시 페이지 구현

* feat: 리뷰 모아보기와 리뷰 목록 페이지의 공통 레이아웃 제작

* refactor: 공통 레이아웃 제작에 따른 ReviewList 리팩토링

* feat: 리뷰 목록 반응형 적용

* feat: OptionSwitch 반응형 적용

* refactor: ReviewDisplayLayout 반응형 수정

* fix: px을 rem으로 수정

* fix: 미디어 쿼리 기준 단위를 px으로 수정

* refactor: 스타일을 위한 속성에 $처리 및 스타일 전용 인터페이스 생성

* fix: 불필요한 상속 제거

* refactor: OptionSwitch 리팩토링 - option 배열을 통한 렌더링 및 시맨틱 태그를사용

* refactor: OptionSwitch 컴포넌트 리팩토링에 따른 ReviewDisplayLayout 컴포넌트 리팩토링 및 훅 분리

* feat: 선택하지 않은 option을 hover한 경우의 추가 배경색 지정

* fix: 리뷰 작성 완료 페이지에서 breadCrumb으로 리뷰 작성 페이지로 이동하는 경로를 절대 URL 경로로 수정
* feat: Switch 컴포넌트 제작

* chore: Switch 컴포넌트 이름 변경

* feat: 리뷰 모아보기에 대한 라우팅 추가 및 임시 페이지 구현

* feat: 리뷰 모아보기와 리뷰 목록 페이지의 공통 레이아웃 제작

* refactor: 공통 레이아웃 제작에 따른 ReviewList 리팩토링

* feat: 리뷰 목록 반응형 적용

* feat: OptionSwitch 반응형 적용

* refactor: ReviewDisplayLayout 반응형 수정

* feat: 공통 Dropdown 컴포넌트 작성

* design: 화살표 버튼 오른쪽 고정 및 옵션을 드래그하지 못하게 수정

* feat: Dropdown 외부 클릭 시 닫히도록 하는 기능 구현

* refactor: Dropdown 로직을 훅으로 분리

* chore: props 명칭 변경 및 선택된 아이템 ellipsis 처리

* feat: Accordion 공통 컴포넌트 작성

* chore: index에 Dropdown, Accordion 추가

* feat: theme에 Dropdown의 z-index 추가

* chore: 누락된 index 추가

* design: Dropdown border 색상 변경

* refactor: Accordion 로직 훅으로 분리

* fix: px을 rem으로 수정

* design: Dropdown 및 Accordion의 margin-bottom 속성 제거

* feat: 초기에 열려있는 Accordion 구현을 위해 prop 추가

* feat: 모아보기 페이지 type 정의

* feat: 모아보기 페이지 목 데이터 작성

* design: Accordion 컴포넌트에서 불필요한 props 제거

* design: Accordion 반응형 구현

* feat: 목 데이터를 사용하여 모아보기 페이지 퍼블리싱

* design: Accordion height 수정 및 스타일 인터페이스 정의

* style: prop명 변경

* design: Dropdown 스타일 인터페이스 정의

* feat: Accordion 제목 왼쪽 정렬 및 애니메이션 추가

* style: 바뀐 prop명 적용

* design: Dropdown이 500px 이하에서 왼쪽 정렬되도록 수정

* merge

---------

Co-authored-by: ImxYJL <[email protected]>
* feat: Switch 컴포넌트 제작

* chore: Switch 컴포넌트 이름 변경

* feat: 리뷰 모아보기에 대한 라우팅 추가 및 임시 페이지 구현

* feat: 리뷰 모아보기와 리뷰 목록 페이지의 공통 레이아웃 제작

* refactor: 공통 레이아웃 제작에 따른 ReviewList 리팩토링

* feat: 리뷰 목록 반응형 적용

* feat: OptionSwitch 반응형 적용

* refactor: ReviewDisplayLayout 반응형 수정

* feat: 공통 Dropdown 컴포넌트 작성

* design: 화살표 버튼 오른쪽 고정 및 옵션을 드래그하지 못하게 수정

* feat: Dropdown 외부 클릭 시 닫히도록 하는 기능 구현

* refactor: Dropdown 로직을 훅으로 분리

* chore: props 명칭 변경 및 선택된 아이템 ellipsis 처리

* feat: Accordion 공통 컴포넌트 작성

* chore: index에 Dropdown, Accordion 추가

* feat: theme에 Dropdown의 z-index 추가

* chore: 누락된 index 추가

* design: Dropdown border 색상 변경

* refactor: Accordion 로직 훅으로 분리

* fix: px을 rem으로 수정

* design: Dropdown 및 Accordion의 margin-bottom 속성 제거

* feat: 초기에 열려있는 Accordion 구현을 위해 prop 추가

* feat: 모아보기 페이지 type 정의

* feat: 모아보기 페이지 목 데이터 작성

* design: Accordion 컴포넌트에서 불필요한 props 제거

* design: Accordion 반응형 구현

* feat: 목 데이터를 사용하여 모아보기 페이지 퍼블리싱

* feat: 질문별 통계 차트 구현

* feat: 통계 차트 세부사항 표시

* feat: 질문 길이에 따라 색상을 생성하는 함수 구현

* chore: DoughnutChart 파일 위치 변경

* feat: 차트 애니메이션 적용 및 비율을 텍스트로 시각화

* chore: 비율을 'n표' 형식으로 수정

* chore: 불필요한 텍스트 제거

* feat: ReviewCollectionPage에 DoughnutChart 컴포넌트 적용

* feat: 통계 차트에 반응형 적용

* refactor: theme에 있는 primary 색상 활용

* chore: 불필요한 코드 제거

* refactor: 차트 애니메이션 제거

* chore: Accordion에 넘겨주는 props 변수명 수정

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: chysis <[email protected]>
* ci : draft-js , react-draft-wysiwyg 패키지 설치

* feat: 에디터 테스트 페이지 추가

* feat: 형광펜 기능 및 변경된 내용을 추출해 다시 Editor로 보여주는 기능 추가

* feat: 서버에 필요한 스타일 정보만 주는 방향으로 기능 수정

* feat: 하이라이트 기능 - 블럭별로, 하나의 하이라이트 기능 생성

* refactor: 하이라이트 기능 - 하나의 블록에 하나의 하이라이트 리팩토링

* feat: 하나의 블럭에 여러개의 하이라이트 추가 기능 구현

* refactor: 상태명 변경, 함수에 대한 설명 추가

 blocks->blockList

* feat: 하이라이트를 일부만 선택해도 지우는 기능 추가

* fix: 여러 블럭 하이라이트 추가 오류 수정

* fix: 여러 블록 하이라이트 삭제 기능 오류 수정

* refactor: highlight 타입, 유틸 함수 분리

* refactor: HighlightEditor 공통 컴포넌트로 분리

* feat: 하이라이트 추가 및 삭제 후 document에 선택된 것들 삭제하는 기능 추가

* ci: draft-js 관련 패키지 모두 삭제

* refactor: useHighlight훅 분리

하이라이트에 따른 blockList 상태, 버튼 이벤트 핸들러들을 useHighlight훅으로 분리

* feat: EidtorTestPage에 drft-js 사용한 Editor 삭제 및  HighlightEditor 반영

* refactor: 타입명 변경( EditorBlock -> EditorBlockData)

* refactor: EDIOR_BLOCK_CLASS_NAME 상수 추가 및 적용

* refactor:HightlightEditor에서 EditorBlock , Sentence 컴포넌트 분리

* refactor: getSelectionInfo 분리

 -calculateStartAndEndBlock , getSelectionOffsetBlockInfo  분리

* feat: 드래그 방향이 정방향인지 역방향인지 계산하는 유틸 함수 추가

* fix: isForwardDrag 계산 오류 수정 및 타입명 변경

* feat: 드래그 방향에 다른 버튼 위치 계산해서 화면에 띄우는 기능 추가

* feat: 하이라이트 적용 후, 버튼 숨기는 기능 추가

* refactor: useHightlightButtonPosition 훅 분리 및 HIGHLIGHT_BUTTON_CLASS_NAME 위치 변경

* feat: 하이라이트 편집 기능 켜기/끄기 기능 추가

* feat: 하이라이트 적용 여부를 판단하는 훅 생성 및 하이라이트 적용된 span 클래스 추가

* feat: Highlight에 length 대신 end를 받는 것으로 변경

* fix: 하이라이트 추가/삭제 판단 기능 오류 수정

- 오류 :anchorNode, focusNode가 하이라이트 되어 있고, 그 사이가 하이라이트 안되어있을 때, delete 버튼이 나오는 오류 수정

* fix: 형광펜 추가,삭제시  start,end 관련 오류 수정

* refactor: splitTextWidthHighlightList 위치 변경(uitls-> EditorBlock)

* fix: 삭제 시, 마지막 블럭 오류 수정

* fix: end의 경우 포커스 위치가 글자 idnex보다 1커서 생기는 오류 수정

* refactor: highlight 유틸 함수들 파일별로 분리

* refactor: 하이라이트 이진법 배열 생성 함수 분리 및 함수 설명문 추가

* feat: 하이라이트 된  span 클릭 시, 하이라이트 삭제 할 수 있는 기능 생성

* refactor : HighlightRemoverWrapper,HighlightToggleButtonContainer 분리 및 네이밍 변경

* feat: 하나의 질문에 대한 여러 답변들에 하이라이트 기능을 넣을 수 있도록 수정

* fix: 여러 답변을 걸쳐 하이라이트를 추가할 때 오류 수정

- answer에 해당 답변 index 추가

* feat: 여러 답변에 대한 하이라이트 삭제 기능 추가

* refactor: Sentence -> Syntax로 네이밍 변경, HIghlight 키 네이밍 변경

* feat: 서버에서 내려주는 답변 데이터를 사용할 수 있도록 함

* refactor: useHighlight 리팩토링 및 api 연결 준비

* design: 스크린 리더기에서만 읽히는 클래스 추가 및 스타일 설정

* feat: HighlightButton 합성 컴포넌트 생성 및 스타일 적용

* fix: fixed 설정으로 인한 스크롤 시 버튼 위치 이동하는 오류 수정

- absoulte를 사용해 부모 위치를 기준으로 함

* chore: 불필요한 코드 삭제

* design: 버튼 그림자 변경

* design: 하이라이트 버튼 그림자 더 진하게 변경

* fix: IterableIterator 순환 오류 해결

* chore: 버튼 설명 수정

* feat: SwitchButton 생성

* refactor: isAbleEdit -> isEditAble 네이밍 변경

* feat: HighlightEditor 컴포넌트, 스타일 파일 생성

* design: SwitchButton에 마진 추가

* chore: pareInt -> Number로 변경

* refactor: div 태그 p 태그로 변경

* feat: 하이라이트 mouseup, mouedown을 document에 적용

* fix: 한 글자 삭제 시 삭제 안되는 오류 수정

* fix: 하이라이트 된 한 글자에 대한 드래그 시 버튼 오류 수정

- 드래그시 드래그용 삭제 버튼과 클릭용 삭제 버튼 모두 나오는 오류 수정

* refactor: 서버에서 주는 리뷰 모아보기 데이터에 맞춰서 타입 리팩토링

* feat: 하이라이트 api 핸들러 생성 및 endpoints 생성

* feat: 하이라이트 목 핸들러 생성

* feat: HighlightEditor에 questinoId 추가

* feat: useHighlight에 api 연동

- 드래그를 통한 추가/삭제 및 클릭을 통한 삭제 핸들러에 api 연동

* chore: 코드 설명을 위한 주석 추가

* fix: 토글 버튼이 Editor를 넘어설 경우,  전체적으로 보이지 않는 오류 수정

* fix : 클릭 삭제 버튼이 Editor 위치를 넘어서는 오류 수정

* refactor: 하이라이트 버튼 사이즈 상수화

* refactor: block ->line으로 수정

* fix: 여러 글자 중 하나에 대한 하이라이트 삭제 오류 수정

- 여러 글자에 하이라이트 되어있고, 그 중 한 글자만 삭제될 경우 전체 하이라이트가 삭제되는 오류 수정

* refactor: editable 변수명 오타 수정

* chore: 불필요한 import문 삭제
* feat: 받은 리뷰 정보 모킹 데이터 생성

* feat: 받은 리뷰 정보를 가져오는 API 엔드포인트 추가

* feat: 받은 리뷰 정보 API를 호출하는 함수 작성

* feat: 받은 리뷰 정보 API를 사용하는 리액트 쿼리 훅 추가

* refactor: 받은 리뷰 정보 API 스펙에 맞춰 코드 수정

* feat: ReviewInfoData 타입 지정

* feat: 받은 리뷰 정보를 가져오는 API 요청에 대한 모킹 핸들러 작성
* feat: 섹션 리스트 요청 엔드포인트 및 호출 로직 작성

* feat: react-query를 사용하여 섹션 리스트 요청 로직 구현 및 msw 모킹

* feat: 모아보기 리뷰 엔드포인트 및 호출 로직 작성

* fix: Dropdown 컴포넌트가 상태로 DropdownItem을 가지도록 수정

* feat: react-query를 사용하여 섹션별 모아보기 요청 로직 구현 및 msw 모킹

* fix: msw handler에 쿠키 확인하는 코드 추가

* feat: 형광펜 에디터 적용 및 인터페이스 수정

* chore: 불필요한 코드 제거
* fix: 받은 리뷰가 중복되어 표시되는 오류 수정

* design: 형광펜 에디터가 답변을 list 형태로 출력하도록 설정

* design: 답변 간 간격 설정
* feat: 섹션 이름 목록 응답 기능 구현

* test: 섹션 이름 목록 응답 기능 테스트 작성

* refactor: section의 questionIds eager 로딩 변경

* test: 섹션 이름 목록 테스트 시, 이름으로 검증할 수 있도록 변경

* test: 섹션 이름 목록 반환 테스트 시, 검증하려는 섹션명을 따로 빼는 것으로 변경
* feat: 리뷰 요약 조회 기능 구현

* test: 리뷰 요약 조회 기능 테스트 작성

* test: 리뷰 그룹 픽스쳐 사용하도록 변경

* test: 리뷰 요약 조회 테스트에서 list 수를 확인하도록 변경

* test: 리뷰 요약 정보 조회 테스트에 다른 그룹 추가하는 조건 설정

* refactor: Transactional 설정

* style: 개행
* feat: 하이라이트 기능을 위한 도메인, 테이블, 레포지토리 생성

* refactor: reviewRequestCode도 서비스에 함께 넘기도록 수정

* feat: 하이라이트 수정을 위한 삭제, 저장 로직 구현

* feat: 하이라이트 수정을 위한 검증 로직 구현

* db: 하이라이트 조회 성능과 동시성을 위한 복합 인덱스 추가

* fix: 리뷰 그룹으로 질문 검증하는 로직 수정

* refactor: 레포지토리에 기존에 있던 메서드 활용하도록 수정

* fix: 테이블명 오류 수정

* refactor: 초기화시 필드 순서 수정

* test: 하이라이트 레포지토리 테스트 추가

* test: 하이라이트 입력 검증 테스트 추가

* test: 하이라이트 수정 기능 서비스 테스트 추가

* refactor: 생성자 파라미터 및 필드 순서 변경

* fix: not null 설정 오타 수정

* refactor: 검증 순서 변경

* refactor: jpa 기본 메서드로 쿼리 여러개 나가는 부분을 @query로 변경

* style: 개행 수정

* refactor: 에러 메세지 수정

* db: 하이라이트 인덱스 관련 데이터 타입 int로 수정

* refactor: 하이라이트 표시 위치 관련 속성을 객체로 분리

* refactor: JPQL로 변경

* refactor: 기존 레포지토리 메서드를 사용하도록 변경

* refactor: 메서드 네이밍 수정

* refactor: 하이라이트 위치 속성 객체에 추가 설정

* refactor: 하이라이트 엔티티에서 reviewGroupId, questionId 필드 제거

* refactor: 기존 하이라이트 제거를 answerId를 통해 하도록 변경

* test: 책임을 이동한 테스트 제거 및 테스트 오류 수정

* db: 테이블에 questionId, review_group_id 컬럼 제거 반영

* refactor: 기존 중복 요청 메서드 제거

* refactor: 중복 요청의 경우 하나만 저장하도록 EqualsAndHashCode 재정의

* refactor: 하이라이트 저장시 순서 보장 적용

* refactor: HighlightPosition 검증, 객체 생성 후 하이라이트 객체 생성하도록 변경

* refactor: 엔티티의 equals 조건 id로 복원 및 중복 제거 로직 삭제

* refactor: HighlightPosition 객체 생성 위치 생성자 내로 이동

* refactor: 예외명 수정

* refactor: 하이라이트 인덱스의 검증 추가

* refactor: 양수 검증 메서드명 수정

* test: 필드에 접근 제어자 추가

* fix: 하이라이트 줄 번호 계산 로직 및 변수명 수정
* refactor: dto 이름 변경

AnswerContentResponse -> TextResponse

* feat: 질문ID에 해당하는 Answer 반환 함수 추가

* feat: 질문ID에 해당하는 OptionItem들 반환 함수 추가

* feat: 리뷰 요청 코드와 섹션ID에 해당하는 질문 반환 함수 추가

* feat: 리뷰 모이보기 API 구현

* refactor: 테스트에서 검증하고자 하는 것을 분명히

* refactor: 패키지 의존 방향 통일을 위한 레포지토리 함수 이동

* refactor: 테스트 목적에 해당하는 것만 남기기

* refactor: 함수 이름 변경

- 인자가 List<Long> 이므로, ids 로 끝나게 변경함

* refactor: 가동성을 위한 함수 분리

* refactor: 다른 서비스 클래스들과 네이밍 통일

* feat: 리뷰 요청 코드 검증, 섹션 아이디 검증 추가

* refactor: 섹션에 해당하는 질문 가져오는 함수 수정

AS-IS: 내 리뷰그룹 중 특정 세션에 대한 질문 가져오기
TO-BE: 리뷰그룹 검증 완료되었으므로 특정 세션에 대해서만 가져오도록 수정

* refactor: 답변 가져오는 함수 수정

AS-IS: 특정 질문에 대해서 답변된 것 다 받아오기
TO-BE: 내 리뷰 그룹에 해당한다는 조건 추가

* feat: 답변하지 않은 내용은 빈 배열로 받아오도록 하는 기능 추가

* fix: 깨지는 테스트 코드 봉합

* refactor: Mapper 분리

* refactor: 섹션 검증 방법 변경

AS-IS: boolean 으로 검증, sectionId 인자 그대로 사용
TO-BE: Optional<Section>으로 검증, section.getId() 사용

* refactor: 필요없는 JOIN 제거

* test: 테스트 코드 목적별로 분리

* feat: 질문 목록을 position 순서대로 정렬

* refactor: 테스트 코드 extracting 사용 변경

AS-IS: attribute 값을 문자열로 하드코딩
TO-BE: dtp 의 필드명으로 가져오기 e.g. VoteResponse::content

* chore: 오타 수정

* test: 다른 리뷰 그룹이 있는 상황에 대한 테스트

* refactor: 접근제어자 수정

* feat: 하이라이트 응답 추가

* test: 추가된 속성 반환 테스트

* refactor: 유연한 레포지토리 함수로 변경

* refactor: 변수명 변경

* refactor: 가독성 개선

함수 분리, 변수명 변경, 함수 인자 변경

* refactor: Answer -> 구체Answer 캐스팅 예외 추가

* refactor: 서술형 답변 가져오는 함수 수정

* refactor: 선택지 목록 가져오는 함수 수정

* test: reviewGatherMapper에 대한 테스트 작성

* style: 개행

- 가독성 개선와 컨벤션 유지를 위함

* chore: 로그 메세지 수정

- 컨벤션 유지를 위함

* refactor: 컨트롤러 인자 타입 변경

- Long -> long

* feat: 최대로 내려주는 응답 수 제한 기능 구현

* refactor: 테스트 코드 필드 접근제한자 추가

* refactor: 변수명 변경

* chore: 사용하지 않는 메서드 제거
* fix: db와 데이터 타입 범위 일치를 위해 필드 타입 int을 변경

* refactor: dto의 인덱스 관련 데이터 타입을 int로 변경

* refactor: null을 처리하도록 DTO의 필드 데이터 타입을 Integer로 변경

* refactor: 불필요한 타입 캐스팅 제거
* fix: Dto 하위 필드에 `@Valid` 추가

* chore: `@Valid @ResponseBody` 순서 통일
* feat: 필터 추가

* chore: `Filter` 대신 `yml` 설정
* refactor: 리뷰 그룹 생성 시, 템플릿 id를 설정하도록 변경

* test: 변경 사항 테스트 반영
* refactor: 사용하지 않는 클래스 제거

* feat: 세션에서 리뷰 그룹 resolve

* refactor: `Resolver` `@MockBean` 등록

내부에 Repository가 존재하여 자체를 Mocking합니다. 이에 대한 테스트는 따로 진행했어요.

* refactor: `CorsConfig` Disable 처리

두 테스트 때문에 컨텍스트가 두 개나 뜹니다..

* feat: `Resolver`를 사용해 리뷰 그룹을 가져오도록 구현

* chore: 사용하지 않는 `ReviewGroupRepository` 필드 제거

* refactor: 서비스 메서드 추가 및 `ServiceTest` 제거

* fix: `ReviewGroupService` mockbean 처리

* chore: -요 체로 변경
* build: 의존성 추가

* chore: 개발 환경 redis 설정

* feat: 레디스 설정을 빈으로 등록

* feat: 중복 요청 처리 인터셉터 생성

- URI, IP, UserAgent 를 기준으로 1초에 3개보다 많은 요청이 오는 경우, 429를 응답한다. 즉, 4번째 요청부터 거부된다.

* feat: 중복 요청 처리 인터셉터 등록

* feat: 예외 핸들러 추가

* test: 중복 예외 처리 인터셉터 테스트 작성

* refactor: value를 업데이트할 때 만료 시간을 다시 설정하도록 수정

* style: 가독성을 위한 개행 수정

* style: 파일 끝 개행

* refactor: ConfigurationProperties 적용

* refactor: 변수명 변경

* refactor: 기존 상수 적용

* refactor: RedisTemplate 타입과 중복 요청 감지 로직 변경

- RedisTemplate<String, Object> -> RedisTemplate<String, Long>

* refactor: 로그 메세지 수정

* chore: 사용하지 않는 예외 삭제

* refactor: 로그 레벨 수정

- info -> warn

* refactor: 중복 요청 검증 로직 개션

- if null 분기 제거

* test: 깨진 테스트 봉합

* test: 의미 없어진 테스트 삭제

- 명시적으로 null 인 경우 1로 초기화했던 이전 코드와 달리, setIfAbsent를 통해서 값이 초기화하는 지금은 '1로 초기화되었는지' 검증하기가 어렵다.

* refactor: 불필요한 지역변수 할당 삭제

- increment 가 증가한 결과를 바로 반환한다. 이를 사용하도록 수정했다.

* test: redisTemplate 등록으로 깨지는 테스트 봉합

- RedisTemplate과 ValueOperations를 모킹한다.
- 구체적인 인자를 지정하지 않은 stub 문을 수정한다.

* refactor: 예외 이름 변경

* refactor: 요청 제한 설정을 properties로 이동

* refactor: 예외 메세지 수정

- 테드 의견 반영

* chore: 안쓰는 import 문 제거

* test: 테스트 데이터 경계값으로 변경

* refactor: 제한 만료 시간 설정 로직 변경

* refactor: frequency -> requestCount 완전 대체
* refactor: 인덱스 범위 도메인명 변경 및 lineIndex 책임을 Highlight로 이동

* refactor: 하이라이트 한줄 도메인 추가

* refactor: 한 답변에 표시된 하이라이트 여러줄 도메인 추가

* refactor: dto 필드의 속성을 가져오는 메서드 추가

* feat: 답변 id에 해당하는 하이라이트를 삭제하는 메서드 추가

* refactor: 중복되는 검증 및 로직 제거

* refactor: 생성자 추가

* refactor: 하이라이트 객체 매핑을 위한 mapper 분리

* refactor: 하이라이트 서비스에 mapper 적용 및 삭제 로직 단순화

* refactor: 사용하지 않는 클래스 및 메서드 삭제

* refactor: 도메인과 엔티티 패키지 분리

* refactor: dto 메서드로 대체

* refactor: 하이라이트 라인 관련 예외 추상화

* refactor: 하이라이트 라인 도메인명 수정

* refactor: 필드명 수정

* refactor: 변수명 및 메서드명 수정

* refactor: 필드명 수정 및 공백 제거

* refactor: 생성자 체이닝

* refactor: 중복 제거 방식 및 반환 타입 변경

* refactor: 도메인에서 필요하지 않은 필드인 lineIndex 삭제 및 생성자 수정

* refactor: 세션을 통해 리뷰 그룹 가져오기 적용

* refactor: 메서드 분리

* refactor: 사용하지 않는 생성자 제거

* refactor: 도메인명 변경

* refactor: 엔티티 패키지 삭제 및 도메인 패키지로 통

* refactor: 빈 하이라이트 요청이 왔을 때 아무것도 저장하지 않는 것 검증하는 테스트 추가

* refactor: 변수명 수정 및 메서드 정렬, 개행

* refactor: 접근 제어자 추가 및 static import 제거

* refactor: 사용하지 않는 메서드 삭제
* fix: 질문을 순서대로 내려주는 로직 수정

AS-IS: Question을 position으로 정렬한 값을 받아서 Map<Question, List<Answer>> 으로 만든 다음, mapper 에 전달했다. 이때, map 은 순서를 보장하지 않으므로 mapper 에서 position 순서대로 내려지지 않았다.
TO-BE: 쿼리에서 정렬하지 않고, mapper에서 정렬하도록 바꿔주었다.

* Revert "fix: 질문을 순서대로 내려주는 로직 수정"

This reverts commit 4ff8cc3.

* fix: 질문을 순서대로 내려주는 로직 수정

AS-IS: Question을 position으로 정렬한 값을 받아서 Map<Question, List<Answer>> 으로 만든 다음, mapper 에 전달했다. 이때, map 은 순서를 보장하지 않으므로 mapper 에서 position 순서대로 내려지지 않았다.
TO-BE: LinkedHashMap 을 사용해서 순서를 보장한다.

* refactor: 가독성 개선

* refactor: 질문 순서 보장 로직 수정

- 반환값도 LinkedHashMap 이 되도록

* fix: 컴파일 에러 해결
* fix: preview가 짧을 때 스타일이 깨지던 현상 수정

* chore: 목 데이터 count 값 수정

* fix: 0%인 객관식 질문을 차트에서 제외

* feat: 객관식 질문을 투표수에 따라 내림차순 정렬

* refactor: 차트 비율을 소수점 첫째 자리까지 반올림

* refactor: 차트 관련 상수 정의

* feat: 여러 줄(3줄)에 대한 ellipsis 설정

* chore: 리뷰 목록의 일부 모킹 데이터 수정 - 가짜 말줄임표 제거

* chore: 불필요한 속성 제거

* refactor: 차트 색상 객체의 키 값을 카멜케이스로 수정

---------

Co-authored-by: ImxYJL <[email protected]>
* feat: 커스텀한 ErrorBoudary 생성 및 react-error-boundary 삭제

* refactor: fallback 조건문 리팩토링

* refactor: 주석 수정

* feat:  resetQueryError 타입 변경
* design : 리뷰 작성 페이지 모달 속 글자들이 가운데 정렬되게 수정

* design: 가운데 정렬을 위해  align-center, text-align 같이 사용

* design:  375px 이하 에서 리뷰 제출 확인 모달 너비 조정
* refactor: 형광펜 관련 api 파일명 변경(collection -> highlight)

* feat: 인증 쿠키 확인하는 목 핸들러 생성 및 적용

* feat: 커스텀한 ErrorBoudary 생성 및 react-error-boundary 삭제

* feat: postHighlight에서 응답이 없는 api 오류도 잡을 수 있도록 수정

* feat: HighlightEditorContainer 생성

- 이유 : 형광펜 api 오류 시, 모아보기 페이지의 ErrorBoundary가 잡으면, 아코디언 상태가 초기화 되어서 HighlightEditor를 별도의 ErrorBoundary로 잡도록 함

* refactor: ErrorBoundary의 fallback 조건문 리팩토링

* feat: postMockHighlight 가 쿠키 인증 하도록 기능 추가

* feat:useMutation을 사용해 형광펜 API 다루도록 함

* feat: 커스텀한 ErrorBoudary 생성 및 react-error-boundary 삭제

* refactor: fallback 조건문 리팩토링

* refactor: 주석 수정

* feat: ErrorBoundary  resetQueryError props 타입 변경

* feat:  HighlightEditorContainer에 ErrorSuspenseContainer > ErrorBoundary로 변경

* feat:  resetQueryError 타입 변경

* feat: 하이라이트 api 요청 데이터 유효성 검사 추가

* test: 하이라이트 api 요청 테스트 추가

* chore: 불필요한 코드 삭제

* test: 형광펜 api 테스트 리팩토링

* refactor: 불필요한 주석 삭제 및 변수명,함수명 변경

* feat: 쿠키 인증 필요한 테스트에서 쿠키 생성 및 삭제하는 유틸 함수 구현 및 적용

* refactor: 테스트용 유틸 폴더 구조 변경

* chore: EditorTestPage 삭제

* refactor: 하이라이트 훅, 컴포넌트 폴더 구조 변경

* refactor: 하이라이트 훅을 HighlightEditor 아래로 위치 이동 및 하이라이트 컴포넌트 export 위치 변경

- HighlightEditorContainer를 src/components/index.tsx에서 export 하도록 수정

* refactor: ErrorBoundary 폴더 구조 변경
…#839)

* fix: preview가 짧을 때 스타일이 깨지던 현상 수정

* feat: 여러 줄(3줄)에 대한 ellipsis 설정

* chore: 리뷰 목록의 일부 모킹 데이터 수정 - 가짜 말줄임표 제거

* chore: 불필요한 속성 제거

* design: 리뷰 목록의 카드 디자인 수정
* fix : 토글 버튼 위치가 editor 하위 영역을 벗어날 경우 자리는 오류 수정

* refactor: 타입명 변경(EditorSelctionInfo -> SelectionInfo)

* refactor: 변수명 변경(block,Block ->line,Line)

* refactor:  드래스 시, 나오는 버튼명 변경(dragHighlightButton)

* fix: 하이라이트 영역을 길게 클릭/터치해야 해당 하이라이트를 삭제할 수 있도록 변경

* fix:터치 가능한 브라우저에서 드래그 시 버튼 위치 수정

- 터치 가능한 브라우저에서 글자 선택 시 나타나는 브라우저 메뉴와 드래그 끝 방향에 나오는 아이콘으로 인해, 드래그 시 버튼이 가려지는 오류가 발생해 이를 해결
- isTouchDevice를 유틸함수로 분리

* fix: 버튼 그림자가 에디터 영역 밖으로 나가서 잘리는 오류 수정

- 그림자 너비 상수화, 버튼 높이 상수화를 사용하도록 파라미터 수정

* refactor: document에 형광펜 관련 이벤트 적용 및 삭제하는 함수 생성

* refactor: 형광펜에 관한 api 파일명을 collection -> highlight로 변경

* chore: 오타 수정 및 함수명에 Block -> Line으로 수정

* chore: 오타 수정

* chore: EditorTestPage 삭제

* refactor: 하이라이트 훅,컴포넌트 폴더 구조 변경

* refactor: 하이라이트 훅 폴더 위치 변경

- HighlightEditor 아래로 위치 변경

* feat: longPress 삭제버튼 span의 가운데 위치하도록 변경

* feat: 터치 브라우저에서 길게 누를 때 컨텍스트 메뉴 나오지 않게 이벤트 추가

* feat: 터치 관련 클릭 버튼 위치 변경 사항 삭제

* feat: useEditabelState훅 구현 및 isEditable 상태를 세션 스토리지에 저장/삭제하는 기능 추가

- 구현 이유 : api 오류 시, isEditable 상태가 초기화 됨, 상태가 초기화되더라도 이전 상태를 저장해 반영할 수 있도록 기능 구현

* fix: 하이라이트 훅 status 복원

* chore: 불필요한 코드 삭제

* refactor: useHighlightEventListener 훅 생성
* feat: 하이라이트 정보 함께 조회

* fix: 테스트 컴파일 에러 해결

* refactor: 하이라이트 순서대로 정렬

* chore: remove unused import

* test: 오름차순 테스트

* refactor: `answerIds` 중복 제거

* refactor: groupingby 다시 합쳐두기

* style: 클래스 개행
ImxYJL and others added 11 commits October 22, 2024 16:47
* feat: Checkbox 선택 여부를 스크린 리더 사용자에게 안내하는 기능 추가

* feat: 탭 접근성 강화
1. Checkbox와 CheckboxItem의 탭 포커스 분리
2. CheckboxItem에 포커싱됐을 때 엔터를 누르면 해당 체크박스를 선택할 수 있는 기능 추가
3. CheckboxItem의 focus시 outline 색상을 primary로 변경

* feat: CheckboxItem을 전체 선택했을 때도 선택 여부를 알려주도록 변경

* refactor: handleKeyDown 이벤트 핸들러에서 사용하는 ChangeEvent 타입 캐스팅을 partial을 사용해 명확하게 변경
* fix: 리뷰 제출 api 중복 요청 방지

* feat: post 요청에 대한 api 중복 요청 방지
* feat: Checkbox 선택 여부를 스크린 리더 사용자에게 안내하는 기능 추가

* feat: 탭 접근성 강화
1. Checkbox와 CheckboxItem의 탭 포커스 분리
2. CheckboxItem에 포커싱됐을 때 엔터를 누르면 해당 체크박스를 선택할 수 있는 기능 추가
3. CheckboxItem의 focus시 outline 색상을 primary로 변경

* feat: 에러 메세지가 등장하는 경우 해당 에러 메세지 컴포넌트에 포커스를 주는 훅 작성

* feat: useFocusMessage 훅 적용

* feat: CheckboxItem을 전체 선택했을 때도 선택 여부를 알려주도록 변경

* refactor: handleKeyDown 이벤트 핸들러에서 사용하는 ChangeEvent 타입 캐스팅을 partial을 사용해 명확하게 변경

* refactor: 업데이트된 sr-only 스타일 반영
* feat: 로코,BreadCrumb 탭을 이동할 수 있도록 시맨틱 태그 변경

* feat: useTabNavigationOnValidity 훅 생성 및 적용

* refactor: Logo 시맨틱 구조 변경(Link 사용) 및 logo 이미지 파일 삭제

* fix: 잘못된 타입 강제 수정

* feat: BreadCrumb에 nav 태그 추가
* refactor: index.tsx 에서 router, sentry, startMocker 분리

* ci: @amplitude/analytics-browser 설치

* feat: amplitude 셋팅

* chore: GA 코드 삭제

* feat: 모아보기 페이지에 amplitude 적용

* feat: amplitude로 방문 페이지 데이터 수집 기능 구현

* feat: 리뷰 제출 모달의 확인 버튼 이벤트에 amplitude 추적 추가

* feat: 리뷰 URL 생성 버튼에 amplitude 추적 추가

* refactor: getPageName 리팩토링

* feat: 리뷰 URL 버튼 클릭 시 amplitude 추적 코드 위치 변경

* feat: Amplitude의 OS를 사용하기로 하고, 브라우저 정보를 가져오는 함수 삭제

* chore: MobileProgressBar에서 사용하지 않는 NavigateNextIcon import문 삭제

* fix: env 오타 수정
* refactor: 형광펜 관련 api 파일명 변경(collection -> highlight)

* feat: 인증 쿠키 확인하는 목 핸들러 생성 및 적용

* feat: 커스텀한 ErrorBoudary 생성 및 react-error-boundary 삭제

* feat: postHighlight에서 응답이 없는 api 오류도 잡을 수 있도록 수정

* feat: HighlightEditorContainer 생성

- 이유 : 형광펜 api 오류 시, 모아보기 페이지의 ErrorBoundary가 잡으면, 아코디언 상태가 초기화 되어서 HighlightEditor를 별도의 ErrorBoundary로 잡도록 함

* refactor: ErrorBoundary의 fallback 조건문 리팩토링

* feat: postMockHighlight 가 쿠키 인증 하도록 기능 추가

* feat:useMutation을 사용해 형광펜 API 다루도록 함

* feat: 커스텀한 ErrorBoudary 생성 및 react-error-boundary 삭제

* refactor: fallback 조건문 리팩토링

* refactor: 주석 수정

* feat: ErrorBoundary  resetQueryError props 타입 변경

* feat:  HighlightEditorContainer에 ErrorSuspenseContainer > ErrorBoundary로 변경

* feat:  resetQueryError 타입 변경

* feat: 하이라이트 api 요청 데이터 유효성 검사 추가

* test: 하이라이트 api 요청 테스트 추가

* chore: 불필요한 코드 삭제

* test: 형광펜 api 테스트 리팩토링

* refactor: 불필요한 주석 삭제 및 변수명,함수명 변경

* feat: 쿠키 인증 필요한 테스트에서 쿠키 생성 및 삭제하는 유틸 함수 구현 및 적용

* refactor: 테스트용 유틸 폴더 구조 변경

* chore: EditorTestPage 삭제

* refactor: 하이라이트 훅, 컴포넌트 폴더 구조 변경

* refactor: 하이라이트 훅을 HighlightEditor 아래로 위치 이동 및 하이라이트 컴포넌트 export 위치 변경

- HighlightEditorContainer를 src/components/index.tsx에서 export 하도록 수정

* refactor: ErrorBoundary 폴더 구조 변경

* refactor: line 관련 변수명 변경 (blockElement -> lineElement)

* feat: HighlightMenu 컴포넌트 훅 생성 및 기존 관련 코드 변경

* fix: 하이라이트 적용과 미적용 같이 있을 때, isForwardDrag 값 오류 수정

* refactor: 하이라이트 메뉴 사이즈 관련 변수 수정

* design: 하이라이트 메뉴 버튼 스타일 변경 (사이즈 조정 및 hover시 배경색 변경)

* fix: 모아보기 페이지- 주관식 답변 개행에도 li marker 표시되는 오류 수정

* refactor: 하이라이트 메뉴 위치 초기화하는 함수명 변경

* fix: 길게 눌렀을 때 삭제되는 버튼 안 뜨는 오류 수정 및 상태명 변경

* feat: 형광펜 기능 알려주는 툴팁 구현

* chore: 불필요한 콘솔 삭제

* fix: useMutateHighlight 테스트 오류 수정

* design: 형광펜 스위치 버튼 디자인 수정

- 꺼짐 : 버튼 왼쪽
- 켜짐: 버튼 오른쪽

* chore: 파일 위치 변경

* fix: 리뷰 모아보기 데이터 타입 차이로 인한, 형광펜 적용 안되는 오류 수정

원인 :서버가 내려준 데이터 타입과 클라이언트 타입 불일치

* design: EditorLineBlock 스타일 컴포넌트 삭제

* chore: 리뷰 모아보기 목 데이터 변경(형광펜 적용 추가)

* feat: Toast 컴포넌트 구현 및 적용

* chore: 불필요한 코드 삭제

* feat: 형광펜 추가 혹은 삭제 실패 시, 토스트 메시지 변경

* refactor: Toast 속도 조정

* chore: Toast 파일 위치 변경

* refactor: toast 사라진 후, 메시지 초기화 설정

* chore: toast 위치 및 box-shadow 조정

* refactor: ModalPortal에 disableScroll props를 추가해서 스크롤 막는 기능을 제어

* chore: toast 인터페이스 이름 변경

* chore: Toast export 추가

* chore: 충돌 해결 과정에서 나타난 반복되는 코드 제거

* chore: ModalPortal을 Portal로 네이밍 변경

* chore: 사용되지 않는 import 제거

* chore: Portal 위치 이동

---------

Co-authored-by: badahertz52 <[email protected]>
* refactor: Portal에 pointer-events 속성 추가

* chore: stylelint로 css 속성 순서 조정

* fix: 형광펜 삭제 실패 시, toast에 에러 메시지 보여주지 않는 이슈 해결
* design: 공백인 개행을 위한 문자열을 위해 Line의 min-height 추가

* feat: 공백으로 이루어진 개행용 문자열의 highlightList를 빈 배열로 유지 및 리뷰 모아보기 목 데이터 변경

- 리뷰 모아보기 목 데이터 변경 :공백으로 이어진 개행용 문자열 추가

* chore: 주석에 내용 추가

* fix: 형광펜 api 오류 시, isEditable 저장 안되는 오류 수정

- 세션 스토리지가 아닌 로컬 스토리지에서 저장
- LOCAL_STORAGE_KEY.isHighlightEditable을 HighlightEditorCotainer 언마운트 시 삭제하도록 함

* chore: 형광펜 목 핸들러 반환값 복구
* feat: "이전, 다음, 작성 내용 확인, 제출" 버튼에 aria-label 속성 추가

* feat: 모바일 StepButton에 aria-label 속성 추가

* chore: 사용되지 않는 이미지 제거

* feat: 프로그레스 바의 현재 섹션에 대한 aria-label 추가

* refactor: 카드를 넘길 때마다 스크린 리더가 현재 질문 카드의 순번과 이름을 자동으로 읽어주도록 개선

* refactor: 모달이 열리는 버튼에 aria-label 추가

* refactor: 활성화 유무 aria-label 추가

* fix: useEffect 의존성 배열에 stepList 제거

* refactor: 프로그레스 바 버튼의 활성화, 비활성화 상태를 읽어주는 aria-label 추가

* refactor: 다음 버튼의 활성화 상태에 따라 자동으로 읽어주는 aria-live 추가

* refactor: 프로그레스 바 버튼에 disabled 속성 추가 및 현재 선택된 질문 카드 인식을 위한 aria-label 수정

* refactor: 다음 버튼에 aria-live 속성 제거
* design: 접근성 컴포넌트 전용 스타일 추가

* feat: 키보드 탭과 스크린 리더의 포커스가 모달을 벗어나지 않도록 제한하는 포커스 트랩 구현

* chore: 각 공통 모달 컴포넌트에 포커스 트랩 적용

* feat: 제출 전 확인 모달에서 사용자가 작성한 내용만을 요약해서 읽어주는 기능 구현
Copy link
Contributor

@skylar1220 skylar1220 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰미 버전 2 가자🚀🚀🚀

ImxYJL and others added 2 commits October 23, 2024 14:57
* feat: CheckboxItem의 최상위 태그에 className 추가

* fix: useTabNavigationOnValidity에서 tab으로 접근 가능한 요소들의 목록 수정
* design: 모바일 환경에서 스위치 버튼 width 100% 설정 및 Dropdown 오른쪽 정렬

* feat: 메타 데이터 이미지 추가

* feat: 메타 데이터 설정
Copy link
Contributor

@chysis chysis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰미 v2.0.0 경축

Copy link
Contributor

@BadaHertz52 BadaHertz52 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Copy link
Contributor

@Kimprodp Kimprodp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

final ㄷㅁㄷㅇ ㅎㅇㅌ!

Copy link
Contributor

@soosoo22 soosoo22 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리뷰미 행복하자..^,^

Copy link
Contributor

@donghoony donghoony left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생했어요 🐐

@nayonsoso nayonsoso merged commit 7b572c7 into release Oct 23, 2024
0 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

8 participants