Skip to content

Conversation

@layout-SY
Copy link
Collaborator

@layout-SY layout-SY commented May 25, 2025

구현내용

  • 내가 참여한/생성한 프로젝트에 평가하기 링크 추가
  • 평가 할 멤버가 없는 경우 모달로 안내 후 이전 페이지로 이동

연관이슈

close #309

Summary by CodeRabbit

  • 신규 기능

    • 프로젝트 카드 및 참여 프로젝트 목록에 평가 버튼이 추가되어, 평가가 가능한 경우 평가 페이지로 이동할 수 있습니다.
    • 평가할 멤버가 없는 경우 모달로 안내 메시지가 표시됩니다.
  • 버그 수정

    • 알림 헤더 높이 스타일 오타 수정으로 레이아웃이 정상적으로 표시됩니다.
    • 프로젝트 목록 내 버튼 정렬 및 스타일이 개선되었습니다.
    • 참여 프로젝트 내 스킬 이미지 크기가 태블릿에서 더 크게 표시됩니다.
  • 기타

    • 여러 위치의 불필요한 콘솔 로그가 제거되었습니다.
    • 에러 발생 시 콘솔 로그가 error 레벨로 통일되어 에러 확인이 용이해졌습니다.
    • 일부 내부 데이터 구조에 평가 가능 여부 속성이 추가되었습니다.

@layout-SY layout-SY requested a review from YouD0313 May 25, 2025 09:13
@layout-SY layout-SY self-assigned this May 25, 2025
@layout-SY layout-SY added ⛏기능 기능 구현에 대한 라벨 🛠개선 성능 개선/리팩토링에 대한 라벨 labels May 25, 2025
@coderabbitai
Copy link

coderabbitai bot commented May 25, 2025

"""

Walkthrough

이 변경사항은 "참여한/생성한" 프로젝트 카드에 평가하기 버튼을 조건부로 노출하고, 평가 페이지에서 평가할 멤버가 없을 경우 모달을 띄운 후 이전 페이지로 이동하는 기능을 추가합니다. 관련 스타일, 모델, 상수, 훅, 페이지 컴포넌트가 수정 및 확장되었습니다.

Changes

파일/경로 그룹 변경 요약
src/components/user/manageProjects/Card.styled.ts
src/components/user/mypage/joinedProject/Project.styled.ts
평가하기 버튼(EvaluateButton) styled 컴포넌트 추가, 스타일 일부 수정
src/components/user/manageProjects/Card.tsx
src/components/user/mypage/joinedProject/Project.tsx
프로젝트 카드/참여 프로젝트 카드에 canEvaluate 조건부 평가하기 버튼 렌더링 추가
src/components/user/mypage/joinedProject/MyJoinProjects.tsx Project 컴포넌트에 canEvaluate prop 전달 추가
src/models/manageMyProject.ts
src/models/userProject.ts
각 프로젝트 모델에 canEvaluate boolean 속성 추가
src/pages/user/evaluation/Evaluation.tsx 평가 대상 없을 때 모달 표시 및 이전 페이지 이동 로직 추가, useGetCompletedEvaluation 훅 사용 방식 변경
src/hooks/user/evaluationHooks/useGetEvaluation.ts 파라미터 구조 변경, 평가 대상 없을 때 모달 및 뒤로가기 처리 로직 추가
src/constants/user/modalMessage.ts 평가할 멤버 없음 메시지 상수 추가
src/components/common/header/Notification/Notification.styled.ts
src/components/user/mypage/joinedProject/MyJoinProjects.styled.ts
스타일 선택자 및 속성 오타 수정
src/api/http.api.ts
src/hooks/user/CommentHooks/usePatchReply.ts
src/hooks/user/CommentHooks/usePostComment.ts
src/hooks/user/CommentHooks/usePutComment.ts
src/hooks/user/ProjectHooks/useApplyProject.ts
src/hooks/user/ProjectHooks/useCreateProject.ts
src/hooks/user/ProjectHooks/useUpdateProject.ts
src/hooks/user/useNotification.ts
console.log → console.error로 로깅 레벨 변경 및 디버깅 로그 제거
src/components/user/customerService/inquiry/Inquiry.tsx
src/components/user/mypage/myProfile/profile/Profile.tsx
디버깅용 console.log 제거

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant ProjectCard
    participant EvaluationPage
    participant useGetCompletedEvaluation
    participant Modal

    User->>ProjectCard: 프로젝트 카드 조회
    ProjectCard-->>User: canEvaluate가 true면 평가하기 버튼 노출
    User->>EvaluationPage: 평가하기 버튼 클릭
    EvaluationPage->>useGetCompletedEvaluation: 평가 대상 데이터 요청
    useGetCompletedEvaluation-->>EvaluationPage: 평가 대상 데이터 반환
    alt 평가 대상 없음
        EvaluationPage->>Modal: MODAL_MESSAGE.noMemberToEvaluate로 모달 오픈
        Modal-->>EvaluationPage: 확인 시 이전 페이지로 이동
    else 평가 대상 존재
        EvaluationPage-->>User: 평가 폼 렌더링
    end
Loading

Assessment against linked issues

Objective Addressed Explanation
"참여한/생성한" 프로젝트 카드에 "평가하기" 버튼 구현 (#309)
평가 대상이 없을 경우 모달 띄우고, 페이지 이전으로 이동 (#309)

Possibly related PRs

Suggested reviewers

  • YouD0313

Poem

🐰
프로젝트 끝! 평가할 시간,
버튼이 반짝, 평가 링크 등장.
멤버가 없으면, 모달이 뿅!
한 걸음 뒤로, 걱정은 뚝!
코드도 마음도 한 뼘 더 성장!

( ˘ ³˘)♥

"""

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

