-
Notifications
You must be signed in to change notification settings - Fork 1
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
Feat: #192 링크 수정 기능 구현 #193
Conversation
Walkthrough
Changes
Assessment against linked issues
Possibly related PRs
Suggested labels
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this 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
🧹 Outside diff range and nitpick comments (8)
src/hooks/query/useUserQuery.ts (1)
24-39
: LGTM:useUpdateLinks
함수가 잘 구현되었습니다.새로운
useUpdateLinks
함수가useUpdateUserInfo
와 일관된 패턴을 따르고 있어 좋습니다. 링크 수정 기능을 위한 적절한 에러 및 성공 메시지를 포함하고 있으며, 쿼리 무효화를 통해 UI가 업데이트된 링크를 반영할 수 있도록 하고 있습니다.일관성을 위해
useUpdateUserInfo
함수와 마찬가지로useUpdateLinks
함수 앞에도 빈 줄을 추가하는 것이 좋겠습니다:} + export function useUpdateLinks() { const queryClient = useQueryClient(); const { toastSuccess, toastError } = useToast(); const linksQueryKey = generateLinksQueryKey();
src/services/userService.ts (2)
19-30
: 새로운updateLinks
함수가 잘 구현되었습니다.함수의 구조와 문서화가 파일의 다른 함수들과 일관성을 유지하고 있습니다.
authAxios
를 사용하여 인증된 요청을 보내는 것이 적절합니다. PATCH 메서드를 사용하여 기존 리소스를 업데이트하는 것도 RESTful 원칙에 부합합니다.다만, 에러 처리를 개선하는 것을 고려해 보시기 바랍니다. 예를 들어:
export async function updateLinks(links: EditUserLinksForm, axiosConfig: AxiosRequestConfig = {}) { try { return await authAxios.patch('/user/links', links, axiosConfig); } catch (error) { console.error('링크 업데이트 중 오류 발생:', error); throw error; } }이렇게 하면 에러 로깅이 가능하며, 필요한 경우 에러를 변환하거나 추가 처리를 할 수 있습니다.
Line range hint
1-30
: PR 목표와 일치하는 변경사항입니다.이 변경사항은 PR의 주요 목표인 링크 수정 기능 구현을 잘 달성하고 있습니다.
updateLinks
함수의 추가로 사용자 프로필 설정 페이지에서 링크를 수정할 수 있는 네트워크 로직이 구현되었습니다.코드 구조와 스타일이 기존 파일의 패턴을 잘 따르고 있어 일관성이 유지되고 있습니다. 또한, 이 구현은 향후 백엔드 팀과의 논의를 통해 추가 API(링크 추가 및 삭제)를 구현할 때도 쉽게 확장할 수 있는 구조를 가지고 있습니다.
향후 리팩토링 시 고려할 사항:
- 링크 추가 및 삭제 기능을 위한 추가 API 구현
- 에러 처리 및 로깅 강화
- 단위 테스트 추가 (현재 PR에서 언급된 MSW 모킹 함수 활용)
src/utils/queryKeyGenerator.ts (1)
27-35
: LGTM: generateLinksQueryKey 함수 추가, 작은 개선 제안generateLinksQueryKey 함수의 추가는 적절해 보입니다. 기존 함수들과 일관된 패턴을 따르고 있으며, PR의 목적에 부합합니다.
한 가지 작은 제안: JSDoc 주석에 함수의 반환 값에 대한 더 구체적인 설명을 추가하면 좋을 것 같습니다.
JSDoc 주석을 다음과 같이 수정하는 것을 고려해보세요:
/** * 유저 링크 queryKey 생성 함수 * * @export - * @returns {(string | number)[]} + * @returns {string[]} 유저 링크에 대한 queryKey 배열 */src/stores/useStore.ts (3)
23-23
: UserStore 타입 변경 승인 및 개선 제안editUserInfo 메서드의 시그니처 변경은 적절합니다. EditUserInfoRequest와 EditUserLinksForm 두 가지 타입을 모두 허용함으로써 사용자 정보 업데이트에 더 큰 유연성을 제공합니다.
타입 안전성을 더욱 높이기 위해, 다음과 같이 유니온 타입을 별도로 정의하는 것을 고려해 보세요:
type UserInfoUpdate = EditUserInfoRequest | EditUserLinksForm; // 그리고 메서드 시그니처를 다음과 같이 변경: editUserInfo: (newUserInfo: UserInfoUpdate) => void;이렇게 하면 코드의 가독성과 유지보수성이 향상될 수 있습니다.
93-96
: editUserInfo 메서드 구현 변경 승인 및 개선 제안editUserInfo 메서드의 구현 변경은 적절합니다. EditUserInfoRequest와 EditUserLinksForm 두 가지 타입을 모두 처리할 수 있도록 하여 유연성을 제공합니다.
다만, 다음과 같이 업데이트 유형에 따라 다르게 처리하는 방법을 고려해 보세요:
editUserInfo: (newUserInfo: EditUserInfoRequest | EditUserLinksForm) => set((state) => { if ('links' in newUserInfo) { // EditUserLinksForm 처리 return { userInfo: { ...state.userInfo, links: newUserInfo.links }, }; } else { // EditUserInfoRequest 처리 return { userInfo: { ...state.userInfo, ...newUserInfo }, }; } }),이렇게 하면 각 업데이트 유형에 대해 더 명확하고 안전한 처리가 가능합니다.
Line range hint
1-146
: 전체 리뷰 요약 및 PR 목표 달성 평가이 PR은 링크 수정 기능 구현이라는 목표를 성공적으로 달성했습니다. 주요 변경 사항은 다음과 같습니다:
- EditUserLinksForm 타입 추가로 링크 수정 기능 지원
- editUserInfo 메서드의 시그니처 및 구현 변경으로 링크 수정 처리 가능
이러한 변경으로 사용자 프로필 설정 페이지에서 링크를 수정할 수 있는 기능이 구현되었습니다.
향후 개선 사항:
- 타입 안전성 강화를 위한 유니온 타입 정의
- 업데이트 유형에 따른 차별화된 처리 로직 구현
- 링크 추가 및 삭제 API 구현 검토 (백엔드 팀과 협의 필요)
전반적으로 PR의 목표를 잘 달성했으며, 제안된 개선 사항을 적용하면 코드 품질과 유지보수성이 더욱 향상될 것입니다.
src/mocks/services/userServiceHandler.ts (1)
54-82
: 구현이 전반적으로 양호하나 몇 가지 개선 사항이 있습니다.링크 수정 API 엔드포인트의 구현이 전반적으로 잘 되어 있습니다. 인증 확인, 사용자 ID 추출, 사용자 유효성 검사, 링크 업데이트 등의 주요 기능이 포함되어 있습니다.
개선을 위한 제안:
- 오류 처리를 더 구체화하세요. 예를 들어, 잘못된 링크 형식에 대한 검증을 추가할 수 있습니다.
- 응답에 업데이트된 링크를 포함하여 클라이언트가 변경 사항을 확인할 수 있도록 하는 것을 고려해보세요.
- 더미 토큰 로직에 대한 TODO 주석(62-66줄)을 기억하고 프로덕션 전에 반드시 제거하세요.
이러한 개선 사항을 구현하시겠습니까? 필요하다면 코드 예시를 제공해 드릴 수 있습니다.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (9)
- src/components/user/auth-form/LinkContainer.tsx (3 hunks)
- src/hooks/query/useUserQuery.ts (2 hunks)
- src/mocks/services/userServiceHandler.ts (2 hunks)
- src/pages/setting/UserSettingPage.tsx (1 hunks)
- src/pages/user/SignUpPage.tsx (1 hunks)
- src/services/userService.ts (2 hunks)
- src/stores/useStore.ts (3 hunks)
- src/types/UserType.tsx (1 hunks)
- src/utils/queryKeyGenerator.ts (2 hunks)
🧰 Additional context used
🔇 Additional comments (19)
src/hooks/query/useUserQuery.ts (2)
3-5
: LGTM: 임포트 변경이 적절합니다.새로운
useUpdateLinks
함수에 필요한updateLinks
와generateLinksQueryKey
를 임포트하고,EditUserLinksForm
타입을 추가한 것이 적절합니다.
Line range hint
1-39
: 전반적인 변경 사항이 PR 목표와 잘 부합합니다.이 PR의 주요 목표인 링크 수정 기능 구현이
useUpdateLinks
함수를 통해 잘 달성되었습니다. 이 함수는 기존의useUpdateUserInfo
함수와 일관된 패턴을 따르고 있어, 코드의 일관성과 가독성을 유지하고 있습니다.주요 변경 사항:
- 필요한 임포트 추가
useUpdateLinks
함수 구현- 적절한 에러 처리 및 성공 메시지 포함
- 쿼리 무효화를 통한 UI 업데이트 보장
이러한 변경 사항들은 사용자 프로필 설정 페이지에서 링크를 수정할 수 있게 하는 #192 이슈의 요구사항을 충족시키고 있습니다.
다음 스크립트를 실행하여
useUpdateLinks
함수가 다른 파일에서 올바르게 사용되고 있는지 확인해 보세요:✅ Verification successful
전반적인 변경 사항이 PR 목표와 잘 부합합니다.
useUpdateLinks
함수가LinkContainer.tsx
에서 올바르게 임포트되고 사용되고 있음을 확인했습니다. 모든 사용 사례가 기대한 대로 구현되어 있으며, 코드의 일관성과 기능이 잘 유지되고 있습니다.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the usage of useUpdateLinks function # Test: Search for the function usage rg --type typescript 'useUpdateLinks'Length of output: 72
Script:
#!/bin/bash # Description: Verify the usage of useUpdateLinks function by searching in .ts and .tsx files # Search for the function usage in TypeScript files rg 'useUpdateLinks' -g '*.ts' -g '*.tsx'Length of output: 321
src/types/UserType.tsx (1)
25-25
: LGTM! 새로운 타입 정의가 PR 목표와 일치합니다.
EditUserLinksForm
타입의 추가는 링크 수정 기능 구현이라는 PR 목표에 부합합니다. 이 타입은User
타입에서links
속성만을 선택하여 사용자 링크 편집에 필요한 데이터를 정확히 표현합니다. 이는 타입스크립트의 모범 사례를 따르고 있으며, 코드의 타입 안정성을 향상시킵니다.src/services/userService.ts (1)
3-3
: import 문이 적절히 수정되었습니다.
EditUserLinksForm
타입이 추가되어 새로운updateLinks
함수와 일관성을 유지하고 있습니다. 기존 import 패턴을 따르고 있어 코드의 일관성도 유지되고 있습니다.src/utils/queryKeyGenerator.ts (2)
7-7
: LGTM: queryKeys 객체에 links 추가queryKeys 객체에 'links' 항목을 추가한 것은 적절해 보입니다. 이는 기존 구조와 일관성을 유지하면서 PR의 목적인 링크 수정 기능 구현과 잘 부합합니다.
Line range hint
1-35
: 전반적인 변경 사항에 대한 평가: 잘 구현되었습니다이 PR에서 추가된 변경 사항들은 전반적으로 잘 구현되었습니다:
- queryKeys 객체에 'links' 항목 추가
- generateLinksQueryKey 함수 구현
두 변경 사항 모두 기존 코드 구조와 스타일을 잘 따르고 있으며, PR의 목적인 링크 수정 기능 구현에 부합합니다. 코드는 일관성 있게 작성되었고, 새로운 기능을 위한 준비가 잘 되어 있습니다.
다만, JSDoc 주석에 대한 작은 개선 제안을 고려해 주시기 바랍니다.
src/stores/useStore.ts (1)
5-5
: import 문 업데이트 승인EditUserLinksForm 타입을 import 문에 추가한 것은 적절합니다. 이는 editUserInfo 메서드의 시그니처 변경과 일치하며, 링크 수정 기능 구현을 위해 필요한 변경사항입니다.
src/pages/setting/UserSettingPage.tsx (1)
116-116
: 변경사항이 적절해 보입니다.
LinkContainer
컴포넌트에page="UserSetting"
prop이 추가되었습니다. 이는 PR의 목표인 링크 수정 기능 구현과 일치합니다.다만,
LinkContainer
컴포넌트가 이 새로운 prop을 올바르게 처리하는지 확인해 주세요. 다음 스크립트를 실행하여LinkContainer
컴포넌트의 구현을 확인할 수 있습니다:src/mocks/services/userServiceHandler.ts (1)
7-7
: LGTM: 임포트 문 업데이트가 적절합니다.
EditUserLinksForm
타입을 임포트에 추가한 것은 새로운 링크 수정 API 엔드포인트와 일치하며 적절합니다.src/pages/user/SignUpPage.tsx (1)
136-136
: LinkContainer에 'page' prop 추가에 대한 검토이 변경은 기능 구현의 일부로 보이며 승인됩니다. 그러나 몇 가지 고려사항이 있습니다:
PR 목표는 프로필 설정 페이지의 링크 수정 기능 구현을 언급하고 있습니다. 왜 이 변경이 회원가입 페이지에서 이루어졌는지 설명해 주실 수 있나요?
LinkContainer 컴포넌트가 사용되는 다른 페이지들에서도 유사한 변경이 필요한지 확인해 주세요. 일관성을 유지하는 것이 중요합니다.
다음 스크립트를 실행하여 LinkContainer 컴포넌트의 다른 사용 사례를 확인해 주세요:
✅ Verification successful
LinkContainer의 다른 사용 사례 검색을 위한 스크립트 수정 요청
이전 스크립트에서
--type typescript
가 인식되지 않아 오류가 발생했습니다. 다음과 같이 수정된 스크립트를 실행해 주세요:
LinkContainer의 'page' prop 추가 검증 완료
LinkContainer에 'page' prop을 추가한 변경 사항은 다른 페이지들에서도 일관되게 사용되고 있음을 확인했습니다. 따라서 해당 변경은 승인됩니다.
src/pages/setting/UserSettingPage.tsx
에서도page="UserSetting"
으로 사용되고 있습니다.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # LinkContainer 컴포넌트의 다른 사용 사례 검색 rg --type typescript --type tsx "LinkContainer" -g '!src/pages/user/SignUpPage.tsx'Length of output: 118
Script:
#!/bin/bash # LinkContainer 컴포넌트의 다른 사용 사례 검색 rg "LinkContainer" --glob "*.ts" --glob "*.tsx" -g '!src/pages/user/SignUpPage.tsx'Length of output: 525
src/components/user/auth-form/LinkContainer.tsx (9)
5-5
: Spinner 컴포넌트 임포트 추가 확인Spinner 컴포넌트를 올바르게 임포트하셨습니다.
7-9
: 필요한 훅과 타입 임포트 추가
useUpdateLinks
,useStore
,EditUserLinksForm
을 올바르게 임포트하셨습니다.
13-13
:page
프로퍼티 추가로 인한 타입 업데이트
page
프로퍼티가 추가되어LinkContainerProps
타입이 업데이트되었습니다.다른 모든
LinkContainer
컴포넌트 사용 부분에서page
프로퍼티가 올바르게 전달되고 있는지 확인해주세요.
16-16
:LinkContainer
컴포넌트에page
프로퍼티 추가
LinkContainer
컴포넌트에page
프로퍼티가 추가되어 필요에 따라 다른 동작을 수행할 수 있게 되었습니다.
18-18
: 스토어에서editUserInfo
액션 가져오기
editUserInfo
액션을 스토어에서 올바르게 가져오셨습니다.
23-23
: 로딩 상태 관리를 위한isLoading
상태 추가비동기 작업 중 로딩 상태를 관리하기 위한
isLoading
상태가 추가되었습니다.
25-25
:updateLinksMutate
함수 사용 준비링크 업데이트를 위한
updateLinksMutate
함수를 가져오셨습니다.
84-91
: 로딩 스피너 및 오버레이 적용 확인로딩 상태에서 화면에 오버레이와 스피너가 표시되도록 구현되었습니다.
129-129
: 입력 필드와 버튼에disabled
속성 추가로딩 중에 입력 필드와 버튼이 비활성화되도록
disabled={isLoading}
속성이 추가되었습니다.Also applies to: 138-138
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
리뷰 완료했습니다. 궁금한 점 있으시면 편하게 말씀해주세요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수정하느라 고생 많으셨습니다!
@Seok93 리뷰 감사합니다! |
* Config: #3 누락된 환경 설정 내용 추가 1. react query eslint 추가 2. 파일 시스템 구조 추가 : stores, types * Rename: common 디렉토리를 components 디렉토리 하위로 이동 1. common 디렉토리 이동 2. common 절대 경로 설정 삭제 (vite, ts) * Config: #10 routes 절대 경로 추가 * Design: #10 router 설정에 필요한 페이지 컴포넌트 추가 * Design: #10 router 설정에 필요한 layout 컴포넌트 골격 추가 * Feat: #10 로그인 전, 후에만 접근 가능하도록 제한하는 Router 추가 * Feat: #10 Router 설정 및 추가 * Config: #13 tailwind 전역 변수 추가 * Config: #13 공용 변수 정의 추가 * Config: #13 tailwind 속성명 규칙화 * Config: #13 tailwind 속성명 규칙화 * Config: #13 tailwind 속성 확장 * Config: #13 크기 자율성을 위해 contents size 설정 삭제 * Config: tailwind 유틸리티 클래스 자동 정렬 기능 추가 * Feat: #16 공용 Header 컴포넌트 UI 작성 * Fix: #16 tailwind CSS 중복된 속성명 구별을 위한 네이밍 변경 * UI: #16 공용 Header CSS 설정 추가 * Feat: #9 NotFound 페이지 작성 * UI: #21 Default Layout의 contents 부분의 크기 제한 설정 * UI: #21 Project Layout UI 작성 * Config: #21 tailwind 속성/스타일 추가 * UI: #21 ProjectLayout의 Sidebar를 공용 Sidebar로 추출 * Rename: project → ProjectType으로 파일명 수정 * Rename: #21 layout 구분을 위하여 page 디렉터리 추가 및 관련 파일 이동 * Feat: #24 React Portal Modal Layout UI 작업 * config: #24 tailwindcss 유틸리티 클래스 확장 * config: #24 React Hook Form 편의 사용을 위한 일부 eslint 제약 완화 * Feat: #24 객체 동결 기능과 공통 validation 기능 추가 * Feat: #24 상태 추가 모달 UI 작업과 Form Validation 추가 * Formatting: #24 타입명 수정 * UI: #24 상태 추가 모달 적용 * fix: #24 falsy 값 출력 방지를 위한 간단한 로직 변경 * Docs: github commit convention 변경으로 인한 PR 템플릿 수정 * Config: #33 react-beautiful-dnd를 계승한 @hello-pangea/dnd 설치 * Chore: #33 mock 데이터 추가 및 관련 Types 추가 정의 * Config: #33 ESLint 설정 완화 * Feat: #33 칸반 보드 UI 작성 & 칸반 보드 할일 드래그 앤 드롭 기능 추가 * UI: #33 ProjectLayout 수정 * Formmating: #33 deepClone의 매개변수명 변경 * Feat: #33 특정 프로젝트 칸반 보드 UI 작성 & 할일 목록 DnD 기능 추가 (#36) * Config: #33 react-beautiful-dnd를 계승한 @hello-pangea/dnd 설치 * Chore: #33 mock 데이터 추가 및 관련 Types 추가 정의 * Config: #33 ESLint 설정 완화 * Feat: #33 칸반 보드 UI 작성 & 칸반 보드 할일 드래그 앤 드롭 기능 추가 * UI: #33 ProjectLayout 수정 * Formmating: #33 deepClone의 매개변수명 변경 * Refactor: #33 DnD 순서변경 함수 통합 & 가독성을 위한 조건식 변수화 * Refactor: #33 DnD 순서 변경 함수 통합 & 가독성을 위한 조건문 변수화 (#38) * Config: #33 react-beautiful-dnd를 계승한 @hello-pangea/dnd 설치 * Chore: #33 mock 데이터 추가 및 관련 Types 추가 정의 * Config: #33 ESLint 설정 완화 * Feat: #33 칸반 보드 UI 작성 & 칸반 보드 할일 드래그 앤 드롭 기능 추가 * UI: #33 ProjectLayout 수정 * Formmating: #33 deepClone의 매개변수명 변경 * Refactor: #33 DnD 순서변경 함수 통합 & 가독성을 위한 조건식 변수화 * Formatting: #33 ERD 할일 테이블 이름(Task)로 통합(todo → task) * Formatting: #33 Task 이름 단수/복수 구별 * Formatting: #33 state의 tasks와 데이터구조의 tasks 이름 구별 (for no-shadow) * Formatting: #33 기존에 사용하던 Todo라는 이름을 ERD 할일 테이블 이름인 Task으로 통합 (todo → task) (#39) * Refactor: #33 DnD 순서변경 함수 통합 & 가독성을 위한 조건식 변수화 * Formatting: #33 ERD 할일 테이블 이름(Task)로 통합(todo → task) * Formatting: #33 Task 이름 단수/복수 구별 * Formatting: #33 state의 tasks와 데이터구조의 tasks 이름 구별 (for no-shadow) * Feat: #33 특정 프로젝트 상태 목록 수평 DnD 기능 추가 (#40) * Feat: #33 특정 프로젝트 상태 목록 수평 DnD 기능 추가 * Refactor: #33 컴포넌트 분리 / types, constants 등 관심사 분리 (#41) * Rename: Validator 확장자 변경 (tsx→ts) * Refactor: #33 컴포넌트 분리 / types & constants 등 관심사 분리 * Fix: #33 React Key Props 에러 재설정 * Refoctor: #33 할일 변경 함수 구조분해할당 삭제 * Rename: #33 ERD 프로젝트 상태 테이블 이름으로 통합 (TaskStatus → ProjectStatus) (#42) * Rename: #33 ERD 프로젝트 상태 테이블 이름으로 통합 (TaskStatus → ProjectStatus) * Refactor: #44 상태 모달 생성/수정 폼 공유를 위한 리팩토링 (#46) * Fix: #44 mock 데이터 에러 해결 * Refactor: #44 상태 모달 생성/수정 폼 공유를 위한 리팩토링 * Chore: #33 기능명세서 변경으로 인한 색상 추가 기능 제거 * Formatting: #44 컴포넌트 Props 이름 변경 * Feat: #5 회원가입 페이지 생성 및 Validation 작성 (#37) * Feat: #5 회원가입 페이지 생성 및 마크업, CSS 스타일링 * Feat: #5 회원가입 입력 데이터 유효성 검사 기능 추가 * Design: #5 회원가입 페이지 스타일링 변경 및 프로필 이미지 설정 , 삭제 기능 추가 * Feat: #27 로그인 페이지 작성 * design: 수정된 회원가입 폼으로 UI 수정, 비밀번호 보이기 및 숨김 기능 추가 * Design: #27 수정된 로그인 폼으로 UI 수정 * Formatting: #5 유저관련폼 중복 처리 및 회원가입 폼 변수명 수정 * refactor: 공통 유효성 인증 input 컴포넌트 적용 및 회원가입 폼 디자인 수정사항 반영 * feat: 링크 갯수 제한 기능 추가 * UI: #5 로직에 따른 아이콘 등록 수정 * UI: #5 버튼 라운드 값 수정 * UI: #5 리뷰 반영 디자인 수정 * Chore: 정규식 수정 및 eslint 수정 * Refactor: #5 회원가입 폼에서 유효성 검증 규칙 분리 * Formatting: #5 타입 변수명 컨벤션 지정에 따른 타입 변수명 변경 * Feat: #5 비밀번호 정규식에 특수기호 추가 * UI: #5 필수 입력필드 체크 UI 수정 * UI: #5 input 필드에 sup 태그 적용 및 flex-grow -> grow 수정, form의 noValidate 속성 제거 * Feat: #27 로그인 페이지 생성 및 Validation 작성 (#43) * Feat: #5 회원가입 페이지 생성 및 마크업, CSS 스타일링 * Feat: #5 회원가입 입력 데이터 유효성 검사 기능 추가 * Design: #5 회원가입 페이지 스타일링 변경 및 프로필 이미지 설정 , 삭제 기능 추가 * Feat: #27 로그인 페이지 작성 * design: 수정된 회원가입 폼으로 UI 수정, 비밀번호 보이기 및 숨김 기능 추가 * Design: #27 수정된 로그인 폼으로 UI 수정 * Formatting: #5 유저관련폼 중복 처리 및 회원가입 폼 변수명 수정 * refactor: 공통 유효성 인증 input 컴포넌트 적용 및 회원가입 폼 디자인 수정사항 반영 * feat: 링크 갯수 제한 기능 추가 * UI: #5 로직에 따른 아이콘 등록 수정 * UI: #5 버튼 라운드 값 수정 * UI: #5 리뷰 반영 디자인 수정 * Chore: 정규식 수정 및 eslint 수정 * Refactor: #5 회원가입 폼에서 유효성 검증 규칙 분리 * Refactor: #27 ValidationInput 컴포넌트를 이용한 리팩토링 및 전반적인 UI 수정 * UI: #27 소셜 로그인 버튼 UI 수정 * Feat: #44 칸반보드 프로젝트 상태 수정 모달 작성 (#47) * Feat: #44 칸반보드 상태 수정 모달 작성 * Feat: #44 useModal 커스텀훅 추가 * Fix: #49 로그인 페이지 import 관련 버그 수정 (#50) * Feat: #52 알림을 위한 토스트 메시지 추가 (#53) * Config: #52 react-toastify 라이브러리 추가 * UI: #52 ToastLayout 추가 및 설정 * Feat: #52 토스트 메시지를 위한 커스텀훅 작성(useToast) * Chore: #52 불필요한 타입 제거 및 멀티 라인 명시적 그룹화 * UI: #52 토스트 메세지별 border-bottom-color 설정 * UI: #55 스크롤바 UI 변경 (#56) * Feat: #51 특정 프로젝트 관리 페이지: 캘린더 UI 작성 (#54) * Config: #51 react-big-calendar & luxon 라이브러리 추가 * Chore: #51 TaskWithStatus 타입 세분화 및 변경사항 수정 * fix: #51 TaskWithStatus 타입 변경후 누락된 부분 추가 * Chore: #51 더미데이터 추가 정의 & ProjectType 변경 * UI: #51 Stacking Context 수정 & UI 간격 수정 * Feat: #51 Calendar 기본 UI 작성 * Fix: #51 onNavigate 에러 해결 * UI: #51 CalendarToolbar UI 개선 * UI: #51 DateHeader 커스텀 디자인 추가 * UI: #51 CustomEvent → CustomEventWrapper 변경후 UI 추가 정의 * UI: #51 Calendar Custom Component 적용 * UI: #57 프로젝트 레이아웃 UI 변경 (#59) * Feat: #51 특정 프로젝트 관리 페이지: 프로젝트 기간 설정 유무에 따른 날짜 스타일 처리 (#60) * Feat: #51 PageLayout의 Outlet Context 설정 & 커스텀훅 추가 * Feat: #51 프로젝트 기간 이외의 날짜 disable 스타일 추가 * UI: #51 react-big-calendar CSS 오버라이딩 * Chore: 불필요한 주석 삭제 * Fix: #51 프로젝트 기간이 없는 경우 처리 추가 * Chore: #51 mock 데이터 수정 * Feat: #35 ID/PW 찾기 페이지 UI 작성 및 Validation 체크 (#58) * Feat: #35 ID 찾기 페이지 마크업 및 스타일링 * Feat: #35 PW 찾기 페이지 마크업 및 스타일링 * Refactor: #35 로그인, ID, PW 찾기 페이지 중복 추출 컴포넌트 제작 및 적용 * Refactor: #35 인증 페이지 전반적으로 겹치는 스타일링 분리 * Formatting: #35 로그인 페이지의 email 필드를 id 필드로 변경 * UI: #35 공용 버튼에서 그림자 제거 * UI: #35 로그인, ID/PW 찾기 페이지 리뷰 반영 디자인 수정 * Feat: #35 닉네임 validation 추가 및 기존 validation, 정규식 관련 코드 수정 * Refactor: #35 폼 하단 공통 링크 컴포넌트 중복제거 리팩토링 * Refactor: #35 회원가입 페이지 비밀번호 확인 validate 분리 및 공용Form 컴포넌트 props 타입 수정 * Feat: 할일 등록 모달 토대 UI 작성 & 일정명, 날짜 설정 기능 추가 (#67) * UI: #63 중복값 체크 input을 공용 컴포넌트로 추출 * UI: #63 모달 레이아웃 스타일 수정 * UI: #63 할일 등록 모달 토대 UI 작성 * Feat: #63 할일 일정명과 기간 설정 로직 추가 * Formatting: #63 오탈자 수정 (ModaFormButton → ModalFormButton) * Config: Code Spell Check 확장앱 추가 * UI: #63 ToggleButton을 공통 컴포넌트로 분리 * UI: #63 ToggleButton 스타일 수정 * UI: #62 모든 프로젝트 관리 페이지 중 팀/프로젝트가 없는 경우 UI 작성 (#64) * UI: #62 모든 프로젝트 관리 페이지중 팀/프로젝트가 없는 경우 UI 작성 * Feat: #62 teamid 예외처리 추가 및 ListSidebar button props 변경 * Formatting: #62 ListSidebar props 이름 변경 * Comment: #62 불필요한 주석 삭제 * Formatting: #62 오탈자 수정 * Formatting: #62 import 경로 정리 * Feat: #63 할일 등록 모달 상태 설정 기능 추가 (#70) * Refactor: #63 useStatusQuery 검색 방식 변경에 따른 구조 변경 * Fix: #63 prettier 재반영 * Feat: #63 할일 상태 선택 기능 추가 * Feat: #65 회원가입 폼 UI 수정 및 관련 로직 수정 (#66) * Feat: #35 ID 찾기 페이지 마크업 및 스타일링 * Feat: #35 PW 찾기 페이지 마크업 및 스타일링 * Refactor: #35 로그인, ID, PW 찾기 페이지 중복 추출 컴포넌트 제작 및 적용 * Refactor: #35 인증 페이지 전반적으로 겹치는 스타일링 분리 * Formatting: #35 로그인 페이지의 email 필드를 id 필드로 변경 * UI: #35 공용 버튼에서 그림자 제거 * UI: #35 로그인, ID/PW 찾기 페이지 리뷰 반영 디자인 수정 * Feat: #35 닉네임 validation 추가 및 기존 validation, 정규식 관련 코드 수정 * Refactor: #35 폼 하단 공통 링크 컴포넌트 중복제거 리팩토링 * Refactor: #35 회원가입 페이지 비밀번호 확인 validate 분리 및 공용Form 컴포넌트 props 타입 수정 * UI: #65 변경된 회원가입 로직에 따라 UI 변경 및 폼 전송 로직 수정 * Feat: #65 링크 추가 key값 부여방식과 링크 삭제 로직 변경 * Feat: #65 회원가입 이메일 인증 초시계 구현 * Feat: #65 이미지 전송 로직 추가 * Feat: #65 회원가입 form 전송 로직 수정 및 회원가입 API 적용 * Fix: #65 이미지 제한 크기 수정 * Fix: #65 기능명세서에 따라 등록 가능 링크의 개수를 수정 * Fix: #65 병합 컨플릭트 해결 * Refactor: #65 Timer 컴포넌트 리뷰 반영 리팩토링 * Refactor: #65 이미지파일 관련 상수 분리 및 early return 패턴과 삼항연산자 적용 * Feat: #65 안내메시지 노출 방식을 toast 메시지로 변경 및 단위 상수분리 * Refactor: #65 회원가입 폼의 인증요청과 회원가입 버튼 분리 및 인증과 폼제출 로직 분리 * Feat: #65 form 전송 함수의 이미지 전송 api, 폼 전송 api 에러처리 로직 수정 * Refactor: #65 유저 설정값 상수화 및 정규표현식 수정 * Fix: #65 정규식 관련 코드 수정 * Comment: #65 회원가입 로직 관련 주석 추가 * Feature: #65 이미지 상수를 명시적으로 변경 및 파일사이즈 string 변환 함수 생성 적용 * Refactor: #65 유저 인증 폼 관련 유효성 검증 상수 분리 * Refactor: #65 회원가입 폼 submit 버튼 변경을 삼항연산자로 처리 * UI: #62 모든 프로젝트 관리 페이지 중 팀/프로젝트가 있는 경우 UI 작성 (#71) * UI: #62 모든 프로젝트 관리 페이지 팀/프로젝트 있는 경우 UI 작성 * Feat: #62 버튼 클릭 시 모달 페이지 열리도록 기능 추가 * UI: 버튼 hover시 밝기 조절추가 * UI: #69 유저 정보 설정 페이지 UI 구현 (#73) * Feat: #69 유저 설정 페이지 기본 라우트 세팅 * Feat: #69 사이드 메뉴 및 공통 레이아웃 구현 * Feat: #69 유저 설정 이메일 인증 페이지 UI 구현 * Feat: #69 비밀번호 변경 페이지 UI 구현 * UI: #69 스타일링 코드 정리 * Fix: #69 유저 설정 페이지 라우팅 관련 코드 수정 * Refactor: #69 타입명 변경 및 타입 정의 방식 수정 * UI: #69 SettingLayout 라우트별 스타일 분리 코드 제거 * Feat: #69 헤더 컴포넌트 user세팅 경로 수정 * Feat: #63 할일 추가 모달 수행자 검색 기능 구현 (#75) * Feat: #63 Axios 기본 환경 설정 & Axios Instance 생성 Provider 정의 * Feat: #63 useAxios 커스텀훅 정의 / AbortController signal 처리 추가 * Chore: #63 mock 데이터 수정 * Feat: #63 프로젝트 유저 검색 API 모킹 추가 * Chore: #63 Mock Handler 불필요한 코드 제거 * Feat: #63 useAxios 트리거 형태로 변경 & API 함수 구조 변경 * Feat: API Mock handler 처리 수정 & Mock 데이터 수정 * Feat: #63 useAxios 커스텀훅에 clearData 기능 추가 * Feat: #63 MSW handler 구조 변경 * Feat: #63 userService & teamService 기본 골격 추가 * Remove: #63 파일 구조 유지를 위한 더미 파일 삭제 * Feat: #63 수행자 검색 기능 개발 * Feat: #63 UserType 수정 & Mock 데이터 수정 * Config: #76 VSCode 확장앱 추가 (vitest, JSDoc Generator etc) (#77) * Feat: #63 수행자 목록 UI 추가 & 수행자 추가/삭제 기능 구현 (#79) * Feat: #63 수행자 목록 UI 작업 & 추가/삭제 기능 * UI: #63 할일 추가 / 상태 추가 버튼 UI 스타일 변경 * Feat: #63 수행저 권한을 아이콘으로 변경 & 아이콘 툴팁 설명 추가 (#81) * Fix: #82 UpdateModalTeam props 오류 수정 (#83) * UI: #72 유저 정보 설정 페이지 팀 설정 UI 구현 (#74) * UI: #72 유저 정보 설정 페이지 팀 설정 UI 구현 * Feat: #72 팀 초대 및 가입 상태를 처리하는 API Handler 추가 & 팀 설정 페이지 UI변경 * UI: #72 팀 head UI 추가 & style 변경 * Formatting: #72 TeamSettingPage 시맨틱 태그로 변경 * Feat: #63 마크다운 기능 추가 (#84) * Config: #63 react-markdown, react-gfm, rehype-raw, react-syntax-hightlight 추가 * Feat: #63 마크다운 기능 추가 CommonMarkdown, GFM, Rehype-raw for HTML) * UI: #69 유저 정보 설정 페이지 UI 구현 (#78) * Feat: #69 유저 개인정보 설정 페이지 구현 * Refactor: #69 UserSettingPage에서 이미지, 링크 관련 코드를 컴포넌트로 분리 * Refactor: #69 SignUpPage에서 이미지, 링크 관련 코드를 컴포넌트로 분리 * Refactor: #69 이미지 전송을 위해 폼에서 이미지를 처리할 수 있도록 코드 리팩토링 * Refactor: #69 UserAuthenticatePage의 이메일 인증 로직을 훅으로 분리 및 인증 submit 버튼을 컴포넌트로 분리 * Refactor: #69 SignUpPage의 이메일 인증 로직, 인증 submit 버튼 분리 * Refactor: #69 인증코드 확인 로직 분리 * Rename: #69 유저설정 페이지 관련 컴포넌트 이름 수정 및 auth-form 폴더 구조 수정 * Feat: #69 인증버튼 라벨 props 추가 * Fix: #69 conflict 에러 해결 * UI: #69 전체적인 코드 태그 수정 및 디자인 코드 수정, 로고 수정 * Refactor: #69 인증번호관리 훅에서 타이머 visible 코드 삭제 및 타이머 visible 로직 수정 * UI: #69 일부 코드 태그 수정 및 디자인 코드 수정 * UI: #69 링크 컴포넌트 버튼 내부 아이콘 크기 조절 * Comment: #69 타이머 만료 코드 주석 수정 * UI: #69 label 태그 중첩 해결 및 input 태그 height 수정 * Feat: #63 마크다운 코드 블록 하이라이팅 기능 추가 (#86) * Config: #63 ESLint 설정 추가 (no-cond-assign: off) * Config: #63 @types/react-syntax-highlighter 추가 * Feat: #63 코드 블록 하이라이팅 기능 추가 * Fix: #63 인라인 코드와 코드 블록 분기 처리 수정 * Feat: #63 markdown 개행 처리를 위한 기능 추가 * Feat: #63 할일 등록 모달 DnD 파일 첨부 기능 추가 (#88) * Rename: #63 userSettings → settings 파일 이름 변경 * Formatting: #63 파일 이름 변경에 따른 변수명 변경 * Config: #63 ESLint 환경 설정 추가 * Fix: #63 ESLint 설정에 포함된 공백문자 제거 * Feat: #63 할일 모달 파일 첨부 기능 추가 * UI: #63 삭제 버튼 색상 변경 * Feat: React Query 기본 환경 설정 & 상태별 프로젝트 일정 전체 조회 API 처리 추가 (#93) * Config: #89 React Query Devtools 추가 * Feat: #89 React Query 기본 설정 추가 * Feat: #89 Mutation 기본 Error handler 추가 * Refactor: #89 Axios 에러 처리와 React Query 에러 처리 통합 * Feat: #89 Task 목록 useQuery 작성 * Chore: #89 Mock 데이터 수정 & Task, Status 타입 수정 * Chore: #89 Mock & Type 변경 * Feat: 할일 전체 목록 API MSW Handler 추가 * Chore: MSW Handler 추가로 할일 목록 Dummy 참조 삭제 * Chore: #94 프로젝트 상태, 프로젝트, 할일 타입 재정의 (#95) * Chore: #94 TaskType의 color → colorCode로 변경 * Chore: #94 ProjectStatus Type의 order → sortOrder로 변경 * Chore: #94 TaskType의 order → sortOrder로 변경 * Chore: #94 ERD와 Swagger를 참고하여 타입 재정의 * Fix: #90 블록내 개행문자 삽입되는 문제 해결 (#96) * Feat: #98 프로젝트 상태 목록 조회 API 기능 구현 (#99) * Feat: #98 MSW 프로젝트 상태 목록 조회 API handler 추가 * UI: #98 로딩 UI 추가 (Spinner) * Feat: 색상 추가 모달, 할일 등록 모달 상태 처리 로직 수정 * Feat: #98 프로젝트 상태 조회 네트워크 요청 로직 추가 * Feat: #101 프로젝트 상태 생성 API를 이용하여 상태 생성 기능 구현 (#103) * Chore: #101 프로젝트 상태 타입 정의 수정 * Chore: #101 프로젝트 상태 타입 수정으로 인한 코드 수정 * Feat: #101 프로젝트 상태 생성 API를 위한 React Query 기능 추가 * Feat: #101 프로젝트 상태 생성 API MSW 기능 추가 * Feat: #101 프로젝트 상태 생성 기능 추가 * Chore: #101 불필요한 import 삭제 * Fix: #101 초기값 변수 이름 수정 * Feat: #102 프로젝트 상태 변경 API를 이용하여 상태 변경 기능 구현 (#106) * Feat: #102 상태 변경 API를 위한 React Query 처리 추가 * Feat: #102 프로젝트 상태 변경 API MSW 처리 추가 * Feat: #102 프로젝트 상태 변경 기능 추가 * Fix: #102 상태 변경시 누락된 상태 순서 데이터 추가 * UI: #107 모달 레이아웃 UI 수정 (#108) * UI: #107 모달 레이아웃 & 모달 버튼 컴포넌트 UI 수정 * UI: #107 프로젝트 상태 Form UI 수정 * Feat: #109 프로젝트 목록 조회 기능 구현 (#110) * Feat: #109 프로젝트 목록 조회 API를 위한 React Query 처리 추가 * Feat: #109 프로젝트 목록 조회 API MSW 처리 추가 * Feat: #109 프로젝트 목록 사이드바 노출 기능 구현 * Feat: #109 네트워크 통신 대기시 Spinner UI 노출 * Chore: #109 Spinner UI 변경으로 다른 설정 코드 수정 * Feat: #80 로컬 로그인 기능 구현 (#100) * Feat: #80 로그인 기능 초안 작성 * Test: #80 로그인 모킹 함수 작성 * Feat: #80 로그인 관리 저장소 로직 일부 수정 * Feat: #80 로그인 로직, 모킹 함수 일부 수정 및 요청 인터셉트 추가 * Feat: #80 axiosProvider에 응답 인터셉터 추가 * Feat: #80 access token 저장 위치 변경 - 기존 cookie에서 zustand store로 저장 위치 변경 * Chore: #80 불필요한 패키지 제거, 설치 및 유저아이디 변수명 변경 * Feat: #80 refresh token 갱신 모킹 함수 작성 * Feat: #80 refresh token 만료 시 에러 처리 구현 * Feat: #80 프로필 이미지 URL 해제 코드 적용 * Feat: #80 인터셉터 로직 일부 수정 및 로그인 API 호출 로직에 useMutation 훅 적용 * Feat: #80 모킹 함수에 토큰 발급 시간 관련 로직 추가 * Feat: #80 zustand authStore에서 persist 미들웨어 제거 * Feat: #80 로그인 코드 로직을 전체적으로 수정 * Refactor: #80 URL revoke를 위한 로직 변경 및 파일 경로 수정, 시간 상수 활용 코드 변경 * Feat: #80 로그인 API의 withCredentials 옵션 삭제, 토큰 발급 실패 시 에러 처리 방식 변경 * Feat: #80 로그인 API 호출 방식 변경 * Feat: #80 authStore에 AT 만료 시간 추가 * Feat: #80 authStore AT 자동 만료 기능 추가 * Fix: #80 Invalid hook call 에러 해결 * Formatting: #80 import 경로 정리 * Feat: #80 핸들러 타입 처리 및 이미지 컨테이너의 불필요한 revoke 코드 삭제 * Feat: #80 로그인 API 호출 시 useAxios 훅 적용 * Feat: #104 일정 순서 변경 API를 이용하여 칸반 보드 DnD로 일정의 순서를 변경하는 기능 구현 (#112) * Formatting: #104 React Query 커스텀훅명 변경 * Feat: #104 일정 목록에 대해 더미 처리에서 커스텀훅 처리로 변경 * Feat: #104 일정 순서 변경 API를 위한 React Query 처리 추가 * Feat: #104 일정 순서 변경 API MSW 처리 추가 * Feat: #104 일정 순서 변경 기능 구현 * Chore: #104 updateStatus 함수 JSDoc 수정 * Feat: #105 상태 순서 변경 API를 이용하여 칸반 보드 DnD로 상태의 순서를 변경하는 기능 구현 (#113) * Feat: #105 상태 순서 변경 API를 위한 React Query 처리 추가 * Feat: #105 상태 순서 변경 API MSW 처리 추가 * Feat: #105 상태 순서 변경 기능 구현 * Chore: #105 상대 경로를 절대 경로로 수정 * UI: #85 모든 프로젝트 및 팀 설정 페이지 UI 변경 (#97) * UI: #85 모든 프로젝트 관리 페이지 style 및 팀 설정 페이지 style 통합 * UI: #85 팀 설정 페이지 팀 목록 리스트 색상 통일 * UI: #85 불 필요한 css 수정 및 라벨 색상 통일 * UI: #85 팀 설정 페이지 가입 및 대기 현황 없을시 UI 작업 및 불필요한 tailwind 수정 * Comment: #85 가입현황 대기현황 TODO 주석 작성 * UI: #85 팀 목록 조회 Query로 변경 및 컴포넌트 분리 및 타입 변경 * Chore: #85 콘솔로그 삭제 * Rename: #85 파일 이름 변경 및 경로 이동 (Page -> Layout) * Comment: #85 router 주석 삭제 * Formatting: #85 querykey 이름 변경 및 콘솔 삭제 * Fix: #117 상태 추가 후 상태 순서 변경시 발생하는 에러 해결 (#119) * Fix: #117 초기 상태값 의존성 문제 해결 & sortOrder 번호 수정 * Fix: #117 MockHash 데이터 최신화를 위한 로직 변경 * Feat: #111 액세스 토큰 갱신 기능 구현 (#116) * Feat: #111 액세스 토큰 만료 시 리프레시 토큰을 이용해 AT 재발급 구현 * Comment: #111 필요없는 주석 및 콘솔 제거 * Fix: #122 칸반 보드 UI가 정해진 범위를 넘어가는 문제 해결 (#124) * Fix: #122 칸반보드가 정해진 범위를 넘어가는 문제 해결 * Chore: #122 응답 데이터 sortOrder 순으로 정렬 * Feat: #114 일정 생성 API를 이용하여 일정 생성 기능 구현 (#125) * Feat: #114 종료일 비활성화시 시작일을 따라가도록 변경 * Feat: #114 일정 생성 API React Query 처리 추가 * Feat: #114 일정 생성 API MSW 처리 추가 * Feat: #114 일정 생성 기능 구현 * Chore: #114 import 경로 수정 및 정리 * Feat: #118 로그인 후 유저 정보 호출 기능 구현 (#121) * Feat: #118 유저 정보 가져오기 기능 구현 및 헤더에 유저 닉네임 적용 * Feat: #118 유저 정보 설정 페이지에 API 호출한 유저 데이터 적용 * Feat: #118 queryKey를 이용해 캐싱된 데이터를 사용하도록 코드 수정 * Formatting: #118 쿼리상태값 네이밍 변경 * Formatting: #118 로그인한 유저 조회 API 반환타입 변경 * Feat: #118 네트워크 코드 작성 방식 변경을 위한 useAxios 수정 및 로그인 코드 수정 * Feat: #118 로그인 네트워크 요청 방식 변경 * Feat: #118 유저 정보를 호출 후 zustand persist에 저장 기능 구현 * Feat: #118 zustand persist 로컬 스토리지에 암호화 적용 * Feat: #118 유저설정페이지, 헤더에 zustand 저장소의 유저 정보 적용 * Chore: #118 import 경로 정리 * Config: #118 config 파일에 stores 경로 추가 * Refactor: #118 프로필 이미지 이중관리 로직 제거 * Feat: #118 zustand 스토어에 slice pattern 적용 * Feat: #118 공식문서 기반 zustand slice pattern 적용 * Feat: #118 로그인 에러 공용처리 * Chore: #128 유저 정보 값 수정 (#129) * Chore: #128 유저 프로필 이미지 관련 변수, 타입명, 초기값 관련 코드 수정 * Chore: #128 유저 정보 호출 시 userId, provider 정보를 포함하도록 타입 수정 * Chore: #128 useStore 내부 bio 속성의 초기값 변경 * UI: #89 일정 상세보기 모달 UI 작성 (#130) * UI: #89 일정 상세보기 모달 UI 작업 * Feat: #89 일정 상세보기 정보 전달 방법 변경 * UI: #127 일정 등록 입력 양식들을 컴포넌트로 분리 (#131) * UI: #127 프로젝트 상태 radio input 컴포넌트 분리 * UI: #127 시작일, 종료일 컴포넌트 분리 * UI: #127 마크다운 컴포넌트 분리 * UI: #127 파일 DropZone 컴포넌트 분리 * UI: #127 마크다운 컴포넌트 props 변경 * UI: #127 시작일, 종료일 컴포넌트 props 변경 * UI: #127 프로젝트 상태 컴포넌트 props 변경 * UI: #127 시작일, 종료일 컴포넌트 props 변경 * UI: #127 마크다운 컴포넌트 props 변경 * UI: #127 일정 등록 입력 양식중 수행자 검색, 선택 목록 컴포넌트 분리 (#132) * UI: #127 수행자 검색 UI 컴포넌트 분리 * UI: #127 수행자 목록 UI 컴포넌트 분리 * Feat: #134 일정 수행자 조회 기능 추가 (#136) * Feat: #134 수행자 타입 수정 * Chore: #134 수행자 타입 수정에 따른 mock 데이터 수정 * Feat: #134 일정 생성 API 수정 사항 반영 * Feat: #134 일정 수행자 목록 API React Query 처리 추가 * Feat: #134 일정 수행자 목록 조회 API MSW 처리 추가 * Feat: #134 일정 상세 모달 수행자 목록 조회 기능 추가 * Feat: 수행자 타입 추가 * Feat: #123 로그아웃 기능 구현 (#133) * Feat: #123 로그아웃 흐름 작성 * Feat: #123 로그아웃 네트워크 로직 작성 및 커스텀 훅 작성 * Feat: #123 토스트 메시지 표시를 위한 시간 지연 추가 * Feat: #123 로그아웃 시 유저 store 정보 초기화 기능 구현 * Feat: #123 RT 만료 시 후처리 구현 * Feat: #123 axiosProvider에 useNavigate를 사용할 수 있도록 수정 * Chore: #123 MainRouter import 경로 수정 * Comment: #123 Interceptor 컴포넌트 적용 방식 관련 ToDo 주석 추가 * Comment: #123 주석 오타 수정 * Feat: #135 일정 파일 목록 조회 기능 추가 (#138) * Feat: #135 Task 타입 수정 (files 삭제) * Chore: #135 Task 타입 수정에 따른 mock 데이터 수정 * Feat: #135 일정 파일 목록 조회 API React Query 처리 추가 * Feat: #135 일정 파일 목록 조회 MSW 처리 추가 * Feat: #135 일정 상세 모달 파일 목록 조회 기능 추가 * Feat: #135 일정 파일(TaskFile) 타입 정의 * Feat: #140 마크다운 커스텀 a태그 속성 수정 (#141) * Feat: #140 마크다운 커스텀 a태그 속성 수정 * Feat: #140 aria-label 속성 추가 * Feat: #120 팀 설정 페이지 탈퇴 삭제 및 수락 거부 기능 구현 (#126) * Feat: #120 팀 탈퇴하기 로직 구현 * Feat: #120 팀 삭제하기 기능 추가 및 탈퇴하기 Handler 수정 * Feat: #120 초대 수락 및 거부 기능 추가 * Feat: #120 msw Handler 수정 및 타입 수정 주석 삭제 * Comment: #120 js doc 설명 추가 * Fix: #120 팀 탈퇴 API 및 삭제 API 수정 * Fix: #120 userId 목 데이터 토큰으로 변경 * Fix: #120 userId 전역에서 독립 실행으로 변경 * Fix: #120 팀 삭제 API 일정 파일 & 유저 삭제 추가 및 팀 탈퇴API 수정 * Comment: #120 TODO 주석 추가 * Feat: #137 아이디/비밀번호 찾기 기능 구현 (#139) * UI: #137 아이디 찾기 Form UI 수정 및 결과 화면 UI 작성 * UI: #137 비밀번호 찾기 Form UI 수정 및 결과 화면 UI 작성 * Formatting: #137 validation에 맞게 아이디 비밀번호 임시값 변경 * Feat: #137 유저아이디 찾기 네트워크 로직 구현 * UI: #137 auth 관련 폼 UI 배치 및 margin, padding 수정 * Feat: #137 유저 비밀번호 찾기 네트워크 로직 구현 * Chore: #137 id/pw 찾기 결과 부분 태그 수정 * Formatting: #137 결과화면 시맨틱 태그 수정 * Feat: #137 아이디 길이에 따른 아이디 보안 처리 * UI: #137 아이디찾기 input 라벨을 placeholder로 변경 * Feat: #137 폼 전송 이전에 이메일 인증 코드 확인 로직 추가 * UI: #137 AuthLayout 패딩 및 간격 수정 * Refactor: #137 ID/PW 찾기 페이지의 결과 화면, 폼을 컴포넌트로 분리 * Chore: #137 MSW 핸들러의 응답 성공 실패 구현 순서 변경 * Refactor: #137 ID 보안 관련 컨버터 함수 리팩토링 * Feat: #144 비밀번호 변경 기능 구현 (#145) * Feat: #144 비밀번호 변경 네트워크 로직 구현 * Feat: #144 비밀번호 변경 후처리 구현 * Chore: #144 불필요한 데이터 출력 코드 삭제 * Comment: #144 필요한 주석 추가 * Refactor: #144 동일한 신규 비밀번호 입력 시 Validation 작성 * Feat: #142 이메일 인증 기능 구현 (#143) * Chore: #142 useNavigate 변수명 변경 및 useFormContext 타입 추가 * Feat: #142 이메일 인증번호 요청 네트워크 로직 작성 및 기존 인증 처리 로직 수정 * Feat: #142 이메일 인증코드 발급 관련 코드를 더미데이터로 대체 * Refactor: #142 상위 컴포넌트에서 이메일 인증 관련 코드를 관리하도록 수정 * Refactor: #142 인증번호 불일치시 후처리 함수 분리 * Feat: #142 인증번호 불일치 시 필드에러만 표시하도록 수정 * Refactor: #142 SearchDataForm로 전달할 데이터를 객체로 묶어 전달하도록 수정 * UI: 파일 드래그 앤 드롭시 영역 스타일 가시성 스타일 추가 (#151) * Feat: #115 일정 생성 Form 타입 정의 수정 및 추가 * Chore: #115 일정 Form 타입 변경으로 인한 관련 코드 수정 * UI: #115 파일 드래그 앤 드롭시 영역 스타일 가시성 스타일 추가 * UI: #115 스크린 리더와 접근성 개선을 위한 속성 추가 * Feat: #147 수행자 검색 API 변경으로 인한 수행자 검색 기능 수정 (#152) * Refactor: #147 수행자 검색 결과 타입 수정 * Refactor: #147 프로젝트에 속한 유저 검색 API MSW 처리 수정 * Feat: #147 프로젝트 팀원 목록 조회 React Query 처리 추가 * Feat: #147 프로젝트 팀원 목록 조회 API MSW 기능 추가 * Feat: Project Context에 프로젝트 팀원 정보 추가 * Feat: #147 프로젝트 팀원 목록과 수행자 목록 매칭하여 UI 정보 표시 * Feat: #147 프로젝트 팀원 목록과 수행자 목록 매칭하여 UI 정보 표시 * Feat: #147 매칭되는 유저 정보가 없을 시 에외처리 추가 * Refactor: #153 유저 검색을 위한 SearchUserInput 컴포넌트 리팩토링 (#154) * Refactor: #153 전체 유저 검색 & 팀 유저 검색 axios 로직 수정 * Refactor: #153 SearchUserInput 컴포넌트 디바운스, Abort 로직 추가 * Refactor: #153 callback type 분리 * Rename: #153 파일 typo 수정 * Feat: #153 Exhaustive Check 기능 추가 * Feat: 일정 수정 모달 UI 변경 사항 반영 (#155) * Refactor: #148 파일 타입 & 일정 타입 추가 및 수정 * Remove: #148 Assignee 타입 삭제 UserWithRole 타입으로 대체 * Chore: #148 타입 재정의에 따른 코드 수정 * Feat: #148 일정 모달 수정과 컴포넌트를 공유하기 위한 수정 * Feat: #148 특정 일정을 탐색하는 기능 추가 * UI: #148 일정 수정 모달 UI 수정 * Chore: #148 import 정리, ToDo 정리 * Refactor: #148 불필요한 연산 제거 * Feat: #149 일정 수정 모달 수행자 추가 기능 구현 (#157) * Feat: #149 수행자 추가 API를 위한 React Query 기능 추가 * Feat: #149 수행자 추가 API MSW 처리 추가 * Feat: #149 수행자 추가 기능 구현 * Fix: #149 이미 할당된 수행자인지 확인하는 MSW 로직 추가 * Chore: #149 MSW 변수 오타 수정 * Feat: #150 일정 수정 모달 수행자 삭제 기능 구현 (#158) * Feat: #150 수행자 삭제 API를 위한 React Query 처리 추가 * Feat: #150 수행자 삭제 API를 위한 MSW 처리 추가 * Feat: #150 수행자 삭제 기능 구현 * Refactor: #150 수행자 삭제 로직 개선 * Feat: #156 일정 수정 모달 일정 정보 변경 기능 구현 (#160) * Feat: #156 일정 정보 수정 API를 위한 React Query 기능 추가 * Feat: #156 일정 정보 수정 API를 위한 MSW 기능 추가 * Feat: #156 일정 정보 수정 기능 구현 * Fix: #163 일정 수정 모달에서 상태 선택 정보가 사라지는 문제 해결 (#164) * Fix: #163 타입 호환을 위한 새로운 타입 정의 (TaskUpdateForm) * Fix: #163 TaskUpdateForm 추가로 인한 타입 정보 처리 수정 * Feat: #146 비밀번호 변경 전 인증 페이지의 인증 로직 구현 (#162) * Feat: #146 이메일 인증여부 확인 후 비밀번호 변경 페이지를 이메일 인증 페이지로 리다이렉트 기능 구현 * Feat: #146 이메일 인증 성공 후 비밀번호 페이지로 변경 기능 구현 * Formatting: #146 이메일 인증 코드 변수명 및 타입명 변경 * Fix: #146 인증번호 에러 발생 시 리프레시 토큰발급 요청이 무한히 이루어지는 버그 수정 * Fix: #146 authAxios 사용 시 401 응답코드를 받았을 때 강제 로그아웃처리되는 오류 수정 * Formatting: #146 이메일 인증 코드 변수명 및 Validation Rule 이름 변경 * Chore: #146 코드리뷰에 따라 불필요한 코드 삭제 및 에러처리 추가 * Chore: #146 불필요한 코드 삭제 * Comment: #146 이메일 인증 페이지로 리다이렉션하는 코드 주석 처리 * Feat: #115 일정 등록 모달의 파일 업로드 기능 구현 (#166) * Feat: #115 파일 업로드 API를 위한 React Query 처리 추가 * Feat: #115 일정 파일 업로드 API를 위한 MSW 처리 추가 * Feat: #115 파일 Validation 추가 * Feat: #115 파일 업로드 기능 구현 (병렬 처리) * Chore: #115 허용하는 파일 확장자 constants로 정리 * Feat: #115 FileDropZone accept props 추가 * Feat: #115 Task Form 관련 타입 수정 및 추가 * Feat: #115 일정 파일 업로드 Validation 추가 * Chore: #115 더미 파일 설정 추가 * Chore: #115 CreateModalTask 컴포넌트 import 경로 수정 * Chore: 파일 validation warn message 수정 * Fix: #115 파일 최대 개수 Validation 수정 * Fix: #115 파일 최대 개수 Validation 수정 * Feat: #115 병렬 처리된 파일의 성공과 실패 목록 메세지 노출 * Feat: #115 파일 업로드 성공은 묶어서, 실패는 개별 메세지 노출로 변경 * Feat: #115 FileDropZone 컴포넌트 props 변경에 따른 코드 수정 * Feat: #115 파일 Validation 예외 처리 추가 * Chore: #115 일정 파일 accept 설정 상수로 추출 * Refactor: #173 React Query의 Query Key 정리 (#174) * Refactor: #173 React Query의 Query Key 정리 * Fix: #173 TaskFile Query Key 수정 * Feat: #167 일정 수정 모달의 일정 파일 삭제 기능 구현 (#176) * Feat: #167 일정 파일 삭제 API를 위한 React Query 기능 추가 * Feat: #167 일정 파일 삭제 API를 위한 MSW 처리 추가 * Feat: #167 일정 파일 삭제 기능 구현 * Feat: #167 일정 수정 모달에서 각 양식별로 Spinner가 생기도록 수정 * Fix: #167 조건문에 지정한 변수 수정 (taskFileIndex → fileIndex) * Feat: #170 일정 삭제 기능 구현 (#177) * Feat: #170 일정 삭제 API를 위한 React Query 기능 추가 * Feat: #170 일정 삭제 API를 위한 MSW 처리 추가 * Config: #170 Tailwind Delete용 색상 추가 * Feat: #170 모달용 공용 버튼 컴포넌트 추가 (ModalButton) * Feat: #170 일정 삭제 기능 구현 * UI: #170 버튼 hover 스타일 추가 * Feat: #170 일정 삭제 이후 캐시 처리 옵션 추가 * Fix: #170 삭제 로직 조건문 수정 * Feat: #170 일정 삭제 성공시 쿼리 데이터 무효화 및 삭제 옵션 수정 * Chore: #170 import 경로 수정 * Feat: #159 닉네임 중복 확인 API 및 회원가입 기능 구현 (#171) * UI: #159 회원가입 페이지에서 프로필 이미지 항목 제외 및 폼 내부 요소 수직 중앙정렬 * Feat: #159 닉네임 중복 체크 기능 구현 * Feat: #159 회원가입 기능 구현 * Feat: #159 중복 확인 후 닉네임 버튼 비활성화 기능과 중복 확인 후 재입력시 버튼 활성화 기능 구현 * Feat: #159 중복 확인 후 닉네임 버튼 비활성화 기능과 중복 확인 후 재입력시 버튼 활성화 기능 구현 * Feat: #159 회원가입 기능 구현을 위한 user mock 데이터 추가 및 mock JWT 생성, 디코딩 기능 구현 * Chore: #159 Validation Rule 에 맞추어 mock 데이터의 비밀번호 수정 * Fix: #159 새로고침 시 기본 더미 JWT 데이터로도 기능이 동작되도록 수정 * Fix: #159 액세스 토큰 재발급이 안 되는 오류 해결 * Feat: #159 회원가입 시 기존에 존재하는 이메일을 입력했을 시 에러 처리 * Chore: #159 코드 리뷰 반영 수정 * Chore: #159 User Dummy의 소셜 회원 username, nickname 값 수정 * Chore: #159 mock 데이터의 유저 정보 수정 * Fix: #159 로그인 시 리프레시 토큰의 만료 시간을 초기화하도록 수정 * UI: #178 ModalFormButton 제거 및 ModalButton으로 대체 (#179) * Feat: #169 상태 삭제 기능 구현 (#180) * Feat: #169 상태 삭제 API를 위한 React Query 기능 추가 * Feat: #169 상태 삭제 API를 위한 MSW 기능 추가 * Feat: #169 상태 삭제 기능 구현 * Config: #169 react query client 설정 추가 * Feat: #169 예외 처리 로직 추가 & 로딩 시 화면 추가 * Chore: #169 메세지 오탈자/맞춤법 수정 * Feat: #87 팀 생성 UI 및 로직 추가 (#161) * Feat: #87 팀 생성 UI 및 로직 추가 * Fix: #87 msw handler 하드코딩 수정 및 유효하지 않은 역활 처리 * Refactor: #87 팀 권한 정보 툴팁 component 분리 및 경로 정리 * Fix: #87 코드리뷰 수정사항 반영 * Fix : SelectedUserWithRole 타입 제네릭으로 변경 * Refactor: #87 코드리뷰 반영 리팩토링 * Fix: #182 칸반 보드에서 일정 삭제 / 상태 삭제 후 순서 변경이 제대로 일어나지 않는 문제 해결 (#184) * Fix: 일정 삭제 & 상태 삭제시 sortOrder를 재정렬하도록 수정 * Fix: #182 일정 삭제 & 상태 삭제시 sortOrder를 재정렬하도록 수정 * Formatting: #183 파일 목록 조회 데이터 구조 변경 (#185) * Feat: #175 유저 프로필 변경 페이지 기능 구현 (#181) * UI: #175 유저설정 페이지 링크 분리 UI 변경 * Feat: #175 유저 프로필 변경 기능 구현 * Feat: #175 유저 프로필 변경 시 닉네임 중복 체크 기능 추가 * Refactor: #175 닉네임 중복체크 훅 분리 * Refactor: #175 기존 닉네임 트래킹 변수를 커스텀 훅으로 이동 * Feat: #175 userIndex를 찾지 못한 경우 에러 추가 * Fix: #175 최대 등록 가능한 링크의 개수를 5개로 수정 * Feat: #175 유저 프로필 변경 네트워크 로직을 tanstack query 로직으로 수정 * Refactor: #175 queryKeyGenergator를 이용해 쿼리 키 생성 및 적용 * Formatting: #175 통일성을 위해 변수명 수정 * Chore: #175 유저데이터 초기값 설정에서 optional chaining 제거 * Feat: #168 일정 파일 다운로드 기능 구현 (#186) * Chore: #168 파일 더미 데이터 수정 * Feat: #168 일정 파일 다운로드 API 요청 기능 구현 * Feat: #168 일정 파일 다운로드 API MSW 기능 추가 * Feat: #168 useAxios 즉각적인 처리를 위해 response 반환 추가 * Feat: #168 일정 파일 다운로드 기능 구현 * Feat: #168 풀파일명을 파일명, 확장자로 분리하는 유틸리티 함수 추가 * Chore: #168 import 경로 수정 * Feat: #187 일정 수정 모달 파일 업로드 기능 추가 (#189) * Refactor: #187 FileDropZone 컴포넌트 리팩토링 * Feat: #187 useTaskFile 커스텀훅 추가 * Feat: #187 일정 수정 모달 파일 업로드 기능 구현 * Comment: #187 불필요한 주석 제거 * Rename: #187 파일 이름 오타 수정 * Chore: #187 코드 순서 변경 * Feat: #188 일정 상세 모달 수정 버튼 기능 구현 (상세 모달 → 수정 모달 전환) (#190) * Feat: #188 상세 모달 컴포넌트 props로 수정 모달 open 함수 주입 * Feat: #188 칸반 보드 상세모달 수정 버튼 클릭시 수정 모달 전환 * Feat: #188 캘린더 일정 수정 모달 수정 버튼 클릭시 수정 모달 전환 * Chore: #188 import 경로 수정 * Feat: #172 소셜 회원가입/로그인 기능 구현 (#191) * Feat: #172 카카오 로그인 AT 발급 기능 구현 * Feat: #172 카카오 회원가입 및 로그인 구현 * Feat: #172 구글 회원가입 및 로그인 구현 * Refactor: #172 콜백페이지를 카카오-구글이 공용으로 쓸 수 있도록 수정 및 컴포넌트, 함수명 수정 * Refactor: #172 공급업체별 service 함수 및 네트워크 모킹 핸들러 통합 * Refactor: #172 공급업체별 소셜로그인 버튼 컴포넌트 통합 * Feat: #172 인가코드 얻어오지 못했을 시 에러 처리 추가 * Fix: #172 콜백 페이지의 다중 호출 방지 기능 추가 * Refactor: #172 코드리뷰 반영 수정 * Chore: #172 카카오구글 링크 env 파일로 이동 및 코드 리뷰 반영 수정 * Feat: #198 API 명세서의 응답 데이터 구조 변경에 따른 타입 재정의 (#201) * Refactor: #198 일정 타입 수정 (name → taskName) * Refactor: #198 프로젝트 타입 수정 (name → projectName) * Comment: #198 완료한 ToDo 주석 제거 * Chore: #198 Label ID 수정 * Fix: #202 Calendar 컴포넌트 events 타입 호환 문제 해결 (#203) * Feat: #165 팀 수정 모달 UI 및 기능 구현 (#195) * Feat: #87 팀 생성 UI 및 로직 추가 * Fix: #87 msw handler 하드코딩 수정 및 유효하지 않은 역활 처리 * Refactor: #87 팀 권한 정보 툴팁 component 분리 및 경로 정리 * Fix: #87 코드리뷰 수정사항 반영 * Feat: 팀 수정 API 및 query 추가 * Feat: #165 팀 정보 수정 모달 UI 및 기능 구현 * Fix: #165 팀원 목록 조회 수정 * Remove: #165 필요없는 파일 삭제 * Fix: #165 코드리뷰 반영 수정 * Fix: #165 중복 Generator 쿼리 키 제거 * Fix: #165 코드리뷰 반영 수정 * Fix: #165 팀원 삭제 MSW 수정 및 팀원 삭제 팀 삭제 query 수정 * Fix: #165 TeamCoworkerForm 타입 정의 * Fix: #165 팀 타입 재정의 & Indexed Access type 으로 수정 * Feat: #204 일정 수정 모달에서 일정 상세 모달로 돌아가기 버튼 추가 (#205) * Feat: #204 일정 정보 수정후 모달을 닫는 기능 제거 * Feat: ModalButton의 버튼 text 색상 props로 전환 * Feat: #204 일정 상세보기 모달 props 변경, 단일 일정 검색 추가 * Refactor: #204 캘린더 일정 hover시 가시성 개선 * Refactor: #204 QueryFilter 옵션 수정을 통한 refetch 요청 최소화 * Feat: #204 일정 목록 로딩시 대체 UI(Spinner)가 나오도록 수정 * Comment: #204 React Reparenting 문제 주석 추가 * Fix: #204 useEffect 의존성 추가 * UI: #204 돌아가기 버튼 margin 간격 조정 * UI: #206 일정 파일 다운로드 버튼 태그 구성 변경 (#207) * UI: #206 일정 파일 다운로드 버튼 태그 구성 변경 & 스타일 변경 * UI: #206 드래그 선택 불가능 하도록 select-none 추가 * Feat: #208 PeriodDateInput 컴포넌트 종료일 토글 자동 활성화 기능 추가 (#209) * Fix: #208 날짜 관련 Validation 로직 수정 * Feat: #208 프로젝트 목록 데이터 타입 변환 추가 * Feat: #208 PeriodDateInput 컴포넌트 종료일 토글 자동 활성화 기능 추가 * Chore: #208 PeriodDateInput Import 정리 * Chore: #208 오타 수정 (projctStartDate → projectStartDate) * Refactor: #208 시작일과 종료일 날짜 처리 과정 수정 * Fix: #214 프로젝트 목록 및 팀 목록 쿼리로 변경 (#215) * Fix: #214 프로젝트 및 팀 목록 더미에서 쿼리로 변경 * Fix: #214 AI 코드리뷰 반영 * Feat: #192 링크 수정 기능 구현 (#193) * Feat: #192 링크 변경 기능 구현 * UI: #192 링크 수정 네트워크 처리 중 로딩 추가 * Comment: #192 삭제된 주석 추가 * Refactor: #192 코드리뷰 반영 수정 * Chore: #192 코드리뷰 반영 수정 * Feat: #192 로그아웃 시 유저 링크 데이터 초기화를 위해 쿼리키에 유저 ID 등록 * Refactor: #172 이중 관리 방지를 위한 전체 링크 변수 삭제 * Feat: #210 프로젝트 삭제 기능 추가 (#213) * Feat: #210 프로젝트 삭제 기능 추가 * Fix: #210 프로젝트 삭제 handler 변경 및 useEffect 의존성 배열 변경 * Fix: #210 코드리뷰 반영 수정 및 경로 정리 * Formatting:#210 isLoading 이름 변경 * Fix:#216 home 페이지로 이동시 teams 페이지로 리다이렉션 (#217) * Refactor: #196 MSW중 TaskService 관련 기능 리팩토링 (#219) * Refactor: #196 MSW Task 처리 관련 리팩토링 * Comment: #196 불필요한 console.log 삭제 * Feat: #196 더미 토큰 처리에서 실제 토큰 처리로 수정 * Feat: #196 Mock에 정의한 타입 분리 * Commnet: #196 MockAPI 함수 기능 설명 주석 추가 * Chore: #196 타입 형변환 로직 삭제 * Feat: #196 MSW 처리시 Auto Increment를 모방하여 ID 생성 * Chore: #196 import 경로 정리 * Fix: #220 종료일 비활성화시 종료일 설정 기능도 비활성화 되도록 수정 (#221) * UI:#199 프로젝트 생성 UI 구현 (#218) * UI:#199 프로젝트 생성 UI 구현 * Fix:#199 role.ts 파일의 프로젝트 룰 권한 이름 변경 * Fix: #222 인증여부에 따라 헤더의 문구와 로그아웃 버튼 노출하도록 수정 (#223) * Fix: #222 인증여부에 따라 헤더의 문구와 로그아웃 버튼 노출하도록 수정 * Feat: #222 유저인증 되어 있지 않을 시 로그인 버튼 추가 * Chore: #222 로그인 화면 이동 시 replace 제거 * Refactor: #224 MSW 처리중 StatusService, ProjectService 기능 리팩토링 (#226) * Refactor: #224 MSW StatusService 기능 리팩토링 * Formatting: #224 일정 수정 API 로직중 폼 데이터 변수명 수정 * Refactor: #224 MSW ProjectSevice 기능 리팩토링 * Fix: #224 프로젝트 관련 정보 조회성 로직은 팀에 속하는가로 수정 * Fix: #224 팀 접근 권한에 넘기는 매개변수 수정 * Fix: #224 AI 리뷰 반영 * Feat: #211 유저 프로필 이미지 업로드 기능 구현 (#212) * Feat: #211 유저 프로필 이미지 업로드 기능 구현 * Feat: #211 DB 명세서에 따라 프로필 사진 저장 방식 변경 * Feat: #211 유저 프로필 이미지 저장 형식을 UUID로 변경 * Chore: #211 코드리뷰 반영 수정 * Chore: #211 코드리뷰 반영 수정 * Chore: #211 토큰에서 유저 정보를 추출할 수 없을 때 오류 추가 * Feat: #211 이미지 업로드 시 서버 측에서 UUID를 가져와 zustand 스토어에 저장하도록 수정 * Feat: #228 유저 인증을 위한 MSW 수정 및 페이지 라우트 인증 처리 (#229) * Feat: #228 로그인 전후 라우트별 인증 확인 처리 * Chore: #228 MSW에서 JWT 더미 데이터 사용한 코드 일괄 삭제 * Fix: #228 새로고침 시 로그인 페이지로 강제 다이렉트되는 문제 해결 * Chore: #236 MSW에서 mock JWT 삭제 및 헤더의 로그아웃 버튼 노출 시 userId 체크 추가 (#237) * Fix:#225 팀 쿼리 키 userId 추가 및 프로젝트 목록 조회 teamId null시 처리 추가 (#227) * Fix:#225 team query key add userId & teamId null append * Fix: #225 인덱스트 엑세스 타입 교체 및 업데이트모달페이지 오류 수정 * Fix: #225 enabled 다시 추가 및 테스트 로직 삭제 * Feat: #194 유저 프로필 이미지 조회 기능 구현 (#235) * Feat: #211 유저 프로필 이미지 업로드 기능 구현 * Feat: #211 DB 명세서에 따라 프로필 사진 저장 방식 변경 * Feat: #211 유저 프로필 이미지 저장 형식을 UUID로 변경 * Chore: #211 코드리뷰 반영 수정 * Chore: #211 코드리뷰 반영 수정 * Chore: #211 토큰에서 유저 정보를 추출할 수 없을 때 오류 추가 * Feat: #211 이미지 업로드 시 서버 측에서 UUID를 가져와 zustand 스토어에 저장하도록 수정 * Feat: #194 프로필 이미지 조회 기능 구현 * Chore: #194 파일 경로 수정 * Chore: #194 불필요한 쿼리 함수 삭제 * Chore: #194 msw에서 더미 jwt 코드 삭제 및 접근권한 에러 코드 변경 * Feat: #200 프로젝트 생성 (#240) * UI: #200 프로젝트 팀 없이 생성 시 토스트 메시지 출력 및 프로젝트 생성 UI 설정 * Feat: #200 프로젝트 생성시 날짜 선택 로직 추가 * Feat: #200 프로젝트 생성 팀원 검색 로직 추가 * Feat: #200 프로젝트 생성 로직 추가 * Fix: #200 ai 코드리뷰 반영 수정 * Fix: #200 코드리뷰 반영 수정 * Fix: #238 일정 등록 전 프로젝트 상태 개수 확인하도록 수정 (#239) * Refactor: #243 전체 일정 조회에서 단일 일정 조회 로직 분리 (#244) * Refactor: #243 전체 일정 조회에서 단일 일정 조회 로직 분리 * Refactor: #243 전체 일정 조회에서 일정 이름 목록 추출 로직을 분리 * Chore: #243 AI 코드 리뷰 반영 * UI: #241 프로젝트 수정 UI 구현 (#242) * UI: #241 프로젝트 수정 UI 구현 * Fix: #241 경로 정리 & 폼 아이디 & spinner 조건 수정 * Fix: #241 경로 정리 및 프로젝트 생성 네이밍 변경 * Fix: #241 프로젝트 & 팀 이름 중복체크 및 팀 쿼리 변경 * Formatting: #241 teamList 변수 제거 후 data 별칭으로 수정 * Refactor: #248 전체 상태 조회에서 단일 상태 조회 로직 분리 (#249) * Refactor: #248 전체 상태 조회에서 단일 상태 조회 로직 분리 * Comment: #248 수정한 ToDo 주석 삭제 * Chore: #248 AI 리뷰 내용 반영 * Chore:# 248 import 경로 정리 * Feat: #246 프로젝트 수정 기능 구현 (#250) * Feat: #246 프로젝트 수정 기능 구현 * Fix: #246 mutate 별칭 네이밍 통일 및 msw 수정 * Fix: #245 accesstoken 더미 데이터를 유저 데이터로 수정 (#247) * Fix: #245 accesstoken 더미 데이터 부분 수정 * Fix: #245 유저 인증 토큰 상태 코드 통일 * Chore: #231 이메일 인증 관련 코드 검토 및 주석 제거 (#234) * Config: #254 테스트를 위한 환경 설정 추가 (#255) * Chore: #254 build 작업시 tsc에서 지적하는 내용 수정 * Config: #254 staging 로컬 환경 테스트를 위한 serve 라이브러리 추가 * Config: #254 build를 위한 tsc 설정 추가 * Config: #254 gitignore 설정 추가 * Feat: #251 프로젝트 수정 팀원 추가 및 권한 변경 추가 (#252) * Feat: #251 프로젝트 수정 팀원 추가 및 권한 변경 추가 * Fix: AI 코드리뷰 반영 코드 수정 * Fix: #251 코드리뷰 반영 수정 * Fix: #251 프로젝트 수정 msw 및 mock API 수정 * Fix: #251 mockAPI 수정 및 mswHandler 수정 * Fix: #251 type 중복 삭제 mockAPI return 삭제 mswHandler try-catch 추가 * Formatting: #251 필요없는 경로 삭제 * Feat: #253 프로젝트 팀원 삭제 추가 (#256) * Feat: #253 프로젝트 팀원 삭제 추가 * Fix: #253 프로젝트 팀원 삭제 핸들러 삭제 범위 추가 * Fix: #253 mockAPI 추가 및 프로젝트 팀원 삭제 mswhandler 수정 * Config: #258 스테이징 환경에 https 설정 적용 (#259) * Config: #258 localhost 인증서 설정을 통해 실행하도록 script 명령어 수정 * Config: #258 localhost 인증서 파일 추적 제외 설정 * Formatting: #257 권한 설명 변경 (#260) * Formatting: #257 권한 설명 변경 * Formatting: #257 팀 & 프로젝트 권한 설명 변경 * Formatting: #257 프로젝트 룰 권한 설명 변경 * Formatting: #257 권한 설명 변경 * Fix: #233 새로고침 시 zustand 스토어 초기화되는 문제 수정 (#263) * Fix: 새로고침 후 isAuthenticated 초기화 문제를 해결하기 위한 영속성 추가 * Fix: 새로고침 시 zustand 스토어의 AT가 휘발되는 현상 보완 * Fix: #233 이미지 삭제 시, 기등록된 이미지가 아닌 다른 이미지를 참조 삭제하고 있던 에러 수정 * Chore: #233 gitignore 중복 삭제 * Feat: #261 유저 전체 검색 mswHandler 추가 & 팀 생성 시 HEAD 권한 삭제 (#264) * Feat: #261 유저 전체 검색 mswHandler 추가 & 팀 생성 시 HEAD 권한 삭제 * Fix: #261 유저 전체검색 mswHandler 변경 * Config: #269 Github Actions를 통해 테스트 통과 여부 검사 설정 (#271) * Config: #269 vitest github actions workflow 추가 * Config: #269 package.json scripts 명령어 세분화 * Fix: #266 AT 기간 만료 시 로직 수정 (#267) * Feat: #197 메타 데이터를 설정하는 컴포넌트 추가 및 적용 (#273) * Config: reat-helmet-async 라이브러리 추가 * Remove: #197 .gitkeep 파일 삭제 * Config: #197 favicon 아이콘 설정 * Feat: MetaData 추가를 위한 컴포넌트 추가 * Feat: #197 Page 컴포넌트에 Meta 컴포넌트 적용 * Chore: #197 메타 데이터 title 일관성을 위한 수정 * Chore: #197 접근성 개선을 위한 수정 * Asset: #197 Open Graph용 이미지 추가 및 og:image 재설정 * Config: #197 환경변수명 변경 및 Meta 컴포넌트 적용 * Chore: #197 불필요한 로그 삭제 * Fix: #274 팀 가입 현황과 대기 현황 필터링이 반대로 설정된 문제 해결 (#277) * Fix: #274 가입현황 대기현황 팀목록 필터링 수정 * Fix: #274 필터링 조건 변경에 따른 mock 데이터 수정 * Fix: #274 필터링 값 변경에 따른 팀 초대 수락 MSW 처리 수정 * Fix: #274 팀 생성 및 팀원 초대 MSW 처리 수정 * Fix: #275 로그아웃시 Access Token이 포함되도록 수정 (#276) * Fix: #275 로그아웃시 Access Token이 포함되도록 수정 * Fix: #275 MSW 로그아웃 처리 수정 * Feat: #230 유저 프로필 이미지 삭제 기능 구현 (#272) * Feat: #230 프로필 이미지 삭제 기능 구현 * Feat: #230 query 실행 결과에 따른 후처리를 위해 mutateAsync 사용 * Feat: #230 유저 mock 데이터에서 프로필 이미지 삭제 * Chore: #230 URL 분리에 따른 변수명 변경 * Chore: #230 mutate 명칭을 명시적으로 변경 * Feat: #265 프로젝트 생성 및 수정 권한 설정 추가 (#268) * Feat: 프로젝트 생성 및 수정 권한 설정 추가 * Feat: #265 프로젝트 수정 및 삭제 권한 설정 및 컴포넌트 분리 * Fix: #265 경로 정리 및 팀원 목록 조회 타입 단언 삭제 * Config: #270 Github Actions 자동 배포 설정 추가 (#280) * Config: #285 소셜 로그인 리다이렉트 URL 설정 & checkout 브랜치 명시 (#286) * Fix: #288 환경변수명 수정 (#289) --------- Co-authored-by: Yoonyesol <[email protected]> Co-authored-by: ice-bear98 <[email protected]>
PR Type
What kind of change does this PR introduce?
Related Issues
What does this PR do?
View
성공
오류
Other information
즉각적인 추가 / 삭제를 위해 추가적인
링크 추가
및링크 삭제
API를 고려했었는데,수정 API만으로도 UI 변경 없이 구현이 되더라고요!
거기다 마감 기한이 다가온 상황이라, 우선은 추가적인 API 없이 수정 API만으로 작업을 진행했습니다😂
백엔드 담당자 분과도 추후 리팩토링 할 때 추가 API, 삭제 API를 추가할지 이야기를 한번 더 나눠보기로 대화가 되어서, 우선은 수정 API만으로 기능을 구현했습니다!