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

[FE] feat: 에러, 로딩 페이지 구현 및 적용 #155

Merged
merged 11 commits into from
Jul 31, 2024

Conversation

soosoo22
Copy link
Contributor


🚀 어떤 기능을 구현했나요 ?

  • 에러, 로딩 페이지 구현 및 라우트에 errorElement 적용

🔥 어떻게 해결했나요 ?

에러 페이지

  • 에러 로고, 문구
  • 새로고침, 홈 이동 버튼
    • 새로고침 클릭 시, 리로드
    • 홈 이동 버튼 클릭 시, 홈으로 이동 ⇒ 아직 홈 페이지가 만들어지지 않아서 일단 임시로 ‘/’ 로 이동
const handleGoHome = () => {
    navigate('/'); // TODO: 홈 페이지 경로가 결정되면 변경 필요
  };
  • 라우트에 errorElement 적용
const router = createBrowserRouter([
  {
    path: '/',
    element: <App />,
    errorElement: <ErrorPage />,
    children: [
      {
        path: 'user',
        element: <div>user</div>,
      },
      {
        path: 'user/review-writing',
        element: <ReviewWritingPage />,
      },
      {
        path: 'user/review-preview-list',
        element: <ReviewPreviewListPage />,
      },
      {
        path: 'user/detailed-review/:id',
        element: <DetailedReviewPage />,
      },
    ],
  },
]);
에러페이지-pr

로딩 페이지 구현

  • 로딩 텍스트, 로딩바
  • 각 페이지에서 로딩 페이지 적용
로딩페이지-pr

📝 어떤 부분에 집중해서 리뷰해야 할까요?

  • ErrorPage와 App에서 중복되는 레이아웃 코드가 존재해요...😭
  • 로딩바를 페이지의 중앙에 위치시키기 위해서 현재는 height: calc(100vh - 21rem);을 사용하고 있는데, 더 좋은 방법이 있을까요?

📚 참고 자료, 할 말

  • 리뷰미 화이팅😘