npm warn config production Use --omit=dev instead.
npm error Exit handler never called!
npm error This is an error with npm itself. Please report this error at:
npm error https://github.com/npm/cli/issues
npm error A complete log of this run can be found in: /.npm/_logs/2025-05-25T14_35_06_026Z-debug-0.log


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 56d5034 and 6773e8e.

📒 Files selected for processing (3)
  • src/hooks/user/evaluationHooks/useGetEvaluation.ts (1 hunks)
  • src/pages/user/evaluation/Evaluation.tsx (1 hunks)
  • src/pages/user/projectDetail/ProjectDetail.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/pages/user/evaluation/Evaluation.tsx
  • src/hooks/user/evaluationHooks/useGetEvaluation.ts
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/pages/user/projectDetail/ProjectDetail.tsx (1)
src/constants/user/modalMessage.ts (1)
  • MODAL_MESSAGE (1-29)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: accessibility-test
🔇 Additional comments (1)
src/pages/user/projectDetail/ProjectDetail.tsx (1)

28-31: 데이터 fetching 상태를 고려한 개선된 에러 처리 로직입니다.

로딩 상태와 fetching 상태를 함께 확인하여 데이터 로딩이 완전히 완료된 후에만 실패 모달을 표시하도록 개선한 것은 훌륭한 변경사항입니다. 이를 통해 다음과 같은 이점을 얻을 수 있습니다:

  1. Race condition 방지: 데이터 로딩 중 조기 모달 표시를 방지
  2. 사용자 경험 개선: 실제 에러가 발생한 경우에만 모달 표시
  3. React 베스트 프랙티스 준수: 의존성 배열에 사용되는 모든 값 포함

의존성 배열에 isLoadingisFetching을 추가한 것도 React Hook 규칙을 올바르게 따른 것입니다.

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (3)
src/components/user/manageProjects/Card.tsx (1)

21-28: 평가하기 버튼의 조건부 렌더링이 올바르게 구현되었습니다.

canEvaluate 플래그에 따라 평가하기 버튼을 표시하는 로직이 적절히 구현되었습니다. 라우팅 경로 구성도 올바릅니다.

다만 key prop이 불필요합니다. 이 컴포넌트는 리스트 아이템이 아니므로 key를 제거할 수 있습니다.

-          <S.EvaluateButton
-            key={project.id}
-            to={`${ROUTES.evaluation}/${project.id}`}
-          >
+          <S.EvaluateButton to={`${ROUTES.evaluation}/${project.id}`}>
src/components/user/mypage/joinedProject/Project.tsx (1)

42-49: 평가 버튼의 불필요한 key 속성을 제거하세요.

조건부 평가 버튼 렌더링이 잘 구현되었지만, key 속성이 불필요합니다.

