Skip to content

refactor: 전체 파일 위치 리팩토링#131

Merged
Yejiin21 merged 20 commits intodevelopfrom
refactor/#130/type-api-refact
May 14, 2025
Merged

refactor: 전체 파일 위치 리팩토링#131
Yejiin21 merged 20 commits intodevelopfrom
refactor/#130/type-api-refact

Conversation

@Yejiin21
Copy link
Copy Markdown
Contributor

@Yejiin21 Yejiin21 commented May 14, 2025

  • 사용하지 않는 type 파일 제거
  • FSD 기능에 맞게 전체적인 파일 위치나 파일명 수정

Summary by CodeRabbit

  • 신규 기능

    • 이벤트 정보 입력 페이지가 새롭게 추가되었습니다.
    • 호스트 대시보드 데이터 조회용 훅과 API가 추가되었습니다.
    • 대시보드 응답 관리용 상태 관리 스토어가 도입되었습니다.
  • 버그 수정

    • 없음
  • 리팩터

    • 이벤트, 대시보드, 티켓, 북마크 등 여러 기능의 디렉터리 구조 및 import 경로가 통일되고 정리되었습니다.
    • 북마크 관련 React Query 훅이 모델에서 훅 디렉터리로 이동 및 재구성되었습니다.
    • 일부 기능의 상태 관리 및 API 호출 로직이 분리·이전되어 구조가 개선되었습니다.
    • 대시보드 관련 훅과 API가 일부 파일에서 이동 및 통합되었습니다.
  • 스타일

    • 코드 스타일 및 들여쓰기, import 구문 등 전반적인 코드 포맷이 일관성 있게 정리되었습니다.
  • 문서/타입

    • 사용되지 않는 타입/모델/목데이터 파일이 대거 삭제되었습니다.
    • 일부 타입이 새 경로로 이동되었습니다.

@Yejiin21 Yejiin21 self-assigned this May 14, 2025
@Yejiin21 Yejiin21 linked an issue May 14, 2025 that may be closed by this pull request
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented May 14, 2025

"""

Walkthrough

이 변경사항은 프로젝트의 디렉토리 구조를 대대적으로 리팩토링하고, 타입 및 목업 데이터 파일을 정리하며, 여러 컴포넌트와 훅, API 모듈의 import 경로를 일관성 있게 수정합니다. 일부 기능 파일이 새 위치로 이동하거나 통합되었고, 불필요한 타입 및 목업 데이터 파일이 삭제되었습니다.

Changes

파일/그룹 변경 요약
src/features/bookmark/hook/useBookmarkHook.ts, src/features/bookmark/model/useBookmarkHook.ts 북마크 관련 React Query 훅을 model 디렉토리에서 hook 디렉토리로 이동 및 재구현. 기존 model 파일 삭제, hook 파일에서 동일한 훅 재정의.
src/features/dashboard/api/event.ts, src/features/dashboard/api/hostDashboard.ts 대시보드 데이터 조회 API 함수(getHostDashboard)를 별도 파일로 분리. 기존 파일에서 함수 삭제, 새 파일에 함수 추가.
src/features/dashboard/model/ResponseStore.tsx, src/features/dashboard/model/store/ResponseStore.tsx 대시보드 응답 관리 Zustand 스토어를 model에서 store 하위 디렉토리로 이동 및 재정의.
src/features/dashboard/model/participantInformation.ts 참가자 정보 타입 인터페이스 삭제.
src/features/event-manage/event-create/model/event.ts, src/features/event-manage/event-list/model/eventList.ts, src/features/event/model/event.ts 이벤트 생성 및 리스트 관련 타입 인터페이스를 event-manage 디렉토리에서 event 디렉토리로 이동 및 통합.
src/pages/event-manage/ui/EventInfoPage.tsx, src/pages/event/ui/create-event/EventInfoPage.tsx 이벤트 정보 입력 페이지 컴포넌트를 event-manage에서 event/ui/create-event로 이동 및 재정의.
src/shared/types/eventCardType.ts, src/shared/types/filterDataType.ts, src/shared/types/hostInfoType.ts, src/shared/types/mailInfoType.ts, src/shared/types/ticketType.ts 이벤트, 필터, 호스트, 메일, 티켓 관련 목업 데이터 및 타입 정의 파일 삭제.
src/shared/types/dashboardType.ts 대시보드 관련 타입 인터페이스(menuListsData, dashboardData) 삭제.
src/entities/event/api/eventDetail.ts 이벤트 검색 함수(searchEvents) 및 관련 타입 import 경로 수정 및 함수 삭제.
여러 컴포넌트, 훅, API 파일 import 경로를 새로운 디렉토리 구조에 맞게 일괄 수정. 불필요한 상대경로 단축, 경로 통일.
스타일 및 포맷팅 코드 스타일, 들여쓰기, 세미콜론, 따옴표 등 일관성 있게 정리.

Changes Table

파일/그룹 변경 요약
src/features/bookmark/hook/useBookmarkHook.ts, src/features/bookmark/model/useBookmarkHook.ts 북마크 훅 위치 이동 및 재구현
src/features/dashboard/api/event.ts, src/features/dashboard/api/hostDashboard.ts 대시보드 API 함수 분리 및 위치 변경
src/features/dashboard/model/ResponseStore.tsx, src/features/dashboard/model/store/ResponseStore.tsx Zustand 스토어 구조 변경 및 이동
src/features/dashboard/model/participantInformation.ts 참가자 타입 삭제
src/features/event-manage/event-create/model/event.ts, src/features/event-manage/event-list/model/eventList.ts, src/features/event/model/event.ts 이벤트 관련 타입 통합 및 위치 변경
src/pages/event-manage/ui/EventInfoPage.tsx, src/pages/event/ui/create-event/EventInfoPage.tsx 이벤트 정보 페이지 위치 이동 및 재정의
src/shared/types/eventCardType.ts, src/shared/types/filterDataType.ts, src/shared/types/hostInfoType.ts, src/shared/types/mailInfoType.ts, src/shared/types/ticketType.ts 목업/타입 파일 정리(삭제)
src/shared/types/dashboardType.ts 대시보드 타입 삭제
src/entities/event/api/eventDetail.ts 이벤트 검색 함수 삭제 및 import 경로 수정
여러 컴포넌트, 훅, API 파일 import 경로 일괄 수정 및 포맷팅 정리

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant BookmarkHook
    participant ReactQueryCache
    participant API

    User->>BookmarkHook: useCreateBookmark(eventId)
    BookmarkHook->>ReactQueryCache: Optimistic update (bookmarked=true)
    BookmarkHook->>API: createBookmark(eventId)
    API-->>BookmarkHook: 응답(성공/실패)
    BookmarkHook->>ReactQueryCache: rollback or invalidate query
Loading
sequenceDiagram
    participant User
    participant HostDashboardHook
    participant API

    User->>HostDashboardHook: useGetEventHook()
    HostDashboardHook->>API: getHostDashboard(eventId)
    API-->>HostDashboardHook: HostDashboardResponse 반환
Loading

Possibly related PRs

Suggested labels

🪄 Refactoring

Poem

리팩토링 바람이 분다,
디렉토리 숲이 새로 난다.
타입과 목업, 먼지처럼 사라지고,
import 길도 짧아진다.
토끼는 깡총, 코드 위를 달려,
더 깔끔한 들판에서
🥕를 한입 베어 문다!
"""

Tip

⚡️ Faster reviews with caching
  • CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.

Enjoy the performance boost—your workflow just got faster.

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

@github-actions
Copy link
Copy Markdown

Copy link
Copy Markdown

@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: 6

🔭 Outside diff range comments (4)
src/features/dashboard/model/store/ParticipantStore.tsx (2)

4-12: ⚠️ Potential issue

인터페이스 이름 오타 수정 필요 (ParicipantStateParticipantState)
ParicipantState의 ‘t’가 빠져 있어 가독성과 일관성을 해칩니다. 인터페이스와 create<...> 제네릭 타입 모두 ParticipantState로 수정을 권장합니다.