- `icon` prop을 통해 버튼에 아이콘을 추가할 수 있도록 변경
- 에러 로고, 메시지, 새로고침 및 홈 이동 버튼 제공
- 로딩 메시지 추가
- 리뷰 작성 페이지, 리뷰 목록 페이지, 리뷰 상세 페이지에 로딩 페이지 적용
const Button = ({ buttonType, text, icon, onClick }: ButtonProps) => {
return (
<S.Button buttonType={buttonType} onClick={onClick}>
{icon && <S.Icon src={icon} alt="아이콘" />}
Copy link
Contributor

Choose a reason for hiding this comment

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

alt는 사진에 대한 자세한 설명이여야해요.
alt을 특정 아이콘에 대한 내용으로 하고 싶다면 icon 내용을 props로 받을 수 있고,
특정 하기 힘들다면 빈문자열을 사용하는 것을 추천드려요

Copy link
Contributor

Choose a reason for hiding this comment

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

바다 말대로 alt를 props로 받으면 좋을 것 같습니다. 별도로 alt를 전달하지 않으면 빈 문자열('')을 주는 방식으로 개선해보면 좋을 것 같아요!!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

너무나 동의하는 바입니다! 제가 작성한 코드인데도... alt="아이콘" 뭘 설명하는지 모르겠네요...^^

@@ -60,3 +60,7 @@ export const Button = styled.button<{ buttonType: ButtonType }>`

${({ buttonType, theme }) => getButtonStyle(buttonType, theme)};
`;

export const Icon = styled.img`
margin-right: 8px;
Copy link
Contributor

@BadaHertz52 BadaHertz52 Jul 31, 2024

Choose a reason for hiding this comment

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

px??? 우리는 rem을 사용하는데 쑤쑤...🥺

Copy link
Contributor Author

Choose a reason for hiding this comment

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

px을 좋아하나봐요....^^
바로~~ 고칠게요~~ 예리하세요~~

@@ -5,6 +5,7 @@ import { ReviewComment } from '@/components';
import { DetailReviewData } from '@/types';

import { getDetailedReviewApi } from '../../apis/review';
import LoadingPage from '../LoadingPage';
Copy link
Contributor

Choose a reason for hiding this comment

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

리뷰 상세페이지에 LoadingPage를 적용시켰군요!
develop에 머지 후 리뷰 상세페이지의 suspense에 적용해볼게요. 😝

@@ -0,0 +1,33 @@
import AlertTriangle from '@/assets/alertTriangle.svg';
import Home from '@/assets/home.svg';
import ReLoad from '@/assets/reload.svg';
Copy link
Contributor

Choose a reason for hiding this comment

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

svg를 import 할때 Icon을 뒤에 붙이기로 했어요.

import HomeIcon from '@/assets/home.svg'

Copy link
Contributor Author

Choose a reason for hiding this comment

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

어머어머 고마워요~
코드컨벤션에도 기재되어 있는 내용인데.... 간과했네요!

Comment on lines 22 to 27
<S.ButtonContainer>
<Button buttonType="primary" text="새로고침하기" icon={ReLoad} onClick={handleReLoad} />
</S.ButtonContainer>
<S.ButtonContainer>
<Button buttonType="secondary" text="홈으로 이동하기" icon={Home} onClick={handleGoHome} />
</S.ButtonContainer>
Copy link
Contributor

Choose a reason for hiding this comment

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

ButtonContainer 부분이 반복되어서, 버튼의 icon,text,buttonType,click을 가지는 객체가 요소인 배열을 만들어서 활용해봐도 좋을 것 같아요.
click 핸들러에서 버튼의 name에 따라 다른 함수를 실행시킬 수 있도록 해도 되고요.

하나의 제안일 뿐이니 반영해야한다는 의견은 아니에요

Copy link
Contributor

Choose a reason for hiding this comment

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

저도 리팩토링한다면 객체 배열을 만들 것 같아요~!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

반복되는 코드들이 많아서 객체 배열을 만들고 map 을 이용해서 렌더링하는 게 더 효율적이겠네요~
고마워요~~😘

  const buttons = [
    {
      buttonType: 'primary' as ButtonType,
      text: '새로고침하기',
      image: ReloadIcon,
      imageDescription: '새로고침 이미지',
      onClick: handleReload,
    },
    {
      buttonType: 'secondary' as ButtonType,
      text: '홈으로 이동하기',
      image: HomeIcon,
      imageDescription: '홈 이미지',
      onClick: handleGoHome,
    },
  ];

align-items: center;
justify-content: center;

height: calc(100vh - 21rem);
Copy link
Contributor

Choose a reason for hiding this comment

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

21rem이 무엇에서 왔는지 알 수 있을까요?

import ErrorSection from './components/ErrorSection';

const ERROR_MESSAGE = {
server_unstable: '서버와의 통신이 불안정합니다.',
Copy link
Contributor

Choose a reason for hiding this comment

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

key에 카멜이 아니라 스네이크 케이스를 쓴 이유가 있을까요?
이전 상수 변수들의 키값 네이밍 형식과는 안맞아서요.

Copy link
Contributor

Choose a reason for hiding this comment

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

ErrorPage가 route의 errorElement에 사용되는데 이 경우는 서버와의 통신 불안이 아닌, 찾는 페이지가 없는 오류 아닐까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

key에 카멜이 아니라 스네이크 케이스를 쓴 이유가 있을까요? 이전 상수 변수들의 키값 네이밍 형식과는 안맞아서요.

어머어머... 이런... 저는.. 코드 컨벤션도 지키지 못하는 팀원이네요😅 수정할게요~~
커밋 주소 : 930b117

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.

error, loading 페이지를 구현하느라 고생했어요. 쑤쑤 👏👏👏👏
수정해야하는 부분들 코멘트로 남겨놨어요 확인 부탁드려요

Copy link
Contributor

@ImxYJL ImxYJL left a comment

Choose a reason for hiding this comment

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

새 페이지 만들고 적용하느라 수고 많았어요~~

const Button = ({ buttonType, text, icon, onClick }: ButtonProps) => {
return (
<S.Button buttonType={buttonType} onClick={onClick}>
{icon && <S.Icon src={icon} alt="아이콘" />}
Copy link
Contributor

Choose a reason for hiding this comment

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

바다 말대로 alt를 props로 받으면 좋을 것 같습니다. 별도로 alt를 전달하지 않으면 빈 문자열('')을 주는 방식으로 개선해보면 좋을 것 같아요!!

Comment on lines 22 to 27
<S.ButtonContainer>
<Button buttonType="primary" text="새로고침하기" icon={ReLoad} onClick={handleReLoad} />
</S.ButtonContainer>
<S.ButtonContainer>
<Button buttonType="secondary" text="홈으로 이동하기" icon={Home} onClick={handleGoHome} />
</S.ButtonContainer>
Copy link
Contributor

Choose a reason for hiding this comment

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

저도 리팩토링한다면 객체 배열을 만들 것 같아요~!

};

const handleGoHome = () => {
navigate('/'); // TODO: 홈 페이지 경로가 결정되면 변경 필요
Copy link
Contributor

Choose a reason for hiding this comment

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

TODO 주석 좋아요!

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.

코드 잘 읽었어요 쑤쑤~ 변경 사항이 꽤 많았는데 고생 많았어요.
몇 가지 코멘트를 남겼으니 확인 부탁드려요👍👍

Copy link
Contributor

Choose a reason for hiding this comment

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

버튼에 텍스트 뿐 아니라 아이콘까지 추가돼서 이와 같이 코드를 작성하신 것 같아요. 추후에 텍스트, 아이콘 이외의 요소들이 더 들어올 상황이 생길 수도 있을 것 같아요. 이런 경우에 optional로 props를 계속 받기보다는, 공통 버튼 컴포넌트는 Children만을 받아서 그대로 출력해주는 것은 어떨까요?

그렇게 되면 버튼을 사용하는 쪽에서 필요한 요소들을 유연하게 넣을 수 있고, 현재 코드에서의 icon도 그 종류가 특정될 수 있을 것 같아요.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

너무 동의합니다!
에프이가 말했던 것처럼 추가적으로 요소들이 더 들어오면 아래 코드처럼 옵셔널로 props를 받는 상황이 많아질텐데.... children을 받는 방법이 더 효율적일 것 같네요! 고마워요~~😊

// 안 좋은 코드
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
  buttonType: ButtonType;
  text: string;
  image?: string;
  imageDescription?: string;
}

@@ -18,14 +19,15 @@ const DetailedReviewPage = () => {
const memberId = queryParams.get('memberId');

const [detailedReview, setDetailReview] = useState<DetailReviewData>();
const [isLoading, setIsLoading] = useState(false);
const [isLoading, setIsLoading] = useState<boolean>(false);
Copy link
Contributor

Choose a reason for hiding this comment

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

초기값을 false로 지정해주고 있어서 타입 추론이 자동으로 이루어질 것 같아요. boolean을 명시한 쑤쑤만의 이유가 있을까요?

Copy link
Contributor Author

@soosoo22 soosoo22 Jul 31, 2024

Choose a reason for hiding this comment

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

isLoading에 타입을 boolean으로 더 명확하게 지정하고 싶었던 것 같아요

Comment on lines 22 to 27
<S.ButtonContainer>
<Button buttonType="primary" text="새로고침하기" icon={ReLoad} onClick={handleReLoad} />
</S.ButtonContainer>
<S.ButtonContainer>
<Button buttonType="secondary" text="홈으로 이동하기" icon={Home} onClick={handleGoHome} />
</S.ButtonContainer>
Copy link
Contributor

Choose a reason for hiding this comment

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

하나의 컨테이너에 두 개의 버튼이 들어가지 않고 각각을 컨테이너로 감싼 이유가 있는지 궁금해요!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

아! 지금보니 쓸모없는 컨테이너네요!
아이콘이 버튼 안에 들어가야 하는데 처음에는 하나의 컨테이너에 아이콘과 버튼 이렇게 나란히 둬서 그랬던 것 같아요

Comment on lines 16 to 18
const handleReLoad = () => {
window.location.reload();
};
Copy link
Contributor

Choose a reason for hiding this comment

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

useNavigate에서 제공하는 navigate(0)를 사용하면 현재 페이지 새로고침이 가능해요. navigate를 사용하고 있어서 제안드려요😊

Copy link
Contributor

Choose a reason for hiding this comment

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

사소한 부분이지만😅, reload를 하나의 단어로 보지 않고 ReLoad로 표기한 이유가 있을까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

useNavigate에서 제공하는 navigate(0)를 사용하면 현재 페이지 새로고침이 가능해요. navigate를 사용하고 있어서 제안드려요😊

아하! 고마워요! 이미 홈으로 이동할 때, navigate를 사용하고 있어서 새로고침도 navigate를 사용하면 좋을 것 같네요!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

사소한 부분이지만😅, reload를 하나의 단어로 보지 않고 ReLoad로 표기한 이유가 있을까요?

아하.....re+load 약간 이런 느낌이라고 생각해서 ReLoad라고 표기했던 것 같아요😭 수정할게요~

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

@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.

굉장히 중요한 요소였고, 그만큼 신경쓸 게 많았을 텐데 고생했어요. 우선 Approve할게요! 제안드린 내용은 추후 반영해주세요~

Copy link
Contributor

@ImxYJL ImxYJL left a comment

Choose a reason for hiding this comment

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

수고 많았어요~~~~~~

@soosoo22 soosoo22 merged commit b1673f8 into develop Jul 31, 2024
1 check passed
@donghoony donghoony deleted the fe/feat/146-error-loading-page branch August 20, 2024 01:25
chysis added a commit that referenced this pull request Aug 21, 2024
* [FE] 프론트엔드 초기 세팅 (#5)

* ci: webpack, react, typescript 설정

* ci: eslint, prettier, stylelint 설정

* [BE] feat: 초기 환경 설정 (#8)

* feat: 초기 환경 설정

* refactor: 클래스 종료 전 개행 제거

* build: application.yml 설정

* [BE] feat: 초기 엔티티 작성 (#10)

* feat: 초기 엔티티 작성

* refactor: 리뷰 내용과 리뷰를 다대일 연결

* refactor: 패키지 구조 고려하여 ProjectGroup으로 수정

* refactor: Project -> Reviewer로 변경

* refactor: 테이블명 일치 (reviewer_group)

* [BE] feat: 리뷰 작성 (#15)

* feat: 초기 엔티티 작성

* refactor: 리뷰 내용과 리뷰를 다대일 연결

* refactor: 패키지 구조 고려하여 ProjectGroup으로 수정

* refactor: Project -> Reviewer로 변경

* refactor: 테이블명 일치 (reviewer_group)

* feat: 멤버 레포지토리 생성

* feat: 리뷰어그룹 레포지토리 생성

* feat: 리뷰 문항 레포지토리 생성

* feat: 키워드 레포지토리 생성

* feat: 리뷰 키워드 레포지토리 생성

* feat: 리뷰 레포지토리 생성

* feat: 리뷰 작성 기능 구현

* test: 리뷰 작성 기능 테스트 추가

---------

Co-authored-by: donghoony <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* [BE] feat: 테스트 메서드별 격리 (#19)

* feat: 테스트 격리를 위한 DB Cleaner 및 Extension 구현

* feat: Service에서 공통적으로 사용할 수 있는 어노테이션 제공

* test: 서비스 테스트 어노테이션 사용하도록 수정

* fix: 누락된 리뷰 작성 매핑 URL 추가 (#17)

* [BE] feat: 리뷰 조회 (#22)

* feat: 리뷰 조회 기능 추가

* style: 개행 변경

* test: 리뷰 조회 기능 테스트 추가

* refactor: 리뷰 조회 메서드명 변경

* refactor: id 타입 변경

* style: 개행 수정

* fix: PostMapping 수정

---------

Co-authored-by: KIMGYUTAE <[email protected]>
Co-authored-by: donghoony <[email protected]>

* [BE] feat: 커스텀 예외 처리 (#20)

* feat: 커스텀 예외 생성

* feat: 커스텀 예외 적용

* feat: 글로벌 예외 처리

* [BE] feat: 리뷰어 그룹 정보 및 키워드 조회 API (#24)

* feat: 키워드 조회 API

* feat: 리뷰 그룹 조회 API

* refactor: PathVariable 변수명 변경

* [FE] 리뷰 작성화면과 상세 리뷰 보기 화면 결합 (#26)

* fix : webpack dev sever 열 때 오류 수정

- package.json 에서 type :"module" 삭제 , stylelint 관련 설정 삭제

Co-Authored-By: ImxYJL <[email protected]>

* ci : svg파일 관련 환경 셋팅

Co-Authored-By: ImxYJL <[email protected]>

* design : reset 스타일, global style에서 폰트 적용

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰 잠금 버튼 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat: 상세 리뷰 보기 화면의 질문,답 컴포넌트 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat: 상세 리뷰 보기 화면의 프로젝트 설명 컴포넌트 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat : 상세 리뷰 보기 화면 페이지 추가 및 상세 리뷰 데이터 타입 추가

Co-Authored-By: ImxYJL <[email protected]>

* fix: webpack dev server 열 때 오류 수정

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

* design: reset css 적용

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

* feat: 리뷰 작성 페이지 구현

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

* ci: svg 파일 관련 설정

* fix : 머지충돌 해결 및 오타 수정

* feat: react-router-dom, react-router 설치 및 설정

* refactor: 리뷰 작성 페이지와 상세 리뷰 보기 페이지 결합 및 리팩토링

* refactor: 리뷰 타입 파일 리팩토링 및 타입 추가

* feat: api 설정 추가 및 상세 리뷰 보기 페이지에 api 핸들러 추가

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: chysis <[email protected]>
Co-authored-by: soosoo22 <[email protected]>

* [BE] refactor: 패키지 구조 리팩터링 (#30)

* refactor: 패키지 구조 구체화

* refactor: 패키지 구조 구체화(서비스, 컨트롤러, 레포지토리)

* [BE] feat: 리뷰어 그룹 설명 작성, 마감 기한 및 검증 로직 추가 (#34)

* feat: BadRequestException 추가

* feat: 리뷰어 그룹 이름, 설명 길이 검증

* [FE] design: theme ,전역 스타일을 설정 (#41)

* chore: 불필요한 파일 삭제

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: theme 생성

- 색상, 폰트 사이즈, 폰트 wieght 설정

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: emotion ThemeProvider 적용 및 Theme 타입 확장

- emotion에서 제공하는 Theme 타입이 빈 객체여서 코드에서 사용하는 theme에 맞게 타입을 확장함

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design : rem 셋팅 및 reset.css를 globalStyle에 적용

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: App에서 불필요한 코드 삭제

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: soosoo22 <[email protected]>
Co-authored-by: Fe <[email protected]>

* [FE] ci: 리액트 쿼리 및 msw 설치, eslint import rule 추가 및 적용 (#44)

* ci: eslint 오류 수정 및 import rule 추가 및 관련 플러그인 설치

- eslint-config-prettier
- eslint-plugin-import

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* style: eslint 적용으로 인한 코드 포맷팅 변경

import 순서 적용

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* ci: msw 설치

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* [BE] docs: Swagger를 활용한 API 문서 자동화 (#31)

* chore: swagger-ui 설정 추가

* feat: swaggerConfig 추가

* docs: 컨트롤러에 swagger 어노테이션 추가

* docs: dto에 swagger 어노테이션 추가

* chore: api 문서 설정 파일 추가

* refactor: SwaggerConfig info 설정 파일 변수 참조하도록 변경

* docs: api 문서에 상태코드 올바르게 노출되도록 변경

* chore: api 문서 파일명 변경

* chore: api-docs 프로퍼티명 변경

* refactor: 프로퍼티 정보와 설정 클래스 분리

* refactor: 컨트롤러 내 swagger 어노테이션 분리

---------

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

* [BE] feat: 리뷰 도메인 구체화, 정책 구현  (#43)

* feat: dto 검증을 위한 의존성 추가

* feat: dto에 jakarta validation 어노테이션 추가

* feat: 컨트롤러에서 요청을 검증할 수 있도록 설정

* feat: FieldError 내용을 보여줄 응답 객체 생성

* feat: FieldError 핸들러 추가

* refactor: 문자열 공백 검증을 위해 NotBlank 사용

* style: todo 주석 추가

* feat: 데드라인이 지나면 리뷰를 작성할 수 없도록 하는 기능 추가

* refactor: 사이즈 검증문 제거

* style: 개행 변경

* refactor: 예외 이름을 과거형으로 변경

* refactor: RFC 9457 형식을 지키면서 필드 에러 정보를 반환하도록 수정

* chore: 오타 수정

* fix: conflict 해결

* feat: dto에 jakarta validation 어노테이션 추가

* refactor: 문자열 공백 검증을 위해 NotBlank 사용

* refactor: 사이즈 검증문 제거

* [BE] feat: 키워드 도메인 구체화, 정책 구현 (#40)

* feat: 키워드 일급 컬렉션 및 제약사항 구현

* build: 테스트 환경에서 Lombok 의존성 추가

* feat: 리뷰에 추가된 키워드 삭제

* feat: 리뷰에 키워드 추가

* feat: 일급 컬렉션의 이름을 SelectedKeywords로 변경

* refactor: 키워드 개수 정책 5개 반영

* refactor: 중복 키워드 멘트 수정

* refactor: `deleteAll`로 메서드명 수정

* refactor: `duplicated` -> `duplicate`로 수정

* refactor: 키워드 동등성 비교

* test: 키워드 등록 시 기존 키워드 삭제 테스트 작성

* refactor: 사용하지 않는 필드 삭제

* style: add newlines between comments

* refactor: 키워드 ID 기반 비교

* refactor: id가 없는 경우 detail 비교

* refactor: 키워드 테스트 도메인 기반으로 수정

* [BE] feat: 리뷰어 그룹 도메인 구체화, 정책 구현 (#45)

* feat: Member 엔티티에 GitHub ID 속성 추가

* feat: 작성한 리뷰어가 리뷰어 그룹에 속하는지 검증

* feat: 리뷰 작성 시, 이미 작성한 리뷰가 있지 않은지 검증

* refactor: Review 엔티티의 reviewer와의 연관관계 ManyToOne으로 변경

* refactor: 컬럼명 오류 수정

* refactor: gitHub 표기 -> github으로 변경

* refactor: GithubReviewGroup -> GithubReviewGroup 클래스명 변경

* refactor: 누락된 @Column 추가

* test: 리뷰 작성 테스트 시, 깃헙 사용자 그룹 데이터 저장 부분 추가

* refactor: 리뷰 작성 시, 중복 리뷰 검증 로직 수정

* refactor: GithubReviewerGroupNotFoundException을 UnAuthorizedException 구현하도록 수정

* refactor: ReviewContentExistException -> ReviewAlreadySubmittedException 클래스명 변경

* feat: UnAuthorizedException 추가

* refactor: 메서드 순서 변경

* test: 불필요한 given절 삭제

* test: 테스트를 위한 데이터 삽입 repository를 활용하도록 변경

---------

Co-authored-by: Donghoon Lee <[email protected]>

* [FE] 리뷰 쓰기 페이지에 확정된 디자인을 반영하고, 리팩터링한다. (#53)

* fix: eslint에서 절대 경로를 읽지 못하는 오류 수정

절대 경로 지정

Co-Authored-By: ImxYJL <[email protected]>

* design: 시스템 기본 폰트 크기 지정

Co-Authored-By: ImxYJL <[email protected]>

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

emotion.ts에서 theme 제거

Co-Authored-By: ImxYJL <[email protected]>

* feat: 공통 버튼 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* feat: 키워드 버튼 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰 작성 페이지 퍼블리싱 및 컴포넌트 분리

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰이 코멘트 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 리뷰 작성 페이지에서 리뷰 아이템 컴포넌트 분리

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 리뷰 작성 페이지 리팩터링

- 리뷰이 코멘트 추가
- 리뷰 아이템 컴포넌트 분리
- 부가적인 스타일링

Co-Authored-By: ImxYJL <[email protected]>

---------

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

* [FE] feat: sidebar  리팩토링 및 기능 추가  , topbar 추가, 반응형 페이지 레이아웃 적용 (#55)

* style: globalStyles.ts에서 경로 공백 추가

* docs: 불필요한 import 삭제

Co-Authored-By: soosoo22 <[email protected]>

* design : theme 추가

- 추가된 theme : breakpoints, sidebarWidth

Co-Authored-By: soosoo22 <[email protected]>

* chore: Header 컴포넌트 삭제

Co-Authored-By: soosoo22 <[email protected]>

* feat : Topbar 생성, logo 이미지 변경 및 SearchInput 생성

- logo 이미지 변경
- Topbar에 들어가는 컴포넌트들 (SidebarOpenButtion, Logo )생성
- userProfile 이미지 생성
- 공통 컴포넌트 : SearchInput ui 생성

Co-Authored-By: soosoo22 <[email protected]>

* feat : 페이지 레이아웃 생성

- 레이아웃 관련 컴포넌트들 생성

Co-Authored-By: soosoo22 <[email protected]>

* refactor : App에 페이지 레이아웃 적용

Co-Authored-By: soosoo22 <[email protected]>

* refactor: Sidebar 리팩토링

- 메뉴명 상수처리
- 피그마 디자인 변경에 따른 수정

Co-Authored-By: soosoo22 <[email protected]>

* feat: sidebar 열고 닫는 기능 추가

Co-Authored-By: soosoo22 <[email protected]>

---------

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

* fix: 컴파일 에러 해결 (#60)

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

* [FE] fix : stylelint 적용 오류 수정  (#66)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* ci: CI 스크립트 작성 (#70)

* [BE] test: 깃헙 리뷰어 그룹의 테스트 추가 및 fixture 미적용 부분 보완 (#68)

* test: GithubReviewerGroupRepository 테스트 추가

* test: ReviewServiceTest에 테스트 fixture 적용

* test: given, when, then절 추가

* test: given 데이터 오류 수정

* [BE] chore: workflow 디렉터리 이동 (#74)

* chore: workflow 디렉터리 이동

* fix: 백엔드 디렉터리로 이동

* fix: 백엔드 디렉토리로 이동

* fix: checkout actions의 디렉토리 설정

* fix: 디렉토리 설정...

* infra: CD 파이프라인 작성 (#76)

* fix: cd gradle 디렉토리 이동 (#77)

* [BE] refactor: 단건 리뷰 조회 시 리뷰어 정보 삭제, 리뷰 작성 시점 추가 (#65)

* refactor: 리뷰 조회 시 리뷰 생성 시각 추가, 리뷰어 정보 삭제

* fix: 테스트 어노테이션 활성화 및 수정

* chore: 테스트 클래스 패키지 이동

* refactor: 불필요한 given절 제거

* [FE] 리뷰 작성, 상세 리뷰 보기 페이지에 백엔드 API 연동 및 dotenv-webpack 설치, BASE_URL을 .env로 이동 (#78)

* chore: gitignore에 yarn-error.log 추가

* ci: env 파일 사용을 위한 dotenv-webpack 설치

* refactor: 엔드포인트에 env 파일을 통한 API_BASE_URL 경로 적용

* fix: 리뷰 상세보기 데이터에서 백엔드 응답과 속성 이름이 달랐던 부분 수정

* refactor: 백엔드 응답 및 리팩토링된 리뷰 쓰기 형식에 맞게 리뷰 쓰기 모킹 데이터 수정

* chore: 불필요한 console.log 삭제

* [Fe] 절대 경로 사용 시 발생하는 eslint 오류를 수정했습니다.  (#81)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* [FE] ci: Jest, RTL 테스트 환경 구축 (#84)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* ci: jest 및 RTL 설치

* ci: jest 타입 설정 추가

* ci: CI를 위한 yml 파일 테스트

* fix: 잘못 올라간 파일 삭제

---------

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

* [BE] refactor: 발생하는 모든 예외의 형식 통일 (#69)

* refactor: 커스텀 예외를 발생시키도록 수정

* refactor: 모든 예외를 잡을 수 있도록 수정

* refactor: ExceptionHandler가 반환하는 예외 응답 형식 변경

- ProblemDetail로 변경

* refactor: ResponseEntityExceptionHandler를 상속하지 않도록 변경

* feat: ResponseEntityExceptionHandler에서 처리하는 예외를 직접 핸들링

* feat: CORS 설정 추가 (#88)

* fix: ci PR 브랜치 설정 (#92)

* refactor: 예외 핸들러 인자 변경 (#87)

* [BE] 도메인 연관관계 재설정 (#97)

* feat: 깃허브 아이디 원시값 포장

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 회원 `GithubId` 사용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 내 컬럼 수정 (content)

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 일급 컬렉션 이름 변경

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 질문 엔티티

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 답변 구조 변경, 길이 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 연관관계 없이 참조하도록 설정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 답변 길이 테스트

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 생성 시 키워드 받아서 생성

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 리뷰어와 리뷰이 같은 경우의 예외 테스트

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 리뷰-키워드 매핑 테이블 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: Fixture 사용해 컴파일 에러 해결

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 일대다 편의 메소드 작성,

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 깃허브 아이디 그룹, 리뷰어 연관관계

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰그룹 - 리뷰 일대다 단방향 연관관계 적용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰그룹 - 리뷰 일대다 양방향 연관관계 적용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰어 그룹 깃허브 아이디 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 셀프리뷰 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 사용하지 않는 파일 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 추가 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: 순환 참조 NPE 해결

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

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

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: Github ID 패키지 이동

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 - 리뷰 답변 연관관계 설정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 사용하지 않는 코드 제거

* refactor: 내가 받은 리뷰 상세 보기 구현

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* [FE] feat: 리뷰 작성 페이지 기능 구현 (#89)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* chore: 현재 사용되지 않는 저장 버튼 숨김 처리

* design: 기본 폰트 사이즈 변경

- 15px -> 16px로 수정

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* design: 리뷰 작성 페이지의 수정된 디자인 적용

- 색상 코드 수정
- 버튼 호버 시 스타일링 수정
- 리뷰 마감일 날짜 형식 변경

* design: 리뷰 질문에 안내 문구 및 placeholder 추가

- 각 질문에 ' (20자 이상)' 문구 하드코딩
- 최대 1000자 입력 가능하다는 문구를 textarea의 placeholder로 추가

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* chore: api명 및 endpoint명 수정

* chore: 리뷰 질문 목록을 서버에서 받아오기 위해 상수 제거

* chore: api 문서 형식에 맞게 데이터 타입 수정

* fix: 키워드 버튼을 눌렀을 때 폼이 제출되는 문제 해결

* feat: 작성한 리뷰 내용을 부모 컴포넌트의 상태와 동기화하도록 설정

* design: textarea의 크기를 고정시키고, 넘어갈 경우 스크롤 되도록 변경

* design: 공통 버튼 컴포넌트에 조건부 스타일링 구현

* design: disabled 관련 색상 변수 추가

* feat: 모든 폼을 작성했을 때 제출 버튼이 활성화되도록 구현, 키워드 선택 로직 구현

* feat: 제출 버튼 클릭 시 confirm 발생, 한 번 더 확인 시 제출되도록 구현

* feat: 키워드 버튼을 5개 초과해서 선택할 수 없도록 구현

* feat: textarea에 1000자를 초과해서 입력할 수 없도록 구현 및 현재 글자수 표시

* fix: 이미 선택된 키워드를 해제하려 해도 개수 제한되는 오류 수정

* refactor: 폼 유효성 검사 조건들을 변수로 분리

* design: 키워드 버튼들의 크기를 fit-content로 변경 및 가로로 나열하도록 수정

* chore: api 연결 이전, 임시로 폼 정보를 콘솔에 출력하도록 설정

* chore: 리뷰 작성 완료 페이지 라우터 추가

* feat: 리뷰 작성 완료 페이지 및 작성 완료 시 페이지 이동 기능 구현

* refactor: 리뷰 아이템 컴포넌트 매직넘버 상수화

* chore: 시계 아이콘 스타일 컴포넌트화

* refactor: 리뷰 관련 메시지 상수 분리

* design: 리뷰 작성란 placeholder 및 본문 font weight 변경

* refactor: 리뷰 문항 번호 동적으로 부여하도록 변경 및 상수화 적용

* refactor: on-, handle- prefix 관련 컨벤션 적용 및 키워드 버튼 인터페이스 확장

* chore: 리뷰 답변의 길이가 유효한지 체크하는 변수의 이름을 의미를 잘 드러내도록 수정

* refactor: 공통 버튼의 타입별 스타일을 함수로 분리

* style: api 호출 함수명 컨벤션에 맞게 수정

* chore: 불필요한 PropsWithChildren import 제거

---------

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

* [FE] MSW를 mock server로 셋팅 (#95)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* ci: msw 관련 패키지 설치

* ci: msw 관련 설정파일 추가

- 브라우저 환경, node 환경에서 msw로 목서버 사용할 수 있도록 관련 파일 추가

* feat: mock 핸들러 추가 및 상세 리뷰 페이지 목 데이터 추가

* feat:  root에서 목서버 사용할 수 있도록함

* refactor: endpoint 수정

- env 에서 서버 주소 끝에 슬래시 넣는 것으로 통일

* feat: 상세 리뷰 페이지(detailedReviewPage)에 목서버 연결 및 관련 코드 수정

- 상태명 변경: detailReview -> detailedReview
- detailedReview 타입에 null 추가 및 그에 따른 오류 핸들링 추가
- deadline에 string 타입으로 response로 전달되어서 new Date로 감싸서 props로 전달

* docs: indexhtml의 title 변경

* style: apis/review.ts 의 import 관련 eslint rule 적용에 따른 수정

* fix: ts에서 process 읽지 못하는 오류 수정

* fix: webpack dev server script 복원

* [FE] 상세 리뷰 페이지 : url router 연동, 변경된 디자인 반영 및 서버에서 api를 연동 (#91)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* refactor: 리뷰 상세 페이지 api 변경에 따른 수정

- 리뷰 상세 페이지 keyword 타입 변경
- api endpoint 변경 , router 변경, sidebar 상세보기 경로 변경
- useState에 빈 값에 대한 타입 추론 사용

* [BE] test: 도메인 연관관계 재설정 후 테스트 작성 (#101)

* test: 리뷰어 그룹 테스트 작성

* refactor: 리뷰 작성 테스트를 `ReviewTest`로 이동

* test: 리뷰어 중복 추가 테스트

* refactor: Test Fixture 사용하도록 수정

* refactor: 예외 클래스명 통일

* style: 테스트 개행

* refactor: 테스트명 명확하게 수정

* refactor: 회원 도메인에서의 비교를 GithubId로 진행하도록 수정

* refactor: createdAt 사용하지 않고, deadline으로 수정

* refactor: 필드명 reviewerGithubIds로 통일

* test: 리뷰어 중복 생성 검증

* refactor: reviewer/reviewee 통일

* refactor: 리뷰어-리뷰이 github id를 명시

* refactor: 테스트에 하나의 검증만 진행되도록 수정

* [FE] feat: 리뷰 목록 페이지 기능 구현 (#90)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* feat: DropDown 컴포넌트 구현

- 사용자 선택을 위한 `DropDown` 컴포넌트를 구현
- `onChange` 이벤트 핸들러와 `options` 배열을 사용하여 옵션을 동적으로 표시

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: svg 아이콘 크기 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: Topbar UI 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: 버튼, 검색창 UI 수정 후 export

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: ReviewPreviewCard 컴포넌트 구현

- 리뷰 미리보기 카드 컴포넌트 구현
- 리뷰어 그룹 이름, 생성일, 리뷰 내용 미리보기, 키워드, 공개 여부를 표시

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: ReviewPreview 인터페이스 추가

- 리뷰 미리보기 데이터 구조를 정의하는 `ReviewPreview` 인터페이스를 추가했습니다.

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: SearchSection 컴포넌트 구현

- 검색 입력창, 검색 버튼, 드롭다운을 포함하여 검색 기능을 구현

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: ReviewPreviewListPage 구현 및 모의 데이터 추가

- `ReviewPreviewListPage` 컴포넌트 구현
  - `SearchSection`을 포함하여 검색 기능을 구현
  - `ReviewPreviewCard`를 사용하여 리뷰 목록을 표시
- 모의 데이터(`mockReviewPreviews`) 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: import 중복 및 순서 정리, ReviewPreviewListPage 라우트 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 여러 개의 요소를 감싸기 때문에 Container로 변경

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: 리뷰 목록 데이터를 서버에서 가져오기 위해 getReviewListApi 함수 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* refactor: 상세 리뷰 불러오기 api 엔드포인트 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* refactor: 상세 리뷰 페이지 API 연동 부분 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* [BE] feat: 리뷰 작성 API 구현 (#102)

* refactor: 리뷰 요청 dto 수정

* refactor: 리뷰 콘텐츠 생성 시, 리뷰에 자신을 추가하도록 변경

* feat: QuestionRepository 추가

* feat: 리뷰 작성 기능 추가

* test: 리뷰 작성 테스트 추가

* refactor: ReviewGroup 생성 시, GithubIdReviewerGroup도 같이 저장되도록 변경

* refactor: GithubId equals 및 hashcode 재정의

* refactor: review 생성 시, reviewGroup이 null이 아니도록 변경

* refactor: EqualsAndHashCode에 id 명시

* refactor: reviewee를 reviewerGroup 통해서 받아오도록 변경

* refactor: 파라미터 long 타입으로 변경

* test: 사용하지 않는 변수 제거

* test: 파라미터별로 개행하도록 변경

* refactor: ReviewerGroupGithubIds의 reviewerGithubIds를 CascadeType.PERSIST로 변경

* chore: 다른 작업에서 진행될 사항으로 사용하지 않는 테스트 삭제

* [FE] Github Actions로 CI 구축 (#96)

* ci: CI를 위한 yml 파일 작성

* ci: yarn.lock 경로 추가

* ci: working-directory 추가

* cI: 동작 테스트를 위해 push 브랜치 경로 조건에서 frontend 임시 제거

* ci: 테스트를 위해 현재 브랜치도 조건에 추가

* ci: package에 test 명령어 추가

* ci: yarn.lock 파일 업데이트

* ci: 테스트 파일 형식 수정

* chore: 필요없는 파일 삭제

* chore: svg 파일을 대문자로 import한 것들 소문자로 수정

* ci: 웹팩 env 설정 업데이트

* ci: process.env 사용을 위한 타입 설정

* ci: env 웹팩 설정 경로를 절대 경로로 변경

* ci: env 웹팩 설정 경로 수정

* ci: env 절대경로 수정

* ci: 절대경로 수정 2

* ci: 읽기 권한을 명시적으로 주고 테스트

* ci: dist 파일 테스트

* ci: CI 환경에서도 env 파일 생성

* ci: 배포 정상 동작 확인을 위한 github pages 임시 배포 설정

* ci: 임시 배포 코드 삭제

* ci: develop 브랜치로 frontend 이하 경로에서 PR이 올라올 때 CI가 실행되도록 수정

* ci: node 설치 에러 해결

* [BE] feat: 리뷰에 필요한 정보 조회 기능 추가 (#103)

* test: QuestionTestFixture 생성

* feat: 모든 리뷰 문항을 조회하는 기능 구현

* feat: 모든 키워드를 조회하는 기능 구현

* test: ReviewerGroupFixture 생성

* feat: 리뷰 생성 시 필요한 리뷰어 그룹 정보를 조회하는 기능 구현

* feat: 리뷰 생성 시 필요한 정보를 조회하는 기능 구현

* refactor: @ServiceTest 적용

* refactor: swagger 적용

* refactor: 필드명 변경

* style: 개행 추가

* refactor: 날짜 형식 변경

* test: import문 제거

* refactor: ReviewCreationResponse 패키지 변경

* refactor: readOnly 트랜잭션 적용

* fix: 리뷰어 중복 검증 임시 제거

---------

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

* [FE] 리뷰 작성 페이지에서 MSW를 사용하여 서버 mocking (#111)

* chore: 중복된 인터페이스 제거

* feat: MSW 핸들러 및 mock data 추가

* chore: 리뷰 쓰기 페이지 데이터 endpoint 수정

* feat: 리뷰 작성 페이지에 msw를 적용하여 서버 mocking

* merge

* [FE]  공통 컴포넌트인 모달을 만든다. (#110)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* ci: msw 관련 패키지 설치

* ci: msw 관련 설정파일 추가

- 브라우저 환경, node 환경에서 msw로 목서버 사용할 수 있도록 관련 파일 추가

* feat: mock 핸들러 추가 및 상세 리뷰 페이지 목 데이터 추가

* feat:  root에서 목서버 사용할 수 있도록함

* refactor: endpoint 수정

- env 에서 서버 주소 끝에 슬래시 넣는 것으로 통일

* feat: 상세 리뷰 페이지(detailedReviewPage)에 목서버 연결 및 관련 코드 수정

- 상태명 변경: detailReview -> detailedReview
- detailedReview 타입에 null 추가 및 그에 따른 오류 핸들링 추가
- deadline에 string 타입으로 response로 전달되어서 new Date로 감싸서 props로 전달

* docs: indexhtml의 title 변경

* style: apis/review.ts 의 import 관련 eslint rule 적용에 따른 수정

* fix: ts에서 process 읽지 못하는 오류 수정

* fix: webpack dev server script 복원

* feat: ModalPortal 셍성

* feat: SideModal 컴포넌트, useSide  셍성 및 Sidebar에 적용

* feat: ModalBackground 컴포넌트 생성 및 적용

* fix: 모달 열릴 때 스크롤바 막는 기능 오류 수정

* design : ModalPortal 사이즈 단위 변경 (% -> vw, vh)

* feat: Button 컴포넌트가 button 속성을 props로 받을 수 있도록 수정

* feat: ConfirmModal 생성

* refactor: index.tsx에서 모달을 꺼낼 수 있도록 리팩토링

* refactor: PropsWithChildren 수정

- PropsWithChildren를 import 하지 않고 React에서 바로 쓸 수 있도록 React.PropsWithChildren로  수정

* [FE] msw관련 env 오류 해결  (#114)

* chore: fe/feat/105-review-writing-msw  의  endpoint 관련 변경사항 반영

* fix: NODE_ENV 관련 오류 수정

- 오류 : env 파일에 NODE_ENV가 없음에도 이를 인식하는 오류 발생
- 원인: 프레임워크에서 NODE_ENV를 기본적으로 가지고 있는 경우도 있다고 함
- 해결: NODE_ENV를 삭제하고 MSW를 사용

* [BE] feat: 내가 받은 리뷰 보기 기능 구현 (#109)

* refactor: contains 작동을 위한 EqualsAndHashcode 추가

* fix: lazyInitialization 해결

* feat: 질문 레포지토리 생성

* feat: 내가 받은 리뷰 응답 생성

* refactor: 리뷰 항목과 질문의 연관관계 변경 및 답변 최대 글자수 DB에 반영

* refactor: 리뷰에 리뷰그룹 초기화 부분 추가

* feat: 내가 받은 리뷰 조회 기능 구현

* feat: 받은 리뷰가 없을 때의 응답 추가

* refactor: dto 설명 추가

* refactor: dto 설명 수정

* refactor: 인자 형식 수정, 개행 수정

* refactor: transactional 어노테이션 추가

* refactor: 내가 받은 리뷰 조회할 때Page객체 말고 List로 받아오도록 수정

* refactor: 미리보기 만드는 기능 도메인 안으로 이동

* test: 테스트 코드 개선

- 변수명 수정, save 여러개 대신 saveAll 사용 등

* refactor: 마지막으로 본 리뷰ID가 없는 로직에 대해 수정

- lastViewedReviewId를 입력하지 않으면 999같이 이상하게 큰 수를 넣어주는게 아니라, 가장 큰 값을 넣어주도록 수정

* docs: 스웨거 데코레이션 적용

* refactor: lastReviewId가 null 이어도 가장 최신 리뷰를 찾을 수 있도록 수정

* refactor: eqaulsAndHashCode 재정의

* refactor: eqaulsAndHashCode 재재정의

* refactor: API Docs 반영

---------

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

* fix: 잘못 정의된 endpoint 수정 (#118)

* [FE] 머지로 인해 사라진 리뷰 상세 페이지 변경 사항 복구 및 데이터 타입 변경 (#121)

* refactor: 리뷰 상세 페이지 데이터 타입 변경 및 Keyword 타입 복구

* fix: 리뷰 상세 페이지의 path 복구

* fix: 사이드바의 리뷰 상세 페이지 경로 복구

* refactor: 리뷰 상세 페이지 데이터 타입 변경에 따른 목 데이터 변경

* fix: DetailedReviewPage 복구 및 데이터 타입 변경에 따른 수정

* [BE] 더미 데이터 추가, local 프로파일 관리 (#123)

* refactor: Unauthorized 예외 처리

* chore: 더미 데이터 추가 및 Profile 처리

* chore: 테스트 yml 생성

* fix: Long notblank -> notnull (#126)

* [FE] 리뷰 목록 페이지에서 msw를 사용하여 모킹 (#124)

* feat: 리뷰 목록 페이지에서 msw를 사용하여 모킹

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 엔드포인트 baseurl에 '/' 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* fix: 리뷰 목록 DTO 필드 수정 (#129)

* [FE] msw 모킹을 위한 리뷰 데이터 하드코딩 (#130)

* refactor: msw 모킹을 위한 리뷰 데이터 하드코딩

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 2차 데모데이를 위한 멤버 아이디 상수화

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 불필요한 콘솔 로그 제거

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: Fe <[email protected]>

* [FE] endPoint 오류와 리뷰 그룹 아이디 수정 (#132)

* fix: endpoint 오류 수정

* fix: 리뷰 생성을 위한 데이터 받을 때의 리뷰 그룹 아이디를 1로 수정

* [BE] fix: 리뷰 미리 보기 생성 기능 수정 (#134)

* fix: src/index.tsx에서 enableMocking 제거 (#136)

* [FE] Children 속성이 필수인 타입 제작 (#147)

* feat: children 속성이 필수인 EssentialPropsWithChildren 타입 생성

* chore: types 폴더의 index 파일에 누락됐던 export들 추가 및 그에 따른 types import문 경로 수정

* [FE] 사이드바 및 모달 사용성 개선 (#139)

* refactor: 사이드바를 닫는 애니메이션 제거

* refactor: 사이드바가 더 빨리 열리도록 수정

* feat: 모달의 배경 클릭 및 esc 키를 눌렀을 때 모달이 닫히는 기능 추가

* chore: hooks index에 useModalClose 추가

* feat: 사이드바 리스트 아이템을 클릭했을 때 사이드바가 닫히는 기능 추가

* refactor: useModalClose 훅을 모든 모달의 공통 최상위 컴포넌트인 ModalBackground에서 처리하도록 수정

* refactor: ModalBackground를 클릭했을 때 모달이 닫히게 하는 이벤트 리스너를 document 대신 Background에 추가

* fix: esc를 사용해 모달을 닫았을 때 햄버거 버튼에 포커스가 생기는 문제 해결 및 변수명 대소문자 수정

* refactor: useEffect 내부 함수들을 훅 외부로 이동 및 주석 추가

* [FE] 존재하지 않는 element에 대한 에러를 출력하는 유틸리티 함수 제작 (#150)

* feat: 존재하지 않는 element에 대한 에러를 출력하는 훅 제작

* chore: hooks 폴더 index에 useExistentElement 추가

* refactor: useExistentElement 훅을 더욱 범용적으로 사용할 수 있도록 수정

* refactor: 존재하지 않는 요소를 판별하는 동작을 커스텀 훅 대신 유틸리티 함수로 제작

* chore: 기존의 존재하지 않는 요소를 탐지하는 커스텀 훅 삭제

* [FE] HTTP 요청 오류 시 status code별 오류 상황을 대응하는 함수 생성 (#151)

* feat: api 에러 시 표시한 메세지 생성 함수 추가

* refactor: api/review.ts에 api 오류 시 메세지를 반환하는 createApiErrorMessage 함수 적용

* docs: http 요청 실패 메세지 수정

* fix: 오타 수정

* [FE] 페이지 상단 이동 버튼 구현 (#153)

* feat: top button 로직 훅으로 구현

* design: top button UI 구현

* chore: 각 페이지마다 top button이 보여지도록 설정

* chore: 컴포넌트 default로 export하도록 설정

* refactor: handler를 useEffect 외부로 분리

* chore: svg import 컨벤션에 맞추어 이름 수정

* [FE] feat: 에러, 로딩 페이지 구현 및 적용 (#155)

* feat: 버튼 컴포넌트에 아이콘을 선택적으로 추가할 수 있도록 변경

- `icon` prop을 통해 버튼에 아이콘을 추가할 수 있도록 변경

* feat: 에러 페이지를 위한 ErrorSection 컴포넌트 구현

- 에러 로고, 메시지, 새로고침 및 홈 이동 버튼 제공

* feat: 라우터 설정에서 `errorElement`에 `ErrorPage` 컴포넌트를 추가

* feat: 버튼 클릭 시 새로고침 및 홈 이동 기능 추가

* feat: LoadingBar 컴포넌트 구현

* feat: 로딩 페이지 추가 및 적용

- 로딩 메시지 추가
- 리뷰 작성 페이지, 리뷰 목록 페이지, 리뷰 상세 페이지에 로딩 페이지 적용

* refactor: buttons 배열을 통해 버튼 생성

* refactor: 코드컨벤션에 맞게 코드 수정 및 imageDescription을 버튼 props에 추가

* refactor: boolean 타입추론 제거

* design: 에러 컴포넌트 화면 가운데 배치

* design: 로딩 컴포넌트 화면 가운데 배치

* [BE] refactor: 도메인 연관 관계 재정의 (#156)

* refactor: 도메인 연관관계 재정의 및 사용하지 않는 도메인 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 사용하지 않는 테스트 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: 예약어 사용하지 않도록 수정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: Review 도메인에서 reviewee 필드 제거

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 저장 기능 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 저장 기능 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 생성 요청 객체 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 리뷰, 리뷰 내용 도메인 테스트 추가

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 작성 시 질문 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: Review의 reviewGroupId 컬럼명 수정

* refactor: 리뷰 생성 시, 키워드 검증을 객체 분리

* refactor: 리뷰 생성 시, 질문 검증을 객체 분리

* style: 코드 재정렬

* test: 리뷰 생성 검증 테스트 추가

* refactor: 사용하지 않는 클래스 삭제

* refactor: keyword 관련 사용하지 않는 클래스 삭제

* refactor: review 관련 사용하지 않는 클래스 삭제

* refactor: 데이터 초기화 객체 수정

* test: 사용하지 않는 테스트 삭제

* refactor: 예외 메세지 말투 통일

* refactor: 사용하지 않는 예외 제거

* refactor: 예외 클래스 패키지 변경

* refactor: NOT NULL 제약조건 추가

* refactor: 테스트에서만 사용되는 함수 제거

* refactor: 테스트 실행 시 발생하는 LazyInitializationException 해결

* refactor: 키워드 검증 함수 순서 변경

* chore: 테스트 코드 컨벤션 통일

* refactor: reviewRequestCode 검증 로직 이동

* refactor: 필드인 questionRepository를 사용하도록 변경

* refactor: 리뷰이, 프로젝트 이름 길이 검증 함수 분리

* test: 리뷰 저장 시 reviewKeywor 저장 검증 추가

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>

* [All] infra: 디스코드 웹훅 사용해 PR 생성/코멘트 시 멘션 (#169)

* feat: PR Request 생성 / Comment 시 디스코드 멘션

* fix: Case-sensitive ID로 해결, ALL webhook 추가

* fix: remove whitespace

* chore: rename workflow

* fix: fix shell script

* fix: step statement

* fix: remove trailing whitespace after equals sign

* [BE] feat: 리뷰 그룹 생성 API 구현 (#163)

* feat: 랜덤한 문자열 생성기 구현

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

* feat: 리뷰 그룹 생성 요청, 응답 형식

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

* feat: 리뷰 그룹 생성

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* feat: 리뷰 작성 컨트롤러

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* [BE] refactor: 리뷰 작성을 위한 정보 요청 기능 리팩터링 (#162)

* refactor: 불필요한 update 방지

* feat: controller에 리뷰 생성 요청에 대한 응답 기능 구현

* feat: controller에 리뷰 작성을 위해 필요한 정보를 응답 기능 구현

* feat: service에 리뷰 작성을 위해 필요한 정보 조회
 기능 구현

* chore: 사용하지 않는 dto 삭제

* test: 리뷰 리뷰 작성을 위해 필요한 정보 조회 기능 테스트 작성

* refactor: swagger 설정 일부 수정 및 에러 응답코드 노출되도록 변경

* refactor: service에서 원시타입 long을 반환하도록 변경

* docs: api 문서 dto 항목설명 변경

* test: 사용하지 않는 변수 선언하지 않도록 변경

* docs: api 문서 검증 내용에 대한 어체 변경

* refactor: 트랜잭션 조회 명시 추가

* refactor: dto 이름 변경

* [FE] 리뷰 상세 페이지에 react-query 추가 및 리팩토링 (#161)

* fix: src/index.tsx에서 enableMocking 제거

* feat: 리뷰 그룹 생성 시 코멘트 컴포넌트명 변경 및 기본값 설정

- 컴포넌트명 변경: RevewComment -> ReveweeComments
-  reviewGroup의 description이 빈문자열이면 기본값을 보여주는 것으로 변경

* refactor: 서버 DB에 있는 리뷰 데이터를 사용하기 위한 상수화

- 현재 DB에 있는 리뷰 데이터를 목 서버에서도 사용하고, 사이드바 페이지 이동 시에도 활용할 수 있도록 관련 value들을 상수화 함

* feat : QueryClient, QueryClientProvider 적용

- src/index.tsx에 QueryClient, QueryClientProvider 적용

* fix: dependencies에 있는 테스트 패키지들을 devDependencies로 옮김

* feat: 리뷰 상세페이지에 react-query 적용

* feat : msw에 리뷰 상세페이지 404 오류 추가

* ci: react-error-boundary 설치

* feat: Outlet에 QueryErrorResetBoundary,ErrorBoundary, Suspense 적용

* feat: 리뷰 상세페이지에 useSuspenseQuery 적용

* refactor: 리뷰 상세페이지 resource, queryString key 상수화

* refactor:  리뷰 상세페이지 react-query key 상수화

* refactor: 리뷰 상세 페이지 컴포넌트 속에서만 사용하는 상수들 상수화

* refactor: DetailedReviewPage/components에 index.tsx를 추가해 import 경로 간결하게 수정

* feat: error 전파를 위한 QueryClient 옵션 추가

-  react-query의 query, mutation에서 error가 전파되도록 QueryClient 옵션 설정

* fix: ErrorPage의 SideModal에 closeModal props로 줌

* refactor: ErrorSection 위치 변경(src/pages/ErrorPage -> src/components/error)

* feat: ErrorFallback 컴포넌트 생성

* feat: ErrorSuspenseContainer 생성 및 App.tsx에 적용

* chore: constants/index.ts export 경로 변경

- 중복되는 apiErrorMessage 삭제
- queryKeys 추가

* chore: 3차-1주차 핵심 기능 시현 때 필요 없는 코드 주석 처리

* docs: ErrorPage의 ERROR_MESSAGE 수정

* design: formWidth 변경 및 fontSize에 1.4rem 추가

* feat: 리뷰 상세 페이지에 리뷰이 이름 추가

- 리뷰 상세 페이지 목데이터, 데이터 타입에 리뷰이 이름 추가
- 리뷰 상세 페이지 컴포넌트에 리뷰이 이름 추가 및 관련 스타일 추가

* refactor: 불필요한 export 삭제

* chore: type명 수정 (RevieweeCommentProps =>RevieweeCommentsProps)

* refactor: ErrorSection으l Button 수정

* refactor: 리뷰 상세 페이지 데이터 타입 변경에 따른 수정

* refactor: ErrorSuspenseContainer 적용 위치 변경

- App가 아닌 router의 element에서 적용하는 것으로 변경

* refactor: 리뷰 상세 페이지 데이터 타입 강제 방법 변경

* chore: 불필요한 주석 삭제

* refactor: ErrorSection의 buttons 네이밍 변경 및 요소에 key 추가

- buttons -> buttonList

* chore: 스타일 주석에 NOTE 추가

* [BE] feat: 리뷰 목록 조회  (#179)

* feat: 리뷰 미리보기

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

* feat: 내가 받은 리뷰 목록 응답 생성

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

* feat: 리뷰 목록 조회

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

* refactor: Cascade 적용으로 불필요한 save 제거

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

* refactor: 리뷰 미리보기 생성 객체 도출

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

---------

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

* fix: 브라우저 타이틀 오타 수정 (#167)

* [BE] feat: 리뷰 상세 조회 기능 구현 (#182)

* feat: 컨트롤러 리뷰
상세 조회 api 응답 기능 구현

* feat: 리뷰 상세 조회 api 응답 객체 구현

* refactor: 리뷰 상세 조회 api 응답 객체명 변경

* feat: 서비스 리뷰 상세 조회 기능 구현

* test: 리뷰 상세 조회 기능 테스트 추가

* style: 오타 및 개행 수정

* refactor: 날짜 응답 시, 일자까지만 응답하도록 변경

* refactor: 리뷰 조회 권한 검증 로직을 repository 사용하도록 변경

* refactor: 검증메세지 변경

* refactor: 리뷰 서비스에서 리뷰 그룹을 찾을 수 없는 경우에 대한 예외 클래스 변경

* refactor: 리뷰 상세 조회 메서드명 변경

* refactor: 헤더명 상수화

* [FE] recoil을 통한 groupAccessCode 전역 상태 관리 (#180)

* ci: recoil 설치

* feat: src/index.ts에 RecoilRoot 적용

* feat: groupAccessCode 에 대한 atom 상태 추가

* feat: useGroupAccessCode 훅 추가

- useGroupAccessCode : groupAccessCode의 atom 상태를 관리하는 훅

* [BE] 내가 받은 리뷰 목록을 최신순으로 조회한다. (#189)

* fix: 날짜 순 정렬

* refactor: 사용하지 않는 변수 제거

---------

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

* [BE] 초기 데이터 설정 (#187)

* feat: 초기 데이터 설정

* build: CD 시 local profile 설정

---------

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

* [FE] feat: Alert Modal과 Error Alert Modal 컴포넌트 구현 및 Button 컴포넌트 확장 (#165)

* refactor: 공통 버튼 컴포넌트가 children과 style을 받도록 수정

* chore: error alert modal에서 사용할 primary 색상의 경고 삼각형 추가

* feat: ErrorAlertModal 컴포넌트 구현

* feat: AlertModal 컴포넌트 구현

* chore: 변경된 Button 컴포넌트의 구조에 맞게 코드 수정

* fix: AlertModal이 Esc 또는 background의 클릭으로 닫히지 않도록 수정

* chore: AlertModal과 ErrorAlertModal export

* refactor: Button 컴포넌트가 type을 별도로 받도록 수정 및 기존의 buttonType을 styleType으로 변경

* refactor: background 클릭 또는 Esc 키를 통해 모달을 닫는 것을 분리

* refactor: AlertModal의 모달 닫는 정책을 props로 선택 가능하도록 수정

* refactor: ErrorAlertModal을 AlertModal을 사용해 구현

* refactor: 닫기 버튼 이외의 방법으로 모달을 닫을 수 있는지 여부와 handler를 props로 전달받도록 변경

* refactor: 비어있는 스타일 컴포넌트 제거

* [FE] 랜딩 페이지 퍼블리싱 및 디바운싱 함수 추가 (#181)

* feat: Input 공통 컴포넌트 제작

* feat: LandingPage 제작

* fix: Input의 type을 text로 수정

* feat: debounce 함수 작성

* docs: debounce 함수에 TODO 주석 및 TSdoc 추가 외 간단한 if문 리팩토링

* chore: 잘못된 파일 구조 및 디렉토리명 수정

* chore: px을 rem으로 수정

* refactor: 동적 스타일링에 css 대신 styled 스타일 적용

* refactor: Input 스타일을 더욱 유연하게 받을 수 있도록 수정, 스타일 리터럴 제거

* refactor: Input에 적용된 커스텀 스타일링을 $style로 수정

* fix: undefined 리턴을 null 리턴으로 수정

* refactor: flex-direction에 별도의 커스텀 타입을 사용하는 대신 React 내장 타입을사용하도록 수정

* refactor: Input 컴포넌트에서 rest props 제거

* chore: 불필요한 import 제거

* [FE] feat: 리뷰 목록 페이지에 변경된 API 연동 후, 리액트 쿼리 적용 및 무한 스크롤 구현 (#192)

* design: 리뷰 미리보기 카드 배경색 변경 및 전체 감싸는 div에 아래쪽 여백 추가

* refactor: 리뷰 목록 인터페이스 추가 및 수정

- ReviewPreviewList 인터페이스 추가
  - size, lastReviewId, reviews 필드 추가
- ReviewPreview 인터페이스 수정
  - keywords 필드를 Keyword[] 타입으로 변경

* chore: 닫힌 자물쇠로 아이콘 변경

* feat: 리뷰 목록 페이지에서 리액트 쿼리 적용

* refactor: 웹 접근성을 위한 alt, aria-label 추가 및 코드 컨벤션에 맞춰 코드 수정

* feat: 리뷰 미리보기 리스트 핸들러에 페이지네이션 로직 추가

- 기존의 단순 반환 핸들러에서 페이지네이션 기능을 포함한 핸들러로 수정

* feat: `SideModal` 컴포넌트에 `closeModal` prop 추가

* feat: 리뷰 목록 페이지에 무한 스크롤 기능 추가

* refactor: useReviewPreviewList 훅 생성하여 데이터 호출 로직 분리

* refactor: 불필요한 ButtonContainer 제거

* design: px을 rem으로 변경

* refactor: Button 컴포넌트에 key 추가

* feat: 리뷰이, 프로젝트명을 보여주는 DescriptionSection 컴포넌트 구현

* refactor: 리뷰 목록을 불러오는 api 변경 이슈로 인해 엔드포인트, fetch 함수 수정

* chore: fragment 제거

* refactor: api 변경에 따라 ReviewPreviewList, ReviewPreview 인터페이스 수정

* refactor: 변경된 api에 따라 props 수정

* refactor: reviewerGroup, isPublic 제거

* refactor: endPoint.gettingReviewList 호출 인자 변경

* refactor: DescriptionSection에서 ReviewInfoSection으로 컴포넌트명 변경

* refactor: useSuspenseQuery 적용 후, 무한스크롤 관련 코드 주석 처리

---------

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

* [FE] feat: 리뷰 작성 페이지와 서버 및 모달 연동 (#191)

* chore: 변경된 UI 적용

* design: 키워드 문항 안내 문구 수정

* feat: Textarea 공통 컴포넌트 뼈대 구현

* chore: 수정된 api 엔드포인트 및 queryparams 적용

* design: reset.ts 추가 설정

* chore: 변경된 api 문서에 맞게 타입 수정

* feat: 리뷰 작성 페이지와 모달 및 서버 연동

* chore: 사이드바 메뉴 클릭 시 이동할 path 수정

* fix: ConfirmModal에서 background 클릭 시 모달이 닫히지 않는 현상 수정

* design: AlertModal 및 ErrorAlertModal 디자인 수정

* chore: 리뷰 작성 및 작성 완료 페이지 라우터 추가

* chore: 불필요한 주석 제거 및 사이드바에서 리뷰 작성 메뉴 숨김 처리

* chore: 리뷰 제출 페이지 버튼 타입 명시

* chore: svg import 컨벤션에 맞게 수정

* [FE] 리뷰 목록 페이지, 리뷰 상세 페이지에서 로그인을 연동 (#193)

* design: 리뷰 미리보기 카드 배경색 변경 및 전체 감싸는 div에 아래쪽 여백 추가

* refactor: 리뷰 목록 인터페이스 추가 및 수정

- ReviewPreviewList 인터페이스 추가
  - size, lastReviewId, reviews 필드 추가
- ReviewPreview 인터페이스 수정
  - keywords 필드를 Keyword[] 타입으로 변경

* chore: 닫힌 자물쇠로 아이콘 변경

* feat: 리뷰 목록 페이지에서 리액트 쿼리 적용

* refactor: 웹 접근성을 위한 alt, aria-label 추가 및 코드 컨벤션에 맞춰 코드 수정

* feat: 리뷰 미리보기 리스트 핸들러에 페이지네이션 로직 추가

- 기존의 단순 반환 핸들러에서 페이지네이션 기능을 포함한 핸들러로 수정

* feat: `SideModal` 컴포넌트에 `closeModal` prop 추가

* feat: 리뷰 목록 페이지에 무한 스크롤 기능 추가

* refactor: useReviewPreviewList 훅 생성하여 데이터 호출 로직 분리

* refactor: 불필요한 ButtonContainer 제거

* design: px을 rem으로 변경

* refactor: Button 컴포넌트에 key 추가

* feat: 리뷰 목록,리뷰 상세 페이지 api 핸들러에서 groupAccessCode를 header에 추가

* feat: DetailedReviewPage 에서 groupAccessCode 상태 적용

* feat: LoginRedirectModal 생성

* refactor: ErrorSection 리팩토링

* feat: 리뷰이, 프로젝트명을 보여주는 DescriptionSection 컴포넌트 구현

* refactor: 리뷰 목록을 불러오는 api 변경 이슈로 인해 엔드포인트, fetch 함수 수정

* feat: 리뷰 상세 페이지에 groupAccessCode 상태를 적용

- 리뷰 상세 페이지에 groupAccessCode 상태값이 있으면 api요청을 하고 없으면 LoginRedirectModal을 띄어서 로그인 유도하는 기능 추가
- DetailedPage/index.tsx에 있던 내용을 DetailedReivewPageContents로 이동
-  DetailedPage/index.tsx에서 ErrorSuspenseContainer 실행하는 것으로 수정

* chore: fragment 제거

* refactor: api 변경에 따라 ReviewPreviewList, ReviewPreview 인터페이스 수정

* fix: 리뷰 상세 페이지 keyword 타입 변경에 따른 수정

* refactor: 변경된 api에 따라 props 수정

* refactor: reviewerGroup, isPublic 제거

* feat: ErrorFallback 의 홈 이동 경로 변경

* refactor: endPoint.gettingReviewList 호출 인자 변경

* refactor: DetailedReviewPage에서 groupAccessCode 가져오는 방식 변경

- useRecoilValue가 아닌 useGroupAccessCode에서 가져오는 것으로 변경

* refactor: DescriptionSection에서 ReviewInfoSection으로 컴포넌트명 변경

* refactor: ErrorPage에서 Home 이동 버튼을 유도하는 방식으로 변경

- route오류 메세지와 api오류 메세지를 errorMessage 파일에서 관리하도록 수정
- ErrorPage에서 errorMessage가 ROUTE_ERROR_MESSAGE이면 홈 버튼이 화면상에서 먼저 나오도록 수정
- 색상별 홈,refresh 아이콘 SVG 추가

* refactor: useSuspenseQuery 적용 후, 무한스크롤 관련 코드 주석 처리

* feat: 리뷰 목록 페이지 목 서버 핸들러 및 목데이터 수정

* feat: 리뷰 목록 페이지에  groupAccessCode 전역 상태 적용

* refactor: 불필요한 코드 삭제

* chore: 오타 수정

---------

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

* [FE] feat: 랜딩 페이지 API 연동 (#196)

* feat: 그룹 생성을 위한 엔드포인트 생성 및 리뷰 목록 엔드포인트, api 호출 함수 수정

* fix: CSSProperties 대신 커스텀 타입을 사용하던 인터페이스 수정

* feat: ReviewAccessForm에 모달 및 API 연결

* fix: 누락됐던 CopyIcon 파일 업로드

* feat: 확인 코드 입력 API 연동

* feat: 완전한 리뷰 작성 URL을 리턴하는 함수 작성

* [FE] fix: 누락됐던 버튼 리팩토링 및 엔드포인트 복구 (#199)

* fix: 충돌 해결 과정에서 누락됐던 엔드포인트 복구

* fix: 버튼 리팩토링 반영

* feat: textarea에 최소 입력 글자 수를 만족하지 못한 경우 에러 메시지 표시 기능 구현 (#200)

* feat: 리뷰 작성 완료 페이지에서 홈 버튼 추가 (#201)

* docs: 리뷰미 소개글 작성 (#203)

* [BE] refactor: 사용하지 않는 메서드 제거, 컨벤션 및 작은 리팩토링 (#206)

* refactor: date를 review가 제공하도록 수정

* style: 컨벤션 적용

* refactor: 사용하지 않는 메서드 제거

* refactor: 메서드명 통일

* style: 불필요한 개행 제거

* [FE] jest 사용 시 node환경 속 msw 호환성 문제와 환경 변수 오류  해결 (#215)

* ci: dependencies에서 jest 삭제 및 ts-jest 설치

* ci: jest에서 절대 경로 사용할 수 있도록  jest.config.js 추가

* chore: eslint적용 제외 파일에 jest.config.js, tsconfig.json 추가

* ci: jest의 testEnvioronment를 jsdom으로 설정

* fix: jest에서 msw ver2를 목서버로 사용 시 생기는 오류 수정

1. msw/node 를 읽지 못함
- jest.config.js의 testEnvironment 빈문자열

2. ReferentError: TextEnCoder is not defined
- 해결 : jest.polyfills.js 추가 및 undici 설치

3. ReferenceError: ReadableStream is not defined
- 해결 : undici 다운 그레이드
undici": "^6.19.5", -> "^5.0.0"

* ci : jest에서 env 파일 읽을 수 있도록 dotenv 설치 및 jest에 적용

* [FE] 개발환경과 빌드환경에 따라 msw 실행 여부를 결정하도록 msw 실행 조건문 개선  (#221)

* ci: 빌드 파일을 실행할 수 있는 http-server 패키지 설치 및 실행 명령어 추가

* fix:개발 환경과 빌드/배포 환경을 구분해 목 서버를 실행하도록 조건문 개선

* fix: 머지 충돌 시 yarn.lock 삭제한 거 복구

* [FE] 리뷰 상세페이지 query 훅 분리 및 HTTP 요청 테스트 진행  (#216)

* refactor: DetailedPage/index.tsx 리팩토링

- early return를 사용해 코드의 가독성을 높임

* feat: useGetDetailedReview 훅 생성 및 DetailedReviewPageContents에 적용

* feat: useSearchParamAndQuery 훅 생성 및 DetailedPageContent에 적용

* refactor: 리뷰 상세페이지에서 id라고 사용했던 key값, params의 key를 reviewId로 변경

- DetailedReview의 router param을 id에서 reviewId로 변경

* ci: dependencies에서 jest 삭제 및 ts-jest 설치

* ci: jest에서 절대 경로 사용할 수 있도록  jest.config.js 추가

* chore: eslint적용 제외 파일에 jest.config.js, tsconfig.json 추가

* ci: jest의 testEnvioronment를 jsdom으로 설정

* refactor: useGetDetailedReview에서 query 결과를 모두 반환하는 방식으로 변경

* fix: jest에서 msw ver2를 목서버로 사용 시 생기는 오류 수정

1. msw/node 를 읽지 못함
- jest.config.js의 testEnvironment 빈문자열

2. ReferentError: TextEnCoder is not defined
- 해결 : jest.polyfills.js 추가 및 undici 설치

3. ReferenceError: ReadableStream is not defined
- 해결 : undici 다운 그레이드
undici": "^6.19.5", -> "^5.0.0"

* ci : jest에서 env 파일 읽을 수 있도록 dotenv 설치 및 jest에 적용

* fix: mock 핸들러인 getDetailedReview 에서 중복된 쿼리 매개 변수 사용 수정

- 오류 상황:  jest에서 msw 사용 시, get의 url에 파라미터 사용 시 중복된 쿼리 매개 변수 오류가 남
- 오류 메세지 ::Found a redundant usage of query parameters in the request handler
- 해결:  리뷰 상세보기 페이지의 reviews까지의 url 상수를 만들고, get에서는 이 상수를  활용한 정규표현식으로 리뷰 상세보기 페이지로 오는 모든 요청을 가로챌 수 있도록  함

* refactor: getWrongDetailedReview 목서버 핸들러 및 관련 상수 삭제

- getDetailedReview에서 request를 분석해 http오류 여부를 결정함

* feat: queryClientWrapper 생성

- queryClientWrapper : msw를 사용한 jest 테스트에 queryWrapper로 사용

* test:리뷰 상세 페이지 api 요청 성공에 대한 테스트 추가

* fix: groupAccessCodeAtom의 기본값 원래대로 복구

* chore:queryClientWrapper 네이밍 표기법을  파스칼 케이스로 변경

* fix: 머지 충돌 방지를 위해 yarn.lock 삭제

* fix:  머지 시 yarn.lock 충돌 해결

* [FE] test: 리뷰 목록 페이지에 API 연동 테스트 추가 및 리팩토링 (#217)

* chore: 리뷰 목록 페이지 관련 컴포넌트 및 인터페이스, 파일 이름 변경

* refactor: api 엔드포인트 상수 적용

* refactor: useGetReviewList 훅으로 분리

* test: 리뷰 목록 페이지 api 연동 테스트 추가

* chore: msw 모킹 코드 제거

* chore: 경로 index 제거

* fix: 중복된 import 및 불필요한 핸들러 제거

* chore: 엔드포인트 상수 제거

* [FE] refactor: 리뷰 작성 페이지 리팩토링 (#219)

* refactor: 각 모달별로 상태와 동작을 관리하는 훅 분리

* refactor: 리뷰 작성 폼의 로직을 훅으로 분리

* refactor: 리뷰 작성 페이지에 분리한 훅 적용

* refactor: URL에서 reviewRequestCode를 추출하는 로직을 훅으로 분리

* chore: 불필요한 테스트용 코드 제거

* chore: ErrorModal을 닫을 때 errorMessage 상태도 초기값으로 변경하도록 수정

* [BE] feat: 헤더 존재 여부 검증 (#207)

* fix: 인터페이스와 구현체 어노테이션 일치

* feat: 헤더 검사 어노테이션

* feat: 헤더 밸리데이터

* feat: 컨트롤러에 헤더 검사

* feat: 헤더 검증 메시지 클라이언트에 전달

* fix: 누락된 `@Valid` 어노테이션 추가

* refactor: 요청이 null인 경우 핸들링

* chore: 테스트 이름 간결하게 변경

* chore: 소문자 컨벤션

* feat: ArgumentResolver를 활용한 헤더 검증

* feat: 공용 패키지로 이동 및 범용적으로 사용할 수 있도록 수정

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

* feat: ArgumentResolver 적용, Validator 삭제

* chore: 사용하지 않는 커스텀 예외 원복

* refactor: 헤더 존재하지 않는 경우 메시지 수정

* chore: 불필요한 `@Valid` 어노테이션 삭제

* refactor: 변수 추출

Co-authored-by: Yeongseo Na <[email protected]>

* fix: 컴파일 에러 해결

---------

Co-authored-by: Yeongseo Na <[email protected]>

* ci: index.html에 구글 애널리틱스 적용 (#226)

* [FE] ci: sentry 초기 설정 (#223)

* ci: sentry 초기 설정

* chore: gitignore에 env.sentry-build-plugin 추가

* ci: sentry 적용 프로젝트를 woowacoure-review-me로 변경, 로컬 환경 추적하도록 변경

* ci: sentry 적용 환경을 배포 환경으로 다시 변경

* ci: sentry에서 replay 관련 설정 삭제

---------

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

* [FE] refactor: LandingPage에 리액트 쿼리 적용 및 리팩토링 (#218)

* chore: LandingPage의 styles 파일 분리

* fix: POST 요청을 하는 함수의 이름을 post~로 수정

* feat: 그룹 데이터 생성 요청에 대한 MSW 핸들러 추가

* refactor: 모킹 데이터 값을 더 직관적으로 수정

* refactor: LandingPage를 ErrorSuspenseContainer가 감싸도록 수정

* refactor: URL을 얻어오는 API에 react-query 적용 및 API 호출 함수 이름 수정

* chore: LandingPage 하위 컴포넌트들의 index 파일 추가 및 적용

* refactor: groupAccessCode 관련 msw 핸들러 추가 및 에러 상태(없는 코드 입력, 서버 에러)에 따른 에러 메세지를 출력하도록 수정

* refactor: groupAccessCode에 알파벳 대소문자와 숫자만 올 수 있도록 수정

* refactor: LandingPage에서 ErrorSuspenseContainer를 제거하고 대신 URLGeneratorForm만을 감싸도록 수정

* refactor: Input 컴포넌트의 onChange 이벤트 타입 수정

* refactor: Input 컴포넌트에 name 속성 추가

* refactor: 수정된 경로 반영

* refactor: usePostDataForUrl 쿼리에서 mutation을 리턴하도록 수정

* refactor: URL을 성공적으로 생성한 이후 Input을 리셋하는 함수 추가

* chore: NOTE 주석 추가

* refactor: getIsValidGroupAccessCodeApi에서 400 외의 에러 처리를 기존의 createApiErrorMessage를 사용하도록 수정

* chore: 누락됐던 -Api suffix 반영

* [BE] Actuator 적용과 logback 설정 (#228)

* build: actuator 의존성 추가

* feat: 로그백 설정

* feat: submodule 적용

- actuator 설정을 서브 모듈에 저장

* style: 개행 및 주석 제거

* test: logback 설정 추가

* [FE] CD test (#233)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* [BE] 프로파일 분리, CD 스크립트 수정 (#235)

* feat: 프로파일 분리

* feat: 프로파일 분리

* cd: 프로파일 분리 cd 스크립트 수정

* fix: CD 스크립트 오타 수정 (#236)

* [FE] CD test 2 (#237)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* fix: sentry 재설정

* fix: sentry 설정 복구

* fix: cd 스크립트 오타 수정 (#238)

* [FE] CD TEST 3 (#239)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* fix: sentry 재설정

* fix: sentry 설정 복구

* chore: 서비스 타이틀 변경

* [BE] build: Micrometer 의존성 추가 (#244)

* build: 마이크로미터 의존성 추가

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* chore: 서브모듈 업데이트

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

---------

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* [FE] feat: 공통 컴포넌트인 체크박스와 체크박스 아이템 제작 (#240)

* feat: 공통 체크박스 컴포넌트 작성

* feat: 체크박스에 레이블을 달 수 있는 CheckboxItem 컴포넌트 작성

* fix: style을 잘못 전달하던 문제 해결

* [BE] fix: CD 스크립트 수정 (#246)

* fix: CD 스크립트 수정

* chore: 저장 데이터 dev에서 활용할 수 있도록 수정

* [FE] refactor: LandingPage 경로 변경 (#249)

* refactor: LandingPage의 경로 변경

* refactor: App 에서 사이드바 주석 처리

* [BE] Swagger API 문서 업데이트 (#254)

* docs: 리뷰 api 문서를 위한 swagger 어노테이션 추가

* refactor: 사용하지 않는 dto 삭제

* docs: api 문서에 최소 및 최대 설정 안내 추가

* docs: 리뷰 그룹 api를 위한 swagger 어노테이션 추가

* refactor: Spring에서 제공하는 APPLICATION_JSON_VALUE 사용

* [BE] feat: 예외에 대한 로그 작성 (#255)

* feat: Controller advice 에 로깅 추가

* refactor: 스택 트레이스 로깅 추가

* feat: 리뷰그룹 생성시 길이 검증 로깅 추가

* feat: 답변 길이 검증 로깅 추가

* feat: 리뷰 그룹 코드 검증 검증 로깅 추가

* feat: 리뷰 조회 검증 검증 로깅 추가

* feat: 선택된 키워드 존재하지 않는 검증 로깅 추가

* feat: 중복 선택된 키워드 검증 로깅 추가

* feat: 키워드 조회 검증 로깅 추가

* feat: 선택 키워드 갯수 검증 로깅 추가

* feat: 선택된 질문 중복 검증 로깅 추가

* feat: 질문 조회 검증 로깅 추가

* feat: 중복 질문 검증 로깅 추가

* feat: 스프링 발생 예외 로깅에 메세지 추가

* feat: 인코딩 설정

* style: 개행 수정

Co-authored-by: Donghoon Lee <[email protected]>

* style: 개행 및 공백 수정

* refactor: 불필요한 검증 제거

- 선택된 키워드와 질문이 DB에 있는지를 validator 에서 검증한 후에도, repository.getById 를 할 때 한번 더 검증이 들어간다. 따라서 'DB에 있는지'에 대한 검증을 validator 에서 할 필요는 없다는 판단 하에 해당 로직을 삭제한다.

---------

Co-authored-by: Donghoon Lee <[email protected]>

* [FE] refactor:  Textarea를 사용하는 공통 장문형 답변 입력 컴포넌트 분리 (#252)

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

* refactor: longReviewItem의 로직을 커스텀 훅으로 분리

* refactor: longReviewItem으로 이름 변경 및 컴포넌트 구현

* chore: 기존의 ReviewItem 제거 및 리뷰 작성 페이지에 LongReviewItem 적용

* [FE] refactor: 공용 모달 훅 추가 및 LongReviewItem 리팩토링 (#258)

* feat: 모달 상태 관리 훅 추가

* refactor: LongReviewItem 컴포넌트가 외부의 event를 props로 받을 수 있도록 변경

* [FE] test: LandingPage에서 사용하는 API에 대한 테스트 작성 (#251)

* chore: 불필요한 Fragment 제거

* test: LandingPage에서 사용하는 api 테스트 추가

* [FE] refactor: 리뷰 작성 페이지에 react query를 적용하고 API 연동 테스트 작성 (#256)

* refactor: 리뷰 작성을 위한 데이터를 불러오는 로직에 react query 적용

* refactor: 리뷰 작성 후 게시 요청 로직에 useMutation 적용

* refactor: query key 상수화 및 리뷰 작성을 위한 데이터를 불러오는 로직을 useReviewForm에서 제거

* chore: 리뷰 작성 페이지에 ErrorSuspenseContainer 적용

* chore: styled component명 수정

* chore: 리뷰 작성을 위한 mock data를 변경된 api 형식에 맞게 수정

* chore: useGetDataToWrite가 더 많은 반환값을 제공하도록 수정

* test: useGetDataToWrite의 API 요청 테스트 작성

* chore: dataToWrite가 없는 경우 상태 기본값 지정

* chore: msw를 사용하여 리뷰 생성 post 요청 mocking

* chore: 리뷰 정보 mocking data 생성

* chore: useMutationReview가 UseMutationResult 타입 객체를 반환하도록 설정

* test: useMutateReview의 API 요청 테스트 작성

* chore: useGetDataToWrite의 반환값을 구조 분해 할당으로 사용할 수 있도록 수정

* chore: LongReviewItem 컴포넌트 적용

* [FE] fix: 질문 번호가 잘못 출력되는 오류 및 리뷰 작성 완료 시 잘못된 경로로 이동하는 오류 수정 (#265)

* fix: 질문 번호가 잘못 출력되는 오류 수정

* fix: 리뷰 작성 완료 시 잘못된 경로로 이동되는 문제 수정

* [BE] feat: 질문 리뷰이 이름으로 치환 (#262)

* chore: cd 테스트 확인 코드 작성 (#272)

* fix: 상세 내용 표시할 때 리뷰이 이름 치환 (#270)

* [FE] feat: 클립보드 복사 컴포넌트 구현 (#261)

* feat: 클립보드 복사 컴포넌트 구현

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

* fix: 부모 요소의 너비에 따라 CopyTextButton이 작아지는 문제 해결

* refactor: ReviewGroupDataModal 스타일 조정 - 전체 크기 지정 및 gap 조정

* chore: 불필요한 padding 제거

* chore: index 파일에 CopyTextButton 추가

---------

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

* [FE] chore: front_deploy를 develop에 반영 (#276)

* [FE] feat: 질문 작성 페이지 QuestionCard, ReviewWritingCard 공통 컴포넌트를 만들고, 슬라이더 방식의 기능 추가 (#247)

* chore: .gitignore에서 주석 제거

* feat: QuestionCard 컴포넌트 구현

* feat: ReviewWritingCard 컴포넌트 구현

* style: CSS 속성 순서 정렬

* refactor: 제목과 내용을 각각 Header와 Main 섹션으로 분리

* feat: 슬라이더 방식으로 질문 카드가 자연스럽게 전환되는 기능 추가

* design: pretendard 폰트 적용

* chore: 헤더 review me 대문자로 변경

* refactor: QuestionCard, ReviewWritingCard 폴더 위치 변경

- ReviewWritingFormPage의 components로 이동

* [FE] 질문 작정 페이지에 필요한 질문 목 데이터 및 카드의 상태 처리 (#263)

* [BE] fix: CD 스크립트 수정 (#246)

* fix: CD 스크립트 수정

* chore: 저장 데이터 dev에서 활용할 수 있도록 수정

* [FE] refactor: LandingPage 경로 …
Kimprodp added a commit that referenced this pull request Aug 21, 2024
* [FE] 프론트엔드 초기 세팅 (#5)

* ci: webpack, react, typescript 설정

* ci: eslint, prettier, stylelint 설정

* [BE] feat: 초기 환경 설정 (#8)

* feat: 초기 환경 설정

* refactor: 클래스 종료 전 개행 제거

* build: application.yml 설정

* [BE] feat: 초기 엔티티 작성 (#10)

* feat: 초기 엔티티 작성

* refactor: 리뷰 내용과 리뷰를 다대일 연결

* refactor: 패키지 구조 고려하여 ProjectGroup으로 수정

* refactor: Project -> Reviewer로 변경

* refactor: 테이블명 일치 (reviewer_group)

* [BE] feat: 리뷰 작성 (#15)

* feat: 초기 엔티티 작성

* refactor: 리뷰 내용과 리뷰를 다대일 연결

* refactor: 패키지 구조 고려하여 ProjectGroup으로 수정

* refactor: Project -> Reviewer로 변경

* refactor: 테이블명 일치 (reviewer_group)

* feat: 멤버 레포지토리 생성

* feat: 리뷰어그룹 레포지토리 생성

* feat: 리뷰 문항 레포지토리 생성

* feat: 키워드 레포지토리 생성

* feat: 리뷰 키워드 레포지토리 생성

* feat: 리뷰 레포지토리 생성

* feat: 리뷰 작성 기능 구현

* test: 리뷰 작성 기능 테스트 추가

---------

Co-authored-by: donghoony <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* [BE] feat: 테스트 메서드별 격리 (#19)

* feat: 테스트 격리를 위한 DB Cleaner 및 Extension 구현

* feat: Service에서 공통적으로 사용할 수 있는 어노테이션 제공

* test: 서비스 테스트 어노테이션 사용하도록 수정

* fix: 누락된 리뷰 작성 매핑 URL 추가 (#17)

* [BE] feat: 리뷰 조회 (#22)

* feat: 리뷰 조회 기능 추가

* style: 개행 변경

* test: 리뷰 조회 기능 테스트 추가

* refactor: 리뷰 조회 메서드명 변경

* refactor: id 타입 변경

* style: 개행 수정

* fix: PostMapping 수정

---------

Co-authored-by: KIMGYUTAE <[email protected]>
Co-authored-by: donghoony <[email protected]>

* [BE] feat: 커스텀 예외 처리 (#20)

* feat: 커스텀 예외 생성

* feat: 커스텀 예외 적용

* feat: 글로벌 예외 처리

* [BE] feat: 리뷰어 그룹 정보 및 키워드 조회 API (#24)

* feat: 키워드 조회 API

* feat: 리뷰 그룹 조회 API

* refactor: PathVariable 변수명 변경

* [FE] 리뷰 작성화면과 상세 리뷰 보기 화면 결합 (#26)

* fix : webpack dev sever 열 때 오류 수정

- package.json 에서 type :"module" 삭제 , stylelint 관련 설정 삭제

Co-Authored-By: ImxYJL <[email protected]>

* ci : svg파일 관련 환경 셋팅

Co-Authored-By: ImxYJL <[email protected]>

* design : reset 스타일, global style에서 폰트 적용

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰 잠금 버튼 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat: 상세 리뷰 보기 화면의 질문,답 컴포넌트 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat: 상세 리뷰 보기 화면의 프로젝트 설명 컴포넌트 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat : 상세 리뷰 보기 화면 페이지 추가 및 상세 리뷰 데이터 타입 추가

Co-Authored-By: ImxYJL <[email protected]>

* fix: webpack dev server 열 때 오류 수정

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

* design: reset css 적용

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

* feat: 리뷰 작성 페이지 구현

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

* ci: svg 파일 관련 설정

* fix : 머지충돌 해결 및 오타 수정

* feat: react-router-dom, react-router 설치 및 설정

* refactor: 리뷰 작성 페이지와 상세 리뷰 보기 페이지 결합 및 리팩토링

* refactor: 리뷰 타입 파일 리팩토링 및 타입 추가

* feat: api 설정 추가 및 상세 리뷰 보기 페이지에 api 핸들러 추가

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: chysis <[email protected]>
Co-authored-by: soosoo22 <[email protected]>

* [BE] refactor: 패키지 구조 리팩터링 (#30)

* refactor: 패키지 구조 구체화

* refactor: 패키지 구조 구체화(서비스, 컨트롤러, 레포지토리)

* [BE] feat: 리뷰어 그룹 설명 작성, 마감 기한 및 검증 로직 추가 (#34)

* feat: BadRequestException 추가

* feat: 리뷰어 그룹 이름, 설명 길이 검증

* [FE] design: theme ,전역 스타일을 설정 (#41)

* chore: 불필요한 파일 삭제

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: theme 생성

- 색상, 폰트 사이즈, 폰트 wieght 설정

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: emotion ThemeProvider 적용 및 Theme 타입 확장

- emotion에서 제공하는 Theme 타입이 빈 객체여서 코드에서 사용하는 theme에 맞게 타입을 확장함

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design : rem 셋팅 및 reset.css를 globalStyle에 적용

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: App에서 불필요한 코드 삭제

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: soosoo22 <[email protected]>
Co-authored-by: Fe <[email protected]>

* [FE] ci: 리액트 쿼리 및 msw 설치, eslint import rule 추가 및 적용 (#44)

* ci: eslint 오류 수정 및 import rule 추가 및 관련 플러그인 설치

- eslint-config-prettier
- eslint-plugin-import

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* style: eslint 적용으로 인한 코드 포맷팅 변경

import 순서 적용

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* ci: msw 설치

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* [BE] docs: Swagger를 활용한 API 문서 자동화 (#31)

* chore: swagger-ui 설정 추가

* feat: swaggerConfig 추가

* docs: 컨트롤러에 swagger 어노테이션 추가

* docs: dto에 swagger 어노테이션 추가

* chore: api 문서 설정 파일 추가

* refactor: SwaggerConfig info 설정 파일 변수 참조하도록 변경

* docs: api 문서에 상태코드 올바르게 노출되도록 변경

* chore: api 문서 파일명 변경

* chore: api-docs 프로퍼티명 변경

* refactor: 프로퍼티 정보와 설정 클래스 분리

* refactor: 컨트롤러 내 swagger 어노테이션 분리

---------

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

* [BE] feat: 리뷰 도메인 구체화, 정책 구현  (#43)

* feat: dto 검증을 위한 의존성 추가

* feat: dto에 jakarta validation 어노테이션 추가

* feat: 컨트롤러에서 요청을 검증할 수 있도록 설정

* feat: FieldError 내용을 보여줄 응답 객체 생성

* feat: FieldError 핸들러 추가

* refactor: 문자열 공백 검증을 위해 NotBlank 사용

* style: todo 주석 추가

* feat: 데드라인이 지나면 리뷰를 작성할 수 없도록 하는 기능 추가

* refactor: 사이즈 검증문 제거

* style: 개행 변경

* refactor: 예외 이름을 과거형으로 변경

* refactor: RFC 9457 형식을 지키면서 필드 에러 정보를 반환하도록 수정

* chore: 오타 수정

* fix: conflict 해결

* feat: dto에 jakarta validation 어노테이션 추가

* refactor: 문자열 공백 검증을 위해 NotBlank 사용

* refactor: 사이즈 검증문 제거

* [BE] feat: 키워드 도메인 구체화, 정책 구현 (#40)

* feat: 키워드 일급 컬렉션 및 제약사항 구현

* build: 테스트 환경에서 Lombok 의존성 추가

* feat: 리뷰에 추가된 키워드 삭제

* feat: 리뷰에 키워드 추가

* feat: 일급 컬렉션의 이름을 SelectedKeywords로 변경

* refactor: 키워드 개수 정책 5개 반영

* refactor: 중복 키워드 멘트 수정

* refactor: `deleteAll`로 메서드명 수정

* refactor: `duplicated` -> `duplicate`로 수정

* refactor: 키워드 동등성 비교

* test: 키워드 등록 시 기존 키워드 삭제 테스트 작성

* refactor: 사용하지 않는 필드 삭제

* style: add newlines between comments

* refactor: 키워드 ID 기반 비교

* refactor: id가 없는 경우 detail 비교

* refactor: 키워드 테스트 도메인 기반으로 수정

* [BE] feat: 리뷰어 그룹 도메인 구체화, 정책 구현 (#45)

* feat: Member 엔티티에 GitHub ID 속성 추가

* feat: 작성한 리뷰어가 리뷰어 그룹에 속하는지 검증

* feat: 리뷰 작성 시, 이미 작성한 리뷰가 있지 않은지 검증

* refactor: Review 엔티티의 reviewer와의 연관관계 ManyToOne으로 변경

* refactor: 컬럼명 오류 수정

* refactor: gitHub 표기 -> github으로 변경

* refactor: GithubReviewGroup -> GithubReviewGroup 클래스명 변경

* refactor: 누락된 @Column 추가

* test: 리뷰 작성 테스트 시, 깃헙 사용자 그룹 데이터 저장 부분 추가

* refactor: 리뷰 작성 시, 중복 리뷰 검증 로직 수정

* refactor: GithubReviewerGroupNotFoundException을 UnAuthorizedException 구현하도록 수정

* refactor: ReviewContentExistException -> ReviewAlreadySubmittedException 클래스명 변경

* feat: UnAuthorizedException 추가

* refactor: 메서드 순서 변경

* test: 불필요한 given절 삭제

* test: 테스트를 위한 데이터 삽입 repository를 활용하도록 변경

---------

Co-authored-by: Donghoon Lee <[email protected]>

* [FE] 리뷰 쓰기 페이지에 확정된 디자인을 반영하고, 리팩터링한다. (#53)

* fix: eslint에서 절대 경로를 읽지 못하는 오류 수정

절대 경로 지정

Co-Authored-By: ImxYJL <[email protected]>

* design: 시스템 기본 폰트 크기 지정

Co-Authored-By: ImxYJL <[email protected]>

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

emotion.ts에서 theme 제거

Co-Authored-By: ImxYJL <[email protected]>

* feat: 공통 버튼 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* feat: 키워드 버튼 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰 작성 페이지 퍼블리싱 및 컴포넌트 분리

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰이 코멘트 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 리뷰 작성 페이지에서 리뷰 아이템 컴포넌트 분리

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 리뷰 작성 페이지 리팩터링

- 리뷰이 코멘트 추가
- 리뷰 아이템 컴포넌트 분리
- 부가적인 스타일링

Co-Authored-By: ImxYJL <[email protected]>

---------

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

* [FE] feat: sidebar  리팩토링 및 기능 추가  , topbar 추가, 반응형 페이지 레이아웃 적용 (#55)

* style: globalStyles.ts에서 경로 공백 추가

* docs: 불필요한 import 삭제

Co-Authored-By: soosoo22 <[email protected]>

* design : theme 추가

- 추가된 theme : breakpoints, sidebarWidth

Co-Authored-By: soosoo22 <[email protected]>

* chore: Header 컴포넌트 삭제

Co-Authored-By: soosoo22 <[email protected]>

* feat : Topbar 생성, logo 이미지 변경 및 SearchInput 생성

- logo 이미지 변경
- Topbar에 들어가는 컴포넌트들 (SidebarOpenButtion, Logo )생성
- userProfile 이미지 생성
- 공통 컴포넌트 : SearchInput ui 생성

Co-Authored-By: soosoo22 <[email protected]>

* feat : 페이지 레이아웃 생성

- 레이아웃 관련 컴포넌트들 생성

Co-Authored-By: soosoo22 <[email protected]>

* refactor : App에 페이지 레이아웃 적용

Co-Authored-By: soosoo22 <[email protected]>

* refactor: Sidebar 리팩토링

- 메뉴명 상수처리
- 피그마 디자인 변경에 따른 수정

Co-Authored-By: soosoo22 <[email protected]>

* feat: sidebar 열고 닫는 기능 추가

Co-Authored-By: soosoo22 <[email protected]>

---------

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

* fix: 컴파일 에러 해결 (#60)

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

* [FE] fix : stylelint 적용 오류 수정  (#66)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* ci: CI 스크립트 작성 (#70)

* [BE] test: 깃헙 리뷰어 그룹의 테스트 추가 및 fixture 미적용 부분 보완 (#68)

* test: GithubReviewerGroupRepository 테스트 추가

* test: ReviewServiceTest에 테스트 fixture 적용

* test: given, when, then절 추가

* test: given 데이터 오류 수정

* [BE] chore: workflow 디렉터리 이동 (#74)

* chore: workflow 디렉터리 이동

* fix: 백엔드 디렉터리로 이동

* fix: 백엔드 디렉토리로 이동

* fix: checkout actions의 디렉토리 설정

* fix: 디렉토리 설정...

* infra: CD 파이프라인 작성 (#76)

* fix: cd gradle 디렉토리 이동 (#77)

* [BE] refactor: 단건 리뷰 조회 시 리뷰어 정보 삭제, 리뷰 작성 시점 추가 (#65)

* refactor: 리뷰 조회 시 리뷰 생성 시각 추가, 리뷰어 정보 삭제

* fix: 테스트 어노테이션 활성화 및 수정

* chore: 테스트 클래스 패키지 이동

* refactor: 불필요한 given절 제거

* [FE] 리뷰 작성, 상세 리뷰 보기 페이지에 백엔드 API 연동 및 dotenv-webpack 설치, BASE_URL을 .env로 이동 (#78)

* chore: gitignore에 yarn-error.log 추가

* ci: env 파일 사용을 위한 dotenv-webpack 설치

* refactor: 엔드포인트에 env 파일을 통한 API_BASE_URL 경로 적용

* fix: 리뷰 상세보기 데이터에서 백엔드 응답과 속성 이름이 달랐던 부분 수정

* refactor: 백엔드 응답 및 리팩토링된 리뷰 쓰기 형식에 맞게 리뷰 쓰기 모킹 데이터 수정

* chore: 불필요한 console.log 삭제

* [Fe] 절대 경로 사용 시 발생하는 eslint 오류를 수정했습니다.  (#81)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* [FE] ci: Jest, RTL 테스트 환경 구축 (#84)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* ci: jest 및 RTL 설치

* ci: jest 타입 설정 추가

* ci: CI를 위한 yml 파일 테스트

* fix: 잘못 올라간 파일 삭제

---------

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

* [BE] refactor: 발생하는 모든 예외의 형식 통일 (#69)

* refactor: 커스텀 예외를 발생시키도록 수정

* refactor: 모든 예외를 잡을 수 있도록 수정

* refactor: ExceptionHandler가 반환하는 예외 응답 형식 변경

- ProblemDetail로 변경

* refactor: ResponseEntityExceptionHandler를 상속하지 않도록 변경

* feat: ResponseEntityExceptionHandler에서 처리하는 예외를 직접 핸들링

* feat: CORS 설정 추가 (#88)

* fix: ci PR 브랜치 설정 (#92)

* refactor: 예외 핸들러 인자 변경 (#87)

* [BE] 도메인 연관관계 재설정 (#97)

* feat: 깃허브 아이디 원시값 포장

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 회원 `GithubId` 사용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 내 컬럼 수정 (content)

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 일급 컬렉션 이름 변경

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 질문 엔티티

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 답변 구조 변경, 길이 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 연관관계 없이 참조하도록 설정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 답변 길이 테스트

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 생성 시 키워드 받아서 생성

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 리뷰어와 리뷰이 같은 경우의 예외 테스트

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 리뷰-키워드 매핑 테이블 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: Fixture 사용해 컴파일 에러 해결

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 일대다 편의 메소드 작성,

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 깃허브 아이디 그룹, 리뷰어 연관관계

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰그룹 - 리뷰 일대다 단방향 연관관계 적용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰그룹 - 리뷰 일대다 양방향 연관관계 적용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰어 그룹 깃허브 아이디 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 셀프리뷰 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 사용하지 않는 파일 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 추가 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: 순환 참조 NPE 해결

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

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

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: Github ID 패키지 이동

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 - 리뷰 답변 연관관계 설정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 사용하지 않는 코드 제거

* refactor: 내가 받은 리뷰 상세 보기 구현

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* [FE] feat: 리뷰 작성 페이지 기능 구현 (#89)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* chore: 현재 사용되지 않는 저장 버튼 숨김 처리

* design: 기본 폰트 사이즈 변경

- 15px -> 16px로 수정

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* design: 리뷰 작성 페이지의 수정된 디자인 적용

- 색상 코드 수정
- 버튼 호버 시 스타일링 수정
- 리뷰 마감일 날짜 형식 변경

* design: 리뷰 질문에 안내 문구 및 placeholder 추가

- 각 질문에 ' (20자 이상)' 문구 하드코딩
- 최대 1000자 입력 가능하다는 문구를 textarea의 placeholder로 추가

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* chore: api명 및 endpoint명 수정

* chore: 리뷰 질문 목록을 서버에서 받아오기 위해 상수 제거

* chore: api 문서 형식에 맞게 데이터 타입 수정

* fix: 키워드 버튼을 눌렀을 때 폼이 제출되는 문제 해결

* feat: 작성한 리뷰 내용을 부모 컴포넌트의 상태와 동기화하도록 설정

* design: textarea의 크기를 고정시키고, 넘어갈 경우 스크롤 되도록 변경

* design: 공통 버튼 컴포넌트에 조건부 스타일링 구현

* design: disabled 관련 색상 변수 추가

* feat: 모든 폼을 작성했을 때 제출 버튼이 활성화되도록 구현, 키워드 선택 로직 구현

* feat: 제출 버튼 클릭 시 confirm 발생, 한 번 더 확인 시 제출되도록 구현

* feat: 키워드 버튼을 5개 초과해서 선택할 수 없도록 구현

* feat: textarea에 1000자를 초과해서 입력할 수 없도록 구현 및 현재 글자수 표시

* fix: 이미 선택된 키워드를 해제하려 해도 개수 제한되는 오류 수정

* refactor: 폼 유효성 검사 조건들을 변수로 분리

* design: 키워드 버튼들의 크기를 fit-content로 변경 및 가로로 나열하도록 수정

* chore: api 연결 이전, 임시로 폼 정보를 콘솔에 출력하도록 설정

* chore: 리뷰 작성 완료 페이지 라우터 추가

* feat: 리뷰 작성 완료 페이지 및 작성 완료 시 페이지 이동 기능 구현

* refactor: 리뷰 아이템 컴포넌트 매직넘버 상수화

* chore: 시계 아이콘 스타일 컴포넌트화

* refactor: 리뷰 관련 메시지 상수 분리

* design: 리뷰 작성란 placeholder 및 본문 font weight 변경

* refactor: 리뷰 문항 번호 동적으로 부여하도록 변경 및 상수화 적용

* refactor: on-, handle- prefix 관련 컨벤션 적용 및 키워드 버튼 인터페이스 확장

* chore: 리뷰 답변의 길이가 유효한지 체크하는 변수의 이름을 의미를 잘 드러내도록 수정

* refactor: 공통 버튼의 타입별 스타일을 함수로 분리

* style: api 호출 함수명 컨벤션에 맞게 수정

* chore: 불필요한 PropsWithChildren import 제거

---------

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

* [FE] MSW를 mock server로 셋팅 (#95)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* ci: msw 관련 패키지 설치

* ci: msw 관련 설정파일 추가

- 브라우저 환경, node 환경에서 msw로 목서버 사용할 수 있도록 관련 파일 추가

* feat: mock 핸들러 추가 및 상세 리뷰 페이지 목 데이터 추가

* feat:  root에서 목서버 사용할 수 있도록함

* refactor: endpoint 수정

- env 에서 서버 주소 끝에 슬래시 넣는 것으로 통일

* feat: 상세 리뷰 페이지(detailedReviewPage)에 목서버 연결 및 관련 코드 수정

- 상태명 변경: detailReview -> detailedReview
- detailedReview 타입에 null 추가 및 그에 따른 오류 핸들링 추가
- deadline에 string 타입으로 response로 전달되어서 new Date로 감싸서 props로 전달

* docs: indexhtml의 title 변경

* style: apis/review.ts 의 import 관련 eslint rule 적용에 따른 수정

* fix: ts에서 process 읽지 못하는 오류 수정

* fix: webpack dev server script 복원

* [FE] 상세 리뷰 페이지 : url router 연동, 변경된 디자인 반영 및 서버에서 api를 연동 (#91)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* refactor: 리뷰 상세 페이지 api 변경에 따른 수정

- 리뷰 상세 페이지 keyword 타입 변경
- api endpoint 변경 , router 변경, sidebar 상세보기 경로 변경
- useState에 빈 값에 대한 타입 추론 사용

* [BE] test: 도메인 연관관계 재설정 후 테스트 작성 (#101)

* test: 리뷰어 그룹 테스트 작성

* refactor: 리뷰 작성 테스트를 `ReviewTest`로 이동

* test: 리뷰어 중복 추가 테스트

* refactor: Test Fixture 사용하도록 수정

* refactor: 예외 클래스명 통일

* style: 테스트 개행

* refactor: 테스트명 명확하게 수정

* refactor: 회원 도메인에서의 비교를 GithubId로 진행하도록 수정

* refactor: createdAt 사용하지 않고, deadline으로 수정

* refactor: 필드명 reviewerGithubIds로 통일

* test: 리뷰어 중복 생성 검증

* refactor: reviewer/reviewee 통일

* refactor: 리뷰어-리뷰이 github id를 명시

* refactor: 테스트에 하나의 검증만 진행되도록 수정

* [FE] feat: 리뷰 목록 페이지 기능 구현 (#90)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* feat: DropDown 컴포넌트 구현

- 사용자 선택을 위한 `DropDown` 컴포넌트를 구현
- `onChange` 이벤트 핸들러와 `options` 배열을 사용하여 옵션을 동적으로 표시

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: svg 아이콘 크기 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: Topbar UI 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: 버튼, 검색창 UI 수정 후 export

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: ReviewPreviewCard 컴포넌트 구현

- 리뷰 미리보기 카드 컴포넌트 구현
- 리뷰어 그룹 이름, 생성일, 리뷰 내용 미리보기, 키워드, 공개 여부를 표시

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: ReviewPreview 인터페이스 추가

- 리뷰 미리보기 데이터 구조를 정의하는 `ReviewPreview` 인터페이스를 추가했습니다.

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: SearchSection 컴포넌트 구현

- 검색 입력창, 검색 버튼, 드롭다운을 포함하여 검색 기능을 구현

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: ReviewPreviewListPage 구현 및 모의 데이터 추가

- `ReviewPreviewListPage` 컴포넌트 구현
  - `SearchSection`을 포함하여 검색 기능을 구현
  - `ReviewPreviewCard`를 사용하여 리뷰 목록을 표시
- 모의 데이터(`mockReviewPreviews`) 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: import 중복 및 순서 정리, ReviewPreviewListPage 라우트 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 여러 개의 요소를 감싸기 때문에 Container로 변경

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: 리뷰 목록 데이터를 서버에서 가져오기 위해 getReviewListApi 함수 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* refactor: 상세 리뷰 불러오기 api 엔드포인트 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* refactor: 상세 리뷰 페이지 API 연동 부분 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* [BE] feat: 리뷰 작성 API 구현 (#102)

* refactor: 리뷰 요청 dto 수정

* refactor: 리뷰 콘텐츠 생성 시, 리뷰에 자신을 추가하도록 변경

* feat: QuestionRepository 추가

* feat: 리뷰 작성 기능 추가

* test: 리뷰 작성 테스트 추가

* refactor: ReviewGroup 생성 시, GithubIdReviewerGroup도 같이 저장되도록 변경

* refactor: GithubId equals 및 hashcode 재정의

* refactor: review 생성 시, reviewGroup이 null이 아니도록 변경

* refactor: EqualsAndHashCode에 id 명시

* refactor: reviewee를 reviewerGroup 통해서 받아오도록 변경

* refactor: 파라미터 long 타입으로 변경

* test: 사용하지 않는 변수 제거

* test: 파라미터별로 개행하도록 변경

* refactor: ReviewerGroupGithubIds의 reviewerGithubIds를 CascadeType.PERSIST로 변경

* chore: 다른 작업에서 진행될 사항으로 사용하지 않는 테스트 삭제

* [FE] Github Actions로 CI 구축 (#96)

* ci: CI를 위한 yml 파일 작성

* ci: yarn.lock 경로 추가

* ci: working-directory 추가

* cI: 동작 테스트를 위해 push 브랜치 경로 조건에서 frontend 임시 제거

* ci: 테스트를 위해 현재 브랜치도 조건에 추가

* ci: package에 test 명령어 추가

* ci: yarn.lock 파일 업데이트

* ci: 테스트 파일 형식 수정

* chore: 필요없는 파일 삭제

* chore: svg 파일을 대문자로 import한 것들 소문자로 수정

* ci: 웹팩 env 설정 업데이트

* ci: process.env 사용을 위한 타입 설정

* ci: env 웹팩 설정 경로를 절대 경로로 변경

* ci: env 웹팩 설정 경로 수정

* ci: env 절대경로 수정

* ci: 절대경로 수정 2

* ci: 읽기 권한을 명시적으로 주고 테스트

* ci: dist 파일 테스트

* ci: CI 환경에서도 env 파일 생성

* ci: 배포 정상 동작 확인을 위한 github pages 임시 배포 설정

* ci: 임시 배포 코드 삭제

* ci: develop 브랜치로 frontend 이하 경로에서 PR이 올라올 때 CI가 실행되도록 수정

* ci: node 설치 에러 해결

* [BE] feat: 리뷰에 필요한 정보 조회 기능 추가 (#103)

* test: QuestionTestFixture 생성

* feat: 모든 리뷰 문항을 조회하는 기능 구현

* feat: 모든 키워드를 조회하는 기능 구현

* test: ReviewerGroupFixture 생성

* feat: 리뷰 생성 시 필요한 리뷰어 그룹 정보를 조회하는 기능 구현

* feat: 리뷰 생성 시 필요한 정보를 조회하는 기능 구현

* refactor: @ServiceTest 적용

* refactor: swagger 적용

* refactor: 필드명 변경

* style: 개행 추가

* refactor: 날짜 형식 변경

* test: import문 제거

* refactor: ReviewCreationResponse 패키지 변경

* refactor: readOnly 트랜잭션 적용

* fix: 리뷰어 중복 검증 임시 제거

---------

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

* [FE] 리뷰 작성 페이지에서 MSW를 사용하여 서버 mocking (#111)

* chore: 중복된 인터페이스 제거

* feat: MSW 핸들러 및 mock data 추가

* chore: 리뷰 쓰기 페이지 데이터 endpoint 수정

* feat: 리뷰 작성 페이지에 msw를 적용하여 서버 mocking

* merge

* [FE]  공통 컴포넌트인 모달을 만든다. (#110)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* ci: msw 관련 패키지 설치

* ci: msw 관련 설정파일 추가

- 브라우저 환경, node 환경에서 msw로 목서버 사용할 수 있도록 관련 파일 추가

* feat: mock 핸들러 추가 및 상세 리뷰 페이지 목 데이터 추가

* feat:  root에서 목서버 사용할 수 있도록함

* refactor: endpoint 수정

- env 에서 서버 주소 끝에 슬래시 넣는 것으로 통일

* feat: 상세 리뷰 페이지(detailedReviewPage)에 목서버 연결 및 관련 코드 수정

- 상태명 변경: detailReview -> detailedReview
- detailedReview 타입에 null 추가 및 그에 따른 오류 핸들링 추가
- deadline에 string 타입으로 response로 전달되어서 new Date로 감싸서 props로 전달

* docs: indexhtml의 title 변경

* style: apis/review.ts 의 import 관련 eslint rule 적용에 따른 수정

* fix: ts에서 process 읽지 못하는 오류 수정

* fix: webpack dev server script 복원

* feat: ModalPortal 셍성

* feat: SideModal 컴포넌트, useSide  셍성 및 Sidebar에 적용

* feat: ModalBackground 컴포넌트 생성 및 적용

* fix: 모달 열릴 때 스크롤바 막는 기능 오류 수정

* design : ModalPortal 사이즈 단위 변경 (% -> vw, vh)

* feat: Button 컴포넌트가 button 속성을 props로 받을 수 있도록 수정

* feat: ConfirmModal 생성

* refactor: index.tsx에서 모달을 꺼낼 수 있도록 리팩토링

* refactor: PropsWithChildren 수정

- PropsWithChildren를 import 하지 않고 React에서 바로 쓸 수 있도록 React.PropsWithChildren로  수정

* [FE] msw관련 env 오류 해결  (#114)

* chore: fe/feat/105-review-writing-msw  의  endpoint 관련 변경사항 반영

* fix: NODE_ENV 관련 오류 수정

- 오류 : env 파일에 NODE_ENV가 없음에도 이를 인식하는 오류 발생
- 원인: 프레임워크에서 NODE_ENV를 기본적으로 가지고 있는 경우도 있다고 함
- 해결: NODE_ENV를 삭제하고 MSW를 사용

* [BE] feat: 내가 받은 리뷰 보기 기능 구현 (#109)

* refactor: contains 작동을 위한 EqualsAndHashcode 추가

* fix: lazyInitialization 해결

* feat: 질문 레포지토리 생성

* feat: 내가 받은 리뷰 응답 생성

* refactor: 리뷰 항목과 질문의 연관관계 변경 및 답변 최대 글자수 DB에 반영

* refactor: 리뷰에 리뷰그룹 초기화 부분 추가

* feat: 내가 받은 리뷰 조회 기능 구현

* feat: 받은 리뷰가 없을 때의 응답 추가

* refactor: dto 설명 추가

* refactor: dto 설명 수정

* refactor: 인자 형식 수정, 개행 수정

* refactor: transactional 어노테이션 추가

* refactor: 내가 받은 리뷰 조회할 때Page객체 말고 List로 받아오도록 수정

* refactor: 미리보기 만드는 기능 도메인 안으로 이동

* test: 테스트 코드 개선

- 변수명 수정, save 여러개 대신 saveAll 사용 등

* refactor: 마지막으로 본 리뷰ID가 없는 로직에 대해 수정

- lastViewedReviewId를 입력하지 않으면 999같이 이상하게 큰 수를 넣어주는게 아니라, 가장 큰 값을 넣어주도록 수정

* docs: 스웨거 데코레이션 적용

* refactor: lastReviewId가 null 이어도 가장 최신 리뷰를 찾을 수 있도록 수정

* refactor: eqaulsAndHashCode 재정의

* refactor: eqaulsAndHashCode 재재정의

* refactor: API Docs 반영

---------

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

* fix: 잘못 정의된 endpoint 수정 (#118)

* [FE] 머지로 인해 사라진 리뷰 상세 페이지 변경 사항 복구 및 데이터 타입 변경 (#121)

* refactor: 리뷰 상세 페이지 데이터 타입 변경 및 Keyword 타입 복구

* fix: 리뷰 상세 페이지의 path 복구

* fix: 사이드바의 리뷰 상세 페이지 경로 복구

* refactor: 리뷰 상세 페이지 데이터 타입 변경에 따른 목 데이터 변경

* fix: DetailedReviewPage 복구 및 데이터 타입 변경에 따른 수정

* [BE] 더미 데이터 추가, local 프로파일 관리 (#123)

* refactor: Unauthorized 예외 처리

* chore: 더미 데이터 추가 및 Profile 처리

* chore: 테스트 yml 생성

* fix: Long notblank -> notnull (#126)

* [FE] 리뷰 목록 페이지에서 msw를 사용하여 모킹 (#124)

* feat: 리뷰 목록 페이지에서 msw를 사용하여 모킹

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 엔드포인트 baseurl에 '/' 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* fix: 리뷰 목록 DTO 필드 수정 (#129)

* [FE] msw 모킹을 위한 리뷰 데이터 하드코딩 (#130)

* refactor: msw 모킹을 위한 리뷰 데이터 하드코딩

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 2차 데모데이를 위한 멤버 아이디 상수화

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 불필요한 콘솔 로그 제거

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: Fe <[email protected]>

* [FE] endPoint 오류와 리뷰 그룹 아이디 수정 (#132)

* fix: endpoint 오류 수정

* fix: 리뷰 생성을 위한 데이터 받을 때의 리뷰 그룹 아이디를 1로 수정

* [BE] fix: 리뷰 미리 보기 생성 기능 수정 (#134)

* fix: src/index.tsx에서 enableMocking 제거 (#136)

* [FE] Children 속성이 필수인 타입 제작 (#147)

* feat: children 속성이 필수인 EssentialPropsWithChildren 타입 생성

* chore: types 폴더의 index 파일에 누락됐던 export들 추가 및 그에 따른 types import문 경로 수정

* [FE] 사이드바 및 모달 사용성 개선 (#139)

* refactor: 사이드바를 닫는 애니메이션 제거

* refactor: 사이드바가 더 빨리 열리도록 수정

* feat: 모달의 배경 클릭 및 esc 키를 눌렀을 때 모달이 닫히는 기능 추가

* chore: hooks index에 useModalClose 추가

* feat: 사이드바 리스트 아이템을 클릭했을 때 사이드바가 닫히는 기능 추가

* refactor: useModalClose 훅을 모든 모달의 공통 최상위 컴포넌트인 ModalBackground에서 처리하도록 수정

* refactor: ModalBackground를 클릭했을 때 모달이 닫히게 하는 이벤트 리스너를 document 대신 Background에 추가

* fix: esc를 사용해 모달을 닫았을 때 햄버거 버튼에 포커스가 생기는 문제 해결 및 변수명 대소문자 수정

* refactor: useEffect 내부 함수들을 훅 외부로 이동 및 주석 추가

* [FE] 존재하지 않는 element에 대한 에러를 출력하는 유틸리티 함수 제작 (#150)

* feat: 존재하지 않는 element에 대한 에러를 출력하는 훅 제작

* chore: hooks 폴더 index에 useExistentElement 추가

* refactor: useExistentElement 훅을 더욱 범용적으로 사용할 수 있도록 수정

* refactor: 존재하지 않는 요소를 판별하는 동작을 커스텀 훅 대신 유틸리티 함수로 제작

* chore: 기존의 존재하지 않는 요소를 탐지하는 커스텀 훅 삭제

* [FE] HTTP 요청 오류 시 status code별 오류 상황을 대응하는 함수 생성 (#151)

* feat: api 에러 시 표시한 메세지 생성 함수 추가

* refactor: api/review.ts에 api 오류 시 메세지를 반환하는 createApiErrorMessage 함수 적용

* docs: http 요청 실패 메세지 수정

* fix: 오타 수정

* [FE] 페이지 상단 이동 버튼 구현 (#153)

* feat: top button 로직 훅으로 구현

* design: top button UI 구현

* chore: 각 페이지마다 top button이 보여지도록 설정

* chore: 컴포넌트 default로 export하도록 설정

* refactor: handler를 useEffect 외부로 분리

* chore: svg import 컨벤션에 맞추어 이름 수정

* [FE] feat: 에러, 로딩 페이지 구현 및 적용 (#155)

* feat: 버튼 컴포넌트에 아이콘을 선택적으로 추가할 수 있도록 변경

- `icon` prop을 통해 버튼에 아이콘을 추가할 수 있도록 변경

* feat: 에러 페이지를 위한 ErrorSection 컴포넌트 구현

- 에러 로고, 메시지, 새로고침 및 홈 이동 버튼 제공

* feat: 라우터 설정에서 `errorElement`에 `ErrorPage` 컴포넌트를 추가

* feat: 버튼 클릭 시 새로고침 및 홈 이동 기능 추가

* feat: LoadingBar 컴포넌트 구현

* feat: 로딩 페이지 추가 및 적용

- 로딩 메시지 추가
- 리뷰 작성 페이지, 리뷰 목록 페이지, 리뷰 상세 페이지에 로딩 페이지 적용

* refactor: buttons 배열을 통해 버튼 생성

* refactor: 코드컨벤션에 맞게 코드 수정 및 imageDescription을 버튼 props에 추가

* refactor: boolean 타입추론 제거

* design: 에러 컴포넌트 화면 가운데 배치

* design: 로딩 컴포넌트 화면 가운데 배치

* [BE] refactor: 도메인 연관 관계 재정의 (#156)

* refactor: 도메인 연관관계 재정의 및 사용하지 않는 도메인 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 사용하지 않는 테스트 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: 예약어 사용하지 않도록 수정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: Review 도메인에서 reviewee 필드 제거

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 저장 기능 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 저장 기능 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 생성 요청 객체 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 리뷰, 리뷰 내용 도메인 테스트 추가

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 작성 시 질문 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: Review의 reviewGroupId 컬럼명 수정

* refactor: 리뷰 생성 시, 키워드 검증을 객체 분리

* refactor: 리뷰 생성 시, 질문 검증을 객체 분리

* style: 코드 재정렬

* test: 리뷰 생성 검증 테스트 추가

* refactor: 사용하지 않는 클래스 삭제

* refactor: keyword 관련 사용하지 않는 클래스 삭제

* refactor: review 관련 사용하지 않는 클래스 삭제

* refactor: 데이터 초기화 객체 수정

* test: 사용하지 않는 테스트 삭제

* refactor: 예외 메세지 말투 통일

* refactor: 사용하지 않는 예외 제거

* refactor: 예외 클래스 패키지 변경

* refactor: NOT NULL 제약조건 추가

* refactor: 테스트에서만 사용되는 함수 제거

* refactor: 테스트 실행 시 발생하는 LazyInitializationException 해결

* refactor: 키워드 검증 함수 순서 변경

* chore: 테스트 코드 컨벤션 통일

* refactor: reviewRequestCode 검증 로직 이동

* refactor: 필드인 questionRepository를 사용하도록 변경

* refactor: 리뷰이, 프로젝트 이름 길이 검증 함수 분리

* test: 리뷰 저장 시 reviewKeywor 저장 검증 추가

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>

* [All] infra: 디스코드 웹훅 사용해 PR 생성/코멘트 시 멘션 (#169)

* feat: PR Request 생성 / Comment 시 디스코드 멘션

* fix: Case-sensitive ID로 해결, ALL webhook 추가

* fix: remove whitespace

* chore: rename workflow

* fix: fix shell script

* fix: step statement

* fix: remove trailing whitespace after equals sign

* [BE] feat: 리뷰 그룹 생성 API 구현 (#163)

* feat: 랜덤한 문자열 생성기 구현

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

* feat: 리뷰 그룹 생성 요청, 응답 형식

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

* feat: 리뷰 그룹 생성

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* feat: 리뷰 작성 컨트롤러

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* [BE] refactor: 리뷰 작성을 위한 정보 요청 기능 리팩터링 (#162)

* refactor: 불필요한 update 방지

* feat: controller에 리뷰 생성 요청에 대한 응답 기능 구현

* feat: controller에 리뷰 작성을 위해 필요한 정보를 응답 기능 구현

* feat: service에 리뷰 작성을 위해 필요한 정보 조회
 기능 구현

* chore: 사용하지 않는 dto 삭제

* test: 리뷰 리뷰 작성을 위해 필요한 정보 조회 기능 테스트 작성

* refactor: swagger 설정 일부 수정 및 에러 응답코드 노출되도록 변경

* refactor: service에서 원시타입 long을 반환하도록 변경

* docs: api 문서 dto 항목설명 변경

* test: 사용하지 않는 변수 선언하지 않도록 변경

* docs: api 문서 검증 내용에 대한 어체 변경

* refactor: 트랜잭션 조회 명시 추가

* refactor: dto 이름 변경

* [FE] 리뷰 상세 페이지에 react-query 추가 및 리팩토링 (#161)

* fix: src/index.tsx에서 enableMocking 제거

* feat: 리뷰 그룹 생성 시 코멘트 컴포넌트명 변경 및 기본값 설정

- 컴포넌트명 변경: RevewComment -> ReveweeComments
-  reviewGroup의 description이 빈문자열이면 기본값을 보여주는 것으로 변경

* refactor: 서버 DB에 있는 리뷰 데이터를 사용하기 위한 상수화

- 현재 DB에 있는 리뷰 데이터를 목 서버에서도 사용하고, 사이드바 페이지 이동 시에도 활용할 수 있도록 관련 value들을 상수화 함

* feat : QueryClient, QueryClientProvider 적용

- src/index.tsx에 QueryClient, QueryClientProvider 적용

* fix: dependencies에 있는 테스트 패키지들을 devDependencies로 옮김

* feat: 리뷰 상세페이지에 react-query 적용

* feat : msw에 리뷰 상세페이지 404 오류 추가

* ci: react-error-boundary 설치

* feat: Outlet에 QueryErrorResetBoundary,ErrorBoundary, Suspense 적용

* feat: 리뷰 상세페이지에 useSuspenseQuery 적용

* refactor: 리뷰 상세페이지 resource, queryString key 상수화

* refactor:  리뷰 상세페이지 react-query key 상수화

* refactor: 리뷰 상세 페이지 컴포넌트 속에서만 사용하는 상수들 상수화

* refactor: DetailedReviewPage/components에 index.tsx를 추가해 import 경로 간결하게 수정

* feat: error 전파를 위한 QueryClient 옵션 추가

-  react-query의 query, mutation에서 error가 전파되도록 QueryClient 옵션 설정

* fix: ErrorPage의 SideModal에 closeModal props로 줌

* refactor: ErrorSection 위치 변경(src/pages/ErrorPage -> src/components/error)

* feat: ErrorFallback 컴포넌트 생성

* feat: ErrorSuspenseContainer 생성 및 App.tsx에 적용

* chore: constants/index.ts export 경로 변경

- 중복되는 apiErrorMessage 삭제
- queryKeys 추가

* chore: 3차-1주차 핵심 기능 시현 때 필요 없는 코드 주석 처리

* docs: ErrorPage의 ERROR_MESSAGE 수정

* design: formWidth 변경 및 fontSize에 1.4rem 추가

* feat: 리뷰 상세 페이지에 리뷰이 이름 추가

- 리뷰 상세 페이지 목데이터, 데이터 타입에 리뷰이 이름 추가
- 리뷰 상세 페이지 컴포넌트에 리뷰이 이름 추가 및 관련 스타일 추가

* refactor: 불필요한 export 삭제

* chore: type명 수정 (RevieweeCommentProps =>RevieweeCommentsProps)

* refactor: ErrorSection으l Button 수정

* refactor: 리뷰 상세 페이지 데이터 타입 변경에 따른 수정

* refactor: ErrorSuspenseContainer 적용 위치 변경

- App가 아닌 router의 element에서 적용하는 것으로 변경

* refactor: 리뷰 상세 페이지 데이터 타입 강제 방법 변경

* chore: 불필요한 주석 삭제

* refactor: ErrorSection의 buttons 네이밍 변경 및 요소에 key 추가

- buttons -> buttonList

* chore: 스타일 주석에 NOTE 추가

* [BE] feat: 리뷰 목록 조회  (#179)

* feat: 리뷰 미리보기

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

* feat: 내가 받은 리뷰 목록 응답 생성

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

* feat: 리뷰 목록 조회

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

* refactor: Cascade 적용으로 불필요한 save 제거

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

* refactor: 리뷰 미리보기 생성 객체 도출

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

---------

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

* fix: 브라우저 타이틀 오타 수정 (#167)

* [BE] feat: 리뷰 상세 조회 기능 구현 (#182)

* feat: 컨트롤러 리뷰
상세 조회 api 응답 기능 구현

* feat: 리뷰 상세 조회 api 응답 객체 구현

* refactor: 리뷰 상세 조회 api 응답 객체명 변경

* feat: 서비스 리뷰 상세 조회 기능 구현

* test: 리뷰 상세 조회 기능 테스트 추가

* style: 오타 및 개행 수정

* refactor: 날짜 응답 시, 일자까지만 응답하도록 변경

* refactor: 리뷰 조회 권한 검증 로직을 repository 사용하도록 변경

* refactor: 검증메세지 변경

* refactor: 리뷰 서비스에서 리뷰 그룹을 찾을 수 없는 경우에 대한 예외 클래스 변경

* refactor: 리뷰 상세 조회 메서드명 변경

* refactor: 헤더명 상수화

* [FE] recoil을 통한 groupAccessCode 전역 상태 관리 (#180)

* ci: recoil 설치

* feat: src/index.ts에 RecoilRoot 적용

* feat: groupAccessCode 에 대한 atom 상태 추가

* feat: useGroupAccessCode 훅 추가

- useGroupAccessCode : groupAccessCode의 atom 상태를 관리하는 훅

* [BE] 내가 받은 리뷰 목록을 최신순으로 조회한다. (#189)

* fix: 날짜 순 정렬

* refactor: 사용하지 않는 변수 제거

---------

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

* [BE] 초기 데이터 설정 (#187)

* feat: 초기 데이터 설정

* build: CD 시 local profile 설정

---------

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

* [FE] feat: Alert Modal과 Error Alert Modal 컴포넌트 구현 및 Button 컴포넌트 확장 (#165)

* refactor: 공통 버튼 컴포넌트가 children과 style을 받도록 수정

* chore: error alert modal에서 사용할 primary 색상의 경고 삼각형 추가

* feat: ErrorAlertModal 컴포넌트 구현

* feat: AlertModal 컴포넌트 구현

* chore: 변경된 Button 컴포넌트의 구조에 맞게 코드 수정

* fix: AlertModal이 Esc 또는 background의 클릭으로 닫히지 않도록 수정

* chore: AlertModal과 ErrorAlertModal export

* refactor: Button 컴포넌트가 type을 별도로 받도록 수정 및 기존의 buttonType을 styleType으로 변경

* refactor: background 클릭 또는 Esc 키를 통해 모달을 닫는 것을 분리

* refactor: AlertModal의 모달 닫는 정책을 props로 선택 가능하도록 수정

* refactor: ErrorAlertModal을 AlertModal을 사용해 구현

* refactor: 닫기 버튼 이외의 방법으로 모달을 닫을 수 있는지 여부와 handler를 props로 전달받도록 변경

* refactor: 비어있는 스타일 컴포넌트 제거

* [FE] 랜딩 페이지 퍼블리싱 및 디바운싱 함수 추가 (#181)

* feat: Input 공통 컴포넌트 제작

* feat: LandingPage 제작

* fix: Input의 type을 text로 수정

* feat: debounce 함수 작성

* docs: debounce 함수에 TODO 주석 및 TSdoc 추가 외 간단한 if문 리팩토링

* chore: 잘못된 파일 구조 및 디렉토리명 수정

* chore: px을 rem으로 수정

* refactor: 동적 스타일링에 css 대신 styled 스타일 적용

* refactor: Input 스타일을 더욱 유연하게 받을 수 있도록 수정, 스타일 리터럴 제거

* refactor: Input에 적용된 커스텀 스타일링을 $style로 수정

* fix: undefined 리턴을 null 리턴으로 수정

* refactor: flex-direction에 별도의 커스텀 타입을 사용하는 대신 React 내장 타입을사용하도록 수정

* refactor: Input 컴포넌트에서 rest props 제거

* chore: 불필요한 import 제거

* [FE] feat: 리뷰 목록 페이지에 변경된 API 연동 후, 리액트 쿼리 적용 및 무한 스크롤 구현 (#192)

* design: 리뷰 미리보기 카드 배경색 변경 및 전체 감싸는 div에 아래쪽 여백 추가

* refactor: 리뷰 목록 인터페이스 추가 및 수정

- ReviewPreviewList 인터페이스 추가
  - size, lastReviewId, reviews 필드 추가
- ReviewPreview 인터페이스 수정
  - keywords 필드를 Keyword[] 타입으로 변경

* chore: 닫힌 자물쇠로 아이콘 변경

* feat: 리뷰 목록 페이지에서 리액트 쿼리 적용

* refactor: 웹 접근성을 위한 alt, aria-label 추가 및 코드 컨벤션에 맞춰 코드 수정

* feat: 리뷰 미리보기 리스트 핸들러에 페이지네이션 로직 추가

- 기존의 단순 반환 핸들러에서 페이지네이션 기능을 포함한 핸들러로 수정

* feat: `SideModal` 컴포넌트에 `closeModal` prop 추가

* feat: 리뷰 목록 페이지에 무한 스크롤 기능 추가

* refactor: useReviewPreviewList 훅 생성하여 데이터 호출 로직 분리

* refactor: 불필요한 ButtonContainer 제거

* design: px을 rem으로 변경

* refactor: Button 컴포넌트에 key 추가

* feat: 리뷰이, 프로젝트명을 보여주는 DescriptionSection 컴포넌트 구현

* refactor: 리뷰 목록을 불러오는 api 변경 이슈로 인해 엔드포인트, fetch 함수 수정

* chore: fragment 제거

* refactor: api 변경에 따라 ReviewPreviewList, ReviewPreview 인터페이스 수정

* refactor: 변경된 api에 따라 props 수정

* refactor: reviewerGroup, isPublic 제거

* refactor: endPoint.gettingReviewList 호출 인자 변경

* refactor: DescriptionSection에서 ReviewInfoSection으로 컴포넌트명 변경

* refactor: useSuspenseQuery 적용 후, 무한스크롤 관련 코드 주석 처리

---------

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

* [FE] feat: 리뷰 작성 페이지와 서버 및 모달 연동 (#191)

* chore: 변경된 UI 적용

* design: 키워드 문항 안내 문구 수정

* feat: Textarea 공통 컴포넌트 뼈대 구현

* chore: 수정된 api 엔드포인트 및 queryparams 적용

* design: reset.ts 추가 설정

* chore: 변경된 api 문서에 맞게 타입 수정

* feat: 리뷰 작성 페이지와 모달 및 서버 연동

* chore: 사이드바 메뉴 클릭 시 이동할 path 수정

* fix: ConfirmModal에서 background 클릭 시 모달이 닫히지 않는 현상 수정

* design: AlertModal 및 ErrorAlertModal 디자인 수정

* chore: 리뷰 작성 및 작성 완료 페이지 라우터 추가

* chore: 불필요한 주석 제거 및 사이드바에서 리뷰 작성 메뉴 숨김 처리

* chore: 리뷰 제출 페이지 버튼 타입 명시

* chore: svg import 컨벤션에 맞게 수정

* [FE] 리뷰 목록 페이지, 리뷰 상세 페이지에서 로그인을 연동 (#193)

* design: 리뷰 미리보기 카드 배경색 변경 및 전체 감싸는 div에 아래쪽 여백 추가

* refactor: 리뷰 목록 인터페이스 추가 및 수정

- ReviewPreviewList 인터페이스 추가
  - size, lastReviewId, reviews 필드 추가
- ReviewPreview 인터페이스 수정
  - keywords 필드를 Keyword[] 타입으로 변경

* chore: 닫힌 자물쇠로 아이콘 변경

* feat: 리뷰 목록 페이지에서 리액트 쿼리 적용

* refactor: 웹 접근성을 위한 alt, aria-label 추가 및 코드 컨벤션에 맞춰 코드 수정

* feat: 리뷰 미리보기 리스트 핸들러에 페이지네이션 로직 추가

- 기존의 단순 반환 핸들러에서 페이지네이션 기능을 포함한 핸들러로 수정

* feat: `SideModal` 컴포넌트에 `closeModal` prop 추가

* feat: 리뷰 목록 페이지에 무한 스크롤 기능 추가

* refactor: useReviewPreviewList 훅 생성하여 데이터 호출 로직 분리

* refactor: 불필요한 ButtonContainer 제거

* design: px을 rem으로 변경

* refactor: Button 컴포넌트에 key 추가

* feat: 리뷰 목록,리뷰 상세 페이지 api 핸들러에서 groupAccessCode를 header에 추가

* feat: DetailedReviewPage 에서 groupAccessCode 상태 적용

* feat: LoginRedirectModal 생성

* refactor: ErrorSection 리팩토링

* feat: 리뷰이, 프로젝트명을 보여주는 DescriptionSection 컴포넌트 구현

* refactor: 리뷰 목록을 불러오는 api 변경 이슈로 인해 엔드포인트, fetch 함수 수정

* feat: 리뷰 상세 페이지에 groupAccessCode 상태를 적용

- 리뷰 상세 페이지에 groupAccessCode 상태값이 있으면 api요청을 하고 없으면 LoginRedirectModal을 띄어서 로그인 유도하는 기능 추가
- DetailedPage/index.tsx에 있던 내용을 DetailedReivewPageContents로 이동
-  DetailedPage/index.tsx에서 ErrorSuspenseContainer 실행하는 것으로 수정

* chore: fragment 제거

* refactor: api 변경에 따라 ReviewPreviewList, ReviewPreview 인터페이스 수정

* fix: 리뷰 상세 페이지 keyword 타입 변경에 따른 수정

* refactor: 변경된 api에 따라 props 수정

* refactor: reviewerGroup, isPublic 제거

* feat: ErrorFallback 의 홈 이동 경로 변경

* refactor: endPoint.gettingReviewList 호출 인자 변경

* refactor: DetailedReviewPage에서 groupAccessCode 가져오는 방식 변경

- useRecoilValue가 아닌 useGroupAccessCode에서 가져오는 것으로 변경

* refactor: DescriptionSection에서 ReviewInfoSection으로 컴포넌트명 변경

* refactor: ErrorPage에서 Home 이동 버튼을 유도하는 방식으로 변경

- route오류 메세지와 api오류 메세지를 errorMessage 파일에서 관리하도록 수정
- ErrorPage에서 errorMessage가 ROUTE_ERROR_MESSAGE이면 홈 버튼이 화면상에서 먼저 나오도록 수정
- 색상별 홈,refresh 아이콘 SVG 추가

* refactor: useSuspenseQuery 적용 후, 무한스크롤 관련 코드 주석 처리

* feat: 리뷰 목록 페이지 목 서버 핸들러 및 목데이터 수정

* feat: 리뷰 목록 페이지에  groupAccessCode 전역 상태 적용

* refactor: 불필요한 코드 삭제

* chore: 오타 수정

---------

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

* [FE] feat: 랜딩 페이지 API 연동 (#196)

* feat: 그룹 생성을 위한 엔드포인트 생성 및 리뷰 목록 엔드포인트, api 호출 함수 수정

* fix: CSSProperties 대신 커스텀 타입을 사용하던 인터페이스 수정

* feat: ReviewAccessForm에 모달 및 API 연결

* fix: 누락됐던 CopyIcon 파일 업로드

* feat: 확인 코드 입력 API 연동

* feat: 완전한 리뷰 작성 URL을 리턴하는 함수 작성

* [FE] fix: 누락됐던 버튼 리팩토링 및 엔드포인트 복구 (#199)

* fix: 충돌 해결 과정에서 누락됐던 엔드포인트 복구

* fix: 버튼 리팩토링 반영

* feat: textarea에 최소 입력 글자 수를 만족하지 못한 경우 에러 메시지 표시 기능 구현 (#200)

* feat: 리뷰 작성 완료 페이지에서 홈 버튼 추가 (#201)

* docs: 리뷰미 소개글 작성 (#203)

* [BE] refactor: 사용하지 않는 메서드 제거, 컨벤션 및 작은 리팩토링 (#206)

* refactor: date를 review가 제공하도록 수정

* style: 컨벤션 적용

* refactor: 사용하지 않는 메서드 제거

* refactor: 메서드명 통일

* style: 불필요한 개행 제거

* [FE] jest 사용 시 node환경 속 msw 호환성 문제와 환경 변수 오류  해결 (#215)

* ci: dependencies에서 jest 삭제 및 ts-jest 설치

* ci: jest에서 절대 경로 사용할 수 있도록  jest.config.js 추가

* chore: eslint적용 제외 파일에 jest.config.js, tsconfig.json 추가

* ci: jest의 testEnvioronment를 jsdom으로 설정

* fix: jest에서 msw ver2를 목서버로 사용 시 생기는 오류 수정

1. msw/node 를 읽지 못함
- jest.config.js의 testEnvironment 빈문자열

2. ReferentError: TextEnCoder is not defined
- 해결 : jest.polyfills.js 추가 및 undici 설치

3. ReferenceError: ReadableStream is not defined
- 해결 : undici 다운 그레이드
undici": "^6.19.5", -> "^5.0.0"

* ci : jest에서 env 파일 읽을 수 있도록 dotenv 설치 및 jest에 적용

* [FE] 개발환경과 빌드환경에 따라 msw 실행 여부를 결정하도록 msw 실행 조건문 개선  (#221)

* ci: 빌드 파일을 실행할 수 있는 http-server 패키지 설치 및 실행 명령어 추가

* fix:개발 환경과 빌드/배포 환경을 구분해 목 서버를 실행하도록 조건문 개선

* fix: 머지 충돌 시 yarn.lock 삭제한 거 복구

* [FE] 리뷰 상세페이지 query 훅 분리 및 HTTP 요청 테스트 진행  (#216)

* refactor: DetailedPage/index.tsx 리팩토링

- early return를 사용해 코드의 가독성을 높임

* feat: useGetDetailedReview 훅 생성 및 DetailedReviewPageContents에 적용

* feat: useSearchParamAndQuery 훅 생성 및 DetailedPageContent에 적용

* refactor: 리뷰 상세페이지에서 id라고 사용했던 key값, params의 key를 reviewId로 변경

- DetailedReview의 router param을 id에서 reviewId로 변경

* ci: dependencies에서 jest 삭제 및 ts-jest 설치

* ci: jest에서 절대 경로 사용할 수 있도록  jest.config.js 추가

* chore: eslint적용 제외 파일에 jest.config.js, tsconfig.json 추가

* ci: jest의 testEnvioronment를 jsdom으로 설정

* refactor: useGetDetailedReview에서 query 결과를 모두 반환하는 방식으로 변경

* fix: jest에서 msw ver2를 목서버로 사용 시 생기는 오류 수정

1. msw/node 를 읽지 못함
- jest.config.js의 testEnvironment 빈문자열

2. ReferentError: TextEnCoder is not defined
- 해결 : jest.polyfills.js 추가 및 undici 설치

3. ReferenceError: ReadableStream is not defined
- 해결 : undici 다운 그레이드
undici": "^6.19.5", -> "^5.0.0"

* ci : jest에서 env 파일 읽을 수 있도록 dotenv 설치 및 jest에 적용

* fix: mock 핸들러인 getDetailedReview 에서 중복된 쿼리 매개 변수 사용 수정

- 오류 상황:  jest에서 msw 사용 시, get의 url에 파라미터 사용 시 중복된 쿼리 매개 변수 오류가 남
- 오류 메세지 ::Found a redundant usage of query parameters in the request handler
- 해결:  리뷰 상세보기 페이지의 reviews까지의 url 상수를 만들고, get에서는 이 상수를  활용한 정규표현식으로 리뷰 상세보기 페이지로 오는 모든 요청을 가로챌 수 있도록  함

* refactor: getWrongDetailedReview 목서버 핸들러 및 관련 상수 삭제

- getDetailedReview에서 request를 분석해 http오류 여부를 결정함

* feat: queryClientWrapper 생성

- queryClientWrapper : msw를 사용한 jest 테스트에 queryWrapper로 사용

* test:리뷰 상세 페이지 api 요청 성공에 대한 테스트 추가

* fix: groupAccessCodeAtom의 기본값 원래대로 복구

* chore:queryClientWrapper 네이밍 표기법을  파스칼 케이스로 변경

* fix: 머지 충돌 방지를 위해 yarn.lock 삭제

* fix:  머지 시 yarn.lock 충돌 해결

* [FE] test: 리뷰 목록 페이지에 API 연동 테스트 추가 및 리팩토링 (#217)

* chore: 리뷰 목록 페이지 관련 컴포넌트 및 인터페이스, 파일 이름 변경

* refactor: api 엔드포인트 상수 적용

* refactor: useGetReviewList 훅으로 분리

* test: 리뷰 목록 페이지 api 연동 테스트 추가

* chore: msw 모킹 코드 제거

* chore: 경로 index 제거

* fix: 중복된 import 및 불필요한 핸들러 제거

* chore: 엔드포인트 상수 제거

* [FE] refactor: 리뷰 작성 페이지 리팩토링 (#219)

* refactor: 각 모달별로 상태와 동작을 관리하는 훅 분리

* refactor: 리뷰 작성 폼의 로직을 훅으로 분리

* refactor: 리뷰 작성 페이지에 분리한 훅 적용

* refactor: URL에서 reviewRequestCode를 추출하는 로직을 훅으로 분리

* chore: 불필요한 테스트용 코드 제거

* chore: ErrorModal을 닫을 때 errorMessage 상태도 초기값으로 변경하도록 수정

* [BE] feat: 헤더 존재 여부 검증 (#207)

* fix: 인터페이스와 구현체 어노테이션 일치

* feat: 헤더 검사 어노테이션

* feat: 헤더 밸리데이터

* feat: 컨트롤러에 헤더 검사

* feat: 헤더 검증 메시지 클라이언트에 전달

* fix: 누락된 `@Valid` 어노테이션 추가

* refactor: 요청이 null인 경우 핸들링

* chore: 테스트 이름 간결하게 변경

* chore: 소문자 컨벤션

* feat: ArgumentResolver를 활용한 헤더 검증

* feat: 공용 패키지로 이동 및 범용적으로 사용할 수 있도록 수정

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

* feat: ArgumentResolver 적용, Validator 삭제

* chore: 사용하지 않는 커스텀 예외 원복

* refactor: 헤더 존재하지 않는 경우 메시지 수정

* chore: 불필요한 `@Valid` 어노테이션 삭제

* refactor: 변수 추출

Co-authored-by: Yeongseo Na <[email protected]>

* fix: 컴파일 에러 해결

---------

Co-authored-by: Yeongseo Na <[email protected]>

* ci: index.html에 구글 애널리틱스 적용 (#226)

* [FE] ci: sentry 초기 설정 (#223)

* ci: sentry 초기 설정

* chore: gitignore에 env.sentry-build-plugin 추가

* ci: sentry 적용 프로젝트를 woowacoure-review-me로 변경, 로컬 환경 추적하도록 변경

* ci: sentry 적용 환경을 배포 환경으로 다시 변경

* ci: sentry에서 replay 관련 설정 삭제

---------

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

* [FE] refactor: LandingPage에 리액트 쿼리 적용 및 리팩토링 (#218)

* chore: LandingPage의 styles 파일 분리

* fix: POST 요청을 하는 함수의 이름을 post~로 수정

* feat: 그룹 데이터 생성 요청에 대한 MSW 핸들러 추가

* refactor: 모킹 데이터 값을 더 직관적으로 수정

* refactor: LandingPage를 ErrorSuspenseContainer가 감싸도록 수정

* refactor: URL을 얻어오는 API에 react-query 적용 및 API 호출 함수 이름 수정

* chore: LandingPage 하위 컴포넌트들의 index 파일 추가 및 적용

* refactor: groupAccessCode 관련 msw 핸들러 추가 및 에러 상태(없는 코드 입력, 서버 에러)에 따른 에러 메세지를 출력하도록 수정

* refactor: groupAccessCode에 알파벳 대소문자와 숫자만 올 수 있도록 수정

* refactor: LandingPage에서 ErrorSuspenseContainer를 제거하고 대신 URLGeneratorForm만을 감싸도록 수정

* refactor: Input 컴포넌트의 onChange 이벤트 타입 수정

* refactor: Input 컴포넌트에 name 속성 추가

* refactor: 수정된 경로 반영

* refactor: usePostDataForUrl 쿼리에서 mutation을 리턴하도록 수정

* refactor: URL을 성공적으로 생성한 이후 Input을 리셋하는 함수 추가

* chore: NOTE 주석 추가

* refactor: getIsValidGroupAccessCodeApi에서 400 외의 에러 처리를 기존의 createApiErrorMessage를 사용하도록 수정

* chore: 누락됐던 -Api suffix 반영

* [BE] Actuator 적용과 logback 설정 (#228)

* build: actuator 의존성 추가

* feat: 로그백 설정

* feat: submodule 적용

- actuator 설정을 서브 모듈에 저장

* style: 개행 및 주석 제거

* test: logback 설정 추가

* [FE] CD test (#233)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* [BE] 프로파일 분리, CD 스크립트 수정 (#235)

* feat: 프로파일 분리

* feat: 프로파일 분리

* cd: 프로파일 분리 cd 스크립트 수정

* fix: CD 스크립트 오타 수정 (#236)

* [FE] CD test 2 (#237)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* fix: sentry 재설정

* fix: sentry 설정 복구

* fix: cd 스크립트 오타 수정 (#238)

* [FE] CD TEST 3 (#239)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* fix: sentry 재설정

* fix: sentry 설정 복구

* chore: 서비스 타이틀 변경

* [BE] build: Micrometer 의존성 추가 (#244)

* build: 마이크로미터 의존성 추가

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* chore: 서브모듈 업데이트

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

---------

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* [FE] feat: 공통 컴포넌트인 체크박스와 체크박스 아이템 제작 (#240)

* feat: 공통 체크박스 컴포넌트 작성

* feat: 체크박스에 레이블을 달 수 있는 CheckboxItem 컴포넌트 작성

* fix: style을 잘못 전달하던 문제 해결

* [BE] fix: CD 스크립트 수정 (#246)

* fix: CD 스크립트 수정

* chore: 저장 데이터 dev에서 활용할 수 있도록 수정

* [FE] refactor: LandingPage 경로 변경 (#249)

* refactor: LandingPage의 경로 변경

* refactor: App 에서 사이드바 주석 처리

* [BE] Swagger API 문서 업데이트 (#254)

* docs: 리뷰 api 문서를 위한 swagger 어노테이션 추가

* refactor: 사용하지 않는 dto 삭제

* docs: api 문서에 최소 및 최대 설정 안내 추가

* docs: 리뷰 그룹 api를 위한 swagger 어노테이션 추가

* refactor: Spring에서 제공하는 APPLICATION_JSON_VALUE 사용

* [BE] feat: 예외에 대한 로그 작성 (#255)

* feat: Controller advice 에 로깅 추가

* refactor: 스택 트레이스 로깅 추가

* feat: 리뷰그룹 생성시 길이 검증 로깅 추가

* feat: 답변 길이 검증 로깅 추가

* feat: 리뷰 그룹 코드 검증 검증 로깅 추가

* feat: 리뷰 조회 검증 검증 로깅 추가

* feat: 선택된 키워드 존재하지 않는 검증 로깅 추가

* feat: 중복 선택된 키워드 검증 로깅 추가

* feat: 키워드 조회 검증 로깅 추가

* feat: 선택 키워드 갯수 검증 로깅 추가

* feat: 선택된 질문 중복 검증 로깅 추가

* feat: 질문 조회 검증 로깅 추가

* feat: 중복 질문 검증 로깅 추가

* feat: 스프링 발생 예외 로깅에 메세지 추가

* feat: 인코딩 설정

* style: 개행 수정

Co-authored-by: Donghoon Lee <[email protected]>

* style: 개행 및 공백 수정

* refactor: 불필요한 검증 제거

- 선택된 키워드와 질문이 DB에 있는지를 validator 에서 검증한 후에도, repository.getById 를 할 때 한번 더 검증이 들어간다. 따라서 'DB에 있는지'에 대한 검증을 validator 에서 할 필요는 없다는 판단 하에 해당 로직을 삭제한다.

---------

Co-authored-by: Donghoon Lee <[email protected]>

* [FE] refactor:  Textarea를 사용하는 공통 장문형 답변 입력 컴포넌트 분리 (#252)

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

* refactor: longReviewItem의 로직을 커스텀 훅으로 분리

* refactor: longReviewItem으로 이름 변경 및 컴포넌트 구현

* chore: 기존의 ReviewItem 제거 및 리뷰 작성 페이지에 LongReviewItem 적용

* [FE] refactor: 공용 모달 훅 추가 및 LongReviewItem 리팩토링 (#258)

* feat: 모달 상태 관리 훅 추가

* refactor: LongReviewItem 컴포넌트가 외부의 event를 props로 받을 수 있도록 변경

* [FE] test: LandingPage에서 사용하는 API에 대한 테스트 작성 (#251)

* chore: 불필요한 Fragment 제거

* test: LandingPage에서 사용하는 api 테스트 추가

* [FE] refactor: 리뷰 작성 페이지에 react query를 적용하고 API 연동 테스트 작성 (#256)

* refactor: 리뷰 작성을 위한 데이터를 불러오는 로직에 react query 적용

* refactor: 리뷰 작성 후 게시 요청 로직에 useMutation 적용

* refactor: query key 상수화 및 리뷰 작성을 위한 데이터를 불러오는 로직을 useReviewForm에서 제거

* chore: 리뷰 작성 페이지에 ErrorSuspenseContainer 적용

* chore: styled component명 수정

* chore: 리뷰 작성을 위한 mock data를 변경된 api 형식에 맞게 수정

* chore: useGetDataToWrite가 더 많은 반환값을 제공하도록 수정

* test: useGetDataToWrite의 API 요청 테스트 작성

* chore: dataToWrite가 없는 경우 상태 기본값 지정

* chore: msw를 사용하여 리뷰 생성 post 요청 mocking

* chore: 리뷰 정보 mocking data 생성

* chore: useMutationReview가 UseMutationResult 타입 객체를 반환하도록 설정

* test: useMutateReview의 API 요청 테스트 작성

* chore: useGetDataToWrite의 반환값을 구조 분해 할당으로 사용할 수 있도록 수정

* chore: LongReviewItem 컴포넌트 적용

* [FE] fix: 질문 번호가 잘못 출력되는 오류 및 리뷰 작성 완료 시 잘못된 경로로 이동하는 오류 수정 (#265)

* fix: 질문 번호가 잘못 출력되는 오류 수정

* fix: 리뷰 작성 완료 시 잘못된 경로로 이동되는 문제 수정

* [BE] feat: 질문 리뷰이 이름으로 치환 (#262)

* chore: cd 테스트 확인 코드 작성 (#272)

* fix: 상세 내용 표시할 때 리뷰이 이름 치환 (#270)

* [FE] feat: 클립보드 복사 컴포넌트 구현 (#261)

* feat: 클립보드 복사 컴포넌트 구현

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

* fix: 부모 요소의 너비에 따라 CopyTextButton이 작아지는 문제 해결

* refactor: ReviewGroupDataModal 스타일 조정 - 전체 크기 지정 및 gap 조정

* chore: 불필요한 padding 제거

* chore: index 파일에 CopyTextButton 추가

---------

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

* [FE] chore: front_deploy를 develop에 반영 (#276)

* [FE] feat: 질문 작성 페이지 QuestionCard, ReviewWritingCard 공통 컴포넌트를 만들고, 슬라이더 방식의 기능 추가 (#247)

* chore: .gitignore에서 주석 제거

* feat: QuestionCard 컴포넌트 구현

* feat: ReviewWritingCard 컴포넌트 구현

* style: CSS 속성 순서 정렬

* refactor: 제목과 내용을 각각 Header와 Main 섹션으로 분리

* feat: 슬라이더 방식으로 질문 카드가 자연스럽게 전환되는 기능 추가

* design: pretendard 폰트 적용

* chore: 헤더 review me 대문자로 변경

* refactor: QuestionCard, ReviewWritingCard 폴더 위치 변경

- ReviewWritingFormPage의 components로 이동

* [FE] 질문 작정 페이지에 필요한 질문 목 데이터 및 카드의 상태 처리 (#263)

* [BE] fix: CD 스크립트 수정 (#246)

* fix: CD 스크립트 수정

* chore: 저장 데이터 dev에서 활용할 수 있도록 수정

* [FE] refactor: LandingPage 경로 …
skylar1220 added a commit that referenced this pull request Aug 21, 2024
* [FE] 프론트엔드 초기 세팅 (#5)

* ci: webpack, react, typescript 설정

* ci: eslint, prettier, stylelint 설정

* [BE] feat: 초기 환경 설정 (#8)

* feat: 초기 환경 설정

* refactor: 클래스 종료 전 개행 제거

* build: application.yml 설정

* [BE] feat: 초기 엔티티 작성 (#10)

* feat: 초기 엔티티 작성

* refactor: 리뷰 내용과 리뷰를 다대일 연결

* refactor: 패키지 구조 고려하여 ProjectGroup으로 수정

* refactor: Project -> Reviewer로 변경

* refactor: 테이블명 일치 (reviewer_group)

* [BE] feat: 리뷰 작성 (#15)

* feat: 초기 엔티티 작성

* refactor: 리뷰 내용과 리뷰를 다대일 연결

* refactor: 패키지 구조 고려하여 ProjectGroup으로 수정

* refactor: Project -> Reviewer로 변경

* refactor: 테이블명 일치 (reviewer_group)

* feat: 멤버 레포지토리 생성

* feat: 리뷰어그룹 레포지토리 생성

* feat: 리뷰 문항 레포지토리 생성

* feat: 키워드 레포지토리 생성

* feat: 리뷰 키워드 레포지토리 생성

* feat: 리뷰 레포지토리 생성

* feat: 리뷰 작성 기능 구현

* test: 리뷰 작성 기능 테스트 추가

---------

Co-authored-by: donghoony <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* [BE] feat: 테스트 메서드별 격리 (#19)

* feat: 테스트 격리를 위한 DB Cleaner 및 Extension 구현

* feat: Service에서 공통적으로 사용할 수 있는 어노테이션 제공

* test: 서비스 테스트 어노테이션 사용하도록 수정

* fix: 누락된 리뷰 작성 매핑 URL 추가 (#17)

* [BE] feat: 리뷰 조회 (#22)

* feat: 리뷰 조회 기능 추가

* style: 개행 변경

* test: 리뷰 조회 기능 테스트 추가

* refactor: 리뷰 조회 메서드명 변경

* refactor: id 타입 변경

* style: 개행 수정

* fix: PostMapping 수정

---------

Co-authored-by: KIMGYUTAE <[email protected]>
Co-authored-by: donghoony <[email protected]>

* [BE] feat: 커스텀 예외 처리 (#20)

* feat: 커스텀 예외 생성

* feat: 커스텀 예외 적용

* feat: 글로벌 예외 처리

* [BE] feat: 리뷰어 그룹 정보 및 키워드 조회 API (#24)

* feat: 키워드 조회 API

* feat: 리뷰 그룹 조회 API

* refactor: PathVariable 변수명 변경

* [FE] 리뷰 작성화면과 상세 리뷰 보기 화면 결합 (#26)

* fix : webpack dev sever 열 때 오류 수정

- package.json 에서 type :"module" 삭제 , stylelint 관련 설정 삭제

Co-Authored-By: ImxYJL <[email protected]>

* ci : svg파일 관련 환경 셋팅

Co-Authored-By: ImxYJL <[email protected]>

* design : reset 스타일, global style에서 폰트 적용

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰 잠금 버튼 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat: 상세 리뷰 보기 화면의 질문,답 컴포넌트 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat: 상세 리뷰 보기 화면의 프로젝트 설명 컴포넌트 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat : 상세 리뷰 보기 화면 페이지 추가 및 상세 리뷰 데이터 타입 추가

Co-Authored-By: ImxYJL <[email protected]>

* fix: webpack dev server 열 때 오류 수정

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

* design: reset css 적용

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

* feat: 리뷰 작성 페이지 구현

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

* ci: svg 파일 관련 설정

* fix : 머지충돌 해결 및 오타 수정

* feat: react-router-dom, react-router 설치 및 설정

* refactor: 리뷰 작성 페이지와 상세 리뷰 보기 페이지 결합 및 리팩토링

* refactor: 리뷰 타입 파일 리팩토링 및 타입 추가

* feat: api 설정 추가 및 상세 리뷰 보기 페이지에 api 핸들러 추가

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: chysis <[email protected]>
Co-authored-by: soosoo22 <[email protected]>

* [BE] refactor: 패키지 구조 리팩터링 (#30)

* refactor: 패키지 구조 구체화

* refactor: 패키지 구조 구체화(서비스, 컨트롤러, 레포지토리)

* [BE] feat: 리뷰어 그룹 설명 작성, 마감 기한 및 검증 로직 추가 (#34)

* feat: BadRequestException 추가

* feat: 리뷰어 그룹 이름, 설명 길이 검증

* [FE] design: theme ,전역 스타일을 설정 (#41)

* chore: 불필요한 파일 삭제

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: theme 생성

- 색상, 폰트 사이즈, 폰트 wieght 설정

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: emotion ThemeProvider 적용 및 Theme 타입 확장

- emotion에서 제공하는 Theme 타입이 빈 객체여서 코드에서 사용하는 theme에 맞게 타입을 확장함

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design : rem 셋팅 및 reset.css를 globalStyle에 적용

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: App에서 불필요한 코드 삭제

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: soosoo22 <[email protected]>
Co-authored-by: Fe <[email protected]>

* [FE] ci: 리액트 쿼리 및 msw 설치, eslint import rule 추가 및 적용 (#44)

* ci: eslint 오류 수정 및 import rule 추가 및 관련 플러그인 설치

- eslint-config-prettier
- eslint-plugin-import

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* style: eslint 적용으로 인한 코드 포맷팅 변경

import 순서 적용

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* ci: msw 설치

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* [BE] docs: Swagger를 활용한 API 문서 자동화 (#31)

* chore: swagger-ui 설정 추가

* feat: swaggerConfig 추가

* docs: 컨트롤러에 swagger 어노테이션 추가

* docs: dto에 swagger 어노테이션 추가

* chore: api 문서 설정 파일 추가

* refactor: SwaggerConfig info 설정 파일 변수 참조하도록 변경

* docs: api 문서에 상태코드 올바르게 노출되도록 변경

* chore: api 문서 파일명 변경

* chore: api-docs 프로퍼티명 변경

* refactor: 프로퍼티 정보와 설정 클래스 분리

* refactor: 컨트롤러 내 swagger 어노테이션 분리

---------

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

* [BE] feat: 리뷰 도메인 구체화, 정책 구현  (#43)

* feat: dto 검증을 위한 의존성 추가

* feat: dto에 jakarta validation 어노테이션 추가

* feat: 컨트롤러에서 요청을 검증할 수 있도록 설정

* feat: FieldError 내용을 보여줄 응답 객체 생성

* feat: FieldError 핸들러 추가

* refactor: 문자열 공백 검증을 위해 NotBlank 사용

* style: todo 주석 추가

* feat: 데드라인이 지나면 리뷰를 작성할 수 없도록 하는 기능 추가

* refactor: 사이즈 검증문 제거

* style: 개행 변경

* refactor: 예외 이름을 과거형으로 변경

* refactor: RFC 9457 형식을 지키면서 필드 에러 정보를 반환하도록 수정

* chore: 오타 수정

* fix: conflict 해결

* feat: dto에 jakarta validation 어노테이션 추가

* refactor: 문자열 공백 검증을 위해 NotBlank 사용

* refactor: 사이즈 검증문 제거

* [BE] feat: 키워드 도메인 구체화, 정책 구현 (#40)

* feat: 키워드 일급 컬렉션 및 제약사항 구현

* build: 테스트 환경에서 Lombok 의존성 추가

* feat: 리뷰에 추가된 키워드 삭제

* feat: 리뷰에 키워드 추가

* feat: 일급 컬렉션의 이름을 SelectedKeywords로 변경

* refactor: 키워드 개수 정책 5개 반영

* refactor: 중복 키워드 멘트 수정

* refactor: `deleteAll`로 메서드명 수정

* refactor: `duplicated` -> `duplicate`로 수정

* refactor: 키워드 동등성 비교

* test: 키워드 등록 시 기존 키워드 삭제 테스트 작성

* refactor: 사용하지 않는 필드 삭제

* style: add newlines between comments

* refactor: 키워드 ID 기반 비교

* refactor: id가 없는 경우 detail 비교

* refactor: 키워드 테스트 도메인 기반으로 수정

* [BE] feat: 리뷰어 그룹 도메인 구체화, 정책 구현 (#45)

* feat: Member 엔티티에 GitHub ID 속성 추가

* feat: 작성한 리뷰어가 리뷰어 그룹에 속하는지 검증

* feat: 리뷰 작성 시, 이미 작성한 리뷰가 있지 않은지 검증

* refactor: Review 엔티티의 reviewer와의 연관관계 ManyToOne으로 변경

* refactor: 컬럼명 오류 수정

* refactor: gitHub 표기 -> github으로 변경

* refactor: GithubReviewGroup -> GithubReviewGroup 클래스명 변경

* refactor: 누락된 @Column 추가

* test: 리뷰 작성 테스트 시, 깃헙 사용자 그룹 데이터 저장 부분 추가

* refactor: 리뷰 작성 시, 중복 리뷰 검증 로직 수정

* refactor: GithubReviewerGroupNotFoundException을 UnAuthorizedException 구현하도록 수정

* refactor: ReviewContentExistException -> ReviewAlreadySubmittedException 클래스명 변경

* feat: UnAuthorizedException 추가

* refactor: 메서드 순서 변경

* test: 불필요한 given절 삭제

* test: 테스트를 위한 데이터 삽입 repository를 활용하도록 변경

---------

Co-authored-by: Donghoon Lee <[email protected]>

* [FE] 리뷰 쓰기 페이지에 확정된 디자인을 반영하고, 리팩터링한다. (#53)

* fix: eslint에서 절대 경로를 읽지 못하는 오류 수정

절대 경로 지정

Co-Authored-By: ImxYJL <[email protected]>

* design: 시스템 기본 폰트 크기 지정

Co-Authored-By: ImxYJL <[email protected]>

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

emotion.ts에서 theme 제거

Co-Authored-By: ImxYJL <[email protected]>

* feat: 공통 버튼 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* feat: 키워드 버튼 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰 작성 페이지 퍼블리싱 및 컴포넌트 분리

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰이 코멘트 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 리뷰 작성 페이지에서 리뷰 아이템 컴포넌트 분리

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 리뷰 작성 페이지 리팩터링

- 리뷰이 코멘트 추가
- 리뷰 아이템 컴포넌트 분리
- 부가적인 스타일링

Co-Authored-By: ImxYJL <[email protected]>

---------

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

* [FE] feat: sidebar  리팩토링 및 기능 추가  , topbar 추가, 반응형 페이지 레이아웃 적용 (#55)

* style: globalStyles.ts에서 경로 공백 추가

* docs: 불필요한 import 삭제

Co-Authored-By: soosoo22 <[email protected]>

* design : theme 추가

- 추가된 theme : breakpoints, sidebarWidth

Co-Authored-By: soosoo22 <[email protected]>

* chore: Header 컴포넌트 삭제

Co-Authored-By: soosoo22 <[email protected]>

* feat : Topbar 생성, logo 이미지 변경 및 SearchInput 생성

- logo 이미지 변경
- Topbar에 들어가는 컴포넌트들 (SidebarOpenButtion, Logo )생성
- userProfile 이미지 생성
- 공통 컴포넌트 : SearchInput ui 생성

Co-Authored-By: soosoo22 <[email protected]>

* feat : 페이지 레이아웃 생성

- 레이아웃 관련 컴포넌트들 생성

Co-Authored-By: soosoo22 <[email protected]>

* refactor : App에 페이지 레이아웃 적용

Co-Authored-By: soosoo22 <[email protected]>

* refactor: Sidebar 리팩토링

- 메뉴명 상수처리
- 피그마 디자인 변경에 따른 수정

Co-Authored-By: soosoo22 <[email protected]>

* feat: sidebar 열고 닫는 기능 추가

Co-Authored-By: soosoo22 <[email protected]>

---------

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

* fix: 컴파일 에러 해결 (#60)

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

* [FE] fix : stylelint 적용 오류 수정  (#66)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* ci: CI 스크립트 작성 (#70)

* [BE] test: 깃헙 리뷰어 그룹의 테스트 추가 및 fixture 미적용 부분 보완 (#68)

* test: GithubReviewerGroupRepository 테스트 추가

* test: ReviewServiceTest에 테스트 fixture 적용

* test: given, when, then절 추가

* test: given 데이터 오류 수정

* [BE] chore: workflow 디렉터리 이동 (#74)

* chore: workflow 디렉터리 이동

* fix: 백엔드 디렉터리로 이동

* fix: 백엔드 디렉토리로 이동

* fix: checkout actions의 디렉토리 설정

* fix: 디렉토리 설정...

* infra: CD 파이프라인 작성 (#76)

* fix: cd gradle 디렉토리 이동 (#77)

* [BE] refactor: 단건 리뷰 조회 시 리뷰어 정보 삭제, 리뷰 작성 시점 추가 (#65)

* refactor: 리뷰 조회 시 리뷰 생성 시각 추가, 리뷰어 정보 삭제

* fix: 테스트 어노테이션 활성화 및 수정

* chore: 테스트 클래스 패키지 이동

* refactor: 불필요한 given절 제거

* [FE] 리뷰 작성, 상세 리뷰 보기 페이지에 백엔드 API 연동 및 dotenv-webpack 설치, BASE_URL을 .env로 이동 (#78)

* chore: gitignore에 yarn-error.log 추가

* ci: env 파일 사용을 위한 dotenv-webpack 설치

* refactor: 엔드포인트에 env 파일을 통한 API_BASE_URL 경로 적용

* fix: 리뷰 상세보기 데이터에서 백엔드 응답과 속성 이름이 달랐던 부분 수정

* refactor: 백엔드 응답 및 리팩토링된 리뷰 쓰기 형식에 맞게 리뷰 쓰기 모킹 데이터 수정

* chore: 불필요한 console.log 삭제

* [Fe] 절대 경로 사용 시 발생하는 eslint 오류를 수정했습니다.  (#81)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* [FE] ci: Jest, RTL 테스트 환경 구축 (#84)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* ci: jest 및 RTL 설치

* ci: jest 타입 설정 추가

* ci: CI를 위한 yml 파일 테스트

* fix: 잘못 올라간 파일 삭제

---------

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

* [BE] refactor: 발생하는 모든 예외의 형식 통일 (#69)

* refactor: 커스텀 예외를 발생시키도록 수정

* refactor: 모든 예외를 잡을 수 있도록 수정

* refactor: ExceptionHandler가 반환하는 예외 응답 형식 변경

- ProblemDetail로 변경

* refactor: ResponseEntityExceptionHandler를 상속하지 않도록 변경

* feat: ResponseEntityExceptionHandler에서 처리하는 예외를 직접 핸들링

* feat: CORS 설정 추가 (#88)

* fix: ci PR 브랜치 설정 (#92)

* refactor: 예외 핸들러 인자 변경 (#87)

* [BE] 도메인 연관관계 재설정 (#97)

* feat: 깃허브 아이디 원시값 포장

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 회원 `GithubId` 사용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 내 컬럼 수정 (content)

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 일급 컬렉션 이름 변경

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 질문 엔티티

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 답변 구조 변경, 길이 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 연관관계 없이 참조하도록 설정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 답변 길이 테스트

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 생성 시 키워드 받아서 생성

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 리뷰어와 리뷰이 같은 경우의 예외 테스트

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 리뷰-키워드 매핑 테이블 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: Fixture 사용해 컴파일 에러 해결

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 일대다 편의 메소드 작성,

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 깃허브 아이디 그룹, 리뷰어 연관관계

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰그룹 - 리뷰 일대다 단방향 연관관계 적용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰그룹 - 리뷰 일대다 양방향 연관관계 적용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰어 그룹 깃허브 아이디 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 셀프리뷰 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 사용하지 않는 파일 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 추가 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: 순환 참조 NPE 해결

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

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

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: Github ID 패키지 이동

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 - 리뷰 답변 연관관계 설정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 사용하지 않는 코드 제거

* refactor: 내가 받은 리뷰 상세 보기 구현

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* [FE] feat: 리뷰 작성 페이지 기능 구현 (#89)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* chore: 현재 사용되지 않는 저장 버튼 숨김 처리

* design: 기본 폰트 사이즈 변경

- 15px -> 16px로 수정

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* design: 리뷰 작성 페이지의 수정된 디자인 적용

- 색상 코드 수정
- 버튼 호버 시 스타일링 수정
- 리뷰 마감일 날짜 형식 변경

* design: 리뷰 질문에 안내 문구 및 placeholder 추가

- 각 질문에 ' (20자 이상)' 문구 하드코딩
- 최대 1000자 입력 가능하다는 문구를 textarea의 placeholder로 추가

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* chore: api명 및 endpoint명 수정

* chore: 리뷰 질문 목록을 서버에서 받아오기 위해 상수 제거

* chore: api 문서 형식에 맞게 데이터 타입 수정

* fix: 키워드 버튼을 눌렀을 때 폼이 제출되는 문제 해결

* feat: 작성한 리뷰 내용을 부모 컴포넌트의 상태와 동기화하도록 설정

* design: textarea의 크기를 고정시키고, 넘어갈 경우 스크롤 되도록 변경

* design: 공통 버튼 컴포넌트에 조건부 스타일링 구현

* design: disabled 관련 색상 변수 추가

* feat: 모든 폼을 작성했을 때 제출 버튼이 활성화되도록 구현, 키워드 선택 로직 구현

* feat: 제출 버튼 클릭 시 confirm 발생, 한 번 더 확인 시 제출되도록 구현

* feat: 키워드 버튼을 5개 초과해서 선택할 수 없도록 구현

* feat: textarea에 1000자를 초과해서 입력할 수 없도록 구현 및 현재 글자수 표시

* fix: 이미 선택된 키워드를 해제하려 해도 개수 제한되는 오류 수정

* refactor: 폼 유효성 검사 조건들을 변수로 분리

* design: 키워드 버튼들의 크기를 fit-content로 변경 및 가로로 나열하도록 수정

* chore: api 연결 이전, 임시로 폼 정보를 콘솔에 출력하도록 설정

* chore: 리뷰 작성 완료 페이지 라우터 추가

* feat: 리뷰 작성 완료 페이지 및 작성 완료 시 페이지 이동 기능 구현

* refactor: 리뷰 아이템 컴포넌트 매직넘버 상수화

* chore: 시계 아이콘 스타일 컴포넌트화

* refactor: 리뷰 관련 메시지 상수 분리

* design: 리뷰 작성란 placeholder 및 본문 font weight 변경

* refactor: 리뷰 문항 번호 동적으로 부여하도록 변경 및 상수화 적용

* refactor: on-, handle- prefix 관련 컨벤션 적용 및 키워드 버튼 인터페이스 확장

* chore: 리뷰 답변의 길이가 유효한지 체크하는 변수의 이름을 의미를 잘 드러내도록 수정

* refactor: 공통 버튼의 타입별 스타일을 함수로 분리

* style: api 호출 함수명 컨벤션에 맞게 수정

* chore: 불필요한 PropsWithChildren import 제거

---------

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

* [FE] MSW를 mock server로 셋팅 (#95)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* ci: msw 관련 패키지 설치

* ci: msw 관련 설정파일 추가

- 브라우저 환경, node 환경에서 msw로 목서버 사용할 수 있도록 관련 파일 추가

* feat: mock 핸들러 추가 및 상세 리뷰 페이지 목 데이터 추가

* feat:  root에서 목서버 사용할 수 있도록함

* refactor: endpoint 수정

- env 에서 서버 주소 끝에 슬래시 넣는 것으로 통일

* feat: 상세 리뷰 페이지(detailedReviewPage)에 목서버 연결 및 관련 코드 수정

- 상태명 변경: detailReview -> detailedReview
- detailedReview 타입에 null 추가 및 그에 따른 오류 핸들링 추가
- deadline에 string 타입으로 response로 전달되어서 new Date로 감싸서 props로 전달

* docs: indexhtml의 title 변경

* style: apis/review.ts 의 import 관련 eslint rule 적용에 따른 수정

* fix: ts에서 process 읽지 못하는 오류 수정

* fix: webpack dev server script 복원

* [FE] 상세 리뷰 페이지 : url router 연동, 변경된 디자인 반영 및 서버에서 api를 연동 (#91)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* refactor: 리뷰 상세 페이지 api 변경에 따른 수정

- 리뷰 상세 페이지 keyword 타입 변경
- api endpoint 변경 , router 변경, sidebar 상세보기 경로 변경
- useState에 빈 값에 대한 타입 추론 사용

* [BE] test: 도메인 연관관계 재설정 후 테스트 작성 (#101)

* test: 리뷰어 그룹 테스트 작성

* refactor: 리뷰 작성 테스트를 `ReviewTest`로 이동

* test: 리뷰어 중복 추가 테스트

* refactor: Test Fixture 사용하도록 수정

* refactor: 예외 클래스명 통일

* style: 테스트 개행

* refactor: 테스트명 명확하게 수정

* refactor: 회원 도메인에서의 비교를 GithubId로 진행하도록 수정

* refactor: createdAt 사용하지 않고, deadline으로 수정

* refactor: 필드명 reviewerGithubIds로 통일

* test: 리뷰어 중복 생성 검증

* refactor: reviewer/reviewee 통일

* refactor: 리뷰어-리뷰이 github id를 명시

* refactor: 테스트에 하나의 검증만 진행되도록 수정

* [FE] feat: 리뷰 목록 페이지 기능 구현 (#90)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* feat: DropDown 컴포넌트 구현

- 사용자 선택을 위한 `DropDown` 컴포넌트를 구현
- `onChange` 이벤트 핸들러와 `options` 배열을 사용하여 옵션을 동적으로 표시

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: svg 아이콘 크기 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: Topbar UI 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: 버튼, 검색창 UI 수정 후 export

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: ReviewPreviewCard 컴포넌트 구현

- 리뷰 미리보기 카드 컴포넌트 구현
- 리뷰어 그룹 이름, 생성일, 리뷰 내용 미리보기, 키워드, 공개 여부를 표시

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: ReviewPreview 인터페이스 추가

- 리뷰 미리보기 데이터 구조를 정의하는 `ReviewPreview` 인터페이스를 추가했습니다.

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: SearchSection 컴포넌트 구현

- 검색 입력창, 검색 버튼, 드롭다운을 포함하여 검색 기능을 구현

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: ReviewPreviewListPage 구현 및 모의 데이터 추가

- `ReviewPreviewListPage` 컴포넌트 구현
  - `SearchSection`을 포함하여 검색 기능을 구현
  - `ReviewPreviewCard`를 사용하여 리뷰 목록을 표시
- 모의 데이터(`mockReviewPreviews`) 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: import 중복 및 순서 정리, ReviewPreviewListPage 라우트 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 여러 개의 요소를 감싸기 때문에 Container로 변경

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: 리뷰 목록 데이터를 서버에서 가져오기 위해 getReviewListApi 함수 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* refactor: 상세 리뷰 불러오기 api 엔드포인트 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* refactor: 상세 리뷰 페이지 API 연동 부분 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* [BE] feat: 리뷰 작성 API 구현 (#102)

* refactor: 리뷰 요청 dto 수정

* refactor: 리뷰 콘텐츠 생성 시, 리뷰에 자신을 추가하도록 변경

* feat: QuestionRepository 추가

* feat: 리뷰 작성 기능 추가

* test: 리뷰 작성 테스트 추가

* refactor: ReviewGroup 생성 시, GithubIdReviewerGroup도 같이 저장되도록 변경

* refactor: GithubId equals 및 hashcode 재정의

* refactor: review 생성 시, reviewGroup이 null이 아니도록 변경

* refactor: EqualsAndHashCode에 id 명시

* refactor: reviewee를 reviewerGroup 통해서 받아오도록 변경

* refactor: 파라미터 long 타입으로 변경

* test: 사용하지 않는 변수 제거

* test: 파라미터별로 개행하도록 변경

* refactor: ReviewerGroupGithubIds의 reviewerGithubIds를 CascadeType.PERSIST로 변경

* chore: 다른 작업에서 진행될 사항으로 사용하지 않는 테스트 삭제

* [FE] Github Actions로 CI 구축 (#96)

* ci: CI를 위한 yml 파일 작성

* ci: yarn.lock 경로 추가

* ci: working-directory 추가

* cI: 동작 테스트를 위해 push 브랜치 경로 조건에서 frontend 임시 제거

* ci: 테스트를 위해 현재 브랜치도 조건에 추가

* ci: package에 test 명령어 추가

* ci: yarn.lock 파일 업데이트

* ci: 테스트 파일 형식 수정

* chore: 필요없는 파일 삭제

* chore: svg 파일을 대문자로 import한 것들 소문자로 수정

* ci: 웹팩 env 설정 업데이트

* ci: process.env 사용을 위한 타입 설정

* ci: env 웹팩 설정 경로를 절대 경로로 변경

* ci: env 웹팩 설정 경로 수정

* ci: env 절대경로 수정

* ci: 절대경로 수정 2

* ci: 읽기 권한을 명시적으로 주고 테스트

* ci: dist 파일 테스트

* ci: CI 환경에서도 env 파일 생성

* ci: 배포 정상 동작 확인을 위한 github pages 임시 배포 설정

* ci: 임시 배포 코드 삭제

* ci: develop 브랜치로 frontend 이하 경로에서 PR이 올라올 때 CI가 실행되도록 수정

* ci: node 설치 에러 해결

* [BE] feat: 리뷰에 필요한 정보 조회 기능 추가 (#103)

* test: QuestionTestFixture 생성

* feat: 모든 리뷰 문항을 조회하는 기능 구현

* feat: 모든 키워드를 조회하는 기능 구현

* test: ReviewerGroupFixture 생성

* feat: 리뷰 생성 시 필요한 리뷰어 그룹 정보를 조회하는 기능 구현

* feat: 리뷰 생성 시 필요한 정보를 조회하는 기능 구현

* refactor: @ServiceTest 적용

* refactor: swagger 적용

* refactor: 필드명 변경

* style: 개행 추가

* refactor: 날짜 형식 변경

* test: import문 제거

* refactor: ReviewCreationResponse 패키지 변경

* refactor: readOnly 트랜잭션 적용

* fix: 리뷰어 중복 검증 임시 제거

---------

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

* [FE] 리뷰 작성 페이지에서 MSW를 사용하여 서버 mocking (#111)

* chore: 중복된 인터페이스 제거

* feat: MSW 핸들러 및 mock data 추가

* chore: 리뷰 쓰기 페이지 데이터 endpoint 수정

* feat: 리뷰 작성 페이지에 msw를 적용하여 서버 mocking

* merge

* [FE]  공통 컴포넌트인 모달을 만든다. (#110)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* ci: msw 관련 패키지 설치

* ci: msw 관련 설정파일 추가

- 브라우저 환경, node 환경에서 msw로 목서버 사용할 수 있도록 관련 파일 추가

* feat: mock 핸들러 추가 및 상세 리뷰 페이지 목 데이터 추가

* feat:  root에서 목서버 사용할 수 있도록함

* refactor: endpoint 수정

- env 에서 서버 주소 끝에 슬래시 넣는 것으로 통일

* feat: 상세 리뷰 페이지(detailedReviewPage)에 목서버 연결 및 관련 코드 수정

- 상태명 변경: detailReview -> detailedReview
- detailedReview 타입에 null 추가 및 그에 따른 오류 핸들링 추가
- deadline에 string 타입으로 response로 전달되어서 new Date로 감싸서 props로 전달

* docs: indexhtml의 title 변경

* style: apis/review.ts 의 import 관련 eslint rule 적용에 따른 수정

* fix: ts에서 process 읽지 못하는 오류 수정

* fix: webpack dev server script 복원

* feat: ModalPortal 셍성

* feat: SideModal 컴포넌트, useSide  셍성 및 Sidebar에 적용

* feat: ModalBackground 컴포넌트 생성 및 적용

* fix: 모달 열릴 때 스크롤바 막는 기능 오류 수정

* design : ModalPortal 사이즈 단위 변경 (% -> vw, vh)

* feat: Button 컴포넌트가 button 속성을 props로 받을 수 있도록 수정

* feat: ConfirmModal 생성

* refactor: index.tsx에서 모달을 꺼낼 수 있도록 리팩토링

* refactor: PropsWithChildren 수정

- PropsWithChildren를 import 하지 않고 React에서 바로 쓸 수 있도록 React.PropsWithChildren로  수정

* [FE] msw관련 env 오류 해결  (#114)

* chore: fe/feat/105-review-writing-msw  의  endpoint 관련 변경사항 반영

* fix: NODE_ENV 관련 오류 수정

- 오류 : env 파일에 NODE_ENV가 없음에도 이를 인식하는 오류 발생
- 원인: 프레임워크에서 NODE_ENV를 기본적으로 가지고 있는 경우도 있다고 함
- 해결: NODE_ENV를 삭제하고 MSW를 사용

* [BE] feat: 내가 받은 리뷰 보기 기능 구현 (#109)

* refactor: contains 작동을 위한 EqualsAndHashcode 추가

* fix: lazyInitialization 해결

* feat: 질문 레포지토리 생성

* feat: 내가 받은 리뷰 응답 생성

* refactor: 리뷰 항목과 질문의 연관관계 변경 및 답변 최대 글자수 DB에 반영

* refactor: 리뷰에 리뷰그룹 초기화 부분 추가

* feat: 내가 받은 리뷰 조회 기능 구현

* feat: 받은 리뷰가 없을 때의 응답 추가

* refactor: dto 설명 추가

* refactor: dto 설명 수정

* refactor: 인자 형식 수정, 개행 수정

* refactor: transactional 어노테이션 추가

* refactor: 내가 받은 리뷰 조회할 때Page객체 말고 List로 받아오도록 수정

* refactor: 미리보기 만드는 기능 도메인 안으로 이동

* test: 테스트 코드 개선

- 변수명 수정, save 여러개 대신 saveAll 사용 등

* refactor: 마지막으로 본 리뷰ID가 없는 로직에 대해 수정

- lastViewedReviewId를 입력하지 않으면 999같이 이상하게 큰 수를 넣어주는게 아니라, 가장 큰 값을 넣어주도록 수정

* docs: 스웨거 데코레이션 적용

* refactor: lastReviewId가 null 이어도 가장 최신 리뷰를 찾을 수 있도록 수정

* refactor: eqaulsAndHashCode 재정의

* refactor: eqaulsAndHashCode 재재정의

* refactor: API Docs 반영

---------

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

* fix: 잘못 정의된 endpoint 수정 (#118)

* [FE] 머지로 인해 사라진 리뷰 상세 페이지 변경 사항 복구 및 데이터 타입 변경 (#121)

* refactor: 리뷰 상세 페이지 데이터 타입 변경 및 Keyword 타입 복구

* fix: 리뷰 상세 페이지의 path 복구

* fix: 사이드바의 리뷰 상세 페이지 경로 복구

* refactor: 리뷰 상세 페이지 데이터 타입 변경에 따른 목 데이터 변경

* fix: DetailedReviewPage 복구 및 데이터 타입 변경에 따른 수정

* [BE] 더미 데이터 추가, local 프로파일 관리 (#123)

* refactor: Unauthorized 예외 처리

* chore: 더미 데이터 추가 및 Profile 처리

* chore: 테스트 yml 생성

* fix: Long notblank -> notnull (#126)

* [FE] 리뷰 목록 페이지에서 msw를 사용하여 모킹 (#124)

* feat: 리뷰 목록 페이지에서 msw를 사용하여 모킹

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 엔드포인트 baseurl에 '/' 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* fix: 리뷰 목록 DTO 필드 수정 (#129)

* [FE] msw 모킹을 위한 리뷰 데이터 하드코딩 (#130)

* refactor: msw 모킹을 위한 리뷰 데이터 하드코딩

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 2차 데모데이를 위한 멤버 아이디 상수화

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 불필요한 콘솔 로그 제거

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: Fe <[email protected]>

* [FE] endPoint 오류와 리뷰 그룹 아이디 수정 (#132)

* fix: endpoint 오류 수정

* fix: 리뷰 생성을 위한 데이터 받을 때의 리뷰 그룹 아이디를 1로 수정

* [BE] fix: 리뷰 미리 보기 생성 기능 수정 (#134)

* fix: src/index.tsx에서 enableMocking 제거 (#136)

* [FE] Children 속성이 필수인 타입 제작 (#147)

* feat: children 속성이 필수인 EssentialPropsWithChildren 타입 생성

* chore: types 폴더의 index 파일에 누락됐던 export들 추가 및 그에 따른 types import문 경로 수정

* [FE] 사이드바 및 모달 사용성 개선 (#139)

* refactor: 사이드바를 닫는 애니메이션 제거

* refactor: 사이드바가 더 빨리 열리도록 수정

* feat: 모달의 배경 클릭 및 esc 키를 눌렀을 때 모달이 닫히는 기능 추가

* chore: hooks index에 useModalClose 추가

* feat: 사이드바 리스트 아이템을 클릭했을 때 사이드바가 닫히는 기능 추가

* refactor: useModalClose 훅을 모든 모달의 공통 최상위 컴포넌트인 ModalBackground에서 처리하도록 수정

* refactor: ModalBackground를 클릭했을 때 모달이 닫히게 하는 이벤트 리스너를 document 대신 Background에 추가

* fix: esc를 사용해 모달을 닫았을 때 햄버거 버튼에 포커스가 생기는 문제 해결 및 변수명 대소문자 수정

* refactor: useEffect 내부 함수들을 훅 외부로 이동 및 주석 추가

* [FE] 존재하지 않는 element에 대한 에러를 출력하는 유틸리티 함수 제작 (#150)

* feat: 존재하지 않는 element에 대한 에러를 출력하는 훅 제작

* chore: hooks 폴더 index에 useExistentElement 추가

* refactor: useExistentElement 훅을 더욱 범용적으로 사용할 수 있도록 수정

* refactor: 존재하지 않는 요소를 판별하는 동작을 커스텀 훅 대신 유틸리티 함수로 제작

* chore: 기존의 존재하지 않는 요소를 탐지하는 커스텀 훅 삭제

* [FE] HTTP 요청 오류 시 status code별 오류 상황을 대응하는 함수 생성 (#151)

* feat: api 에러 시 표시한 메세지 생성 함수 추가

* refactor: api/review.ts에 api 오류 시 메세지를 반환하는 createApiErrorMessage 함수 적용

* docs: http 요청 실패 메세지 수정

* fix: 오타 수정

* [FE] 페이지 상단 이동 버튼 구현 (#153)

* feat: top button 로직 훅으로 구현

* design: top button UI 구현

* chore: 각 페이지마다 top button이 보여지도록 설정

* chore: 컴포넌트 default로 export하도록 설정

* refactor: handler를 useEffect 외부로 분리

* chore: svg import 컨벤션에 맞추어 이름 수정

* [FE] feat: 에러, 로딩 페이지 구현 및 적용 (#155)

* feat: 버튼 컴포넌트에 아이콘을 선택적으로 추가할 수 있도록 변경

- `icon` prop을 통해 버튼에 아이콘을 추가할 수 있도록 변경

* feat: 에러 페이지를 위한 ErrorSection 컴포넌트 구현

- 에러 로고, 메시지, 새로고침 및 홈 이동 버튼 제공

* feat: 라우터 설정에서 `errorElement`에 `ErrorPage` 컴포넌트를 추가

* feat: 버튼 클릭 시 새로고침 및 홈 이동 기능 추가

* feat: LoadingBar 컴포넌트 구현

* feat: 로딩 페이지 추가 및 적용

- 로딩 메시지 추가
- 리뷰 작성 페이지, 리뷰 목록 페이지, 리뷰 상세 페이지에 로딩 페이지 적용

* refactor: buttons 배열을 통해 버튼 생성

* refactor: 코드컨벤션에 맞게 코드 수정 및 imageDescription을 버튼 props에 추가

* refactor: boolean 타입추론 제거

* design: 에러 컴포넌트 화면 가운데 배치

* design: 로딩 컴포넌트 화면 가운데 배치

* [BE] refactor: 도메인 연관 관계 재정의 (#156)

* refactor: 도메인 연관관계 재정의 및 사용하지 않는 도메인 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 사용하지 않는 테스트 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: 예약어 사용하지 않도록 수정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: Review 도메인에서 reviewee 필드 제거

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 저장 기능 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 저장 기능 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 생성 요청 객체 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 리뷰, 리뷰 내용 도메인 테스트 추가

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 작성 시 질문 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: Review의 reviewGroupId 컬럼명 수정

* refactor: 리뷰 생성 시, 키워드 검증을 객체 분리

* refactor: 리뷰 생성 시, 질문 검증을 객체 분리

* style: 코드 재정렬

* test: 리뷰 생성 검증 테스트 추가

* refactor: 사용하지 않는 클래스 삭제

* refactor: keyword 관련 사용하지 않는 클래스 삭제

* refactor: review 관련 사용하지 않는 클래스 삭제

* refactor: 데이터 초기화 객체 수정

* test: 사용하지 않는 테스트 삭제

* refactor: 예외 메세지 말투 통일

* refactor: 사용하지 않는 예외 제거

* refactor: 예외 클래스 패키지 변경

* refactor: NOT NULL 제약조건 추가

* refactor: 테스트에서만 사용되는 함수 제거

* refactor: 테스트 실행 시 발생하는 LazyInitializationException 해결

* refactor: 키워드 검증 함수 순서 변경

* chore: 테스트 코드 컨벤션 통일

* refactor: reviewRequestCode 검증 로직 이동

* refactor: 필드인 questionRepository를 사용하도록 변경

* refactor: 리뷰이, 프로젝트 이름 길이 검증 함수 분리

* test: 리뷰 저장 시 reviewKeywor 저장 검증 추가

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>

* [All] infra: 디스코드 웹훅 사용해 PR 생성/코멘트 시 멘션 (#169)

* feat: PR Request 생성 / Comment 시 디스코드 멘션

* fix: Case-sensitive ID로 해결, ALL webhook 추가

* fix: remove whitespace

* chore: rename workflow

* fix: fix shell script

* fix: step statement

* fix: remove trailing whitespace after equals sign

* [BE] feat: 리뷰 그룹 생성 API 구현 (#163)

* feat: 랜덤한 문자열 생성기 구현

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

* feat: 리뷰 그룹 생성 요청, 응답 형식

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

* feat: 리뷰 그룹 생성

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* feat: 리뷰 작성 컨트롤러

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* [BE] refactor: 리뷰 작성을 위한 정보 요청 기능 리팩터링 (#162)

* refactor: 불필요한 update 방지

* feat: controller에 리뷰 생성 요청에 대한 응답 기능 구현

* feat: controller에 리뷰 작성을 위해 필요한 정보를 응답 기능 구현

* feat: service에 리뷰 작성을 위해 필요한 정보 조회
 기능 구현

* chore: 사용하지 않는 dto 삭제

* test: 리뷰 리뷰 작성을 위해 필요한 정보 조회 기능 테스트 작성

* refactor: swagger 설정 일부 수정 및 에러 응답코드 노출되도록 변경

* refactor: service에서 원시타입 long을 반환하도록 변경

* docs: api 문서 dto 항목설명 변경

* test: 사용하지 않는 변수 선언하지 않도록 변경

* docs: api 문서 검증 내용에 대한 어체 변경

* refactor: 트랜잭션 조회 명시 추가

* refactor: dto 이름 변경

* [FE] 리뷰 상세 페이지에 react-query 추가 및 리팩토링 (#161)

* fix: src/index.tsx에서 enableMocking 제거

* feat: 리뷰 그룹 생성 시 코멘트 컴포넌트명 변경 및 기본값 설정

- 컴포넌트명 변경: RevewComment -> ReveweeComments
-  reviewGroup의 description이 빈문자열이면 기본값을 보여주는 것으로 변경

* refactor: 서버 DB에 있는 리뷰 데이터를 사용하기 위한 상수화

- 현재 DB에 있는 리뷰 데이터를 목 서버에서도 사용하고, 사이드바 페이지 이동 시에도 활용할 수 있도록 관련 value들을 상수화 함

* feat : QueryClient, QueryClientProvider 적용

- src/index.tsx에 QueryClient, QueryClientProvider 적용

* fix: dependencies에 있는 테스트 패키지들을 devDependencies로 옮김

* feat: 리뷰 상세페이지에 react-query 적용

* feat : msw에 리뷰 상세페이지 404 오류 추가

* ci: react-error-boundary 설치

* feat: Outlet에 QueryErrorResetBoundary,ErrorBoundary, Suspense 적용

* feat: 리뷰 상세페이지에 useSuspenseQuery 적용

* refactor: 리뷰 상세페이지 resource, queryString key 상수화

* refactor:  리뷰 상세페이지 react-query key 상수화

* refactor: 리뷰 상세 페이지 컴포넌트 속에서만 사용하는 상수들 상수화

* refactor: DetailedReviewPage/components에 index.tsx를 추가해 import 경로 간결하게 수정

* feat: error 전파를 위한 QueryClient 옵션 추가

-  react-query의 query, mutation에서 error가 전파되도록 QueryClient 옵션 설정

* fix: ErrorPage의 SideModal에 closeModal props로 줌

* refactor: ErrorSection 위치 변경(src/pages/ErrorPage -> src/components/error)

* feat: ErrorFallback 컴포넌트 생성

* feat: ErrorSuspenseContainer 생성 및 App.tsx에 적용

* chore: constants/index.ts export 경로 변경

- 중복되는 apiErrorMessage 삭제
- queryKeys 추가

* chore: 3차-1주차 핵심 기능 시현 때 필요 없는 코드 주석 처리

* docs: ErrorPage의 ERROR_MESSAGE 수정

* design: formWidth 변경 및 fontSize에 1.4rem 추가

* feat: 리뷰 상세 페이지에 리뷰이 이름 추가

- 리뷰 상세 페이지 목데이터, 데이터 타입에 리뷰이 이름 추가
- 리뷰 상세 페이지 컴포넌트에 리뷰이 이름 추가 및 관련 스타일 추가

* refactor: 불필요한 export 삭제

* chore: type명 수정 (RevieweeCommentProps =>RevieweeCommentsProps)

* refactor: ErrorSection으l Button 수정

* refactor: 리뷰 상세 페이지 데이터 타입 변경에 따른 수정

* refactor: ErrorSuspenseContainer 적용 위치 변경

- App가 아닌 router의 element에서 적용하는 것으로 변경

* refactor: 리뷰 상세 페이지 데이터 타입 강제 방법 변경

* chore: 불필요한 주석 삭제

* refactor: ErrorSection의 buttons 네이밍 변경 및 요소에 key 추가

- buttons -> buttonList

* chore: 스타일 주석에 NOTE 추가

* [BE] feat: 리뷰 목록 조회  (#179)

* feat: 리뷰 미리보기

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

* feat: 내가 받은 리뷰 목록 응답 생성

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

* feat: 리뷰 목록 조회

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

* refactor: Cascade 적용으로 불필요한 save 제거

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

* refactor: 리뷰 미리보기 생성 객체 도출

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

---------

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

* fix: 브라우저 타이틀 오타 수정 (#167)

* [BE] feat: 리뷰 상세 조회 기능 구현 (#182)

* feat: 컨트롤러 리뷰
상세 조회 api 응답 기능 구현

* feat: 리뷰 상세 조회 api 응답 객체 구현

* refactor: 리뷰 상세 조회 api 응답 객체명 변경

* feat: 서비스 리뷰 상세 조회 기능 구현

* test: 리뷰 상세 조회 기능 테스트 추가

* style: 오타 및 개행 수정

* refactor: 날짜 응답 시, 일자까지만 응답하도록 변경

* refactor: 리뷰 조회 권한 검증 로직을 repository 사용하도록 변경

* refactor: 검증메세지 변경

* refactor: 리뷰 서비스에서 리뷰 그룹을 찾을 수 없는 경우에 대한 예외 클래스 변경

* refactor: 리뷰 상세 조회 메서드명 변경

* refactor: 헤더명 상수화

* [FE] recoil을 통한 groupAccessCode 전역 상태 관리 (#180)

* ci: recoil 설치

* feat: src/index.ts에 RecoilRoot 적용

* feat: groupAccessCode 에 대한 atom 상태 추가

* feat: useGroupAccessCode 훅 추가

- useGroupAccessCode : groupAccessCode의 atom 상태를 관리하는 훅

* [BE] 내가 받은 리뷰 목록을 최신순으로 조회한다. (#189)

* fix: 날짜 순 정렬

* refactor: 사용하지 않는 변수 제거

---------

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

* [BE] 초기 데이터 설정 (#187)

* feat: 초기 데이터 설정

* build: CD 시 local profile 설정

---------

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

* [FE] feat: Alert Modal과 Error Alert Modal 컴포넌트 구현 및 Button 컴포넌트 확장 (#165)

* refactor: 공통 버튼 컴포넌트가 children과 style을 받도록 수정

* chore: error alert modal에서 사용할 primary 색상의 경고 삼각형 추가

* feat: ErrorAlertModal 컴포넌트 구현

* feat: AlertModal 컴포넌트 구현

* chore: 변경된 Button 컴포넌트의 구조에 맞게 코드 수정

* fix: AlertModal이 Esc 또는 background의 클릭으로 닫히지 않도록 수정

* chore: AlertModal과 ErrorAlertModal export

* refactor: Button 컴포넌트가 type을 별도로 받도록 수정 및 기존의 buttonType을 styleType으로 변경

* refactor: background 클릭 또는 Esc 키를 통해 모달을 닫는 것을 분리

* refactor: AlertModal의 모달 닫는 정책을 props로 선택 가능하도록 수정

* refactor: ErrorAlertModal을 AlertModal을 사용해 구현

* refactor: 닫기 버튼 이외의 방법으로 모달을 닫을 수 있는지 여부와 handler를 props로 전달받도록 변경

* refactor: 비어있는 스타일 컴포넌트 제거

* [FE] 랜딩 페이지 퍼블리싱 및 디바운싱 함수 추가 (#181)

* feat: Input 공통 컴포넌트 제작

* feat: LandingPage 제작

* fix: Input의 type을 text로 수정

* feat: debounce 함수 작성

* docs: debounce 함수에 TODO 주석 및 TSdoc 추가 외 간단한 if문 리팩토링

* chore: 잘못된 파일 구조 및 디렉토리명 수정

* chore: px을 rem으로 수정

* refactor: 동적 스타일링에 css 대신 styled 스타일 적용

* refactor: Input 스타일을 더욱 유연하게 받을 수 있도록 수정, 스타일 리터럴 제거

* refactor: Input에 적용된 커스텀 스타일링을 $style로 수정

* fix: undefined 리턴을 null 리턴으로 수정

* refactor: flex-direction에 별도의 커스텀 타입을 사용하는 대신 React 내장 타입을사용하도록 수정

* refactor: Input 컴포넌트에서 rest props 제거

* chore: 불필요한 import 제거

* [FE] feat: 리뷰 목록 페이지에 변경된 API 연동 후, 리액트 쿼리 적용 및 무한 스크롤 구현 (#192)

* design: 리뷰 미리보기 카드 배경색 변경 및 전체 감싸는 div에 아래쪽 여백 추가

* refactor: 리뷰 목록 인터페이스 추가 및 수정

- ReviewPreviewList 인터페이스 추가
  - size, lastReviewId, reviews 필드 추가
- ReviewPreview 인터페이스 수정
  - keywords 필드를 Keyword[] 타입으로 변경

* chore: 닫힌 자물쇠로 아이콘 변경

* feat: 리뷰 목록 페이지에서 리액트 쿼리 적용

* refactor: 웹 접근성을 위한 alt, aria-label 추가 및 코드 컨벤션에 맞춰 코드 수정

* feat: 리뷰 미리보기 리스트 핸들러에 페이지네이션 로직 추가

- 기존의 단순 반환 핸들러에서 페이지네이션 기능을 포함한 핸들러로 수정

* feat: `SideModal` 컴포넌트에 `closeModal` prop 추가

* feat: 리뷰 목록 페이지에 무한 스크롤 기능 추가

* refactor: useReviewPreviewList 훅 생성하여 데이터 호출 로직 분리

* refactor: 불필요한 ButtonContainer 제거

* design: px을 rem으로 변경

* refactor: Button 컴포넌트에 key 추가

* feat: 리뷰이, 프로젝트명을 보여주는 DescriptionSection 컴포넌트 구현

* refactor: 리뷰 목록을 불러오는 api 변경 이슈로 인해 엔드포인트, fetch 함수 수정

* chore: fragment 제거

* refactor: api 변경에 따라 ReviewPreviewList, ReviewPreview 인터페이스 수정

* refactor: 변경된 api에 따라 props 수정

* refactor: reviewerGroup, isPublic 제거

* refactor: endPoint.gettingReviewList 호출 인자 변경

* refactor: DescriptionSection에서 ReviewInfoSection으로 컴포넌트명 변경

* refactor: useSuspenseQuery 적용 후, 무한스크롤 관련 코드 주석 처리

---------

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

* [FE] feat: 리뷰 작성 페이지와 서버 및 모달 연동 (#191)

* chore: 변경된 UI 적용

* design: 키워드 문항 안내 문구 수정

* feat: Textarea 공통 컴포넌트 뼈대 구현

* chore: 수정된 api 엔드포인트 및 queryparams 적용

* design: reset.ts 추가 설정

* chore: 변경된 api 문서에 맞게 타입 수정

* feat: 리뷰 작성 페이지와 모달 및 서버 연동

* chore: 사이드바 메뉴 클릭 시 이동할 path 수정

* fix: ConfirmModal에서 background 클릭 시 모달이 닫히지 않는 현상 수정

* design: AlertModal 및 ErrorAlertModal 디자인 수정

* chore: 리뷰 작성 및 작성 완료 페이지 라우터 추가

* chore: 불필요한 주석 제거 및 사이드바에서 리뷰 작성 메뉴 숨김 처리

* chore: 리뷰 제출 페이지 버튼 타입 명시

* chore: svg import 컨벤션에 맞게 수정

* [FE] 리뷰 목록 페이지, 리뷰 상세 페이지에서 로그인을 연동 (#193)

* design: 리뷰 미리보기 카드 배경색 변경 및 전체 감싸는 div에 아래쪽 여백 추가

* refactor: 리뷰 목록 인터페이스 추가 및 수정

- ReviewPreviewList 인터페이스 추가
  - size, lastReviewId, reviews 필드 추가
- ReviewPreview 인터페이스 수정
  - keywords 필드를 Keyword[] 타입으로 변경

* chore: 닫힌 자물쇠로 아이콘 변경

* feat: 리뷰 목록 페이지에서 리액트 쿼리 적용

* refactor: 웹 접근성을 위한 alt, aria-label 추가 및 코드 컨벤션에 맞춰 코드 수정

* feat: 리뷰 미리보기 리스트 핸들러에 페이지네이션 로직 추가

- 기존의 단순 반환 핸들러에서 페이지네이션 기능을 포함한 핸들러로 수정

* feat: `SideModal` 컴포넌트에 `closeModal` prop 추가

* feat: 리뷰 목록 페이지에 무한 스크롤 기능 추가

* refactor: useReviewPreviewList 훅 생성하여 데이터 호출 로직 분리

* refactor: 불필요한 ButtonContainer 제거

* design: px을 rem으로 변경

* refactor: Button 컴포넌트에 key 추가

* feat: 리뷰 목록,리뷰 상세 페이지 api 핸들러에서 groupAccessCode를 header에 추가

* feat: DetailedReviewPage 에서 groupAccessCode 상태 적용

* feat: LoginRedirectModal 생성

* refactor: ErrorSection 리팩토링

* feat: 리뷰이, 프로젝트명을 보여주는 DescriptionSection 컴포넌트 구현

* refactor: 리뷰 목록을 불러오는 api 변경 이슈로 인해 엔드포인트, fetch 함수 수정

* feat: 리뷰 상세 페이지에 groupAccessCode 상태를 적용

- 리뷰 상세 페이지에 groupAccessCode 상태값이 있으면 api요청을 하고 없으면 LoginRedirectModal을 띄어서 로그인 유도하는 기능 추가
- DetailedPage/index.tsx에 있던 내용을 DetailedReivewPageContents로 이동
-  DetailedPage/index.tsx에서 ErrorSuspenseContainer 실행하는 것으로 수정

* chore: fragment 제거

* refactor: api 변경에 따라 ReviewPreviewList, ReviewPreview 인터페이스 수정

* fix: 리뷰 상세 페이지 keyword 타입 변경에 따른 수정

* refactor: 변경된 api에 따라 props 수정

* refactor: reviewerGroup, isPublic 제거

* feat: ErrorFallback 의 홈 이동 경로 변경

* refactor: endPoint.gettingReviewList 호출 인자 변경

* refactor: DetailedReviewPage에서 groupAccessCode 가져오는 방식 변경

- useRecoilValue가 아닌 useGroupAccessCode에서 가져오는 것으로 변경

* refactor: DescriptionSection에서 ReviewInfoSection으로 컴포넌트명 변경

* refactor: ErrorPage에서 Home 이동 버튼을 유도하는 방식으로 변경

- route오류 메세지와 api오류 메세지를 errorMessage 파일에서 관리하도록 수정
- ErrorPage에서 errorMessage가 ROUTE_ERROR_MESSAGE이면 홈 버튼이 화면상에서 먼저 나오도록 수정
- 색상별 홈,refresh 아이콘 SVG 추가

* refactor: useSuspenseQuery 적용 후, 무한스크롤 관련 코드 주석 처리

* feat: 리뷰 목록 페이지 목 서버 핸들러 및 목데이터 수정

* feat: 리뷰 목록 페이지에  groupAccessCode 전역 상태 적용

* refactor: 불필요한 코드 삭제

* chore: 오타 수정

---------

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

* [FE] feat: 랜딩 페이지 API 연동 (#196)

* feat: 그룹 생성을 위한 엔드포인트 생성 및 리뷰 목록 엔드포인트, api 호출 함수 수정

* fix: CSSProperties 대신 커스텀 타입을 사용하던 인터페이스 수정

* feat: ReviewAccessForm에 모달 및 API 연결

* fix: 누락됐던 CopyIcon 파일 업로드

* feat: 확인 코드 입력 API 연동

* feat: 완전한 리뷰 작성 URL을 리턴하는 함수 작성

* [FE] fix: 누락됐던 버튼 리팩토링 및 엔드포인트 복구 (#199)

* fix: 충돌 해결 과정에서 누락됐던 엔드포인트 복구

* fix: 버튼 리팩토링 반영

* feat: textarea에 최소 입력 글자 수를 만족하지 못한 경우 에러 메시지 표시 기능 구현 (#200)

* feat: 리뷰 작성 완료 페이지에서 홈 버튼 추가 (#201)

* docs: 리뷰미 소개글 작성 (#203)

* [BE] refactor: 사용하지 않는 메서드 제거, 컨벤션 및 작은 리팩토링 (#206)

* refactor: date를 review가 제공하도록 수정

* style: 컨벤션 적용

* refactor: 사용하지 않는 메서드 제거

* refactor: 메서드명 통일

* style: 불필요한 개행 제거

* [FE] jest 사용 시 node환경 속 msw 호환성 문제와 환경 변수 오류  해결 (#215)

* ci: dependencies에서 jest 삭제 및 ts-jest 설치

* ci: jest에서 절대 경로 사용할 수 있도록  jest.config.js 추가

* chore: eslint적용 제외 파일에 jest.config.js, tsconfig.json 추가

* ci: jest의 testEnvioronment를 jsdom으로 설정

* fix: jest에서 msw ver2를 목서버로 사용 시 생기는 오류 수정

1. msw/node 를 읽지 못함
- jest.config.js의 testEnvironment 빈문자열

2. ReferentError: TextEnCoder is not defined
- 해결 : jest.polyfills.js 추가 및 undici 설치

3. ReferenceError: ReadableStream is not defined
- 해결 : undici 다운 그레이드
undici": "^6.19.5", -> "^5.0.0"

* ci : jest에서 env 파일 읽을 수 있도록 dotenv 설치 및 jest에 적용

* [FE] 개발환경과 빌드환경에 따라 msw 실행 여부를 결정하도록 msw 실행 조건문 개선  (#221)

* ci: 빌드 파일을 실행할 수 있는 http-server 패키지 설치 및 실행 명령어 추가

* fix:개발 환경과 빌드/배포 환경을 구분해 목 서버를 실행하도록 조건문 개선

* fix: 머지 충돌 시 yarn.lock 삭제한 거 복구

* [FE] 리뷰 상세페이지 query 훅 분리 및 HTTP 요청 테스트 진행  (#216)

* refactor: DetailedPage/index.tsx 리팩토링

- early return를 사용해 코드의 가독성을 높임

* feat: useGetDetailedReview 훅 생성 및 DetailedReviewPageContents에 적용

* feat: useSearchParamAndQuery 훅 생성 및 DetailedPageContent에 적용

* refactor: 리뷰 상세페이지에서 id라고 사용했던 key값, params의 key를 reviewId로 변경

- DetailedReview의 router param을 id에서 reviewId로 변경

* ci: dependencies에서 jest 삭제 및 ts-jest 설치

* ci: jest에서 절대 경로 사용할 수 있도록  jest.config.js 추가

* chore: eslint적용 제외 파일에 jest.config.js, tsconfig.json 추가

* ci: jest의 testEnvioronment를 jsdom으로 설정

* refactor: useGetDetailedReview에서 query 결과를 모두 반환하는 방식으로 변경

* fix: jest에서 msw ver2를 목서버로 사용 시 생기는 오류 수정

1. msw/node 를 읽지 못함
- jest.config.js의 testEnvironment 빈문자열

2. ReferentError: TextEnCoder is not defined
- 해결 : jest.polyfills.js 추가 및 undici 설치

3. ReferenceError: ReadableStream is not defined
- 해결 : undici 다운 그레이드
undici": "^6.19.5", -> "^5.0.0"

* ci : jest에서 env 파일 읽을 수 있도록 dotenv 설치 및 jest에 적용

* fix: mock 핸들러인 getDetailedReview 에서 중복된 쿼리 매개 변수 사용 수정

- 오류 상황:  jest에서 msw 사용 시, get의 url에 파라미터 사용 시 중복된 쿼리 매개 변수 오류가 남
- 오류 메세지 ::Found a redundant usage of query parameters in the request handler
- 해결:  리뷰 상세보기 페이지의 reviews까지의 url 상수를 만들고, get에서는 이 상수를  활용한 정규표현식으로 리뷰 상세보기 페이지로 오는 모든 요청을 가로챌 수 있도록  함

* refactor: getWrongDetailedReview 목서버 핸들러 및 관련 상수 삭제

- getDetailedReview에서 request를 분석해 http오류 여부를 결정함

* feat: queryClientWrapper 생성

- queryClientWrapper : msw를 사용한 jest 테스트에 queryWrapper로 사용

* test:리뷰 상세 페이지 api 요청 성공에 대한 테스트 추가

* fix: groupAccessCodeAtom의 기본값 원래대로 복구

* chore:queryClientWrapper 네이밍 표기법을  파스칼 케이스로 변경

* fix: 머지 충돌 방지를 위해 yarn.lock 삭제

* fix:  머지 시 yarn.lock 충돌 해결

* [FE] test: 리뷰 목록 페이지에 API 연동 테스트 추가 및 리팩토링 (#217)

* chore: 리뷰 목록 페이지 관련 컴포넌트 및 인터페이스, 파일 이름 변경

* refactor: api 엔드포인트 상수 적용

* refactor: useGetReviewList 훅으로 분리

* test: 리뷰 목록 페이지 api 연동 테스트 추가

* chore: msw 모킹 코드 제거

* chore: 경로 index 제거

* fix: 중복된 import 및 불필요한 핸들러 제거

* chore: 엔드포인트 상수 제거

* [FE] refactor: 리뷰 작성 페이지 리팩토링 (#219)

* refactor: 각 모달별로 상태와 동작을 관리하는 훅 분리

* refactor: 리뷰 작성 폼의 로직을 훅으로 분리

* refactor: 리뷰 작성 페이지에 분리한 훅 적용

* refactor: URL에서 reviewRequestCode를 추출하는 로직을 훅으로 분리

* chore: 불필요한 테스트용 코드 제거

* chore: ErrorModal을 닫을 때 errorMessage 상태도 초기값으로 변경하도록 수정

* [BE] feat: 헤더 존재 여부 검증 (#207)

* fix: 인터페이스와 구현체 어노테이션 일치

* feat: 헤더 검사 어노테이션

* feat: 헤더 밸리데이터

* feat: 컨트롤러에 헤더 검사

* feat: 헤더 검증 메시지 클라이언트에 전달

* fix: 누락된 `@Valid` 어노테이션 추가

* refactor: 요청이 null인 경우 핸들링

* chore: 테스트 이름 간결하게 변경

* chore: 소문자 컨벤션

* feat: ArgumentResolver를 활용한 헤더 검증

* feat: 공용 패키지로 이동 및 범용적으로 사용할 수 있도록 수정

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

* feat: ArgumentResolver 적용, Validator 삭제

* chore: 사용하지 않는 커스텀 예외 원복

* refactor: 헤더 존재하지 않는 경우 메시지 수정

* chore: 불필요한 `@Valid` 어노테이션 삭제

* refactor: 변수 추출

Co-authored-by: Yeongseo Na <[email protected]>

* fix: 컴파일 에러 해결

---------

Co-authored-by: Yeongseo Na <[email protected]>

* ci: index.html에 구글 애널리틱스 적용 (#226)

* [FE] ci: sentry 초기 설정 (#223)

* ci: sentry 초기 설정

* chore: gitignore에 env.sentry-build-plugin 추가

* ci: sentry 적용 프로젝트를 woowacoure-review-me로 변경, 로컬 환경 추적하도록 변경

* ci: sentry 적용 환경을 배포 환경으로 다시 변경

* ci: sentry에서 replay 관련 설정 삭제

---------

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

* [FE] refactor: LandingPage에 리액트 쿼리 적용 및 리팩토링 (#218)

* chore: LandingPage의 styles 파일 분리

* fix: POST 요청을 하는 함수의 이름을 post~로 수정

* feat: 그룹 데이터 생성 요청에 대한 MSW 핸들러 추가

* refactor: 모킹 데이터 값을 더 직관적으로 수정

* refactor: LandingPage를 ErrorSuspenseContainer가 감싸도록 수정

* refactor: URL을 얻어오는 API에 react-query 적용 및 API 호출 함수 이름 수정

* chore: LandingPage 하위 컴포넌트들의 index 파일 추가 및 적용

* refactor: groupAccessCode 관련 msw 핸들러 추가 및 에러 상태(없는 코드 입력, 서버 에러)에 따른 에러 메세지를 출력하도록 수정

* refactor: groupAccessCode에 알파벳 대소문자와 숫자만 올 수 있도록 수정

* refactor: LandingPage에서 ErrorSuspenseContainer를 제거하고 대신 URLGeneratorForm만을 감싸도록 수정

* refactor: Input 컴포넌트의 onChange 이벤트 타입 수정

* refactor: Input 컴포넌트에 name 속성 추가

* refactor: 수정된 경로 반영

* refactor: usePostDataForUrl 쿼리에서 mutation을 리턴하도록 수정

* refactor: URL을 성공적으로 생성한 이후 Input을 리셋하는 함수 추가

* chore: NOTE 주석 추가

* refactor: getIsValidGroupAccessCodeApi에서 400 외의 에러 처리를 기존의 createApiErrorMessage를 사용하도록 수정

* chore: 누락됐던 -Api suffix 반영

* [BE] Actuator 적용과 logback 설정 (#228)

* build: actuator 의존성 추가

* feat: 로그백 설정

* feat: submodule 적용

- actuator 설정을 서브 모듈에 저장

* style: 개행 및 주석 제거

* test: logback 설정 추가

* [FE] CD test (#233)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* [BE] 프로파일 분리, CD 스크립트 수정 (#235)

* feat: 프로파일 분리

* feat: 프로파일 분리

* cd: 프로파일 분리 cd 스크립트 수정

* fix: CD 스크립트 오타 수정 (#236)

* [FE] CD test 2 (#237)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* fix: sentry 재설정

* fix: sentry 설정 복구

* fix: cd 스크립트 오타 수정 (#238)

* [FE] CD TEST 3 (#239)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* fix: sentry 재설정

* fix: sentry 설정 복구

* chore: 서비스 타이틀 변경

* [BE] build: Micrometer 의존성 추가 (#244)

* build: 마이크로미터 의존성 추가

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* chore: 서브모듈 업데이트

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

---------

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* [FE] feat: 공통 컴포넌트인 체크박스와 체크박스 아이템 제작 (#240)

* feat: 공통 체크박스 컴포넌트 작성

* feat: 체크박스에 레이블을 달 수 있는 CheckboxItem 컴포넌트 작성

* fix: style을 잘못 전달하던 문제 해결

* [BE] fix: CD 스크립트 수정 (#246)

* fix: CD 스크립트 수정

* chore: 저장 데이터 dev에서 활용할 수 있도록 수정

* [FE] refactor: LandingPage 경로 변경 (#249)

* refactor: LandingPage의 경로 변경

* refactor: App 에서 사이드바 주석 처리

* [BE] Swagger API 문서 업데이트 (#254)

* docs: 리뷰 api 문서를 위한 swagger 어노테이션 추가

* refactor: 사용하지 않는 dto 삭제

* docs: api 문서에 최소 및 최대 설정 안내 추가

* docs: 리뷰 그룹 api를 위한 swagger 어노테이션 추가

* refactor: Spring에서 제공하는 APPLICATION_JSON_VALUE 사용

* [BE] feat: 예외에 대한 로그 작성 (#255)

* feat: Controller advice 에 로깅 추가

* refactor: 스택 트레이스 로깅 추가

* feat: 리뷰그룹 생성시 길이 검증 로깅 추가

* feat: 답변 길이 검증 로깅 추가

* feat: 리뷰 그룹 코드 검증 검증 로깅 추가

* feat: 리뷰 조회 검증 검증 로깅 추가

* feat: 선택된 키워드 존재하지 않는 검증 로깅 추가

* feat: 중복 선택된 키워드 검증 로깅 추가

* feat: 키워드 조회 검증 로깅 추가

* feat: 선택 키워드 갯수 검증 로깅 추가

* feat: 선택된 질문 중복 검증 로깅 추가

* feat: 질문 조회 검증 로깅 추가

* feat: 중복 질문 검증 로깅 추가

* feat: 스프링 발생 예외 로깅에 메세지 추가

* feat: 인코딩 설정

* style: 개행 수정

Co-authored-by: Donghoon Lee <[email protected]>

* style: 개행 및 공백 수정

* refactor: 불필요한 검증 제거

- 선택된 키워드와 질문이 DB에 있는지를 validator 에서 검증한 후에도, repository.getById 를 할 때 한번 더 검증이 들어간다. 따라서 'DB에 있는지'에 대한 검증을 validator 에서 할 필요는 없다는 판단 하에 해당 로직을 삭제한다.

---------

Co-authored-by: Donghoon Lee <[email protected]>

* [FE] refactor:  Textarea를 사용하는 공통 장문형 답변 입력 컴포넌트 분리 (#252)

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

* refactor: longReviewItem의 로직을 커스텀 훅으로 분리

* refactor: longReviewItem으로 이름 변경 및 컴포넌트 구현

* chore: 기존의 ReviewItem 제거 및 리뷰 작성 페이지에 LongReviewItem 적용

* [FE] refactor: 공용 모달 훅 추가 및 LongReviewItem 리팩토링 (#258)

* feat: 모달 상태 관리 훅 추가

* refactor: LongReviewItem 컴포넌트가 외부의 event를 props로 받을 수 있도록 변경

* [FE] test: LandingPage에서 사용하는 API에 대한 테스트 작성 (#251)

* chore: 불필요한 Fragment 제거

* test: LandingPage에서 사용하는 api 테스트 추가

* [FE] refactor: 리뷰 작성 페이지에 react query를 적용하고 API 연동 테스트 작성 (#256)

* refactor: 리뷰 작성을 위한 데이터를 불러오는 로직에 react query 적용

* refactor: 리뷰 작성 후 게시 요청 로직에 useMutation 적용

* refactor: query key 상수화 및 리뷰 작성을 위한 데이터를 불러오는 로직을 useReviewForm에서 제거

* chore: 리뷰 작성 페이지에 ErrorSuspenseContainer 적용

* chore: styled component명 수정

* chore: 리뷰 작성을 위한 mock data를 변경된 api 형식에 맞게 수정

* chore: useGetDataToWrite가 더 많은 반환값을 제공하도록 수정

* test: useGetDataToWrite의 API 요청 테스트 작성

* chore: dataToWrite가 없는 경우 상태 기본값 지정

* chore: msw를 사용하여 리뷰 생성 post 요청 mocking

* chore: 리뷰 정보 mocking data 생성

* chore: useMutationReview가 UseMutationResult 타입 객체를 반환하도록 설정

* test: useMutateReview의 API 요청 테스트 작성

* chore: useGetDataToWrite의 반환값을 구조 분해 할당으로 사용할 수 있도록 수정

* chore: LongReviewItem 컴포넌트 적용

* [FE] fix: 질문 번호가 잘못 출력되는 오류 및 리뷰 작성 완료 시 잘못된 경로로 이동하는 오류 수정 (#265)

* fix: 질문 번호가 잘못 출력되는 오류 수정

* fix: 리뷰 작성 완료 시 잘못된 경로로 이동되는 문제 수정

* [BE] feat: 질문 리뷰이 이름으로 치환 (#262)

* chore: cd 테스트 확인 코드 작성 (#272)

* fix: 상세 내용 표시할 때 리뷰이 이름 치환 (#270)

* [FE] feat: 클립보드 복사 컴포넌트 구현 (#261)

* feat: 클립보드 복사 컴포넌트 구현

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

* fix: 부모 요소의 너비에 따라 CopyTextButton이 작아지는 문제 해결

* refactor: ReviewGroupDataModal 스타일 조정 - 전체 크기 지정 및 gap 조정

* chore: 불필요한 padding 제거

* chore: index 파일에 CopyTextButton 추가

---------

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

* [FE] chore: front_deploy를 develop에 반영 (#276)

* [FE] feat: 질문 작성 페이지 QuestionCard, ReviewWritingCard 공통 컴포넌트를 만들고, 슬라이더 방식의 기능 추가 (#247)

* chore: .gitignore에서 주석 제거

* feat: QuestionCard 컴포넌트 구현

* feat: ReviewWritingCard 컴포넌트 구현

* style: CSS 속성 순서 정렬

* refactor: 제목과 내용을 각각 Header와 Main 섹션으로 분리

* feat: 슬라이더 방식으로 질문 카드가 자연스럽게 전환되는 기능 추가

* design: pretendard 폰트 적용

* chore: 헤더 review me 대문자로 변경

* refactor: QuestionCard, ReviewWritingCard 폴더 위치 변경

- ReviewWritingFormPage의 components로 이동

* [FE] 질문 작정 페이지에 필요한 질문 목 데이터 및 카드의 상태 처리 (#263)

* [BE] fix: CD 스크립트 수정 (#246)

* fix: CD 스크립트 수정

* chore: 저장 데이터 dev에서 활용할 수 있도록 수정

* [FE] refactor: Landi…
donghoony added a commit that referenced this pull request Aug 21, 2024
* [All] 운영 서버 배포 (v1.0.0) (#509)

* [FE] 프론트엔드 초기 세팅 (#5)

* ci: webpack, react, typescript 설정

* ci: eslint, prettier, stylelint 설정

* [BE] feat: 초기 환경 설정 (#8)

* feat: 초기 환경 설정

* refactor: 클래스 종료 전 개행 제거

* build: application.yml 설정

* [BE] feat: 초기 엔티티 작성 (#10)

* feat: 초기 엔티티 작성

* refactor: 리뷰 내용과 리뷰를 다대일 연결

* refactor: 패키지 구조 고려하여 ProjectGroup으로 수정

* refactor: Project -> Reviewer로 변경

* refactor: 테이블명 일치 (reviewer_group)

* [BE] feat: 리뷰 작성 (#15)

* feat: 초기 엔티티 작성

* refactor: 리뷰 내용과 리뷰를 다대일 연결

* refactor: 패키지 구조 고려하여 ProjectGroup으로 수정

* refactor: Project -> Reviewer로 변경

* refactor: 테이블명 일치 (reviewer_group)

* feat: 멤버 레포지토리 생성

* feat: 리뷰어그룹 레포지토리 생성

* feat: 리뷰 문항 레포지토리 생성

* feat: 키워드 레포지토리 생성

* feat: 리뷰 키워드 레포지토리 생성

* feat: 리뷰 레포지토리 생성

* feat: 리뷰 작성 기능 구현

* test: 리뷰 작성 기능 테스트 추가

---------

Co-authored-by: donghoony <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* [BE] feat: 테스트 메서드별 격리 (#19)

* feat: 테스트 격리를 위한 DB Cleaner 및 Extension 구현

* feat: Service에서 공통적으로 사용할 수 있는 어노테이션 제공

* test: 서비스 테스트 어노테이션 사용하도록 수정

* fix: 누락된 리뷰 작성 매핑 URL 추가 (#17)

* [BE] feat: 리뷰 조회 (#22)

* feat: 리뷰 조회 기능 추가

* style: 개행 변경

* test: 리뷰 조회 기능 테스트 추가

* refactor: 리뷰 조회 메서드명 변경

* refactor: id 타입 변경

* style: 개행 수정

* fix: PostMapping 수정

---------

Co-authored-by: KIMGYUTAE <[email protected]>
Co-authored-by: donghoony <[email protected]>

* [BE] feat: 커스텀 예외 처리 (#20)

* feat: 커스텀 예외 생성

* feat: 커스텀 예외 적용

* feat: 글로벌 예외 처리

* [BE] feat: 리뷰어 그룹 정보 및 키워드 조회 API (#24)

* feat: 키워드 조회 API

* feat: 리뷰 그룹 조회 API

* refactor: PathVariable 변수명 변경

* [FE] 리뷰 작성화면과 상세 리뷰 보기 화면 결합 (#26)

* fix : webpack dev sever 열 때 오류 수정

- package.json 에서 type :"module" 삭제 , stylelint 관련 설정 삭제

Co-Authored-By: ImxYJL <[email protected]>

* ci : svg파일 관련 환경 셋팅

Co-Authored-By: ImxYJL <[email protected]>

* design : reset 스타일, global style에서 폰트 적용

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰 잠금 버튼 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat: 상세 리뷰 보기 화면의 질문,답 컴포넌트 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat: 상세 리뷰 보기 화면의 프로젝트 설명 컴포넌트 추가

Co-Authored-By: ImxYJL <[email protected]>

* feat : 상세 리뷰 보기 화면 페이지 추가 및 상세 리뷰 데이터 타입 추가

Co-Authored-By: ImxYJL <[email protected]>

* fix: webpack dev server 열 때 오류 수정

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

* design: reset css 적용

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

* feat: 리뷰 작성 페이지 구현

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

* ci: svg 파일 관련 설정

* fix : 머지충돌 해결 및 오타 수정

* feat: react-router-dom, react-router 설치 및 설정

* refactor: 리뷰 작성 페이지와 상세 리뷰 보기 페이지 결합 및 리팩토링

* refactor: 리뷰 타입 파일 리팩토링 및 타입 추가

* feat: api 설정 추가 및 상세 리뷰 보기 페이지에 api 핸들러 추가

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: chysis <[email protected]>
Co-authored-by: soosoo22 <[email protected]>

* [BE] refactor: 패키지 구조 리팩터링 (#30)

* refactor: 패키지 구조 구체화

* refactor: 패키지 구조 구체화(서비스, 컨트롤러, 레포지토리)

* [BE] feat: 리뷰어 그룹 설명 작성, 마감 기한 및 검증 로직 추가 (#34)

* feat: BadRequestException 추가

* feat: 리뷰어 그룹 이름, 설명 길이 검증

* [FE] design: theme ,전역 스타일을 설정 (#41)

* chore: 불필요한 파일 삭제

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: theme 생성

- 색상, 폰트 사이즈, 폰트 wieght 설정

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: emotion ThemeProvider 적용 및 Theme 타입 확장

- emotion에서 제공하는 Theme 타입이 빈 객체여서 코드에서 사용하는 theme에 맞게 타입을 확장함

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design : rem 셋팅 및 reset.css를 globalStyle에 적용

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: App에서 불필요한 코드 삭제

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: soosoo22 <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: soosoo22 <[email protected]>
Co-authored-by: Fe <[email protected]>

* [FE] ci: 리액트 쿼리 및 msw 설치, eslint import rule 추가 및 적용 (#44)

* ci: eslint 오류 수정 및 import rule 추가 및 관련 플러그인 설치

- eslint-config-prettier
- eslint-plugin-import

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* style: eslint 적용으로 인한 코드 포맷팅 변경

import 순서 적용

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* ci: msw 설치

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* [BE] docs: Swagger를 활용한 API 문서 자동화 (#31)

* chore: swagger-ui 설정 추가

* feat: swaggerConfig 추가

* docs: 컨트롤러에 swagger 어노테이션 추가

* docs: dto에 swagger 어노테이션 추가

* chore: api 문서 설정 파일 추가

* refactor: SwaggerConfig info 설정 파일 변수 참조하도록 변경

* docs: api 문서에 상태코드 올바르게 노출되도록 변경

* chore: api 문서 파일명 변경

* chore: api-docs 프로퍼티명 변경

* refactor: 프로퍼티 정보와 설정 클래스 분리

* refactor: 컨트롤러 내 swagger 어노테이션 분리

---------

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

* [BE] feat: 리뷰 도메인 구체화, 정책 구현  (#43)

* feat: dto 검증을 위한 의존성 추가

* feat: dto에 jakarta validation 어노테이션 추가

* feat: 컨트롤러에서 요청을 검증할 수 있도록 설정

* feat: FieldError 내용을 보여줄 응답 객체 생성

* feat: FieldError 핸들러 추가

* refactor: 문자열 공백 검증을 위해 NotBlank 사용

* style: todo 주석 추가

* feat: 데드라인이 지나면 리뷰를 작성할 수 없도록 하는 기능 추가

* refactor: 사이즈 검증문 제거

* style: 개행 변경

* refactor: 예외 이름을 과거형으로 변경

* refactor: RFC 9457 형식을 지키면서 필드 에러 정보를 반환하도록 수정

* chore: 오타 수정

* fix: conflict 해결

* feat: dto에 jakarta validation 어노테이션 추가

* refactor: 문자열 공백 검증을 위해 NotBlank 사용

* refactor: 사이즈 검증문 제거

* [BE] feat: 키워드 도메인 구체화, 정책 구현 (#40)

* feat: 키워드 일급 컬렉션 및 제약사항 구현

* build: 테스트 환경에서 Lombok 의존성 추가

* feat: 리뷰에 추가된 키워드 삭제

* feat: 리뷰에 키워드 추가

* feat: 일급 컬렉션의 이름을 SelectedKeywords로 변경

* refactor: 키워드 개수 정책 5개 반영

* refactor: 중복 키워드 멘트 수정

* refactor: `deleteAll`로 메서드명 수정

* refactor: `duplicated` -> `duplicate`로 수정

* refactor: 키워드 동등성 비교

* test: 키워드 등록 시 기존 키워드 삭제 테스트 작성

* refactor: 사용하지 않는 필드 삭제

* style: add newlines between comments

* refactor: 키워드 ID 기반 비교

* refactor: id가 없는 경우 detail 비교

* refactor: 키워드 테스트 도메인 기반으로 수정

* [BE] feat: 리뷰어 그룹 도메인 구체화, 정책 구현 (#45)

* feat: Member 엔티티에 GitHub ID 속성 추가

* feat: 작성한 리뷰어가 리뷰어 그룹에 속하는지 검증

* feat: 리뷰 작성 시, 이미 작성한 리뷰가 있지 않은지 검증

* refactor: Review 엔티티의 reviewer와의 연관관계 ManyToOne으로 변경

* refactor: 컬럼명 오류 수정

* refactor: gitHub 표기 -> github으로 변경

* refactor: GithubReviewGroup -> GithubReviewGroup 클래스명 변경

* refactor: 누락된 @Column 추가

* test: 리뷰 작성 테스트 시, 깃헙 사용자 그룹 데이터 저장 부분 추가

* refactor: 리뷰 작성 시, 중복 리뷰 검증 로직 수정

* refactor: GithubReviewerGroupNotFoundException을 UnAuthorizedException 구현하도록 수정

* refactor: ReviewContentExistException -> ReviewAlreadySubmittedException 클래스명 변경

* feat: UnAuthorizedException 추가

* refactor: 메서드 순서 변경

* test: 불필요한 given절 삭제

* test: 테스트를 위한 데이터 삽입 repository를 활용하도록 변경

---------

Co-authored-by: Donghoon Lee <[email protected]>

* [FE] 리뷰 쓰기 페이지에 확정된 디자인을 반영하고, 리팩터링한다. (#53)

* fix: eslint에서 절대 경로를 읽지 못하는 오류 수정

절대 경로 지정

Co-Authored-By: ImxYJL <[email protected]>

* design: 시스템 기본 폰트 크기 지정

Co-Authored-By: ImxYJL <[email protected]>

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

emotion.ts에서 theme 제거

Co-Authored-By: ImxYJL <[email protected]>

* feat: 공통 버튼 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* feat: 키워드 버튼 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰 작성 페이지 퍼블리싱 및 컴포넌트 분리

Co-Authored-By: ImxYJL <[email protected]>

* feat: 리뷰이 코멘트 컴포넌트 구현

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 리뷰 작성 페이지에서 리뷰 아이템 컴포넌트 분리

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 리뷰 작성 페이지 리팩터링

- 리뷰이 코멘트 추가
- 리뷰 아이템 컴포넌트 분리
- 부가적인 스타일링

Co-Authored-By: ImxYJL <[email protected]>

---------

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

* [FE] feat: sidebar  리팩토링 및 기능 추가  , topbar 추가, 반응형 페이지 레이아웃 적용 (#55)

* style: globalStyles.ts에서 경로 공백 추가

* docs: 불필요한 import 삭제

Co-Authored-By: soosoo22 <[email protected]>

* design : theme 추가

- 추가된 theme : breakpoints, sidebarWidth

Co-Authored-By: soosoo22 <[email protected]>

* chore: Header 컴포넌트 삭제

Co-Authored-By: soosoo22 <[email protected]>

* feat : Topbar 생성, logo 이미지 변경 및 SearchInput 생성

- logo 이미지 변경
- Topbar에 들어가는 컴포넌트들 (SidebarOpenButtion, Logo )생성
- userProfile 이미지 생성
- 공통 컴포넌트 : SearchInput ui 생성

Co-Authored-By: soosoo22 <[email protected]>

* feat : 페이지 레이아웃 생성

- 레이아웃 관련 컴포넌트들 생성

Co-Authored-By: soosoo22 <[email protected]>

* refactor : App에 페이지 레이아웃 적용

Co-Authored-By: soosoo22 <[email protected]>

* refactor: Sidebar 리팩토링

- 메뉴명 상수처리
- 피그마 디자인 변경에 따른 수정

Co-Authored-By: soosoo22 <[email protected]>

* feat: sidebar 열고 닫는 기능 추가

Co-Authored-By: soosoo22 <[email protected]>

---------

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

* fix: 컴파일 에러 해결 (#60)

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

* [FE] fix : stylelint 적용 오류 수정  (#66)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* ci: CI 스크립트 작성 (#70)

* [BE] test: 깃헙 리뷰어 그룹의 테스트 추가 및 fixture 미적용 부분 보완 (#68)

* test: GithubReviewerGroupRepository 테스트 추가

* test: ReviewServiceTest에 테스트 fixture 적용

* test: given, when, then절 추가

* test: given 데이터 오류 수정

* [BE] chore: workflow 디렉터리 이동 (#74)

* chore: workflow 디렉터리 이동

* fix: 백엔드 디렉터리로 이동

* fix: 백엔드 디렉토리로 이동

* fix: checkout actions의 디렉토리 설정

* fix: 디렉토리 설정...

* infra: CD 파이프라인 작성 (#76)

* fix: cd gradle 디렉토리 이동 (#77)

* [BE] refactor: 단건 리뷰 조회 시 리뷰어 정보 삭제, 리뷰 작성 시점 추가 (#65)

* refactor: 리뷰 조회 시 리뷰 생성 시각 추가, 리뷰어 정보 삭제

* fix: 테스트 어노테이션 활성화 및 수정

* chore: 테스트 클래스 패키지 이동

* refactor: 불필요한 given절 제거

* [FE] 리뷰 작성, 상세 리뷰 보기 페이지에 백엔드 API 연동 및 dotenv-webpack 설치, BASE_URL을 .env로 이동 (#78)

* chore: gitignore에 yarn-error.log 추가

* ci: env 파일 사용을 위한 dotenv-webpack 설치

* refactor: 엔드포인트에 env 파일을 통한 API_BASE_URL 경로 적용

* fix: 리뷰 상세보기 데이터에서 백엔드 응답과 속성 이름이 달랐던 부분 수정

* refactor: 백엔드 응답 및 리팩토링된 리뷰 쓰기 형식에 맞게 리뷰 쓰기 모킹 데이터 수정

* chore: 불필요한 console.log 삭제

* [Fe] 절대 경로 사용 시 발생하는 eslint 오류를 수정했습니다.  (#81)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* [FE] ci: Jest, RTL 테스트 환경 구축 (#84)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* ci: jest 및 RTL 설치

* ci: jest 타입 설정 추가

* ci: CI를 위한 yml 파일 테스트

* fix: 잘못 올라간 파일 삭제

---------

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

* [BE] refactor: 발생하는 모든 예외의 형식 통일 (#69)

* refactor: 커스텀 예외를 발생시키도록 수정

* refactor: 모든 예외를 잡을 수 있도록 수정

* refactor: ExceptionHandler가 반환하는 예외 응답 형식 변경

- ProblemDetail로 변경

* refactor: ResponseEntityExceptionHandler를 상속하지 않도록 변경

* feat: ResponseEntityExceptionHandler에서 처리하는 예외를 직접 핸들링

* feat: CORS 설정 추가 (#88)

* fix: ci PR 브랜치 설정 (#92)

* refactor: 예외 핸들러 인자 변경 (#87)

* [BE] 도메인 연관관계 재설정 (#97)

* feat: 깃허브 아이디 원시값 포장

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 회원 `GithubId` 사용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 내 컬럼 수정 (content)

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 일급 컬렉션 이름 변경

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 질문 엔티티

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 답변 구조 변경, 길이 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 연관관계 없이 참조하도록 설정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 답변 길이 테스트

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 생성 시 키워드 받아서 생성

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 리뷰어와 리뷰이 같은 경우의 예외 테스트

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 리뷰-키워드 매핑 테이블 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: Fixture 사용해 컴파일 에러 해결

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 일대다 편의 메소드 작성,

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 깃허브 아이디 그룹, 리뷰어 연관관계

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰그룹 - 리뷰 일대다 단방향 연관관계 적용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰그룹 - 리뷰 일대다 양방향 연관관계 적용

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰어 그룹 깃허브 아이디 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 셀프리뷰 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 사용하지 않는 파일 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 추가 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: 순환 참조 NPE 해결

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

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

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: Github ID 패키지 이동

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* feat: 리뷰 - 리뷰 답변 연관관계 설정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* chore: 사용하지 않는 코드 제거

* refactor: 내가 받은 리뷰 상세 보기 구현

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* [FE] feat: 리뷰 작성 페이지 기능 구현 (#89)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* chore: 현재 사용되지 않는 저장 버튼 숨김 처리

* design: 기본 폰트 사이즈 변경

- 15px -> 16px로 수정

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* design: 리뷰 작성 페이지의 수정된 디자인 적용

- 색상 코드 수정
- 버튼 호버 시 스타일링 수정
- 리뷰 마감일 날짜 형식 변경

* design: 리뷰 질문에 안내 문구 및 placeholder 추가

- 각 질문에 ' (20자 이상)' 문구 하드코딩
- 최대 1000자 입력 가능하다는 문구를 textarea의 placeholder로 추가

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* chore: api명 및 endpoint명 수정

* chore: 리뷰 질문 목록을 서버에서 받아오기 위해 상수 제거

* chore: api 문서 형식에 맞게 데이터 타입 수정

* fix: 키워드 버튼을 눌렀을 때 폼이 제출되는 문제 해결

* feat: 작성한 리뷰 내용을 부모 컴포넌트의 상태와 동기화하도록 설정

* design: textarea의 크기를 고정시키고, 넘어갈 경우 스크롤 되도록 변경

* design: 공통 버튼 컴포넌트에 조건부 스타일링 구현

* design: disabled 관련 색상 변수 추가

* feat: 모든 폼을 작성했을 때 제출 버튼이 활성화되도록 구현, 키워드 선택 로직 구현

* feat: 제출 버튼 클릭 시 confirm 발생, 한 번 더 확인 시 제출되도록 구현

* feat: 키워드 버튼을 5개 초과해서 선택할 수 없도록 구현

* feat: textarea에 1000자를 초과해서 입력할 수 없도록 구현 및 현재 글자수 표시

* fix: 이미 선택된 키워드를 해제하려 해도 개수 제한되는 오류 수정

* refactor: 폼 유효성 검사 조건들을 변수로 분리

* design: 키워드 버튼들의 크기를 fit-content로 변경 및 가로로 나열하도록 수정

* chore: api 연결 이전, 임시로 폼 정보를 콘솔에 출력하도록 설정

* chore: 리뷰 작성 완료 페이지 라우터 추가

* feat: 리뷰 작성 완료 페이지 및 작성 완료 시 페이지 이동 기능 구현

* refactor: 리뷰 아이템 컴포넌트 매직넘버 상수화

* chore: 시계 아이콘 스타일 컴포넌트화

* refactor: 리뷰 관련 메시지 상수 분리

* design: 리뷰 작성란 placeholder 및 본문 font weight 변경

* refactor: 리뷰 문항 번호 동적으로 부여하도록 변경 및 상수화 적용

* refactor: on-, handle- prefix 관련 컨벤션 적용 및 키워드 버튼 인터페이스 확장

* chore: 리뷰 답변의 길이가 유효한지 체크하는 변수의 이름을 의미를 잘 드러내도록 수정

* refactor: 공통 버튼의 타입별 스타일을 함수로 분리

* style: api 호출 함수명 컨벤션에 맞게 수정

* chore: 불필요한 PropsWithChildren import 제거

---------

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

* [FE] MSW를 mock server로 셋팅 (#95)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* ci: msw 관련 패키지 설치

* ci: msw 관련 설정파일 추가

- 브라우저 환경, node 환경에서 msw로 목서버 사용할 수 있도록 관련 파일 추가

* feat: mock 핸들러 추가 및 상세 리뷰 페이지 목 데이터 추가

* feat:  root에서 목서버 사용할 수 있도록함

* refactor: endpoint 수정

- env 에서 서버 주소 끝에 슬래시 넣는 것으로 통일

* feat: 상세 리뷰 페이지(detailedReviewPage)에 목서버 연결 및 관련 코드 수정

- 상태명 변경: detailReview -> detailedReview
- detailedReview 타입에 null 추가 및 그에 따른 오류 핸들링 추가
- deadline에 string 타입으로 response로 전달되어서 new Date로 감싸서 props로 전달

* docs: indexhtml의 title 변경

* style: apis/review.ts 의 import 관련 eslint rule 적용에 따른 수정

* fix: ts에서 process 읽지 못하는 오류 수정

* fix: webpack dev server script 복원

* [FE] 상세 리뷰 페이지 : url router 연동, 변경된 디자인 반영 및 서버에서 api를 연동 (#91)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* refactor: 리뷰 상세 페이지 api 변경에 따른 수정

- 리뷰 상세 페이지 keyword 타입 변경
- api endpoint 변경 , router 변경, sidebar 상세보기 경로 변경
- useState에 빈 값에 대한 타입 추론 사용

* [BE] test: 도메인 연관관계 재설정 후 테스트 작성 (#101)

* test: 리뷰어 그룹 테스트 작성

* refactor: 리뷰 작성 테스트를 `ReviewTest`로 이동

* test: 리뷰어 중복 추가 테스트

* refactor: Test Fixture 사용하도록 수정

* refactor: 예외 클래스명 통일

* style: 테스트 개행

* refactor: 테스트명 명확하게 수정

* refactor: 회원 도메인에서의 비교를 GithubId로 진행하도록 수정

* refactor: createdAt 사용하지 않고, deadline으로 수정

* refactor: 필드명 reviewerGithubIds로 통일

* test: 리뷰어 중복 생성 검증

* refactor: reviewer/reviewee 통일

* refactor: 리뷰어-리뷰이 github id를 명시

* refactor: 테스트에 하나의 검증만 진행되도록 수정

* [FE] feat: 리뷰 목록 페이지 기능 구현 (#90)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* feat: DropDown 컴포넌트 구현

- 사용자 선택을 위한 `DropDown` 컴포넌트를 구현
- `onChange` 이벤트 핸들러와 `options` 배열을 사용하여 옵션을 동적으로 표시

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: svg 아이콘 크기 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: Topbar UI 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* design: 버튼, 검색창 UI 수정 후 export

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: ReviewPreviewCard 컴포넌트 구현

- 리뷰 미리보기 카드 컴포넌트 구현
- 리뷰어 그룹 이름, 생성일, 리뷰 내용 미리보기, 키워드, 공개 여부를 표시

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: ReviewPreview 인터페이스 추가

- 리뷰 미리보기 데이터 구조를 정의하는 `ReviewPreview` 인터페이스를 추가했습니다.

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: SearchSection 컴포넌트 구현

- 검색 입력창, 검색 버튼, 드롭다운을 포함하여 검색 기능을 구현

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: ReviewPreviewListPage 구현 및 모의 데이터 추가

- `ReviewPreviewListPage` 컴포넌트 구현
  - `SearchSection`을 포함하여 검색 기능을 구현
  - `ReviewPreviewCard`를 사용하여 리뷰 목록을 표시
- 모의 데이터(`mockReviewPreviews`) 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: import 중복 및 순서 정리, ReviewPreviewListPage 라우트 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 여러 개의 요소를 감싸기 때문에 Container로 변경

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* feat: 리뷰 목록 데이터를 서버에서 가져오기 위해 getReviewListApi 함수 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* refactor: 상세 리뷰 불러오기 api 엔드포인트 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* refactor: 상세 리뷰 페이지 API 연동 부분 수정

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* [BE] feat: 리뷰 작성 API 구현 (#102)

* refactor: 리뷰 요청 dto 수정

* refactor: 리뷰 콘텐츠 생성 시, 리뷰에 자신을 추가하도록 변경

* feat: QuestionRepository 추가

* feat: 리뷰 작성 기능 추가

* test: 리뷰 작성 테스트 추가

* refactor: ReviewGroup 생성 시, GithubIdReviewerGroup도 같이 저장되도록 변경

* refactor: GithubId equals 및 hashcode 재정의

* refactor: review 생성 시, reviewGroup이 null이 아니도록 변경

* refactor: EqualsAndHashCode에 id 명시

* refactor: reviewee를 reviewerGroup 통해서 받아오도록 변경

* refactor: 파라미터 long 타입으로 변경

* test: 사용하지 않는 변수 제거

* test: 파라미터별로 개행하도록 변경

* refactor: ReviewerGroupGithubIds의 reviewerGithubIds를 CascadeType.PERSIST로 변경

* chore: 다른 작업에서 진행될 사항으로 사용하지 않는 테스트 삭제

* [FE] Github Actions로 CI 구축 (#96)

* ci: CI를 위한 yml 파일 작성

* ci: yarn.lock 경로 추가

* ci: working-directory 추가

* cI: 동작 테스트를 위해 push 브랜치 경로 조건에서 frontend 임시 제거

* ci: 테스트를 위해 현재 브랜치도 조건에 추가

* ci: package에 test 명령어 추가

* ci: yarn.lock 파일 업데이트

* ci: 테스트 파일 형식 수정

* chore: 필요없는 파일 삭제

* chore: svg 파일을 대문자로 import한 것들 소문자로 수정

* ci: 웹팩 env 설정 업데이트

* ci: process.env 사용을 위한 타입 설정

* ci: env 웹팩 설정 경로를 절대 경로로 변경

* ci: env 웹팩 설정 경로 수정

* ci: env 절대경로 수정

* ci: 절대경로 수정 2

* ci: 읽기 권한을 명시적으로 주고 테스트

* ci: dist 파일 테스트

* ci: CI 환경에서도 env 파일 생성

* ci: 배포 정상 동작 확인을 위한 github pages 임시 배포 설정

* ci: 임시 배포 코드 삭제

* ci: develop 브랜치로 frontend 이하 경로에서 PR이 올라올 때 CI가 실행되도록 수정

* ci: node 설치 에러 해결

* [BE] feat: 리뷰에 필요한 정보 조회 기능 추가 (#103)

* test: QuestionTestFixture 생성

* feat: 모든 리뷰 문항을 조회하는 기능 구현

* feat: 모든 키워드를 조회하는 기능 구현

* test: ReviewerGroupFixture 생성

* feat: 리뷰 생성 시 필요한 리뷰어 그룹 정보를 조회하는 기능 구현

* feat: 리뷰 생성 시 필요한 정보를 조회하는 기능 구현

* refactor: @ServiceTest 적용

* refactor: swagger 적용

* refactor: 필드명 변경

* style: 개행 추가

* refactor: 날짜 형식 변경

* test: import문 제거

* refactor: ReviewCreationResponse 패키지 변경

* refactor: readOnly 트랜잭션 적용

* fix: 리뷰어 중복 검증 임시 제거

---------

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

* [FE] 리뷰 작성 페이지에서 MSW를 사용하여 서버 mocking (#111)

* chore: 중복된 인터페이스 제거

* feat: MSW 핸들러 및 mock data 추가

* chore: 리뷰 쓰기 페이지 데이터 endpoint 수정

* feat: 리뷰 작성 페이지에 msw를 적용하여 서버 mocking

* merge

* [FE]  공통 컴포넌트인 모달을 만든다. (#110)

* fix: stylelint를 통한 css 속성 정렬 기능 오류 수정

- stylelint 버전16과 충돌되는 플러그인 삭제 : stylelint-config-prettier, stylelint-prettier
- css 정렬에 필요하지 않은 플러그인 삭제 : stylelint-config-standard, stylelint-config-styled-componented, stylelint-webpack-plugin
- 추가로 설치한 플러그인: postcss-syntax, @stylelint/postcss-css-in-js
- stylelint 적용 script 추가
- .stylelintrc.json 수정 : css 관련 rule 설정

* refactor: stylelint 적용에 따른 css 속성 정렬

* fix : 절대 경로 사용 시 오류 수정

오류 : eslintimport/no-unresolved

* chore: eslintrc.cjs 에서 불필요한 코드 삭제

 node 환경 setting 삭제

* style: eslint 적용에 따른 리뷰 상세페이지 import 순서 정리

* refactor: formatDate를 utils/date 파일로 이동

* design: theme에 colors,, fontSize 변경 및 borderRadius 추가

* feat: MultilineTextViewer 컴포넌트 생성

- 개행이 포함된 string에 개행을 적용해서 보여주는 컴포넌트

* feat: 깃허브 저장소 이미지 컴포넌트 생성

* feat: 리뷰와 관련된 날짜 UI 컴포넌트 생성

* featr: LockButton 삭제 LockToggle 추가

* refactor: 피그마 디자인 변경에 따른 ReviewDescription 변경

* feat: ReviewComment 컴포넌트 생성

* refactor: ReviewViewSection -> ReviewSection 으로 변경 및 리팩토링

- 불필요한  컴포넌트 삭제 : RevieAnswer , ReviewQuestion

* refactor: DetailedReviewPage 리팩토링

- 목데이터 변경
-  추가 및 변경된 컴포넌트를 사용해 리뷰 상세페이지 컴포넌트(DetailedReviewPage) 리팩토링
- DetailedReviewPage 폴더의 styles.ts 삭제

* refactor: review에 대한 타입 변경

* design : ReviewDate의 클론 스타일 적용

* feat: KeywordSection 컴포넌트 생성

- 리뷰 상세 페이지 키워드 부분 컴포넌트 생성

* feat: ReviewSectionHeader 컴포넌트 생성 및 적용

- 리뷰 상세보기에서 반복되는 질문,키워드 헤더부분을 컴포넌트로 분리

* design : 리뷰 상세페이지에 width 변경

* refactor: DetailedReview의 목데이터 변경 및 리팩토링

- 타입 변경에 따른 목 데이터 변경
- KeywordSection 적용

* design : formWidth를 theme에 추가 및 리뷰 작성/리뷰 상세 페이지에 적용

* fix: Layout에서 가로 스크롤 생기는 오류 수정

- 100vw는 스크롤을 포함한 뷰포트 너비라서 100%으로 수정

* feat: 리뷰 상페이지 router에 라우터 파라미터 적용 및 관련 설정 변경

- 데모데이를 위해 현재 데이터베이스에 있는 리뷰 상세페이지 id를 sidebar의 리뷰 상세페이지 메뉴 link에 적용
- 리뷰 상세페이지(DetailedReviewPage)의 api 핸들러 수정

* docs: 변수명 변경 (isLock -> isPublic)

* refactor: 깃헙 저장소 로고 주소 변수명 변경

- projectImgSrc -> thumbnailUrl

* ci: msw 관련 패키지 설치

* ci: msw 관련 설정파일 추가

- 브라우저 환경, node 환경에서 msw로 목서버 사용할 수 있도록 관련 파일 추가

* feat: mock 핸들러 추가 및 상세 리뷰 페이지 목 데이터 추가

* feat:  root에서 목서버 사용할 수 있도록함

* refactor: endpoint 수정

- env 에서 서버 주소 끝에 슬래시 넣는 것으로 통일

* feat: 상세 리뷰 페이지(detailedReviewPage)에 목서버 연결 및 관련 코드 수정

- 상태명 변경: detailReview -> detailedReview
- detailedReview 타입에 null 추가 및 그에 따른 오류 핸들링 추가
- deadline에 string 타입으로 response로 전달되어서 new Date로 감싸서 props로 전달

* docs: indexhtml의 title 변경

* style: apis/review.ts 의 import 관련 eslint rule 적용에 따른 수정

* fix: ts에서 process 읽지 못하는 오류 수정

* fix: webpack dev server script 복원

* feat: ModalPortal 셍성

* feat: SideModal 컴포넌트, useSide  셍성 및 Sidebar에 적용

* feat: ModalBackground 컴포넌트 생성 및 적용

* fix: 모달 열릴 때 스크롤바 막는 기능 오류 수정

* design : ModalPortal 사이즈 단위 변경 (% -> vw, vh)

* feat: Button 컴포넌트가 button 속성을 props로 받을 수 있도록 수정

* feat: ConfirmModal 생성

* refactor: index.tsx에서 모달을 꺼낼 수 있도록 리팩토링

* refactor: PropsWithChildren 수정

- PropsWithChildren를 import 하지 않고 React에서 바로 쓸 수 있도록 React.PropsWithChildren로  수정

* [FE] msw관련 env 오류 해결  (#114)

* chore: fe/feat/105-review-writing-msw  의  endpoint 관련 변경사항 반영

* fix: NODE_ENV 관련 오류 수정

- 오류 : env 파일에 NODE_ENV가 없음에도 이를 인식하는 오류 발생
- 원인: 프레임워크에서 NODE_ENV를 기본적으로 가지고 있는 경우도 있다고 함
- 해결: NODE_ENV를 삭제하고 MSW를 사용

* [BE] feat: 내가 받은 리뷰 보기 기능 구현 (#109)

* refactor: contains 작동을 위한 EqualsAndHashcode 추가

* fix: lazyInitialization 해결

* feat: 질문 레포지토리 생성

* feat: 내가 받은 리뷰 응답 생성

* refactor: 리뷰 항목과 질문의 연관관계 변경 및 답변 최대 글자수 DB에 반영

* refactor: 리뷰에 리뷰그룹 초기화 부분 추가

* feat: 내가 받은 리뷰 조회 기능 구현

* feat: 받은 리뷰가 없을 때의 응답 추가

* refactor: dto 설명 추가

* refactor: dto 설명 수정

* refactor: 인자 형식 수정, 개행 수정

* refactor: transactional 어노테이션 추가

* refactor: 내가 받은 리뷰 조회할 때Page객체 말고 List로 받아오도록 수정

* refactor: 미리보기 만드는 기능 도메인 안으로 이동

* test: 테스트 코드 개선

- 변수명 수정, save 여러개 대신 saveAll 사용 등

* refactor: 마지막으로 본 리뷰ID가 없는 로직에 대해 수정

- lastViewedReviewId를 입력하지 않으면 999같이 이상하게 큰 수를 넣어주는게 아니라, 가장 큰 값을 넣어주도록 수정

* docs: 스웨거 데코레이션 적용

* refactor: lastReviewId가 null 이어도 가장 최신 리뷰를 찾을 수 있도록 수정

* refactor: eqaulsAndHashCode 재정의

* refactor: eqaulsAndHashCode 재재정의

* refactor: API Docs 반영

---------

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

* fix: 잘못 정의된 endpoint 수정 (#118)

* [FE] 머지로 인해 사라진 리뷰 상세 페이지 변경 사항 복구 및 데이터 타입 변경 (#121)

* refactor: 리뷰 상세 페이지 데이터 타입 변경 및 Keyword 타입 복구

* fix: 리뷰 상세 페이지의 path 복구

* fix: 사이드바의 리뷰 상세 페이지 경로 복구

* refactor: 리뷰 상세 페이지 데이터 타입 변경에 따른 목 데이터 변경

* fix: DetailedReviewPage 복구 및 데이터 타입 변경에 따른 수정

* [BE] 더미 데이터 추가, local 프로파일 관리 (#123)

* refactor: Unauthorized 예외 처리

* chore: 더미 데이터 추가 및 Profile 처리

* chore: 테스트 yml 생성

* fix: Long notblank -> notnull (#126)

* [FE] 리뷰 목록 페이지에서 msw를 사용하여 모킹 (#124)

* feat: 리뷰 목록 페이지에서 msw를 사용하여 모킹

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 엔드포인트 baseurl에 '/' 추가

Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: Fe <[email protected]>

* fix: 리뷰 목록 DTO 필드 수정 (#129)

* [FE] msw 모킹을 위한 리뷰 데이터 하드코딩 (#130)

* refactor: msw 모킹을 위한 리뷰 데이터 하드코딩

Co-Authored-By: ImxYJL <[email protected]>

* refactor: 2차 데모데이를 위한 멤버 아이디 상수화

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: Fe <[email protected]>

* chore: 불필요한 콘솔 로그 제거

Co-Authored-By: ImxYJL <[email protected]>
Co-Authored-By: badahertz52 <[email protected]>
Co-Authored-By: Fe <[email protected]>

---------

Co-authored-by: ImxYJL <[email protected]>
Co-authored-by: badahertz52 <[email protected]>
Co-authored-by: Fe <[email protected]>

* [FE] endPoint 오류와 리뷰 그룹 아이디 수정 (#132)

* fix: endpoint 오류 수정

* fix: 리뷰 생성을 위한 데이터 받을 때의 리뷰 그룹 아이디를 1로 수정

* [BE] fix: 리뷰 미리 보기 생성 기능 수정 (#134)

* fix: src/index.tsx에서 enableMocking 제거 (#136)

* [FE] Children 속성이 필수인 타입 제작 (#147)

* feat: children 속성이 필수인 EssentialPropsWithChildren 타입 생성

* chore: types 폴더의 index 파일에 누락됐던 export들 추가 및 그에 따른 types import문 경로 수정

* [FE] 사이드바 및 모달 사용성 개선 (#139)

* refactor: 사이드바를 닫는 애니메이션 제거

* refactor: 사이드바가 더 빨리 열리도록 수정

* feat: 모달의 배경 클릭 및 esc 키를 눌렀을 때 모달이 닫히는 기능 추가

* chore: hooks index에 useModalClose 추가

* feat: 사이드바 리스트 아이템을 클릭했을 때 사이드바가 닫히는 기능 추가

* refactor: useModalClose 훅을 모든 모달의 공통 최상위 컴포넌트인 ModalBackground에서 처리하도록 수정

* refactor: ModalBackground를 클릭했을 때 모달이 닫히게 하는 이벤트 리스너를 document 대신 Background에 추가

* fix: esc를 사용해 모달을 닫았을 때 햄버거 버튼에 포커스가 생기는 문제 해결 및 변수명 대소문자 수정

* refactor: useEffect 내부 함수들을 훅 외부로 이동 및 주석 추가

* [FE] 존재하지 않는 element에 대한 에러를 출력하는 유틸리티 함수 제작 (#150)

* feat: 존재하지 않는 element에 대한 에러를 출력하는 훅 제작

* chore: hooks 폴더 index에 useExistentElement 추가

* refactor: useExistentElement 훅을 더욱 범용적으로 사용할 수 있도록 수정

* refactor: 존재하지 않는 요소를 판별하는 동작을 커스텀 훅 대신 유틸리티 함수로 제작

* chore: 기존의 존재하지 않는 요소를 탐지하는 커스텀 훅 삭제

* [FE] HTTP 요청 오류 시 status code별 오류 상황을 대응하는 함수 생성 (#151)

* feat: api 에러 시 표시한 메세지 생성 함수 추가

* refactor: api/review.ts에 api 오류 시 메세지를 반환하는 createApiErrorMessage 함수 적용

* docs: http 요청 실패 메세지 수정

* fix: 오타 수정

* [FE] 페이지 상단 이동 버튼 구현 (#153)

* feat: top button 로직 훅으로 구현

* design: top button UI 구현

* chore: 각 페이지마다 top button이 보여지도록 설정

* chore: 컴포넌트 default로 export하도록 설정

* refactor: handler를 useEffect 외부로 분리

* chore: svg import 컨벤션에 맞추어 이름 수정

* [FE] feat: 에러, 로딩 페이지 구현 및 적용 (#155)

* feat: 버튼 컴포넌트에 아이콘을 선택적으로 추가할 수 있도록 변경

- `icon` prop을 통해 버튼에 아이콘을 추가할 수 있도록 변경

* feat: 에러 페이지를 위한 ErrorSection 컴포넌트 구현

- 에러 로고, 메시지, 새로고침 및 홈 이동 버튼 제공

* feat: 라우터 설정에서 `errorElement`에 `ErrorPage` 컴포넌트를 추가

* feat: 버튼 클릭 시 새로고침 및 홈 이동 기능 추가

* feat: LoadingBar 컴포넌트 구현

* feat: 로딩 페이지 추가 및 적용

- 로딩 메시지 추가
- 리뷰 작성 페이지, 리뷰 목록 페이지, 리뷰 상세 페이지에 로딩 페이지 적용

* refactor: buttons 배열을 통해 버튼 생성

* refactor: 코드컨벤션에 맞게 코드 수정 및 imageDescription을 버튼 props에 추가

* refactor: boolean 타입추론 제거

* design: 에러 컴포넌트 화면 가운데 배치

* design: 로딩 컴포넌트 화면 가운데 배치

* [BE] refactor: 도메인 연관 관계 재정의 (#156)

* refactor: 도메인 연관관계 재정의 및 사용하지 않는 도메인 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 사용하지 않는 테스트 삭제

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: 예약어 사용하지 않도록 수정

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: Review 도메인에서 reviewee 필드 제거

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 저장 기능 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 키워드 저장 기능 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 생성 요청 객체 구현

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* test: 리뷰, 리뷰 내용 도메인 테스트 추가

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* refactor: 리뷰 작성 시 질문 검증

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* fix: Review의 reviewGroupId 컬럼명 수정

* refactor: 리뷰 생성 시, 키워드 검증을 객체 분리

* refactor: 리뷰 생성 시, 질문 검증을 객체 분리

* style: 코드 재정렬

* test: 리뷰 생성 검증 테스트 추가

* refactor: 사용하지 않는 클래스 삭제

* refactor: keyword 관련 사용하지 않는 클래스 삭제

* refactor: review 관련 사용하지 않는 클래스 삭제

* refactor: 데이터 초기화 객체 수정

* test: 사용하지 않는 테스트 삭제

* refactor: 예외 메세지 말투 통일

* refactor: 사용하지 않는 예외 제거

* refactor: 예외 클래스 패키지 변경

* refactor: NOT NULL 제약조건 추가

* refactor: 테스트에서만 사용되는 함수 제거

* refactor: 테스트 실행 시 발생하는 LazyInitializationException 해결

* refactor: 키워드 검증 함수 순서 변경

* chore: 테스트 코드 컨벤션 통일

* refactor: reviewRequestCode 검증 로직 이동

* refactor: 필드인 questionRepository를 사용하도록 변경

* refactor: 리뷰이, 프로젝트 이름 길이 검증 함수 분리

* test: 리뷰 저장 시 reviewKeywor 저장 검증 추가

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: Kimprodp <[email protected]>

* [All] infra: 디스코드 웹훅 사용해 PR 생성/코멘트 시 멘션 (#169)

* feat: PR Request 생성 / Comment 시 디스코드 멘션

* fix: Case-sensitive ID로 해결, ALL webhook 추가

* fix: remove whitespace

* chore: rename workflow

* fix: fix shell script

* fix: step statement

* fix: remove trailing whitespace after equals sign

* [BE] feat: 리뷰 그룹 생성 API 구현 (#163)

* feat: 랜덤한 문자열 생성기 구현

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

* feat: 리뷰 그룹 생성 요청, 응답 형식

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

* feat: 리뷰 그룹 생성

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* feat: 리뷰 작성 컨트롤러

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

---------

Co-authored-by: nayonsoso <[email protected]>
Co-authored-by: hyeonjilee <[email protected]>

* [BE] refactor: 리뷰 작성을 위한 정보 요청 기능 리팩터링 (#162)

* refactor: 불필요한 update 방지

* feat: controller에 리뷰 생성 요청에 대한 응답 기능 구현

* feat: controller에 리뷰 작성을 위해 필요한 정보를 응답 기능 구현

* feat: service에 리뷰 작성을 위해 필요한 정보 조회
 기능 구현

* chore: 사용하지 않는 dto 삭제

* test: 리뷰 리뷰 작성을 위해 필요한 정보 조회 기능 테스트 작성

* refactor: swagger 설정 일부 수정 및 에러 응답코드 노출되도록 변경

* refactor: service에서 원시타입 long을 반환하도록 변경

* docs: api 문서 dto 항목설명 변경

* test: 사용하지 않는 변수 선언하지 않도록 변경

* docs: api 문서 검증 내용에 대한 어체 변경

* refactor: 트랜잭션 조회 명시 추가

* refactor: dto 이름 변경

* [FE] 리뷰 상세 페이지에 react-query 추가 및 리팩토링 (#161)

* fix: src/index.tsx에서 enableMocking 제거

* feat: 리뷰 그룹 생성 시 코멘트 컴포넌트명 변경 및 기본값 설정

- 컴포넌트명 변경: RevewComment -> ReveweeComments
-  reviewGroup의 description이 빈문자열이면 기본값을 보여주는 것으로 변경

* refactor: 서버 DB에 있는 리뷰 데이터를 사용하기 위한 상수화

- 현재 DB에 있는 리뷰 데이터를 목 서버에서도 사용하고, 사이드바 페이지 이동 시에도 활용할 수 있도록 관련 value들을 상수화 함

* feat : QueryClient, QueryClientProvider 적용

- src/index.tsx에 QueryClient, QueryClientProvider 적용

* fix: dependencies에 있는 테스트 패키지들을 devDependencies로 옮김

* feat: 리뷰 상세페이지에 react-query 적용

* feat : msw에 리뷰 상세페이지 404 오류 추가

* ci: react-error-boundary 설치

* feat: Outlet에 QueryErrorResetBoundary,ErrorBoundary, Suspense 적용

* feat: 리뷰 상세페이지에 useSuspenseQuery 적용

* refactor: 리뷰 상세페이지 resource, queryString key 상수화

* refactor:  리뷰 상세페이지 react-query key 상수화

* refactor: 리뷰 상세 페이지 컴포넌트 속에서만 사용하는 상수들 상수화

* refactor: DetailedReviewPage/components에 index.tsx를 추가해 import 경로 간결하게 수정

* feat: error 전파를 위한 QueryClient 옵션 추가

-  react-query의 query, mutation에서 error가 전파되도록 QueryClient 옵션 설정

* fix: ErrorPage의 SideModal에 closeModal props로 줌

* refactor: ErrorSection 위치 변경(src/pages/ErrorPage -> src/components/error)

* feat: ErrorFallback 컴포넌트 생성

* feat: ErrorSuspenseContainer 생성 및 App.tsx에 적용

* chore: constants/index.ts export 경로 변경

- 중복되는 apiErrorMessage 삭제
- queryKeys 추가

* chore: 3차-1주차 핵심 기능 시현 때 필요 없는 코드 주석 처리

* docs: ErrorPage의 ERROR_MESSAGE 수정

* design: formWidth 변경 및 fontSize에 1.4rem 추가

* feat: 리뷰 상세 페이지에 리뷰이 이름 추가

- 리뷰 상세 페이지 목데이터, 데이터 타입에 리뷰이 이름 추가
- 리뷰 상세 페이지 컴포넌트에 리뷰이 이름 추가 및 관련 스타일 추가

* refactor: 불필요한 export 삭제

* chore: type명 수정 (RevieweeCommentProps =>RevieweeCommentsProps)

* refactor: ErrorSection으l Button 수정

* refactor: 리뷰 상세 페이지 데이터 타입 변경에 따른 수정

* refactor: ErrorSuspenseContainer 적용 위치 변경

- App가 아닌 router의 element에서 적용하는 것으로 변경

* refactor: 리뷰 상세 페이지 데이터 타입 강제 방법 변경

* chore: 불필요한 주석 삭제

* refactor: ErrorSection의 buttons 네이밍 변경 및 요소에 key 추가

- buttons -> buttonList

* chore: 스타일 주석에 NOTE 추가

* [BE] feat: 리뷰 목록 조회  (#179)

* feat: 리뷰 미리보기

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

* feat: 내가 받은 리뷰 목록 응답 생성

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

* feat: 리뷰 목록 조회

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

* refactor: Cascade 적용으로 불필요한 save 제거

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

* refactor: 리뷰 미리보기 생성 객체 도출

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

---------

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

* fix: 브라우저 타이틀 오타 수정 (#167)

* [BE] feat: 리뷰 상세 조회 기능 구현 (#182)

* feat: 컨트롤러 리뷰
상세 조회 api 응답 기능 구현

* feat: 리뷰 상세 조회 api 응답 객체 구현

* refactor: 리뷰 상세 조회 api 응답 객체명 변경

* feat: 서비스 리뷰 상세 조회 기능 구현

* test: 리뷰 상세 조회 기능 테스트 추가

* style: 오타 및 개행 수정

* refactor: 날짜 응답 시, 일자까지만 응답하도록 변경

* refactor: 리뷰 조회 권한 검증 로직을 repository 사용하도록 변경

* refactor: 검증메세지 변경

* refactor: 리뷰 서비스에서 리뷰 그룹을 찾을 수 없는 경우에 대한 예외 클래스 변경

* refactor: 리뷰 상세 조회 메서드명 변경

* refactor: 헤더명 상수화

* [FE] recoil을 통한 groupAccessCode 전역 상태 관리 (#180)

* ci: recoil 설치

* feat: src/index.ts에 RecoilRoot 적용

* feat: groupAccessCode 에 대한 atom 상태 추가

* feat: useGroupAccessCode 훅 추가

- useGroupAccessCode : groupAccessCode의 atom 상태를 관리하는 훅

* [BE] 내가 받은 리뷰 목록을 최신순으로 조회한다. (#189)

* fix: 날짜 순 정렬

* refactor: 사용하지 않는 변수 제거

---------

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

* [BE] 초기 데이터 설정 (#187)

* feat: 초기 데이터 설정

* build: CD 시 local profile 설정

---------

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

* [FE] feat: Alert Modal과 Error Alert Modal 컴포넌트 구현 및 Button 컴포넌트 확장 (#165)

* refactor: 공통 버튼 컴포넌트가 children과 style을 받도록 수정

* chore: error alert modal에서 사용할 primary 색상의 경고 삼각형 추가

* feat: ErrorAlertModal 컴포넌트 구현

* feat: AlertModal 컴포넌트 구현

* chore: 변경된 Button 컴포넌트의 구조에 맞게 코드 수정

* fix: AlertModal이 Esc 또는 background의 클릭으로 닫히지 않도록 수정

* chore: AlertModal과 ErrorAlertModal export

* refactor: Button 컴포넌트가 type을 별도로 받도록 수정 및 기존의 buttonType을 styleType으로 변경

* refactor: background 클릭 또는 Esc 키를 통해 모달을 닫는 것을 분리

* refactor: AlertModal의 모달 닫는 정책을 props로 선택 가능하도록 수정

* refactor: ErrorAlertModal을 AlertModal을 사용해 구현

* refactor: 닫기 버튼 이외의 방법으로 모달을 닫을 수 있는지 여부와 handler를 props로 전달받도록 변경

* refactor: 비어있는 스타일 컴포넌트 제거

* [FE] 랜딩 페이지 퍼블리싱 및 디바운싱 함수 추가 (#181)

* feat: Input 공통 컴포넌트 제작

* feat: LandingPage 제작

* fix: Input의 type을 text로 수정

* feat: debounce 함수 작성

* docs: debounce 함수에 TODO 주석 및 TSdoc 추가 외 간단한 if문 리팩토링

* chore: 잘못된 파일 구조 및 디렉토리명 수정

* chore: px을 rem으로 수정

* refactor: 동적 스타일링에 css 대신 styled 스타일 적용

* refactor: Input 스타일을 더욱 유연하게 받을 수 있도록 수정, 스타일 리터럴 제거

* refactor: Input에 적용된 커스텀 스타일링을 $style로 수정

* fix: undefined 리턴을 null 리턴으로 수정

* refactor: flex-direction에 별도의 커스텀 타입을 사용하는 대신 React 내장 타입을사용하도록 수정

* refactor: Input 컴포넌트에서 rest props 제거

* chore: 불필요한 import 제거

* [FE] feat: 리뷰 목록 페이지에 변경된 API 연동 후, 리액트 쿼리 적용 및 무한 스크롤 구현 (#192)

* design: 리뷰 미리보기 카드 배경색 변경 및 전체 감싸는 div에 아래쪽 여백 추가

* refactor: 리뷰 목록 인터페이스 추가 및 수정

- ReviewPreviewList 인터페이스 추가
  - size, lastReviewId, reviews 필드 추가
- ReviewPreview 인터페이스 수정
  - keywords 필드를 Keyword[] 타입으로 변경

* chore: 닫힌 자물쇠로 아이콘 변경

* feat: 리뷰 목록 페이지에서 리액트 쿼리 적용

* refactor: 웹 접근성을 위한 alt, aria-label 추가 및 코드 컨벤션에 맞춰 코드 수정

* feat: 리뷰 미리보기 리스트 핸들러에 페이지네이션 로직 추가

- 기존의 단순 반환 핸들러에서 페이지네이션 기능을 포함한 핸들러로 수정

* feat: `SideModal` 컴포넌트에 `closeModal` prop 추가

* feat: 리뷰 목록 페이지에 무한 스크롤 기능 추가

* refactor: useReviewPreviewList 훅 생성하여 데이터 호출 로직 분리

* refactor: 불필요한 ButtonContainer 제거

* design: px을 rem으로 변경

* refactor: Button 컴포넌트에 key 추가

* feat: 리뷰이, 프로젝트명을 보여주는 DescriptionSection 컴포넌트 구현

* refactor: 리뷰 목록을 불러오는 api 변경 이슈로 인해 엔드포인트, fetch 함수 수정

* chore: fragment 제거

* refactor: api 변경에 따라 ReviewPreviewList, ReviewPreview 인터페이스 수정

* refactor: 변경된 api에 따라 props 수정

* refactor: reviewerGroup, isPublic 제거

* refactor: endPoint.gettingReviewList 호출 인자 변경

* refactor: DescriptionSection에서 ReviewInfoSection으로 컴포넌트명 변경

* refactor: useSuspenseQuery 적용 후, 무한스크롤 관련 코드 주석 처리

---------

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

* [FE] feat: 리뷰 작성 페이지와 서버 및 모달 연동 (#191)

* chore: 변경된 UI 적용

* design: 키워드 문항 안내 문구 수정

* feat: Textarea 공통 컴포넌트 뼈대 구현

* chore: 수정된 api 엔드포인트 및 queryparams 적용

* design: reset.ts 추가 설정

* chore: 변경된 api 문서에 맞게 타입 수정

* feat: 리뷰 작성 페이지와 모달 및 서버 연동

* chore: 사이드바 메뉴 클릭 시 이동할 path 수정

* fix: ConfirmModal에서 background 클릭 시 모달이 닫히지 않는 현상 수정

* design: AlertModal 및 ErrorAlertModal 디자인 수정

* chore: 리뷰 작성 및 작성 완료 페이지 라우터 추가

* chore: 불필요한 주석 제거 및 사이드바에서 리뷰 작성 메뉴 숨김 처리

* chore: 리뷰 제출 페이지 버튼 타입 명시

* chore: svg import 컨벤션에 맞게 수정

* [FE] 리뷰 목록 페이지, 리뷰 상세 페이지에서 로그인을 연동 (#193)

* design: 리뷰 미리보기 카드 배경색 변경 및 전체 감싸는 div에 아래쪽 여백 추가

* refactor: 리뷰 목록 인터페이스 추가 및 수정

- ReviewPreviewList 인터페이스 추가
  - size, lastReviewId, reviews 필드 추가
- ReviewPreview 인터페이스 수정
  - keywords 필드를 Keyword[] 타입으로 변경

* chore: 닫힌 자물쇠로 아이콘 변경

* feat: 리뷰 목록 페이지에서 리액트 쿼리 적용

* refactor: 웹 접근성을 위한 alt, aria-label 추가 및 코드 컨벤션에 맞춰 코드 수정

* feat: 리뷰 미리보기 리스트 핸들러에 페이지네이션 로직 추가

- 기존의 단순 반환 핸들러에서 페이지네이션 기능을 포함한 핸들러로 수정

* feat: `SideModal` 컴포넌트에 `closeModal` prop 추가

* feat: 리뷰 목록 페이지에 무한 스크롤 기능 추가

* refactor: useReviewPreviewList 훅 생성하여 데이터 호출 로직 분리

* refactor: 불필요한 ButtonContainer 제거

* design: px을 rem으로 변경

* refactor: Button 컴포넌트에 key 추가

* feat: 리뷰 목록,리뷰 상세 페이지 api 핸들러에서 groupAccessCode를 header에 추가

* feat: DetailedReviewPage 에서 groupAccessCode 상태 적용

* feat: LoginRedirectModal 생성

* refactor: ErrorSection 리팩토링

* feat: 리뷰이, 프로젝트명을 보여주는 DescriptionSection 컴포넌트 구현

* refactor: 리뷰 목록을 불러오는 api 변경 이슈로 인해 엔드포인트, fetch 함수 수정

* feat: 리뷰 상세 페이지에 groupAccessCode 상태를 적용

- 리뷰 상세 페이지에 groupAccessCode 상태값이 있으면 api요청을 하고 없으면 LoginRedirectModal을 띄어서 로그인 유도하는 기능 추가
- DetailedPage/index.tsx에 있던 내용을 DetailedReivewPageContents로 이동
-  DetailedPage/index.tsx에서 ErrorSuspenseContainer 실행하는 것으로 수정

* chore: fragment 제거

* refactor: api 변경에 따라 ReviewPreviewList, ReviewPreview 인터페이스 수정

* fix: 리뷰 상세 페이지 keyword 타입 변경에 따른 수정

* refactor: 변경된 api에 따라 props 수정

* refactor: reviewerGroup, isPublic 제거

* feat: ErrorFallback 의 홈 이동 경로 변경

* refactor: endPoint.gettingReviewList 호출 인자 변경

* refactor: DetailedReviewPage에서 groupAccessCode 가져오는 방식 변경

- useRecoilValue가 아닌 useGroupAccessCode에서 가져오는 것으로 변경

* refactor: DescriptionSection에서 ReviewInfoSection으로 컴포넌트명 변경

* refactor: ErrorPage에서 Home 이동 버튼을 유도하는 방식으로 변경

- route오류 메세지와 api오류 메세지를 errorMessage 파일에서 관리하도록 수정
- ErrorPage에서 errorMessage가 ROUTE_ERROR_MESSAGE이면 홈 버튼이 화면상에서 먼저 나오도록 수정
- 색상별 홈,refresh 아이콘 SVG 추가

* refactor: useSuspenseQuery 적용 후, 무한스크롤 관련 코드 주석 처리

* feat: 리뷰 목록 페이지 목 서버 핸들러 및 목데이터 수정

* feat: 리뷰 목록 페이지에  groupAccessCode 전역 상태 적용

* refactor: 불필요한 코드 삭제

* chore: 오타 수정

---------

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

* [FE] feat: 랜딩 페이지 API 연동 (#196)

* feat: 그룹 생성을 위한 엔드포인트 생성 및 리뷰 목록 엔드포인트, api 호출 함수 수정

* fix: CSSProperties 대신 커스텀 타입을 사용하던 인터페이스 수정

* feat: ReviewAccessForm에 모달 및 API 연결

* fix: 누락됐던 CopyIcon 파일 업로드

* feat: 확인 코드 입력 API 연동

* feat: 완전한 리뷰 작성 URL을 리턴하는 함수 작성

* [FE] fix: 누락됐던 버튼 리팩토링 및 엔드포인트 복구 (#199)

* fix: 충돌 해결 과정에서 누락됐던 엔드포인트 복구

* fix: 버튼 리팩토링 반영

* feat: textarea에 최소 입력 글자 수를 만족하지 못한 경우 에러 메시지 표시 기능 구현 (#200)

* feat: 리뷰 작성 완료 페이지에서 홈 버튼 추가 (#201)

* docs: 리뷰미 소개글 작성 (#203)

* [BE] refactor: 사용하지 않는 메서드 제거, 컨벤션 및 작은 리팩토링 (#206)

* refactor: date를 review가 제공하도록 수정

* style: 컨벤션 적용

* refactor: 사용하지 않는 메서드 제거

* refactor: 메서드명 통일

* style: 불필요한 개행 제거

* [FE] jest 사용 시 node환경 속 msw 호환성 문제와 환경 변수 오류  해결 (#215)

* ci: dependencies에서 jest 삭제 및 ts-jest 설치

* ci: jest에서 절대 경로 사용할 수 있도록  jest.config.js 추가

* chore: eslint적용 제외 파일에 jest.config.js, tsconfig.json 추가

* ci: jest의 testEnvioronment를 jsdom으로 설정

* fix: jest에서 msw ver2를 목서버로 사용 시 생기는 오류 수정

1. msw/node 를 읽지 못함
- jest.config.js의 testEnvironment 빈문자열

2. ReferentError: TextEnCoder is not defined
- 해결 : jest.polyfills.js 추가 및 undici 설치

3. ReferenceError: ReadableStream is not defined
- 해결 : undici 다운 그레이드
undici": "^6.19.5", -> "^5.0.0"

* ci : jest에서 env 파일 읽을 수 있도록 dotenv 설치 및 jest에 적용

* [FE] 개발환경과 빌드환경에 따라 msw 실행 여부를 결정하도록 msw 실행 조건문 개선  (#221)

* ci: 빌드 파일을 실행할 수 있는 http-server 패키지 설치 및 실행 명령어 추가

* fix:개발 환경과 빌드/배포 환경을 구분해 목 서버를 실행하도록 조건문 개선

* fix: 머지 충돌 시 yarn.lock 삭제한 거 복구

* [FE] 리뷰 상세페이지 query 훅 분리 및 HTTP 요청 테스트 진행  (#216)

* refactor: DetailedPage/index.tsx 리팩토링

- early return를 사용해 코드의 가독성을 높임

* feat: useGetDetailedReview 훅 생성 및 DetailedReviewPageContents에 적용

* feat: useSearchParamAndQuery 훅 생성 및 DetailedPageContent에 적용

* refactor: 리뷰 상세페이지에서 id라고 사용했던 key값, params의 key를 reviewId로 변경

- DetailedReview의 router param을 id에서 reviewId로 변경

* ci: dependencies에서 jest 삭제 및 ts-jest 설치

* ci: jest에서 절대 경로 사용할 수 있도록  jest.config.js 추가

* chore: eslint적용 제외 파일에 jest.config.js, tsconfig.json 추가

* ci: jest의 testEnvioronment를 jsdom으로 설정

* refactor: useGetDetailedReview에서 query 결과를 모두 반환하는 방식으로 변경

* fix: jest에서 msw ver2를 목서버로 사용 시 생기는 오류 수정

1. msw/node 를 읽지 못함
- jest.config.js의 testEnvironment 빈문자열

2. ReferentError: TextEnCoder is not defined
- 해결 : jest.polyfills.js 추가 및 undici 설치

3. ReferenceError: ReadableStream is not defined
- 해결 : undici 다운 그레이드
undici": "^6.19.5", -> "^5.0.0"

* ci : jest에서 env 파일 읽을 수 있도록 dotenv 설치 및 jest에 적용

* fix: mock 핸들러인 getDetailedReview 에서 중복된 쿼리 매개 변수 사용 수정

- 오류 상황:  jest에서 msw 사용 시, get의 url에 파라미터 사용 시 중복된 쿼리 매개 변수 오류가 남
- 오류 메세지 ::Found a redundant usage of query parameters in the request handler
- 해결:  리뷰 상세보기 페이지의 reviews까지의 url 상수를 만들고, get에서는 이 상수를  활용한 정규표현식으로 리뷰 상세보기 페이지로 오는 모든 요청을 가로챌 수 있도록  함

* refactor: getWrongDetailedReview 목서버 핸들러 및 관련 상수 삭제

- getDetailedReview에서 request를 분석해 http오류 여부를 결정함

* feat: queryClientWrapper 생성

- queryClientWrapper : msw를 사용한 jest 테스트에 queryWrapper로 사용

* test:리뷰 상세 페이지 api 요청 성공에 대한 테스트 추가

* fix: groupAccessCodeAtom의 기본값 원래대로 복구

* chore:queryClientWrapper 네이밍 표기법을  파스칼 케이스로 변경

* fix: 머지 충돌 방지를 위해 yarn.lock 삭제

* fix:  머지 시 yarn.lock 충돌 해결

* [FE] test: 리뷰 목록 페이지에 API 연동 테스트 추가 및 리팩토링 (#217)

* chore: 리뷰 목록 페이지 관련 컴포넌트 및 인터페이스, 파일 이름 변경

* refactor: api 엔드포인트 상수 적용

* refactor: useGetReviewList 훅으로 분리

* test: 리뷰 목록 페이지 api 연동 테스트 추가

* chore: msw 모킹 코드 제거

* chore: 경로 index 제거

* fix: 중복된 import 및 불필요한 핸들러 제거

* chore: 엔드포인트 상수 제거

* [FE] refactor: 리뷰 작성 페이지 리팩토링 (#219)

* refactor: 각 모달별로 상태와 동작을 관리하는 훅 분리

* refactor: 리뷰 작성 폼의 로직을 훅으로 분리

* refactor: 리뷰 작성 페이지에 분리한 훅 적용

* refactor: URL에서 reviewRequestCode를 추출하는 로직을 훅으로 분리

* chore: 불필요한 테스트용 코드 제거

* chore: ErrorModal을 닫을 때 errorMessage 상태도 초기값으로 변경하도록 수정

* [BE] feat: 헤더 존재 여부 검증 (#207)

* fix: 인터페이스와 구현체 어노테이션 일치

* feat: 헤더 검사 어노테이션

* feat: 헤더 밸리데이터

* feat: 컨트롤러에 헤더 검사

* feat: 헤더 검증 메시지 클라이언트에 전달

* fix: 누락된 `@Valid` 어노테이션 추가

* refactor: 요청이 null인 경우 핸들링

* chore: 테스트 이름 간결하게 변경

* chore: 소문자 컨벤션

* feat: ArgumentResolver를 활용한 헤더 검증

* feat: 공용 패키지로 이동 및 범용적으로 사용할 수 있도록 수정

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

* feat: ArgumentResolver 적용, Validator 삭제

* chore: 사용하지 않는 커스텀 예외 원복

* refactor: 헤더 존재하지 않는 경우 메시지 수정

* chore: 불필요한 `@Valid` 어노테이션 삭제

* refactor: 변수 추출

Co-authored-by: Yeongseo Na <[email protected]>

* fix: 컴파일 에러 해결

---------

Co-authored-by: Yeongseo Na <[email protected]>

* ci: index.html에 구글 애널리틱스 적용 (#226)

* [FE] ci: sentry 초기 설정 (#223)

* ci: sentry 초기 설정

* chore: gitignore에 env.sentry-build-plugin 추가

* ci: sentry 적용 프로젝트를 woowacoure-review-me로 변경, 로컬 환경 추적하도록 변경

* ci: sentry 적용 환경을 배포 환경으로 다시 변경

* ci: sentry에서 replay 관련 설정 삭제

---------

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

* [FE] refactor: LandingPage에 리액트 쿼리 적용 및 리팩토링 (#218)

* chore: LandingPage의 styles 파일 분리

* fix: POST 요청을 하는 함수의 이름을 post~로 수정

* feat: 그룹 데이터 생성 요청에 대한 MSW 핸들러 추가

* refactor: 모킹 데이터 값을 더 직관적으로 수정

* refactor: LandingPage를 ErrorSuspenseContainer가 감싸도록 수정

* refactor: URL을 얻어오는 API에 react-query 적용 및 API 호출 함수 이름 수정

* chore: LandingPage 하위 컴포넌트들의 index 파일 추가 및 적용

* refactor: groupAccessCode 관련 msw 핸들러 추가 및 에러 상태(없는 코드 입력, 서버 에러)에 따른 에러 메세지를 출력하도록 수정

* refactor: groupAccessCode에 알파벳 대소문자와 숫자만 올 수 있도록 수정

* refactor: LandingPage에서 ErrorSuspenseContainer를 제거하고 대신 URLGeneratorForm만을 감싸도록 수정

* refactor: Input 컴포넌트의 onChange 이벤트 타입 수정

* refactor: Input 컴포넌트에 name 속성 추가

* refactor: 수정된 경로 반영

* refactor: usePostDataForUrl 쿼리에서 mutation을 리턴하도록 수정

* refactor: URL을 성공적으로 생성한 이후 Input을 리셋하는 함수 추가

* chore: NOTE 주석 추가

* refactor: getIsValidGroupAccessCodeApi에서 400 외의 에러 처리를 기존의 createApiErrorMessage를 사용하도록 수정

* chore: 누락됐던 -Api suffix 반영

* [BE] Actuator 적용과 logback 설정 (#228)

* build: actuator 의존성 추가

* feat: 로그백 설정

* feat: submodule 적용

- actuator 설정을 서브 모듈에 저장

* style: 개행 및 주석 제거

* test: logback 설정 추가

* [FE] CD test (#233)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* [BE] 프로파일 분리, CD 스크립트 수정 (#235)

* feat: 프로파일 분리

* feat: 프로파일 분리

* cd: 프로파일 분리 cd 스크립트 수정

* fix: CD 스크립트 오타 수정 (#236)

* [FE] CD test 2 (#237)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* fix: sentry 재설정

* fix: sentry 설정 복구

* fix: cd 스크립트 오타 수정 (#238)

* [FE] CD TEST 3 (#239)

* ci: sentry 초기 설정

* chore: 서비스 타이틀 대문자로 변경

* chore: merge

* fix: sentry 재설정

* fix: sentry 설정 복구

* chore: 서비스 타이틀 변경

* [BE] build: Micrometer 의존성 추가 (#244)

* build: 마이크로미터 의존성 추가

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* chore: 서브모듈 업데이트

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

---------

Co-authored-by: hyeonjilee <[email protected]>
Co-authored-by: nayonsoso <[email protected]>

* [FE] feat: 공통 컴포넌트인 체크박스와 체크박스 아이템 제작 (#240)

* feat: 공통 체크박스 컴포넌트 작성

* feat: 체크박스에 레이블을 달 수 있는 CheckboxItem 컴포넌트 작성

* fix: style을 잘못 전달하던 문제 해결

* [BE] fix: CD 스크립트 수정 (#246)

* fix: CD 스크립트 수정

* chore: 저장 데이터 dev에서 활용할 수 있도록 수정

* [FE] refactor: LandingPage 경로 변경 (#249)

* refactor: LandingPage의 경로 변경

* refactor: App 에서 사이드바 주석 처리

* [BE] Swagger API 문서 업데이트 (#254)

* docs: 리뷰 api 문서를 위한 swagger 어노테이션 추가

* refactor: 사용하지 않는 dto 삭제

* docs: api 문서에 최소 및 최대 설정 안내 추가

* docs: 리뷰 그룹 api를 위한 swagger 어노테이션 추가

* refactor: Spring에서 제공하는 APPLICATION_JSON_VALUE 사용

* [BE] feat: 예외에 대한 로그 작성 (#255)

* feat: Controller advice 에 로깅 추가

* refactor: 스택 트레이스 로깅 추가

* feat: 리뷰그룹 생성시 길이 검증 로깅 추가

* feat: 답변 길이 검증 로깅 추가

* feat: 리뷰 그룹 코드 검증 검증 로깅 추가

* feat: 리뷰 조회 검증 검증 로깅 추가

* feat: 선택된 키워드 존재하지 않는 검증 로깅 추가

* feat: 중복 선택된 키워드 검증 로깅 추가

* feat: 키워드 조회 검증 로깅 추가

* feat: 선택 키워드 갯수 검증 로깅 추가

* feat: 선택된 질문 중복 검증 로깅 추가

* feat: 질문 조회 검증 로깅 추가

* feat: 중복 질문 검증 로깅 추가

* feat: 스프링 발생 예외 로깅에 메세지 추가

* feat: 인코딩 설정

* style: 개행 수정

Co-authored-by: Donghoon Lee <[email protected]>

* style: 개행 및 공백 수정

* refactor: 불필요한 검증 제거

- 선택된 키워드와 질문이 DB에 있는지를 validator 에서 검증한 후에도, repository.getById 를 할 때 한번 더 검증이 들어간다. 따라서 'DB에 있는지'에 대한 검증을 validator 에서 할 필요는 없다는 판단 하에 해당 로직을 삭제한다.

---------

Co-authored-by: Donghoon Lee <[email protected]>

* [FE] refactor:  Textarea를 사용하는 공통 장문형 답변 입력 컴포넌트 분리 (#252)

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

* refactor: longReviewItem의 로직을 커스텀 훅으로 분리

* refactor: longReviewItem으로 이름 변경 및 컴포넌트 구현

* chore: 기존의 ReviewItem 제거 및 리뷰 작성 페이지에 LongReviewItem 적용

* [FE] refactor: 공용 모달 훅 추가 및 LongReviewItem 리팩토링 (#258)

* feat: 모달 상태 관리 훅 추가

* refactor: LongReviewItem 컴포넌트가 외부의 event를 props로 받을 수 있도록 변경

* [FE] test: LandingPage에서 사용하는 API에 대한 테스트 작성 (#251)

* chore: 불필요한 Fragment 제거

* test: LandingPage에서 사용하는 api 테스트 추가

* [FE] refactor: 리뷰 작성 페이지에 react query를 적용하고 API 연동 테스트 작성 (#256)

* refactor: 리뷰 작성을 위한 데이터를 불러오는 로직에 react query 적용

* refactor: 리뷰 작성 후 게시 요청 로직에 useMutation 적용

* refactor: query key 상수화 및 리뷰 작성을 위한 데이터를 불러오는 로직을 useReviewForm에서 제거

* chore: 리뷰 작성 페이지에 ErrorSuspenseContainer 적용

* chore: styled component명 수정

* chore: 리뷰 작성을 위한 mock data를 변경된 api 형식에 맞게 수정

* chore: useGetDataToWrite가 더 많은 반환값을 제공하도록 수정

* test: useGetDataToWrite의 API 요청 테스트 작성

* chore: dataToWrite가 없는 경우 상태 기본값 지정

* chore: msw를 사용하여 리뷰 생성 post 요청 mocking

* chore: 리뷰 정보 mocking data 생성

* chore: useMutationReview가 UseMutationResult 타입 객체를 반환하도록 설정

* test: useMutateReview의 API 요청 테스트 작성

* chore: useGetDataToWrite의 반환값을 구조 분해 할당으로 사용할 수 있도록 수정

* chore: LongReviewItem 컴포넌트 적용

* [FE] fix: 질문 번호가 잘못 출력되는 오류 및 리뷰 작성 완료 시 잘못된 경로로 이동하는 오류 수정 (#265)

* fix: 질문 번호가 잘못 출력되는 오류 수정

* fix: 리뷰 작성 완료 시 잘못된 경로로 이동되는 문제 수정

* [BE] feat: 질문 리뷰이 이름으로 치환 (#262)

* chore: cd 테스트 확인 코드 작성 (#272)

* fix: 상세 내용 표시할 때 리뷰이 이름 치환 (#270)

* [FE] feat: 클립보드 복사 컴포넌트 구현 (#261)

* feat: 클립보드 복사 컴포넌트 구현

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

* fix: 부모 요소의 너비에 따라 CopyTextButton이 작아지는 문제 해결

* refactor: ReviewGroupDataModal 스타일 조정 - 전체 크기 지정 및 gap 조정

* chore: 불필요한 padding 제거

* chore: index 파일에 CopyTextButton 추가

---------

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

* [FE] chore: front_deploy를 develop에 반영 (#276)

* [FE] feat: 질문 작성 페이지 QuestionCard, ReviewWritingCard 공통 컴포넌트를 만들고, 슬라이더 방식의 기능 추가 (#247)

* chore: .gitignore에서 주석 제거

* feat: QuestionCard 컴포넌트 구현

* feat: ReviewWritingCard 컴포넌트 구현

* style: CSS 속성 순서 정렬

* refactor: 제목과 내용을 각각 Header와 Main 섹션으로 분리

* feat: 슬라이더 방식으로 질문 카드가 자연스럽게 전환되는 기능 추가

* design: pretendard 폰트 적용

* chore: 헤더 review me 대문자로 변경

* refactor: QuestionCard, ReviewWritingCard 폴더 위치 변경

- ReviewWritingFormPage의 components로 이동

* [FE] 질문 작정 페이지에 필요한 질문 목 데이터 및 카드의 상태 처리 (#263)

* [BE] fix: CD 스크립트 수정 (#246)

* fix: CD 스크립트 수정

* chore: 저장 데이터 dev에서 활용할 수…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FE] 에러, 로딩 페이지 구현 및 라우트에 errorElement 적용
4 participants