-          <S.EvaluateButton
-            key={project.id}
-            to={`${ROUTES.evaluation}/${project.id}`}
-          >
+          <S.EvaluateButton to={`${ROUTES.evaluation}/${project.id}`}>

key 속성은 리스트 렌더링 시에만 필요하며, 단일 조건부 렌더링에서는 불필요합니다.

src/components/user/mypage/joinedProject/Project.styled.ts (1)

144-144: SkillArea 컴포넌트에 스타일을 추가하거나 제거를 고려하세요.

빈 스타일 컴포넌트가 추가되었지만 실제 스타일이 정의되지 않았습니다.

필요에 따라 다음 중 하나를 선택하세요:

옵션 1: 스타일 추가 (레이아웃 목적이 있는 경우)

-export const SkillArea = styled.div``;
+export const SkillArea = styled.div`
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  gap: 0.6rem;
+`;

옵션 2: 컴포넌트 제거 (단순 래퍼인 경우)

-export const SkillArea = styled.div``;

그리고 TSX 파일에서 일반 div를 사용합니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 36a4478 and 56d5034.

📒 Files selected for processing (22)
  • src/api/http.api.ts (1 hunks)
  • src/components/common/header/Notification/Notification.styled.ts (1 hunks)
  • src/components/user/customerService/inquiry/Inquiry.tsx (0 hunks)
  • src/components/user/manageProjects/Card.styled.ts (3 hunks)
  • src/components/user/manageProjects/Card.tsx (2 hunks)
  • src/components/user/mypage/joinedProject/MyJoinProjects.styled.ts (1 hunks)
  • src/components/user/mypage/joinedProject/MyJoinProjects.tsx (1 hunks)
  • src/components/user/mypage/joinedProject/Project.styled.ts (3 hunks)
  • src/components/user/mypage/joinedProject/Project.tsx (2 hunks)
  • src/components/user/mypage/myProfile/profile/Profile.tsx (0 hunks)
  • src/constants/user/modalMessage.ts (1 hunks)
  • src/hooks/user/CommentHooks/usePatchReply.ts (1 hunks)
  • src/hooks/user/CommentHooks/usePostComment.ts (1 hunks)
  • src/hooks/user/CommentHooks/usePutComment.ts (1 hunks)
  • src/hooks/user/ProjectHooks/useApplyProject.ts (1 hunks)
  • src/hooks/user/ProjectHooks/useCreateProject.ts (1 hunks)
  • src/hooks/user/ProjectHooks/useUpdateProject.ts (1 hunks)
  • src/hooks/user/evaluationHooks/useGetEvaluation.ts (1 hunks)
  • src/hooks/user/useNotification.ts (1 hunks)
  • src/models/manageMyProject.ts (1 hunks)
  • src/models/userProject.ts (1 hunks)
  • src/pages/user/evaluation/Evaluation.tsx (1 hunks)
💤 Files with no reviewable changes (2)
  • src/components/user/customerService/inquiry/Inquiry.tsx
  • src/components/user/mypage/myProfile/profile/Profile.tsx
🧰 Additional context used
🧬 Code Graph Analysis (4)
src/components/user/manageProjects/Card.tsx (1)
src/constants/user/routes.ts (1)
  • ROUTES (1-32)
src/pages/user/evaluation/Evaluation.tsx (1)
src/hooks/useModal.ts (1)
  • useModal (3-36)
src/components/user/mypage/joinedProject/Project.tsx (2)
src/models/userProject.ts (1)
  • JoinedProject (4-13)
src/constants/user/routes.ts (1)
  • ROUTES (1-32)
src/hooks/user/evaluationHooks/useGetEvaluation.ts (3)
src/hooks/queries/user/keys.ts (1)
  • ProjectMemberListEval (43-45)
src/api/evaluation.api.ts (1)
  • getEvaluation (14-22)
src/constants/user/modalMessage.ts (1)
  • MODAL_MESSAGE (1-29)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Run Chromatic
🔇 Additional comments (31)
src/components/common/header/Notification/Notification.styled.ts (1)

29-29: height 속성값 오타 수정
유효하지 않은 fix-content에서 올바른 fit-content로 변경하신 것은 적절합니다.