-interface ParicipantState {
+interface ParticipantState {

65-73: 🛠️ Refactor suggestion

함수명과 동작 불일치: toggleApproveParticipantapproveParticipant 검토
현재 구현은 토글이 아닌 승인(true로 고정)만 처리합니다. 동작 의도가 ‘승인’이라면 함수명을 approveParticipant로 변경하거나, 토글 기능이 필요하다면 !state.approvedParticipants[orderNumber] 형태로 구현을 보완하세요.

src/features/event/ui/LinkInput.tsx (1)

77-77: ⚠️ Potential issue

autoFocus 조건 로직 오류
타이틀 입력창의 autoFocus 속성에 잘못된 비교식이 들어가 있어 절대 true가 되지 않습니다. 아래와 같이 수정하세요.

- autoFocus={activeInput.field === link.title && activeInput.field === 'title'}
+ autoFocus={activeInput.field === 'title'}
src/pages/dashboard/ui/ticket/TIcketConfirmPage.tsx (1)

52-61: ⚠️ Potential issue

함수 이름에 오타가 있습니다.

cancleOrderTicket 함수 이름에 오타가 있습니다. 올바른 이름은 cancelOrderTicket이어야 합니다. 이는 함수 내부에서 사용하는 API 함수 이름(cancelTickets)과도 일관성을 유지하는 것이 좋습니다.

-const cancleOrderTicket = async (orderIds: number[]) => {
+const cancelOrderTicket = async (orderIds: number[]) => {

그리고 함수 호출 부분(105-109줄)에서도 같은 이름으로 수정해야 합니다:

-            cancleOrderTicket(orderIds).then(() => {
+            cancelOrderTicket(orderIds).then(() => {
🧹 Nitpick comments (14)
src/features/event/ui/LinkInput.tsx (1)

3-5: 에셋 폴더 명칭 일관성 검토 제안
현재 SVG 에셋을 event-manage/creation 디렉토리에서 불러오고 있는데, FSD 구조상 event 폴더로 이동시키거나, 에셋 경로를 재구조화하는 것이 유지보수에 도움이 됩니다.

src/features/event/ui/EventTag.tsx (1)

3-3: 상대 경로 수정 확인: MultilineTextField 컴포넌트의 import 경로가 리팩토링된 디렉토리 구조에 맞게 올바르게 업데이트되었습니다.
tsconfig의 path alias를 활용해 상대 경로 깊이를 줄이는 방안을 고려하면 유지보수성과 가독성이 더욱 향상될 수 있습니다.

src/pages/event/ui/create-event/EventTitlePage.tsx (1)

3-5: 상대 경로 import 수정이 적절합니다
UnderlineTextField, useFunnelState, EventTitleFormDataeventTitleZodValidation의 import 경로가 리팩토링된 디렉토리 구조에 맞게 정확히 업데이트되었습니다.

상대 경로가 깊어 유지보수가 어려울 수 있으므로, tsconfig.json의 path alias를 도입하여 절대 경로 import 사용을 고려해보세요.

src/features/event/ui/ShareEventModal.tsx (1)

1-4: 자산 및 유틸리티 import 경로 수정
profile, link, kakao 이미지와 shareToKakao 함수의 import 경로가 리팩토링된 디렉토리 구조에 맞춰 업데이트되었습니다.

이미지와 유틸 경로가 깊게 중첩되어 있어 가독성이 떨어질 수 있습니다. path alias 활용 또는 웹팩 alias 설정을 통해 경로를 단순화해보세요.

src/widgets/dashboard/ui/ticket/SelectTicketInfo.tsx (2)

1-3: 상대 경로 import 경로 업데이트
TextButtonReadTicketResponse의 import 경로가 리팩토링된 구조에 맞게 수정되었습니다.

상대 경로가 깊어 보이므로, 절대 경로 alias 도입을 고려해보세요.


19-19: JSX 간소화 및 접근성 제안
TextButton JSX가 한 줄로 간결하게 개선되었습니다.

버튼 레이블로 단순 ">" 대신 아이콘 컴포넌트를 사용하거나, aria-label 속성을 추가해 접근성을 강화하는 것을 권장드립니다.

src/widgets/event/ui/TicketInfo.tsx (1)

49-49: 디버깅용 console.log 제거 검토
console.log('API 응답:', response);는 프로덕션 환경에서 불필요할 수 있습니다. 로깅 수준을 관리하거나 삭제를 고려하세요.

src/features/dashboard/hook/useHostDashboardHook.ts (1)

1-17: useGetEventHook 함수가 적절하게 구현되었습니다.

이전에 useEventHook.ts에서 제거된 기능을 대체하는 새로운 훅입니다. URL 파라미터에서 이벤트 ID를 추출하고, React Query를 사용하여 호스트 대시보드 데이터를 가져오는 기능을 적절하게 구현했습니다. 이 변경은 FSD 방법론에 맞게 파일을 재구성하는 리팩토링의 일부입니다.

추가 고려사항:

  • 오류 처리 로직이 명시적으로 추가되면 더 좋을 것 같습니다.
  • enabled 옵션을 추가하여 eventId가 유효할 때만 쿼리가 실행되도록 하는 것이 안전할 수 있습니다.
  const { data: eventInfo } = useQuery<HostDashboardResponse>({
    queryKey: ['eventInfo', eventId],
    queryFn: () => getHostDashboard(eventId),
+   enabled: !isNaN(eventId) && eventId > 0,
+   onError: (error) => {
+     console.error('대시보드 데이터 로딩 중 오류 발생:', error);
+   }
  });
src/shared/ui/backgrounds/TicketOptionLayout.tsx (2)

26-36: 불필요한 블록문 삭제 및 주석 처리 방식 개선
Biome 경고에 따라 빈 블록을 제거하고, TODO 주석은 인라인 주석으로 남기면 가독성이 좋아집니다.

-  const handleNextPage = () => {
-    if (isLastPage) {
-      {
-        /* 데이터 전송 추가 */
-      }
-    } else {
-      setCurrentPage(currentPage + 1);
-      {
-        /* 데이터 전송 추가 */
-      }
-    }
-  };
+  const handleNextPage = () => {
+    if (isLastPage) {
+      // TODO: 데이터 전송 추가
+    } else {
+      setCurrentPage(currentPage + 1);
+      // TODO: 데이터 전송 추가
+    }
+  };
🧰 Tools
🪛 Biome (1.9.4)

[error] 32-34: This block statement doesn't serve any purpose and can be safely removed.

Standalone block statements without any block-level declarations are redundant in JavaScript and can be removed to simplify the code.
Safe fix: Remove redundant block.

(lint/complexity/noUselessLoneBlockStatements)


51-53: 인디케이터 이미지에 alt 속성 추가
접근성 향상을 위해 img 태그에 대체 텍스트를 넣어주세요.

-            <img key={index} src={index + 1 === currentPage ? active : inactive} className="object-contain" />
+            <img
+              key={index}
+              src={index + 1 === currentPage ? active : inactive}
+              alt={index + 1 === currentPage ? '현재 페이지 인디케이터' : '비활성 페이지 인디케이터'}
+              className="object-contain"
+            />
src/features/ticket/hooks/useTicketHook.ts (2)

13-23: useCreateTicket 훅 UX 개선 제안
현재 onSuccessonError에서 alert 및 전체 페이지 리로드(window.location.reload())를 사용하고 있는데,
React Query의 queryClient.invalidateQueries를 활용해 리로드 없이 데이터만 갱신하는 방향을 고려하면 사용자 경험과 성능이 개선됩니다.

 onSuccess: () => {
- alert('티켓이 성공적으로 저장되었습니다.');
- window.location.reload();
+ alert('티켓이 성공적으로 저장되었습니다.');
+ queryClient.invalidateQueries(['tickets', ticketData.eventId]);
 },

26-36: useDeleteTicket 훅 UX 개선 제안
useCreateTicket와 동일하게 전체 리로드 대신 invalidateQueries를 사용해 변경된 티켓 목록만 갱신하도록 리팩토링을 권장합니다.

src/pages/dashboard/ui/ticket/TIcketConfirmPage.tsx (1)

100-110: onClick 핸들러 포맷팅이 개선되었습니다.

이전의 한 줄짜리 체인 프로미스에서 명시적인 블록이 있는 다중 라인 화살표 함수로 변경되었습니다. 이렇게 하면 코드가 더 명확해지고 디버깅이 쉬워집니다.

하지만 여기서도 cancleOrderTicket 함수 이름의 오타를 수정해야 합니다.

src/features/dashboard/ui/ResponsesList.tsx (1)

24-31: 옵셔널 체이닝 사용 권장

정적 분석 도구가 옵셔널 체이닝을 사용하도록 제안하고 있습니다. response && response[0] 부분을 옵셔널 체이닝으로 변경하면 코드가 더 간결해집니다.

-  const queryOptions =
-    response && response[0]
-      ? Object.keys(response[0])
-          .filter(key => key !== 'id' && key !== 'selectedOptions')
-          .map(key => ({
-            v1: fieldMap[key] || key,
-            v2: '',
-          }))
-      : [];
+  const queryOptions = response?.[0]
+    ? Object.keys(response[0])
+        .filter(key => key !== 'id' && key !== 'selectedOptions')
+        .map(key => ({
+          v1: fieldMap[key] || key,
+          v2: '',
+        }))
+    : [];
🧰 Tools
🪛 Biome (1.9.4)

[error] 24-24: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 411ea9b and bda63a3.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (91)
  • package.json (1 hunks)
  • src/app/routes/Router.tsx (2 hunks)
  • src/entities/event/api/eventDetail.ts (1 hunks)
  • src/entities/event/hook/useEventHook.ts (1 hunks)
  • src/entities/event/hook/useEventListHook.ts (1 hunks)
  • src/features/bookmark/hook/useBookmarkHook.ts (1 hunks)
  • src/features/bookmark/model/useBookmarkHook.ts (0 hunks)
  • src/features/dashboard/api/event.ts (0 hunks)
  • src/features/dashboard/api/hostDashboard.ts (1 hunks)
  • src/features/dashboard/api/mail.ts (1 hunks)
  • src/features/dashboard/hook/useEmailHook.ts (1 hunks)
  • src/features/dashboard/hook/useEventHook.ts (1 hunks)
  • src/features/dashboard/hook/useHostDashboardHook.ts (1 hunks)
  • src/features/dashboard/hook/useParticipants.ts (1 hunks)
  • src/features/dashboard/model/ResponseStore.tsx (0 hunks)
  • src/features/dashboard/model/participantInformation.ts (0 hunks)
  • src/features/dashboard/model/store/ParticipantStore.tsx (1 hunks)
  • src/features/dashboard/model/store/ResponseStore.tsx (1 hunks)
  • src/features/dashboard/ui/EmailInput.tsx (3 hunks)
  • src/features/dashboard/ui/ParicipantCard.tsx (1 hunks)
  • src/features/dashboard/ui/PariticipantsList.tsx (1 hunks)
  • src/features/dashboard/ui/ResponsesList.tsx (1 hunks)
  • src/features/dashboard/ui/SelectedResponseList.tsx (1 hunks)
  • src/features/event-manage/event-create/model/event.ts (0 hunks)
  • src/features/event-manage/event-list/model/eventList.ts (0 hunks)
  • src/features/event/api/event.ts (1 hunks)
  • src/features/event/api/host.ts (1 hunks)
  • src/features/event/api/presignedUrl.ts (1 hunks)
  • src/features/event/hooks/useEventHook.ts (1 hunks)
  • src/features/event/hooks/useHostHook.ts (1 hunks)
  • src/features/event/hooks/usePresignedUrlHook.ts (1 hunks)
  • src/features/event/model/event.ts (1 hunks)
  • src/features/event/ui/EventCategory.tsx (1 hunks)
  • src/features/event/ui/EventFunnel.tsx (1 hunks)
  • src/features/event/ui/EventList.tsx (1 hunks)
  • src/features/event/ui/EventTag.tsx (1 hunks)
  • src/features/event/ui/EventType.tsx (1 hunks)
  • src/features/event/ui/FileUpload.tsx (1 hunks)
  • src/features/event/ui/LinkInput.tsx (1 hunks)
  • src/features/event/ui/ShareEventModal.tsx (1 hunks)
  • src/features/home/hooks/useEventHook.ts (1 hunks)
  • src/features/home/ui/EventSliderSection.tsx (1 hunks)
  • src/features/payment/ui/TicketOption.tsx (1 hunks)
  • src/features/ticket/api/order.ts (1 hunks)
  • src/features/ticket/api/ticket.ts (1 hunks)
  • src/features/ticket/hooks/useTicketHook.ts (1 hunks)
  • src/features/ticket/model/TicketContext.tsx (3 hunks)
  • src/pages/bookmark/ui/BookmarkPage.tsx (1 hunks)
  • src/pages/dashboard/ui/DashbaordPage.tsx (1 hunks)
  • src/pages/dashboard/ui/EventDetailPage.tsx (1 hunks)
  • src/pages/dashboard/ui/EventInfoPage.tsx (1 hunks)
  • src/pages/dashboard/ui/EventTagPage.tsx (1 hunks)
  • src/pages/dashboard/ui/ParticipantsMangementPage.tsx (2 hunks)
  • src/pages/dashboard/ui/ResponsesManagementPage.tsx (1 hunks)
  • src/pages/dashboard/ui/mail/EmailEditPage.tsx (3 hunks)
  • src/pages/dashboard/ui/mail/EmailPage.tsx (2 hunks)
  • src/pages/dashboard/ui/mail/MailBoxPage.tsx (3 hunks)
  • src/pages/dashboard/ui/ticket/TIcketConfirmPage.tsx (6 hunks)
  • src/pages/dashboard/ui/ticket/TicketCreatePage.tsx (8 hunks)
  • src/pages/dashboard/ui/ticket/TicketListPage.tsx (1 hunks)
  • src/pages/event-manage/ui/EventInfoPage.tsx (0 hunks)
  • src/pages/event/ui/AllEventsPage.tsx (1 hunks)
  • src/pages/event/ui/CategoryPage.tsx (1 hunks)
  • src/pages/event/ui/EventDetailsPage.tsx (1 hunks)
  • src/pages/event/ui/create-event/EventInfoPage.tsx (1 hunks)
  • src/pages/event/ui/create-event/EventOrganizerInfoPage.tsx (1 hunks)
  • src/pages/event/ui/create-event/EventPeriodPage.tsx (1 hunks)
  • src/pages/event/ui/create-event/EventTagPage.tsx (1 hunks)
  • src/pages/event/ui/create-event/EventTitlePage.tsx (1 hunks)
  • src/pages/event/ui/create-event/EventTypePage.tsx (1 hunks)
  • src/pages/event/ui/create-event/FunnelPage.tsx (1 hunks)
  • src/pages/event/ui/host/HostCreationPage.tsx (1 hunks)
  • src/pages/event/ui/host/HostSelectionPage.tsx (1 hunks)
  • src/pages/search/ui/SearchPage.tsx (1 hunks)
  • src/shared/hooks/useInfiniteScroll.ts (1 hunks)
  • src/shared/types/dashboardType.ts (0 hunks)
  • src/shared/types/eventCardType.ts (0 hunks)
  • src/shared/types/filterDataType.ts (0 hunks)
  • src/shared/types/funnelType.ts (1 hunks)
  • src/shared/types/hostInfoType.ts (0 hunks)
  • src/shared/types/mailInfoType.ts (0 hunks)
  • src/shared/types/ticketType.ts (0 hunks)
  • src/shared/ui/backgrounds/DashboardLayout.tsx (1 hunks)
  • src/shared/ui/backgrounds/TicketOptionLayout.tsx (1 hunks)
  • src/widgets/dashboard/ui/email/EmailDeleteModal.tsx (1 hunks)
  • src/widgets/dashboard/ui/email/EmailModal.tsx (4 hunks)
  • src/widgets/dashboard/ui/email/SelectTicketModal.tsx (3 hunks)
  • src/widgets/dashboard/ui/email/SentMailCard.tsx (3 hunks)
  • src/widgets/dashboard/ui/ticket/SelectTicketInfo.tsx (2 hunks)
  • src/widgets/dashboard/ui/ticket/TicketItem.tsx (2 hunks)
  • src/widgets/event/ui/TicketInfo.tsx (3 hunks)
💤 Files with no reviewable changes (13)
  • src/features/dashboard/model/participantInformation.ts
  • src/features/event-manage/event-create/model/event.ts
  • src/features/dashboard/api/event.ts
  • src/shared/types/dashboardType.ts
  • src/features/event-manage/event-list/model/eventList.ts
  • src/shared/types/filterDataType.ts
  • src/shared/types/ticketType.ts
  • src/features/dashboard/model/ResponseStore.tsx
  • src/shared/types/hostInfoType.ts
  • src/pages/event-manage/ui/EventInfoPage.tsx
  • src/shared/types/mailInfoType.ts
  • src/shared/types/eventCardType.ts
  • src/features/bookmark/model/useBookmarkHook.ts
🧰 Additional context used
🧬 Code Graph Analysis (17)
src/widgets/dashboard/ui/ticket/SelectTicketInfo.tsx (1)
src/features/ticket/model/ticket.ts (1)
  • ReadTicketResponse (21-27)
src/features/dashboard/api/hostDashboard.ts (1)
src/shared/types/api/http-client.ts (1)
  • axiosClient (6-13)
src/pages/dashboard/ui/mail/EmailEditPage.tsx (3)
src/features/dashboard/hook/useParticipants.ts (1)
  • useParticipants (9-27)
src/features/dashboard/api/mail.ts (1)
  • editEmail (31-34)
src/features/dashboard/hook/useEmailHook.ts (1)
  • useEditEmail (42-57)
src/pages/bookmark/ui/BookmarkPage.tsx (1)
src/features/bookmark/hook/useBookmarkHook.ts (1)
  • useBookmarks (6-11)
src/widgets/dashboard/ui/email/SentMailCard.tsx (1)
src/shared/lib/date.ts (2)
  • formatDate (1-9)
  • formatTime (10-15)
src/features/ticket/api/ticket.ts (2)
src/features/ticket/model/ticket.ts (2)
  • CreateTicketRequest (1-12)
  • ReadTicketResponse (21-27)
src/shared/types/api/http-client.ts (1)
  • axiosClient (6-13)
src/features/event/model/event.ts (1)
src/shared/types/baseEventType.ts (1)
  • BaseEvent (5-24)
src/features/dashboard/ui/EmailInput.tsx (1)
src/features/dashboard/model/store/EmailStore.tsx (1)
  • useEmailStore (21-46)
src/features/ticket/api/order.ts (2)
src/shared/types/api/http-client.ts (1)
  • axiosClient (6-13)
src/features/ticket/model/Order.ts (1)
  • OrderTicketRequest (1-5)
src/widgets/dashboard/ui/ticket/TicketItem.tsx (2)
src/features/ticket/model/ticket.ts (1)
  • ReadTicketResponse (21-27)
src/features/ticket/hooks/useTicketHook.ts (1)
  • useDeleteTicket (26-37)
src/pages/event/ui/create-event/EventInfoPage.tsx (1)
src/features/event/model/FunnelContext.tsx (1)
  • useFunnelState (53-59)
src/features/payment/ui/TicketOption.tsx (1)
src/features/dashboard/model/store/TicketOptionStore.tsx (2)
  • TOption (3-8)
  • useTicketOptionStore (18-33)
src/features/bookmark/hook/useBookmarkHook.ts (3)
src/features/bookmark/model/bookmarkInformation.ts (1)
  • BookmarkResponse (1-11)
src/features/bookmark/api/bookmark.ts (3)
  • readBookmark (4-7)
  • createBookmark (9-12)
  • deleteBookmark (14-17)
src/entities/event/model/eventDetail.ts (1)
  • EventDetailResponse (8-17)
src/features/dashboard/hook/useEmailHook.ts (3)
src/features/dashboard/model/email.ts (3)
  • ReadEmailResponse (16-24)
  • EmailResponse (10-15)
  • EmailRequest (1-9)
src/features/dashboard/api/mail.ts (5)
  • readEmail (5-13)
  • readPurchaserEmails (16-24)
  • sendEmail (26-29)
  • editEmail (31-34)
  • deleteEmail (36-39)
src/features/dashboard/model/store/EmailStore.tsx (1)
  • useEmailStore (21-46)
src/features/dashboard/hook/useHostDashboardHook.ts (2)
src/entities/host/model/hostDashboard.ts (1)
  • HostDashboardResponse (1-9)
src/features/dashboard/api/hostDashboard.ts (1)
  • getHostDashboard (3-10)
src/shared/ui/backgrounds/TicketOptionLayout.tsx (1)
src/features/dashboard/model/store/TicketOptionStore.tsx (1)
  • useTicketOptionStore (18-33)
src/features/dashboard/model/store/ResponseStore.tsx (1)
src/shared/types/responseType.ts (1)
  • responsesData (12-20)
🪛 ESLint
src/widgets/event/ui/TicketInfo.tsx

[error] 58-58: 'error' is defined but never used.

(@typescript-eslint/no-unused-vars)

🪛 Biome (1.9.4)
src/shared/ui/backgrounds/TicketOptionLayout.tsx

[error] 32-34: This block statement doesn't serve any purpose and can be safely removed.

Standalone block statements without any block-level declarations are redundant in JavaScript and can be removed to simplify the code.
Safe fix: Remove redundant block.

(lint/complexity/noUselessLoneBlockStatements)


[error] 39-40: This block statement doesn't serve any purpose and can be safely removed.

Standalone block statements without any block-level declarations are redundant in JavaScript and can be removed to simplify the code.
Safe fix: Remove redundant block.

(lint/complexity/noUselessLoneBlockStatements)

src/features/dashboard/ui/ResponsesList.tsx

[error] 24-24: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)

🔇 Additional comments (135)
src/shared/ui/backgrounds/DashboardLayout.tsx (1)

5-5: SideBar import 경로가 올바르게 업데이트되었습니다.

widgets/dashboard/ui/main/SideBar로 변경된 경로가 구조 조정과 일치하며, 빌드 및 런타임 에러 없이 렌더링될 것으로 보입니다.

src/pages/dashboard/ui/DashbaordPage.tsx (2)

2-2: TicketRevenue import 경로가 올바르게 업데이트되었습니다.

widgets/dashboard/ui/main/TicketRevenue로 변경된 경로가 구조 조정과 일치하며, 컴포넌트 로딩에 문제가 없습니다.


7-7: EventOverview import 경로가 올바르게 업데이트되었습니다.

widgets/dashboard/ui/main/EventOverview로 변경된 경로가 일관되게 적용되었으며, 렌더링에도 이상이 없습니다.

package.json (1)

19-19: React Query Devtools 버전 업그레이드 확인
패치 버전 ^5.76.1로 올바르게 업데이트되었습니다. package-lock.json 또는 yarn.lock 파일도 함께 갱신되었는지 확인해주세요.

src/pages/dashboard/ui/EventInfoPage.tsx (1)

4-4: EventDatePicker import 경로 수정 적절함
리팩토링된 디렉토리 구조에 맞춰 ../../../features/event/ui/DatePicker로 경로가 올바르게 변경되었습니다.

src/entities/event/hook/useEventHook.ts (1)

2-2: API 모듈 import 경로 업데이트 적합
eventDetail../api/eventDetail에서 가져오도록 변경되어, 파일 구조 리팩토링을 일관되게 반영하고 있습니다.

src/features/dashboard/hook/useParticipants.ts (1)

7-7: useParticipantStore 경로 수정 확인
대시보드 스토어가 ../model/store/ParticipantStore로 이동된 것을 정확히 반영했습니다.

src/features/dashboard/ui/ParicipantCard.tsx (1)

3-3: useParticipantStore import 경로 변경 적절
UI 컴포넌트에서도 스토어 위치를 ../model/store/ParticipantStore로 일관성 있게 업데이트했습니다.

src/features/dashboard/ui/PariticipantsList.tsx (1)

4-4: useParticipantStore 경로가 올바르게 store 서브디렉토리로 이동되었습니다.
../model/store/ParticipantStore로의 경로 수정이 FSD 구조와 일치하며, 관련 컴포넌트에서도 동일하게 적용되어 일관성이 유지됩니다.

src/pages/dashboard/ui/EventTagPage.tsx (1)

4-5: 이벤트 UI 컴포넌트의 import 경로가 features/event/ui로 정상 업데이트되었습니다.
EventCategoryEventTag를 새 디렉토리 구조에서 올바르게 불러오고 있어 리팩토링 의도가 잘 반영되었습니다.

src/shared/types/funnelType.ts (1)

1-1: useFunnelHook 타입 import 경로가 features/event/hooks로 정확히 조정되었습니다.
이전 event-manage/event-create 대신 features/event 경로를 사용하여 모듈 구조가 명료해졌습니다.

src/features/event/hooks/useEventHook.ts (1)

2-2: ApiResponse 타입 import 경로가 shared/types/api/apiResponse로 단축되어 일관성을 확보했습니다.
깊은 상대경로 대신 간결한 상대경로를 사용해 유지보수성이 향상되었습니다.

src/shared/hooks/useInfiniteScroll.ts (1)

2-2: PaginationParamsEventFilters import가 entities/event/model/eventDetail로 업데이트되었습니다.
event 모델에서 eventDetail 모델로 전환된 구조를 반영하여 통일감을 유지하고 있습니다.

src/features/dashboard/model/store/ParticipantStore.tsx (1)

2-2: import 경로 업데이트가 올바르게 적용되었습니다.
participantsData 타입을 불러오는 상대 경로가 src/features/dashboard/model/store 위치에 맞춰 4단계 상위 디렉토리로 변경된 것이 적절합니다.

src/features/event/hooks/usePresignedUrlHook.ts (2)

2-2: import 경로 업데이트 적절합니다.
axiosClient 모듈의 상대 경로가 ../../../shared/types/api/http-client로 수정되어 모듈 위치 변경을 정확히 반영하고 있습니다.


5-5: import 경로 업데이트 적절합니다.
ApiResponse 타입의 상대 경로가 ../../../shared/types/api/apiResponse로 변경되어 일관성이 유지됩니다.

src/app/routes/Router.tsx (1)

7-7: FunnelPage import 경로가 올바르게 반영되었습니다.
event-manage에서 event/ui/create-event로 컴포넌트 위치 변경에 맞춰 경로를 수정한 것이 적절합니다.

src/pages/dashboard/ui/ticket/TicketListPage.tsx (1)

3-3: TicketItem import 경로가 올바르게 반영되었습니다.
위치가 widgets/dashboard/ui/ticket/TicketItem으로 변경된 것을 정확히 반영하고 있어 문제 없습니다.

src/pages/event/ui/create-event/EventTypePage.tsx (1)

1-1: FSD 구조 반영된 import: EventType 컴포넌트가 features/event/ui 디렉토리에서 올바르게 로드되고 있습니다. 경로 일관성이 확보되어 있어 보입니다.

src/pages/event/ui/create-event/EventPeriodPage.tsx (1)

1-2: 리팩토링에 따른 import 경로 업데이트: useFunnelStateEventDatePicker의 import 경로가 새로운 features/event 구조에 맞게 변경되었습니다. 기능에는 영향이 없으며, 구조 통일성이 잘 반영되었습니다.

src/pages/event/ui/CategoryPage.tsx (1)

6-6: EventList import 경로 일관성 확보: CategoryPage에서 features/event/ui/EventList를 참조하도록 경로가 올바르게 수정되었습니다. 전반적인 디렉토리 구조에 잘 맞춰져 있습니다.

src/pages/event/ui/AllEventsPage.tsx (1)

6-6: EventList import 동기화 완료: AllEventsPage에서도 features/event/ui/EventList로 경로가 통일되어 있음을 확인했습니다.

src/features/ticket/model/TicketContext.tsx (3)

2-2: 임포트 경로 업데이트
CreateTicketRequest 타입의 임포트 경로가 ./ticket로 수정되어 FSD 리팩터링에 맞춰 일관성을 확보했습니다.


14-14: 불필요한 공백 제거
eventId: 0 뒤의 trailing whitespace가 제거되어 코드가 더욱 깔끔해졌습니다.


43-43: 파일 끝에 개행 추가
파일 끝에 newline이 추가되어 POSIX 표준(편집기 호환성)을 준수합니다.

src/pages/dashboard/ui/EventDetailPage.tsx (1)

4-6: 이벤트 컴포넌트 임포트 경로 리팩터링
FileUpload, LinkInput, TextEditor의 경로가 features/event/ui로 일관되게 변경되었습니다. 새 위치의 파일이 정상적으로 존재하고 빌드 에러가 없는지 확인해 주세요.

src/features/event/api/presignedUrl.ts (1)

1-1: axiosClient 임포트 경로 단순화
공통 HTTP 클라이언트 모듈의 상대 경로가 한 단계 줄어들어 가독성이 개선되었습니다.

src/features/event/api/event.ts (1)

1-1: axiosClient 임포트 경로 단순화
공통 모듈의 상대 경로가 ../../../shared/types/api/http-client로 변경되어 디렉터리 구조에 맞춰졌습니다.

src/features/event/ui/FileUpload.tsx (1)

1-1: 이미지 자산 경로 축소
FileUpload.svg의 임포트 경로가 한 단계 상위로 조정되어, 리팩터링된 디렉터리 구조와 일치합니다. 빌드 시 해당 경로가 올바르게 해석되는지 확인해 주세요.

src/features/event/api/host.ts (1)

1-1: 상대 경로 import 경로 업데이트 확인
Axios 클라이언트의 import 경로가 4레벨에서 3레벨로 축소되었습니다. 디렉토리 구조 변경에 따라 올바르게 반영된 것이므로 문제 없습니다.

src/features/event/hooks/useHostHook.ts (1)

4-4: ApiResponse 타입 import 경로 업데이트
공유 API 타입 패키지의 상대 경로가 축소되었습니다. 구조 변경에 맞춰 일관성 있게 반영되어 있어 적절합니다.

src/pages/search/ui/SearchPage.tsx (1)

13-13: EventList 타입 import 경로 수정
이벤트 모델이 features/event 디렉토리로 이동됨에 따라 EventList 타입 import 경로가 올바르게 업데이트되었습니다.

src/pages/event/ui/create-event/EventOrganizerInfoPage.tsx (1)

3-5: 여러 컴포넌트 import 경로 조정
UnderlineTextField, useFunnelState, OrganizerFormData 및 관련 유효성 검증 유틸의 상대 경로가 새 구조에 맞게 일관성 있게 수정되었습니다. 잘 반영되었습니다.

src/features/home/ui/EventSliderSection.tsx (1)

7-7: EventItem 타입 import 경로 수정
EventItem 타입 import가 model/eventDetail로 변경되어 새로운 모델 구조와 일치합니다.

src/widgets/dashboard/ui/email/EmailDeleteModal.tsx (1)

1-1: 상대 경로 업데이트 확인
TertiaryButton의 import 경로가 파일 구조 변경에 맞춰 올바르게 수정되었습니다.

src/pages/event/ui/create-event/FunnelPage.tsx (1)

2-3: useFunnel, EventFunnel, FunnelProvider import 경로 확인
useFunnel, EventFunnel, FunnelProvider의 import 경로가 새로운 features/event 구조에 맞게 정확히 조정되었습니다.

Also applies to: 5-5

src/widgets/dashboard/ui/ticket/SelectTicketInfo.tsx (1)

10-10: props 구조 분해 개선
props 분해 선언에 공백을 추가하여 가독성이 향상되었습니다. 일관된 코드 스타일을 유지하고 있습니다.

src/pages/event/ui/create-event/EventTagPage.tsx (2)

1-1: SVG 에셋 경로 확인 요청
SuccessIcon의 경로가 아직 public/assets/event-manage/creation 아래에 남아있습니다. 리팩토링된 디렉토리 구조에서 해당 경로가 유효한지 검토해주세요.


2-4: 이벤트 관련 import 경로 업데이트
useFunnelState, EventCategory, EventTag를 새로운 features/event 디렉토리 구조에 맞춰 잘 이동하셨습니다.

src/features/event/ui/EventType.tsx (2)

1-2: SVG 아이콘 import 경로 점검
OnlineIconOfflineIcon 경로가 public/assets/event-manage/creation에 남아있습니다. 리팩토링된 구조에서 해당 디렉토리가 존재하는지 확인이 필요합니다.


4-5: 공유 컴포넌트 import 경로 일관성
KakaoMapAddressSearch 컴포넌트가 shared/ui 하위로 잘 조정되었습니다. 경로가 리팩토링 전후 일관되게 유지되어 있어 문제가 없어 보입니다.

src/pages/event/ui/EventDetailsPage.tsx (2)

12-12: 모달 컴포넌트 import 경로 정리
ShareEventModalfeatures/event/ui로 이동되었으며, 새로운 위치에서 정상 참조됩니다.


19-19: 북마크 훅 import 경로 업데이트
useCreateBookmark, useDeleteBookmarkfeatures/bookmark/hook에서 가져오도록 변경하셨습니다. 구현된 훅과 잘 매칭됩니다.

src/pages/dashboard/ui/ResponsesManagementPage.tsx (1)

5-5: 스토어 import 경로 일관성 확인
useResponseStorefeatures/dashboard/model/store/ResponseStore로 옮겨졌습니다. 리팩토링된 구조에 적합합니다.

src/features/home/hooks/useEventHook.ts (2)

2-2: API import 경로 업데이트 확인
getEventByTagentities/event/api/eventDetail 모듈로 올바르게 이동되었습니다.


4-4: 모델 타입 import 경로 검토
EventItem 타입이 entities/event/model/eventDetail로 잘 옮겨졌으며, React Query 반환 타입과 일치합니다.

src/entities/event/hook/useEventListHook.ts (2)

1-1: 이벤트 리스트 타입 import 경로 확인
이전 경로를 ../../../features/event/event-list/model/eventList로 조정하여 일관성을 유지했습니다. 경로가 올바르게 매핑되었습니다.


3-3: API 함수 import 경로 확인
getAllEventsInfinite../api/eventDetail에서 가져오도록 업데이트 했습니다. 파일 구조와 일치합니다.

src/pages/event/ui/host/HostCreationPage.tsx (3)

3-4: 디자인 시스템 컴포넌트 경로 확인
DefaultTextFieldMultilineTextField의 import 경로를 ../../../../../design-system/ui/textFields로 업데이트했습니다. 올바른 위치로 매핑되어 있습니다.


6-7: 훅 및 컨텍스트 import 경로 확인
useFunnelState../../../../features/event/model/FunnelContext에서 가져오도록 조정했습니다. 경로가 올바르고 일관적입니다.


8-9: 공통 유효성 검사 로직 import 경로 확인
hostCreationZodValidationHostCreationFormData../../../../shared/lib/formValidation에서 가져오도록 변경했습니다. 올바르게 반영되었습니다.

src/widgets/event/ui/TicketInfo.tsx (1)

4-4: 티켓 주문 요청 타입 import 경로 확인
OrderTicketRequest../../../features/ticket/model/order에서 가져오도록 변경했습니다. 변경 사항이 올바르게 반영되었습니다.

src/pages/event/ui/host/HostSelectionPage.tsx (2)

3-5: FunnelContext, host 목록 훅 및 아이콘 버튼 import 경로 확인
useFunnelState, useHostChannelList, IconButton의 import 경로를 FSD 구조에 맞게 조정했습니다. 경로가 올바르게 매핑되었습니다.


7-7: 호스트 삭제 훅 import 경로 확인
useHostDeletion../../../../features/event/hooks/useHostHook에서 가져오도록 업데이트했습니다. 경로가 정확합니다.

src/pages/dashboard/ui/mail/EmailEditPage.tsx (6)

5-5: import 경로가 올바르게 업데이트되었습니다.

TimePicker 컴포넌트의 import 경로가 FSD(Feature-Sliced Design) 방법론에 맞게 수정되었습니다. 이는 features/event/ui 디렉토리로 이동되어 이벤트 기능과 관련된 UI 컴포넌트로 적절하게 분류되었습니다.


7-7: SelectTicketModal 컴포넌트 경로 개선

SelectTicketModal 컴포넌트의 import 경로가 widgets/dashboard/ui/email 디렉토리로 변경되었습니다. 이메일 관련 위젯을 별도 디렉토리로 그룹화하여 관련 컴포넌트를 더 효과적으로 조직화했습니다.


9-9: 스토어 경로 구조 개선

useEmailStore의 import 경로가 model/store 하위 디렉토리로 이동되었습니다. 이는 상태 관리 로직을 model 레이어 내에서 더 명확하게 분리하여 FSD 패턴을 잘 따르고 있습니다.


15-15: 구조 분해 할당 문법 향상

useEditEmail 훅에서 반환되는 mutate 함수의 구조 분해 할당이 더 간결하고 직관적인 형태로 개선되었습니다.


38-38: 함수 호출 문법 개선

editEmail 함수 호출 시 매개변수 전달 방식이 더 명확한 객체 구조로 개선되었습니다. 이는 코드 가독성을 높이고 유지보수성을 향상시킵니다.


47-48: 코드 포맷팅 및 타입 표기 간소화

  • 47행: 타입 표기가 인라인으로 간소화되어 코드 가독성이 향상되었습니다.
  • 48행: isEdited prop의 값이 불리언 리터럴로 변경되어 더 명확해졌습니다.
src/widgets/dashboard/ui/email/SelectTicketModal.tsx (4)

2-6: import 경로 구조화 개선

여러 컴포넌트와 훅의 import 경로가 FSD 방법론에 맞게 업데이트되었습니다:

  • TextButton: design-system/ui/buttons 디렉토리로 정확하게 분류
  • SelectTicketInfo: 티켓 관련 UI 컴포넌트로 구조화
  • useTickets: 티켓 기능 관련 훅으로 적절하게 분류
  • useEmailStore: 모델 레이어 내 스토어로 구조화
  • usePurchaserEmails: 이메일 관련 훅으로 분류

이러한 변경은 코드베이스의 일관성을 높이고 관련 기능끼리 더 명확하게 그룹화합니다.


19-19: 구조 분해 할당 문법 개선

usePurchaserEmails 훅에서 반환되는 mutate 함수의 구조 분해 할당이 더 간결하고 직관적인 형태로 개선되었습니다.


25-25: 화살표 함수 매개변수 구문 간소화

단일 매개변수를 가진 화살표 함수에서 불필요한 괄호를 제거하여 코드가 더 간결해졌습니다.


51-51: map 함수 콜백 매개변수 구문 간소화

map 함수의 콜백에서 단일 매개변수를 가진 화살표 함수의 불필요한 괄호를 제거하여 코드가 더 간결해졌습니다.

src/widgets/dashboard/ui/email/SentMailCard.tsx (3)

3-8: import 경로 구조화 개선

여러 컴포넌트, 유틸리티 함수 및 타입의 import 경로가 프로젝트의 새로운 디렉토리 구조에 맞게 업데이트되었습니다:

  • IconButton과 TertiaryButton: design-system/ui/buttons 디렉토리로 정확하게 분류
  • formatDate, formatTime: shared/lib/date로 적절히 이동
  • ReadEmailResponse: 이메일 모델 타입으로 구조화
  • useEmailStore: 모델 레이어 내 스토어로 명확하게 구조화

이러한 변경은 FSD 방법론을 따르며 코드베이스의 일관성과 유지보수성을 향상시킵니다.


40-42: JSX 요소 포맷팅 개선

날짜와 시간 표시를 위한 JSX 구조가 더 읽기 쉽게 개선되었습니다. 여러 줄로 나누어 표현함으로써 코드 가독성이 향상되었습니다.


54-55: 버튼 컴포넌트 Props 포맷팅 개선

TertiaryButton 컴포넌트의 props가 한 줄로 정리되어 코드 일관성과 가독성이 향상되었습니다. 여러 줄에 걸쳐 있던 props가 간결하게 정리되었습니다.

src/features/event/ui/EventCategory.tsx (2)

2-2: import 경로 단순화

CategoryButton SVG 애셋의 import 경로가 단순화되었습니다. 이전에 다섯 단계 상위 디렉토리에서 네 단계 상위 디렉토리로 변경되어 더 직관적이고 유지보수하기 쉬운 구조가 되었습니다.


4-4: 타입 import 경로 단순화

CategoryType 타입의 import 경로가 네 단계 상위 디렉토리에서 세 단계 상위 디렉토리로 변경되었습니다. 이는 프로젝트의 전체적인 디렉토리 구조 리팩토링과 일치하며, 파일 경로를 더 직관적으로 만듭니다.

src/features/dashboard/api/hostDashboard.ts (1)

1-10: 호스트 대시보드 API 모듈 분리

이 파일은 이전에 event.ts 파일에 있던 getHostDashboard 함수를 별도의 모듈로 분리한 것입니다. 이는 FSD 방법론에 따라 기능별로 API를 더 명확하게 분리하여 코드 구조를 개선합니다.

함수 구현은 다음과 같은 장점이 있습니다:

  • 명확한 매개변수(eventId)로 호스트 대시보드 데이터를 조회합니다
  • axiosClient를 사용하여 HTTP 요청을 처리합니다
  • 응답에서 필요한 데이터만 추출하여 반환합니다

이러한 분리는 관심사 분리 원칙을 따르며, 대시보드 기능과 관련된 API를 보다 집중적으로 관리할 수 있게 합니다.

src/pages/dashboard/ui/ParticipantsMangementPage.tsx (3)

7-8: 폴더 구조 개선 확인

email 관련 컴포넌트들이 적절하게 서브디렉토리로 옮겨져 구조가 더 명확해졌습니다. 이는 FSD 방법론에 맞게 기능별로 파일을 구성하는 좋은 예시입니다.


55-55: 타입 표기 정리됨

이전 코드에 있던 불필요한 세미콜론이 제거되어 타입 표기가 깔끔해졌습니다.


58-58: JSX 구문 간소화

조건부 렌더링 코드가 한 줄로 간결하게 정리되어 가독성이 향상되었습니다.

src/entities/event/api/eventDetail.ts (2)

2-2: import 경로 수정

이벤트 관련 타입들이 event 모델에서 eventDetail 모델로 적절하게 이동되었습니다. 이는 FSD 방법론에 따라 관련된 타입들을 더 명확하게 구분하는 데 도움이 됩니다.

Also applies to: 5-5


1-80:

Details

✅ Verification successful

검색 기능 제거 확인 필요

PR 설명에는 사용하지 않는 타입 파일 제거에 대해 언급되어 있는데, 이 파일에서는 searchEvents 함수가 제거된 것으로 보입니다. 이 함수가 더 이상 사용되지 않는지, 혹은 다른 곳으로 이동되었는지 확인이 필요합니다.


🏁 Script executed:

#!/bin/bash
# 검색 기능이 다른 파일로 이동되었는지 확인
rg "searchEvents|search.*Events" --type ts

Length of output: 44


searchEvents 함수 제거 확인 완료

searchEvents 함수는 코드베이스 어디에서도 발견되지 않아 의도적으로 제거된 것으로 보입니다. 해당 기능이 더 이상 사용되지 않는 것이 맞다면 추가 수정은 필요 없습니다.

src/features/payment/ui/TicketOption.tsx (3)

1-3: import 경로 수정

티켓 옵션 관련 타입과 스토어의 import 경로가 변경되었습니다. 이는 FSD 구조에 맞게 파일 위치를 조정한 것으로 보입니다.


9-64: 코드 포맷팅 정리

코드 전반적으로 들여쓰기와 공백이 일관되게 정리되었습니다. 특히 JSX 구조에서 일관성 있는 들여쓰기는 가독성을 크게 향상시킵니다.


69-88: 샘플 데이터 포맷팅 개선

예제로 사용되는 옵션 배열의 포맷이 일관되게 정리되어 가독성이 향상되었습니다. 각 객체 항목 마지막에 콤마를 추가하는 것은 향후 항목을 추가할 때 편리합니다.

src/features/event/ui/EventFunnel.tsx (2)

1-9: 이벤트 관련 페이지 import 경로 정리

이벤트 생성 및 호스트 관리 관련 페이지의 import 경로가 pages/event-manage/ui/에서 pages/event/ui/ 하위의 더 명확한 서브폴더 구조로 변경되었습니다. 이는 FSD 방법론에 따라 기능별로 파일을 구성하는 데 더 적합합니다.


11-11: 공유 타입 import 경로 수정

EventFunnelInterfaceStepNames 타입의 import 경로가 변경되었습니다. 이 변경은 전체적인 디렉토리 구조 리팩토링의 일부로서 일관성을 유지합니다.

src/features/event/ui/EventList.tsx (1)

2-5: 가져오기 경로가 FSD 구조에 맞게 수정되었습니다.

파일 구조 리팩토링에 따라 경로가 적절하게 업데이트되었습니다. 이제 import 경로가 더 간결해지고 FSD(Feature-Sliced Design) 방법론에 잘 맞춰져 있습니다.

src/features/ticket/api/ticket.ts (2)

1-2: 모델 import 경로 수정이 적절합니다.

ReadTicketResponse의 import 경로가 'ticketInformation'에서 'ticket'으로 변경되었습니다. 파일 위치 변경에 따른, 적절한 수정입니다.


5-7: 코드 서식이 일관되게 개선되었습니다.

API 함수들의 들여쓰기와 세미콜론 사용이 일관성 있게 정리되었습니다. 함수 로직에는 변화가 없으며, 가독성만 향상되었습니다.

Also applies to: 10-14, 17-19

src/features/dashboard/hook/useEventHook.ts (1)

1-4: 불필요한 import와 함수가 제거되었습니다.

useGetEventHook 함수가 제거되고, 관련 import(useQuery, getHostDashboard)도 함께 제거되었습니다. 이 기능은 새로운 파일 useHostDashboardHook.ts로 이동된 것으로 보입니다. 이 변경은, 타당한 리팩토링입니다.

src/widgets/dashboard/ui/ticket/TicketItem.tsx (2)

3-6: import 경로가 적절하게 업데이트되었습니다.

리팩토링된 디렉토리 구조에 맞게 import 경로가 수정되었습니다. 특히 ReadTicketResponseuseDeleteTicket의 경로가 올바르게 업데이트되었습니다.


10-10: 코드 스타일이 일관되게 정리되었습니다.

구조 분해 할당과 JSX 내의 문자열 리터럴 주변 공백이 일관되게 정리되었습니다. 이러한 서식 변경은 코드 가독성을 향상시킵니다.

Also applies to: 27-27

src/widgets/dashboard/ui/email/EmailModal.tsx (4)

2-7: import 경로가 FSD 구조에 잘 반영되었습니다.
디자인 시스템, 훅, 스토어, UI 컴포넌트, 모델 모두 새 디렉토리 위치에 맞게 상대 경로가 정확히 수정되었습니다.


18-18: EmailStore 상태 구조 분해 할당이 간결해졌습니다.
여러 개의 상태 값을 한 줄로 꺼내어 가독성이 향상되었습니다.


44-45: emailData 객체에 트레일링 콤마 추가로 일관된 스타일을 유지합니다.
코드 포맷터와 일관된 객체 리터럴 스타일을 준수합니다.


61-63: TimePicker onChange 핸들러가 간결해졌습니다.
익명 함수에서 바로 setReservationDate를 호출하여 코드가 더 명확해졌습니다.

src/pages/bookmark/ui/BookmarkPage.tsx (1)

6-6: 북마크 훅 import 경로가 올바르게 업데이트되었습니다.
새로운 useBookmarkHook 모듈 위치에 맞춰, useBookmarks 훅을 정확히 참조하고 있습니다.

src/features/ticket/api/order.ts (5)

1-2: axiosClient와 OrderTicketRequest import 경로가 일관되게 정리되었습니다.
상대 경로 및 따옴표 사용이 다른 API 모듈과 동일하게 포맷팅되었습니다.


6-11: getAll 메서드 구현이 일관된 스타일을 따릅니다.
axiosClient.get 호출과 response.data 반환이 명확하게 분리되어 있어 이해하기 쉽습니다.


13-18: getDetail 메서드 구현이 일관된 포맷을 유지합니다.
파라미터 전달 방식을 다른 API 모듈과 동일하게 유지하여 가독성이 보장됩니다.


21-25: orderTickets 함수가 명확하게 분리되었습니다.
비즈니스 로직 없이 API 요청만을 수행하므로 테스트와 유지보수가 용이합니다.


28-31: cancelTickets 함수가 일관된 방식으로 정의되었습니다.
쿼리 파라미터를 URL에 직접 포함했으나, API 사양에 부합한다면 문제가 없습니다.

src/shared/ui/backgrounds/TicketOptionLayout.tsx (1)

7-7: useTicketOptionStore import 경로가 새 구조에 맞게 업데이트되었습니다.
모델 스토어 디렉토리로 옮겨진 TicketOptionStore를 정확히 참조합니다.

src/pages/event/ui/create-event/EventInfoPage.tsx (2)

1-4: 컴포넌트 import 경로가 FSD에 맞게 정렬되었습니다.
FileUpload, TextEditor, LinkInput, useFunnelState 모두 새 디렉토리 구조를 따라 정확히 참조하고 있습니다.


7-7: useFunnelState 훅 사용이 적절합니다.
훅에서 반환된 setEventState를 자식 컴포넌트에 전달하여 상태 관리를 일관되게 수행합니다.

src/pages/dashboard/ui/ticket/TicketCreatePage.tsx (5)

7-8: import 경로가 올바르게 수정되었습니다.
features/event-manage에서 features/ticket으로 모듈 이동에 따라 TicketDatePickerCreateTicketRequest의 import가 올바르게 업데이트되었습니다.


38-42: 티켓 종류 변경 핸들러 업데이트 승인
handleTicketTypeChange 내부의 setTicketData 호출이 괄호 제거 등 포맷팅만 조정되었으며, 로직에는 영향이 없습니다.


50-53: 입력 변경 핸들러 업데이트 승인
handleInputChangesetTicketData 호출부가 멀티라인으로 정리되었고, 숫자/문자 분기 처리 로직이 유지되고 있습니다.


136-141: 가격 및 수량 입력 UI 포맷팅 변경 승인
DefaultTextField 두 컴포넌트가 멀티라인으로 정렬되어 가독성이 향상되었습니다. 기능에는 변경이 없습니다.

Also applies to: 143-148


159-164: TicketDatePicker 사용부 포맷팅 변경 승인
TicketDatePicker 컴포넌트가 새 props (isLabel, ticketState, setTicketState, onDateChange)를 그대로 유지하며 포맷만 정리되었습니다.

src/features/ticket/hooks/useTicketHook.ts (2)

1-4: import 경로 및 quote 스타일 통일 확인
API 및 모델 import 경로가 FSD 구조에 맞춰 올바르게 수정되었고, 모든 문자열이 single quote로 통일되었습니다.


6-11: useTickets 훅 구현 승인
enabled: !!eventId 조건과 queryFn 설정이 명확하며, 의도된 동작을 잘 반영하고 있습니다.

src/pages/dashboard/ui/mail/EmailPage.tsx (3)

3-6: import 경로 업데이트 승인
TimePicker, SelectTicketModal, useEmailStore, EmailRequest 등의 import가 FSD 구조 변경에 맞춰 올바르게 조정되었습니다.


19-20: store destructuring 포맷팅 변경 승인
useEmailStore의 반환값 destructuring이 한 줄로 통일되어 가독성이 개선되었습니다.


58-64: allParticipantEmailsTimePicker.onChange 포맷팅 변경 승인
map 콜백과 onChange 핸들러가 concise arrow function 형식으로 정리되었으며, 기능에는 변동이 없습니다.

src/features/dashboard/api/mail.ts (6)

2-3: import 경로 통일 확인
emailInformation에서 email로 모델 import가 일관되게 변경되었습니다.


6-13: readEmail 함수 포맷팅 변경 승인
await, params 구조 등이 멀티라인으로 정리되었으며 기존 로직이 그대로 유지됩니다.


16-24: readPurchaserEmails 함수 포맷팅 변경 승인
optional param 분기(...(ticketId !== undefined && { ticketId }))가 깔끔하게 유지되었습니다.


26-29: sendEmail 함수 포맷팅 변경 승인
POST 호출부가 braces 및 return 형식으로 일관되게 정리되었습니다.


31-34: editEmail 함수 포맷팅 변경 승인
PUT 호출부 형식 정리가 적절합니다.


36-39: deleteEmail 함수 세미콜론 추가 확인
다른 함수와 동일하게 세미콜론이 일관되게 추가되어 스타일 통일성이 유지되었습니다.

src/features/dashboard/ui/EmailInput.tsx (3)

6-7: import 경로 수정 확인
useEmailStore의 import 경로가 model/store 디렉토리로 올바르게 이동되었습니다.


15-20: props destructuring 포맷팅 조정 승인
EmailInputProps destructuring이 명확하게 정리되었으며, 기본값 처리도 적절합니다.


23-24: store destructuring 포맷팅 변경 승인
useEmailStore로부터 가져오는 상태 및 setter가 깔끔하게 한 줄로 처리되어 가독성이 향상되었습니다.

src/features/dashboard/hook/useEmailHook.ts (5)

3-3: 임포트 경로 업데이트가 올바르게 적용되었습니다.

리팩토링을 통해 이메일 관련 타입들이 새 위치로 이동한 것이 반영되었습니다. 이는 FSD(Feature-Sliced Design) 방법론에 더 잘 맞게 구조화되었습니다.


5-5: 스토어 폴더 구조 개선이 적용되었습니다.

이메일 스토어가 모델 내의 전용 store 하위 디렉토리로 이동되어 상태 관리 코드가 더 체계적으로 구성되었습니다.


8-13: 코드 포맷팅이 일관되게 개선되었습니다.

코드 블록이 여러 줄로 나뉘어 가독성이 향상되었습니다. 함수의 논리는 변경되지 않고 코드 스타일만 개선되었습니다.


16-23: 일관된 스타일로 코드가 업데이트되었습니다.

들여쓰기와 세미콜론 사용이 일관되게 적용되어 코드베이스 전체의 스타일 통일성이 향상되었습니다.


26-40: 나머지 코드도 일관된 스타일로 개선되었습니다.

코드의 논리나 기능은 변경되지 않았으며, 포맷팅만 개선되어 가독성과 일관성이 향상되었습니다.

Also applies to: 42-57, 59-71

src/features/event/model/event.ts (1)

1-11: 이벤트 관련 타입들이 적절하게 중앙화되었습니다.

이벤트 관련 인터페이스들을 하나의 파일로 집중시켜 관리하는 것은 좋은 접근 방식입니다. 기본 타입(BaseEvent)을 확장하여 CreateEventRequest와 EventList 인터페이스를 정의한 것은 타입 재사용성과 일관성을 높이는 좋은 방법입니다.

이 중앙화된 타입 정의는 이전에 분산되어 있던 타입 파일들을 통합하여 FSD 방법론에 더 잘 맞게 구조화되었습니다.

src/features/dashboard/ui/SelectedResponseList.tsx (3)

1-1: 스토어 임포트 경로가 적절하게 업데이트되었습니다.

ResponseStore가 새로운 store 디렉토리 구조에 맞게 업데이트되었습니다. 이는 상태 관리 코드의 구조적 일관성을 향상시킵니다.


6-16: 인터페이스 정의가 일관된 스타일로 개선되었습니다.

들여쓰기와 포맷팅이 개선되어 타입 정의의 가독성이 향상되었습니다.


18-66: 컴포넌트 구현이 일관된 스타일로 개선되었습니다.

함수형 컴포넌트의 구현과 반환된 JSX가 일관된 포맷팅으로 개선되었습니다. 들여쓰기, 줄바꿈 및 공백 사용이 일관되게 적용되어 코드 가독성이 크게 향상되었습니다.

src/pages/dashboard/ui/ticket/TIcketConfirmPage.tsx (3)

6-6: 임포트 경로가 적절하게 업데이트되었습니다.

소문자 디렉토리 이름(ticketConfirm)을 사용하도록 수정되었습니다. 이는 디렉토리 명명 규칙의 일관성을 높입니다.


23-24: 타입 정의가 개선되었습니다.

location 객체의 구조와 orderStatus 타입이 명확하게 정의되어 타입 안전성이 향상되었습니다.

Also applies to: 26-26


74-89: 컴포넌트 Props 포맷팅이 개선되었습니다.

여러 줄에 걸쳐 Props를 나열하는 방식으로 변경되어 가독성이 향상되었습니다. 각 Prop을 별도의 줄에 배치하면 코드 리뷰와 유지보수가 더 쉬워집니다.

src/features/dashboard/model/store/ResponseStore.tsx (1)

1-47: Zustand 스토어 구현이 잘 되어 있습니다.

FSD(Feature-Sliced Design) 방법론에 맞게 store 디렉토리로 이동된 이 파일은 응답 데이터를 관리하기 위한 Zustand 스토어를 잘 구현하고 있습니다. 상태 업데이트 로직이 불변성을 유지하면서 명확하게 작성되어 있습니다.

src/features/dashboard/ui/ResponsesList.tsx (1)

1-1: import 경로가 올바르게 수정되었습니다.

리팩토링에 따라 useResponseStore의 import 경로가 새로운 구조에 맞게 올바르게 업데이트되었습니다.

src/features/bookmark/hook/useBookmarkHook.ts (3)

1-11: React Query 훅 구현이 잘 되어 있습니다.

FSD(Feature-Sliced Design) 방법론에 맞게 model 디렉토리에서 hook 디렉토리로 이동된 이 파일은 북마크 데이터를 관리하기 위한 React Query 훅이 잘 구현되어 있습니다. useBookmarks는 북마크 목록을 조회하는 훅으로, 명확한 구조를 가지고 있습니다.


13-46: 최적화된 업데이트 패턴 적용이 훌륭합니다.

useCreateBookmark 훅은 낙관적 업데이트(Optimistic Updates) 패턴을 올바르게 구현하여 사용자 경험을 향상시키고 있습니다. 오류 처리와 롤백 메커니즘도 적절히 구현되어 있습니다.


47-80: 삭제 기능 구현이 일관되게 잘 되어 있습니다.

useDeleteBookmark 훅도 마찬가지로 낙관적 업데이트 패턴을 잘 적용하고 있으며, 적절한 오류 처리와 캐시 무효화 로직이 구현되어 있습니다. 코드 구조가 useCreateBookmark와 일관성이 있어 유지 보수성이 좋습니다.

@github-actions
Copy link
Copy Markdown

@github-actions
Copy link
Copy Markdown

Copy link
Copy Markdown

@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: 0

♻️ Duplicate comments (1)
src/features/dashboard/ui/ResponsesList.tsx (1)

71-76: 중복된 이메일 필드 렌더링 문제가 해결되었습니다.

이전 코드에서 발견된 중복 이메일 필드 렌더링 문제가 해결되었습니다. 이제 email 필드는 한 번만 렌더링됩니다.

🧹 Nitpick comments (2)
src/shared/ui/backgrounds/TicketOptionLayout.tsx (1)

24-32: 불필요한 중괄호 블록을 제거해주세요.

불필요한 독립 블록 문이 있습니다. 주석을 포함하고 있는 블록이지만 이 블록은 JavaScript에서 중요한 역할을 하지 않으므로 제거하는 것이 좋습니다.

다음과 같이 수정을 제안합니다:

    if (isLastPage) {
-      {
        /* 데이터 전송 추가 */
-      }
    } else {
      setCurrentPage(currentPage + 1);
-      {
        /* 데이터 전송 추가 */
-      }
    }
🧰 Tools
🪛 Biome (1.9.4)

[error] 28-30: This block statement doesn't serve any purpose and can be safely removed.

Standalone block statements without any block-level declarations are redundant in JavaScript and can be removed to simplify the code.
Safe fix: Remove redundant block.

(lint/complexity/noUselessLoneBlockStatements)

src/features/dashboard/ui/ResponsesList.tsx (1)

24-31: 옵셔널 체이닝을 사용하여 코드를 개선할 수 있습니다.

현재 코드는 response && response[0]의 형태로 체크하고 있는데, 옵셔널 체이닝을 사용하면 더 간결하게 작성할 수 있습니다.

다음과 같이 수정을 제안합니다:

-  const queryOptions =
-    response && response[0]
-      ? Object.keys(response[0])
-          .filter(key => key !== 'id' && key !== 'selectedOptions')
-          .map(key => ({
-            v1: fieldMap[key] || key,
-            v2: '',
-          }))
-      : [];
+  const queryOptions = response?.[0]
+    ? Object.keys(response[0])
+        .filter(key => key !== 'id' && key !== 'selectedOptions')
+        .map(key => ({
+          v1: fieldMap[key] || key,
+          v2: '',
+        }))
+    : [];
🧰 Tools
🪛 Biome (1.9.4)

[error] 24-24: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 48ab74c and 37cf104.

📒 Files selected for processing (6)
  • src/features/dashboard/ui/EmailInput.tsx (3 hunks)
  • src/features/dashboard/ui/ResponsesList.tsx (1 hunks)
  • src/pages/dashboard/ui/mail/MailBoxPage.tsx (3 hunks)
  • src/pages/dashboard/ui/ticket/TIcketConfirmPage.tsx (6 hunks)
  • src/shared/ui/backgrounds/TicketOptionLayout.tsx (1 hunks)
  • src/widgets/dashboard/ui/email/EmailDeleteModal.tsx (3 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • src/widgets/dashboard/ui/email/EmailDeleteModal.tsx
  • src/pages/dashboard/ui/mail/MailBoxPage.tsx
  • src/pages/dashboard/ui/ticket/TIcketConfirmPage.tsx
  • src/features/dashboard/ui/EmailInput.tsx
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/shared/ui/backgrounds/TicketOptionLayout.tsx (1)
src/features/dashboard/model/store/TicketOptionStore.tsx (1)
  • useTicketOptionStore (18-33)
🪛 Biome (1.9.4)
src/features/dashboard/ui/ResponsesList.tsx

[error] 24-24: Change to an optional chain.

Unsafe fix: Change to an optional chain.

(lint/complexity/useOptionalChain)

src/shared/ui/backgrounds/TicketOptionLayout.tsx

[error] 28-30: This block statement doesn't serve any purpose and can be safely removed.

Standalone block statements without any block-level declarations are redundant in JavaScript and can be removed to simplify the code.
Safe fix: Remove redundant block.

(lint/complexity/noUselessLoneBlockStatements)


[error] 35-36: This block statement doesn't serve any purpose and can be safely removed.

Standalone block statements without any block-level declarations are redundant in JavaScript and can be removed to simplify the code.
Safe fix: Remove redundant block.

(lint/complexity/noUselessLoneBlockStatements)

🔇 Additional comments (4)
src/shared/ui/backgrounds/TicketOptionLayout.tsx (2)

7-7: 스토어 임포트 경로 업데이트가 잘 적용되었습니다.

FSD(Feature-Sliced Design) 방법론에 맞게 useTicketOptionStore의 임포트 경로가 업데이트되었습니다. 이는 PR의 목표인 파일 구조 리팩토링과 일치합니다.


46-51: 페이지 인디케이터 구현이 잘 개선되었습니다.

이전에 불필요한 pageIndicator 변수를 사용하던 코드가 제거되고, 배열을 직접 생성하여 렌더링하도록 개선되었습니다. 이는 코드의 가독성과 효율성을 향상시킵니다.

src/features/dashboard/ui/ResponsesList.tsx (2)

1-1: 스토어 임포트 경로 업데이트가 잘 적용되었습니다.

FSD(Feature-Sliced Design) 방법론에 맞게 useResponseStore의 임포트 경로가 업데이트되었습니다. 이는 PR의 목표인 파일 구조 리팩토링과 일치합니다.


37-37: 타입 애노테이션이 개선되었습니다.

key 파라미터의 타입 애노테이션이 더 정확하게 개선되었습니다. keyof typeof responsesInfo[0]에서 keyof (typeof responsesInfo)[0]로 변경되어 정확한 타입 추론이 가능해졌습니다.

Copy link
Copy Markdown
Member

@hyeeuncho hyeeuncho left a comment

Choose a reason for hiding this comment

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

불필요한 파일 삭제 잘해주셨네요 따봉

@Yejiin21 Yejiin21 merged commit f29dcb1 into develop May 14, 2025
2 checks passed
@Yejiin21 Yejiin21 deleted the refactor/#130/type-api-refact branch May 14, 2025 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[refactor] 타입 파일, API 파일 리팩토링

2 participants