src/hooks/user/ProjectHooks/useCreateProject.ts (1)

30-33: 에러 로깅 표준화 확인
onError 콜백에서 console.error로 변경하여 심각도를 명확히 구분한 점이 적절합니다.

src/hooks/user/CommentHooks/usePostComment.ts (1)

16-18: 에러 로깅 일관성 승인
onError 핸들러에서 console.error를 사용해 다른 훅들과 통일된 로그 레벨을 적용했습니다.

src/hooks/user/CommentHooks/usePatchReply.ts (1)

20-22: 에러 로깅 레벨 업그레이드
onError에서 console.error로 변경하여 오류 탐지·분석 시 가독성을 높였습니다.

src/api/http.api.ts (1)

32-34: 요청 인터셉터 에러 로깅 개선
Axios 요청 인터셉터의 에러 로그를 console.error로 변경해 심각도를 명확히 표현했습니다.

src/hooks/user/ProjectHooks/useApplyProject.ts (1)

37-39: 에러 로깅 일관성 검증
onError 콜백에서 console.error를 활용해 다른 프로젝트 훅과 동일한 로깅 방식을 유지하고 있습니다.

src/models/userProject.ts (1)

12-12: 새로운 평가 기능 지원을 위한 모델 확장이 적절합니다.

canEvaluate 속성 추가가 평가 버튼의 조건부 렌더링을 위해 적절하게 구현되었습니다.

src/constants/user/modalMessage.ts (1)

28-28: 평가 멤버 부재 시 사용자 경험을 위한 적절한 메시지 추가입니다.

새로운 모달 메시지가 기존 패턴과 일관되게 추가되었으며, 평가할 멤버가 없는 상황에 대한 명확한 안내를 제공합니다.

src/hooks/user/useNotification.ts (1)

65-65: 에러 로깅 개선이 적절합니다.

console.log에서 console.error로 변경하여 에러 가시성을 향상시키고 디버깅에 도움이 됩니다.

src/hooks/user/CommentHooks/usePutComment.ts (1)

16-16: 에러 로깅 표준화가 잘 적용되었습니다.

mutation의 onError 콜백에서 console.error 사용으로 에러 처리가 개선되었습니다.

src/hooks/user/ProjectHooks/useUpdateProject.ts (1)

33-33: 에러 로깅 개선 승인

console.log에서 console.error로 변경한 것은 올바른 개선사항입니다. 에러 메시지가 개발자 도구에서 적절한 레벨로 표시되어 디버깅에 도움이 됩니다.

src/models/manageMyProject.ts (1)

22-22: 평가 기능을 위한 인터페이스 확장 승인

canEvaluate 속성 추가가 적절합니다. 이 부울 속성은 평가 기능의 조건부 렌더링을 위한 명확한 인터페이스 설계입니다.

src/components/user/mypage/joinedProject/MyJoinProjects.tsx (1)

30-30: 평가 기능 props 전달 승인

canEvaluate prop을 Project 컴포넌트에 전달하는 로직이 적절합니다. 모델 데이터를 직접 전달하여 컴포넌트 간 데이터 흐름이 명확하고 일관성 있게 구현되었습니다.

src/components/user/mypage/joinedProject/MyJoinProjects.styled.ts (1)

48-48: CSS 선택자 구체성 개선 승인

CSS 선택자를 a에서 & > a로 변경한 것은 좋은 개선사항입니다. 직접 자식 앵커 요소만 대상으로 하여 중첩된 요소들과의 스타일 충돌을 방지하고, 평가 버튼 등 새로운 인터랙티브 요소와의 호환성을 높입니다.

src/components/user/manageProjects/Card.tsx (1)

5-5: 라우트 상수 import가 적절히 추가되었습니다.

평가 페이지로의 링크 생성을 위해 필요한 import가 올바르게 추가되었습니다.

src/pages/user/evaluation/Evaluation.tsx (2)

6-7: 모달 관련 import가 적절히 추가되었습니다.

Modal 컴포넌트와 useModal 훅이 올바르게 import되어 모달 기능을 지원합니다.


12-18: 모달 상태 관리와 훅 호출이 올바르게 구현되었습니다.

useModal 훅을 통한 모달 상태 관리와 useGetCompletedEvaluation 훅의 새로운 파라미터 구조가 적절히 적용되었습니다.

src/components/user/manageProjects/Card.styled.ts (3)

1-1: Link import가 적절히 추가되었습니다.

EvaluateButton 컴포넌트에서 사용할 react-router-dom의 Link가 올바르게 import되었습니다.


35-35: ButtonWrapper의 레이아웃이 적절히 수정되었습니다.

justify-contentspace-between으로 변경하여 평가하기 버튼과 모집 종료 라벨을 양쪽 끝에 배치하는 것이 적절합니다.


94-107: EvaluateButton 스타일이 일관성 있게 구현되었습니다.

평가하기 버튼의 스타일이 기존 RecruitmentEnd 버튼과 일관성을 유지하면서도 구별되는 색상을 사용하고 있습니다. 반응형 디자인도 적절히 고려되었습니다.

src/hooks/user/evaluationHooks/useGetEvaluation.ts (3)

4-6: 필요한 import들이 적절히 추가되었습니다.

모달 처리와 네비게이션을 위한 import들이 올바르게 추가되었습니다.


13-16: 훅 시그니처 변경이 적절히 구현되었습니다.

객체 파라미터를 받도록 변경하여 확장 가능성을 높였습니다. 인터페이스 이름 오타만 수정하면 됩니다.

-}: useGetCompletedEvaulationProps) => {
+}: useGetCompletedEvaluationProps) => {

17-22: 쿼리 설정이 올바르게 업데이트되었습니다.

navigate 훅 사용과 쿼리 키, 쿼리 함수의 projectId 사용이 적절합니다.

src/components/user/mypage/joinedProject/Project.tsx (4)

5-5: ROUTES 상수 임포트가 적절히 추가되었습니다.

평가 페이지로의 라우팅을 위해 필요한 임포트가 올바르게 추가되었습니다.


9-9: 인터페이스에 옵션 속성이 적절히 추가되었습니다.

canEvaluate 속성이 옵션으로 정의되어 기존 코드와의 호환성을 유지하면서 새로운 기능을 지원합니다.


12-12: 함수 시그니처가 올바르게 업데이트되었습니다.

구조 분해 할당을 통해 새로운 canEvaluate prop을 받도록 적절히 수정되었습니다.


34-41: 스킬 영역 래핑이 적절히 구현되었습니다.

기존 스킬 렌더링 로직을 SkillArea 컴포넌트로 래핑하여 레이아웃 구조를 개선했습니다. 기존 로직이 그대로 유지되어 기능에 문제가 없습니다.

src/components/user/mypage/joinedProject/Project.styled.ts (4)

1-1: Link 임포트가 적절히 추가되었습니다.

EvaluateButton 스타일 컴포넌트를 위해 필요한 react-router-dom의 Link 임포트가 올바르게 추가되었습니다.


119-119: 레이아웃 개선을 위한 스타일 속성이 적절히 추가되었습니다.

justify-content: space-between을 추가하여 스킬 영역과 평가 버튼 사이의 공간 배치가 개선되었습니다.


134-135: 태블릿 뷰 이미지 크기 조정이 적절합니다.

20px에서 27px로 이미지 크기를 증가시켜 태블릿 화면에서의 가독성을 개선했습니다.


146-160: 평가 버튼 스타일링이 잘 구현되었습니다.

일관된 디자인 시스템을 따르며, 반응형 디자인이 적절히 적용되었습니다. flex-shrink: 0margin-left: auto를 통해 레이아웃이 올바르게 설정되었습니다.

],
};

console.log(userInfoData.averageScores);
Copy link
Collaborator

Choose a reason for hiding this comment

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

삭제!

eventSource.addEventListener('alarm', (e) => {
const event = e as MessageEvent;
try {
console.log(JSON.parse(event.data));
Copy link
Collaborator

Choose a reason for hiding this comment

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

삭제!

@layout-SY layout-SY merged commit 26b51cc into develop May 25, 2025
4 checks passed
@layout-SY layout-SY deleted the feat/#309 branch May 25, 2025 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

⛏기능 기능 구현에 대한 라벨 🛠개선 성능 개선/리팩토링에 대한 라벨

Projects

None yet

Development

Successfully merging this pull request may close these issues.

평가하기 링크 적용

3 participants