Skip to content

Conversation

@HarrySeop
Copy link
Member

@HarrySeop HarrySeop commented Aug 4, 2025

🧩 관련 이슈 번호

📌 작업 내용

  • 후기 Schama가 변경되서 수정했습니다.
  • 무한스크롤 훅의 length 이슈로 인해 useQuery + useEffet를 사용한 무한스크롤로 수정했습니다.
  • 스켈레톤 UI를 추가했습니다.

✅ 체크리스트

  • PR 하기 전에 이슈에서 빼먹은건 없는지 확인했습니다
    • 라벨 및 마일스톤을 사이드 탭에서 등록했습니다.
  • PR을 보내는 브랜치가 올바른지 확인했습니다.
  • 팀원들이 리뷰하기 쉽도록 설명을 자세하게 작성했습니다.
  • 변경사항을 충분히 테스트 했습니다.
  • (함수를 구현 했을 때) JSDoc을 양식에 맞춰서 작성했습니다.
  • 컨벤션에 맞게 구현했습니다.

📷 UI 변경 사항 (선택)

image

추가로 무한스크롤 영역에도 로딩 스켈레톤 추가했습니다!

❓무슨 문제가 발생했나요? (선택)

  • 백엔드 억까 멈춰,, 제발..

💬 기타 참고 사항 (선택)

Summary by CodeRabbit

  • 신규 기능

    • 예약 카드 및 예약 목록 페이지의 스켈레톤(로딩) UI가 추가되었습니다.
  • 버그 수정

    • 예약 목록 페이지에서 무한 스크롤 및 페이징 동작이 수동 방식으로 개선되어, 데이터 중복 없이 더 자연스럽게 예약 리스트를 불러올 수 있습니다.
  • UI/UX 개선

    • 로딩 상태에서 스피너 대신 스켈레톤 UI가 표시됩니다.
  • 기타

    • 예약 응답 데이터에서 deletedAt 필드가 제거되었습니다.

@HarrySeop HarrySeop added this to the 프로젝트 마감 milestone Aug 4, 2025
@HarrySeop HarrySeop self-assigned this Aug 4, 2025
@HarrySeop HarrySeop added ♻️ Refactor 코드 리팩토링 🎨 Design 마크업 및 스타일링 labels Aug 4, 2025
@HarrySeop HarrySeop linked an issue Aug 4, 2025 that may be closed by this pull request
@HarrySeop HarrySeop added the 📮 Api 서버 API 통신 label Aug 4, 2025
@coderabbitai
Copy link

coderabbitai bot commented Aug 4, 2025

📝 Walkthrough

Walkthrough

이 변경사항은 예약 목록 페이지의 무한 스크롤 및 데이터 페칭 로직을 useInfiniteQuery에서 수동 페이지네이션 방식으로 전환하고, 스켈레톤 UI 컴포넌트들을 추가 및 통합 진입점으로 재구성합니다. 또한 스키마에서 불필요한 필드를 제거하고, UI 로딩 피드백 방식을 개선합니다.

Changes

Cohort / File(s) Change Summary
예약 목록 페이지 수동 페이지네이션 및 무한 스크롤 전환
apps/what-today/src/pages/mypage/reservations-list/index.tsx
무한 쿼리 기반에서 수동 페이지네이션 및 IntersectionObserver를 활용한 무한 스크롤로 전환, 중복 제거 및 상태 관리 추가, 로딩 UI를 스켈레톤으로 교체
스켈레톤 컴포넌트 추가 및 재구성
apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx, apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx, apps/what-today/src/components/skeletons/reservations-list/index.ts, apps/what-today/src/components/skeletons/index.ts
예약 카드 및 예약 리스트 페이지용 스켈레톤 컴포넌트 신설, 관련 index 파일에서 재수출 처리, skeletons 디렉토리의 통합 진입점 추가
스키마 필드 정리
apps/what-today/src/schemas/myReservations.ts
reviewResponseSchema에서 deletedAt 필드 제거

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant PageComponent
  participant API
  participant Skeleton

  User->>PageComponent: 페이지 접근/필터 변경
  PageComponent->>API: 첫 페이지 데이터 fetch
  API-->>PageComponent: 예약 데이터 반환
  PageComponent->>Skeleton: 로딩 시 스켈레톤 표시
  PageComponent-->>User: 예약 목록 렌더링
  User->>PageComponent: 스크롤하여 sentinel 진입
  PageComponent->>API: 다음 페이지 fetch (cursor 기반)
  API-->>PageComponent: 추가 예약 데이터 반환
  PageComponent-->>User: 예약 목록에 추가 데이터 렌더링
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~40 minutes

Suggested labels

🐞 Bug

Suggested reviewers

  • MyungJiwoo
  • kjhyun0830

Poem

🐇
스켈레톤 춤추는 예약의 밤,
무한 스크롤로 토끼는 달려감.
중복은 사라지고,
데이터는 착착,
새로워진 페이지에
로딩도 반짝!
토끼도 리뷰어도 모두 행복한 밤.

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch refactor/HarrySeop/233

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

Support

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

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 generate unit tests to generate unit tests for 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 or @coderabbitai 요약 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.

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

github-actions bot commented Aug 4, 2025

🚀 오늘뭐해 Preview Deploy 완료!
👉 미리보기 링크

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (4)
apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx (1)

1-33: 접근성 개선을 위한 ARIA 속성 추가 권장

스켈레톤 UI에 스크린 리더 사용자를 위한 접근성 속성을 추가하면 좋겠습니다.

 export default function ReservationCardSkeleton() {
   return (
-    <div className='mb-24'>
+    <div className='mb-24' role="status" aria-label="예약 카드 로딩 중">
       {/* 메인 예약 카드 */}
       <div className='flex gap-16 rounded-xl border border-gray-50 p-16'>

추가로 시각적으로 숨겨진 로딩 텍스트도 고려해보세요:

+      <span className="sr-only">예약 정보를 불러오는 중입니다</span>
apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx (1)

3-43: 스켈레톤 구조가 실제 데이터 패턴과 일치하는지 확인 필요

현재 구현은 잘 되어 있지만, 하드코딩된 그룹 수와 카드 개수가 실제 데이터 패턴과 다를 수 있습니다. 향후 props로 커스터마이징 가능하도록 개선을 고려해보세요.

interface ReservationsListPageSkeletonProps {
  groups?: number;
  cardsPerGroup?: number[];
}
apps/what-today/src/pages/mypage/reservations-list/index.tsx (2)

77-80: 중복 제거 로직 최적화 가능

현재 findIndex를 사용한 중복 제거는 O(n²) 복잡도를 가집니다. Set을 활용하면 더 효율적입니다:

-      const uniqueReservations = reservations.filter(
-        (res, index, arr) =>
-          arr.findIndex((r) => `${r.id}_${r.scheduleId}` === `${res.id}_${res.scheduleId}`) === index,
-      );
+      const seen = new Set<string>();
+      const uniqueReservations = reservations.filter((res) => {
+        const key = `${res.id}_${res.scheduleId}`;
+        if (seen.has(key)) return false;
+        seen.add(key);
+        return true;
+      });

309-309: Observer 센티널의 높이 조정 고려

h-4 (16px)는 너무 작아서 스크롤이 빠를 때 놓칠 수 있습니다. 더 큰 높이를 고려해보세요:

-        <div ref={observerRef} className='h-4' />
+        <div ref={observerRef} className='h-20' />
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 362466c and b6e0bfa.

📒 Files selected for processing (6)
  • apps/what-today/src/components/skeletons/index.ts (1 hunks)
  • apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx (1 hunks)
  • apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx (1 hunks)
  • apps/what-today/src/components/skeletons/reservations-list/index.ts (1 hunks)
  • apps/what-today/src/pages/mypage/reservations-list/index.tsx (8 hunks)
  • apps/what-today/src/schemas/myReservations.ts (0 hunks)
💤 Files with no reviewable changes (1)
  • apps/what-today/src/schemas/myReservations.ts
🧰 Additional context used
🧠 Learnings (11)
📓 Common learnings
Learnt from: kjhyun0830
PR: What-Today-FE/What-Today#77
File: apps/what-today/src/pages/mypage/manage-activities/index.tsx:50-63
Timestamp: 2025-07-19T01:23:56.149Z
Learning: User kjhyun0830 follows an incremental development approach in What-Today project, implementing UI first and adding functionality in later iterations, as confirmed in PR #77 for the experience management page.
Learnt from: kjhyun0830
PR: What-Today-FE/What-Today#219
File: apps/what-today/src/pages/mypage/main/index.tsx:108-157
Timestamp: 2025-08-03T00:45:03.763Z
Learning: kjhyun0830은 What-Today 프로젝트의 마이페이지(apps/what-today/src/pages/mypage/main/index.tsx)에서 다음 브랜치에 스켈레톤 UI 작업과 함께 로딩 상태 처리를 구현할 계획이라고 언급함.
Learnt from: HarrySeop
PR: What-Today-FE/What-Today#89
File: packages/design-system/src/components/bottomsheet/hooks/index.ts:44-51
Timestamp: 2025-07-21T04:36:28.477Z
Learning: HarrySeop encountered a scroll restoration issue in the useBodyScrollLock hook where the base page jumps to the top during mount/unmount of the bottom sheet component. They tried adding isLocked check in cleanup function and ref-based approaches but both failed to resolve the issue. They decided to defer this fix to a later refactoring.
Learnt from: HarrySeop
PR: What-Today-FE/What-Today#220
File: apps/what-today/src/pages/activities/index.tsx:64-70
Timestamp: 2025-08-02T20:26:03.149Z
Learning: HarrySeop 프로젝트에서 예약 플로우는 디바이스별로 다르게 구현됨: 데스크톱은 ReservationForm 컴포넌트의 내부 토스트를 사용하고, 태블릿/모바일은 바텀시트 → handleSubmitReservation → 페이지 레벨 토스트를 사용하는 구조임.
Learnt from: kjhyun0830
PR: What-Today-FE/What-Today#169
File: apps/what-today/src/hooks/useMyActivitiesQuery.ts:23-25
Timestamp: 2025-07-29T14:50:14.117Z
Learning: kjhyun0830은 What-Today 프로젝트에서 토스터 알림과 같은 UI 일관성이 필요한 기능들을 여러 페이지에 걸쳐 한 번에 수정하는 접근 방식을 선호한다.
Learnt from: HarrySeop
PR: What-Today-FE/What-Today#129
File: apps/what-today/src/pages/mypage/reservations-list/index.tsx:13-25
Timestamp: 2025-07-24T19:36:15.516Z
Learning: HarrySeop은 What-Today 프로젝트에서 API 에러 처리를 토스터(toast notification)로 처리하는 방식을 선호하며, 핸들러 함수 구현 시점에 함께 연결하는 접근 방식을 취함.
📚 Learning: the mainpage component in apps/what-today/src/pages/main/index.tsx contains placeholder/example code...
Learnt from: MyungJiwoo
PR: What-Today-FE/What-Today#43
File: apps/what-today/src/pages/main/index.tsx:7-7
Timestamp: 2025-07-14T13:36:17.941Z
Learning: The MainPage component in apps/what-today/src/pages/main/index.tsx contains placeholder/example code that will be modified later, including the fixed height class 'h-1400' which the user indicated is temporary.

Applied to files:

  • apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx
  • apps/what-today/src/components/skeletons/reservations-list/index.ts
  • apps/what-today/src/components/skeletons/index.ts
  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
  • apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx
📚 Learning: kjhyun0830 프로젝트에서 @what-today/design-system 패키지의 reservationstatus 타입이 calendar/index.ts에서 re-export...
Learnt from: kjhyun0830
PR: What-Today-FE/What-Today#91
File: apps/what-today/src/pages/mypage/reservations-status/index.tsx:2-2
Timestamp: 2025-07-22T03:59:52.657Z
Learning: kjhyun0830 프로젝트에서 @what-today/design-system 패키지의 ReservationStatus 타입이 calendar/index.ts에서 re-export되지 않아 메인 엔트리 포인트에서 접근할 수 없는 문제가 있음. DayCell.tsx에서 정의된 타입들을 calendar 모듈에서 명시적으로 export해야 함.

Applied to files:

  • apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx
  • apps/what-today/src/components/skeletons/reservations-list/index.ts
  • apps/what-today/src/components/skeletons/index.ts
  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
  • apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx
📚 Learning: kjhyun0830은 what-today 프로젝트의 마이페이지(apps/what-today/src/pages/mypage/main/index.tsx)에서 다음 브랜치에 스켈레톤 u...
Learnt from: kjhyun0830
PR: What-Today-FE/What-Today#219
File: apps/what-today/src/pages/mypage/main/index.tsx:108-157
Timestamp: 2025-08-03T00:45:03.763Z
Learning: kjhyun0830은 What-Today 프로젝트의 마이페이지(apps/what-today/src/pages/mypage/main/index.tsx)에서 다음 브랜치에 스켈레톤 UI 작업과 함께 로딩 상태 처리를 구현할 계획이라고 언급함.

Applied to files:

  • apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx
  • apps/what-today/src/components/skeletons/reservations-list/index.ts
  • apps/what-today/src/components/skeletons/index.ts
  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
  • apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx
📚 Learning: taeil08이 what-today 프로젝트의 체험 등록 페이지(apps/what-today/src/pages/experiences/iindex.tsx)에서 주소 입력 컴포넌트가 ...
Learnt from: Taeil08
PR: What-Today-FE/What-Today#134
File: apps/what-today/src/pages/experiences/iindex.tsx:11-16
Timestamp: 2025-07-25T03:14:08.579Z
Learning: Taeil08이 What-Today 프로젝트의 체험 등록 페이지(apps/what-today/src/pages/experiences/iindex.tsx)에서 주소 입력 컴포넌트가 아직 만들어지지 않아서 상태 관리를 나중에 추가할 예정이라고 언급함. 이는 프로젝트의 점진적 개발 접근법에 따른 것임.

Applied to files:

  • apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx
  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
  • apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx
📚 Learning: packages/design-system/src/components/datepicker.tsx에서 taeil08은 sr-only 클래스를 가진 div 요소가 달력 트리거 버튼의 세...
Learnt from: Taeil08
PR: What-Today-FE/What-Today#125
File: packages/design-system/src/components/DatePicker.tsx:25-28
Timestamp: 2025-07-24T13:33:33.202Z
Learning: packages/design-system/src/components/DatePicker.tsx에서 Taeil08은 sr-only 클래스를 가진 div 요소가 달력 트리거 버튼의 세로 정렬에 필요하다고 설명했음. 이 요소를 제거하면 버튼 정렬이 깨지는 레이아웃 의존성이 있음.

Applied to files:

  • apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx
  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
  • apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx
📚 Learning: harryseop 프로젝트에서 예약 플로우는 디바이스별로 다르게 구현됨: 데스크톱은 reservationform 컴포넌트의 내부 토스트를 사용하고, 태블릿/모바일은 바텀시트 → h...
Learnt from: HarrySeop
PR: What-Today-FE/What-Today#220
File: apps/what-today/src/pages/activities/index.tsx:64-70
Timestamp: 2025-08-02T20:26:03.149Z
Learning: HarrySeop 프로젝트에서 예약 플로우는 디바이스별로 다르게 구현됨: 데스크톱은 ReservationForm 컴포넌트의 내부 토스트를 사용하고, 태블릿/모바일은 바텀시트 → handleSubmitReservation → 페이지 레벨 토스트를 사용하는 구조임.

Applied to files:

  • apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx
  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
  • apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx
📚 Learning: harryseop encountered a scroll restoration issue in the usebodyscrolllock hook where the base page j...
Learnt from: HarrySeop
PR: What-Today-FE/What-Today#89
File: packages/design-system/src/components/bottomsheet/hooks/index.ts:44-51
Timestamp: 2025-07-21T04:36:28.477Z
Learning: HarrySeop encountered a scroll restoration issue in the useBodyScrollLock hook where the base page jumps to the top during mount/unmount of the bottom sheet component. They tried adding isLocked check in cleanup function and ref-based approaches but both failed to resolve the issue. They decided to defer this fix to a later refactoring.

Applied to files:

  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
📚 Learning: user kjhyun0830 follows an incremental development approach in what-today project, implementing ui f...
Learnt from: kjhyun0830
PR: What-Today-FE/What-Today#77
File: apps/what-today/src/pages/mypage/manage-activities/index.tsx:50-63
Timestamp: 2025-07-19T01:23:56.149Z
Learning: User kjhyun0830 follows an incremental development approach in What-Today project, implementing UI first and adding functionality in later iterations, as confirmed in PR #77 for the experience management page.

Applied to files:

  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
📚 Learning: in the selectroot component (packages/design-system/src/components/select/selectroot.tsx), myungjiwo...
Learnt from: MyungJiwoo
PR: What-Today-FE/What-Today#57
File: packages/design-system/src/components/select/SelectRoot.tsx:37-38
Timestamp: 2025-07-17T01:20:26.915Z
Learning: In the SelectRoot component (packages/design-system/src/components/select/SelectRoot.tsx), MyungJiwoo questioned the need for implementing controlled component pattern. The current implementation only handles internal→external state changes via onChangeValue callback, but doesn't handle external→internal changes when the value prop is updated, which breaks the typical React controlled component contract.

Applied to files:

  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
📚 Learning: myungjiwoo encountered multiple api calls when adding all dependencies to useeffect in oauth callbac...
Learnt from: MyungJiwoo
PR: What-Today-FE/What-Today#98
File: apps/what-today/src/hooks/useKakaoOAuth.ts:37-65
Timestamp: 2025-07-21T13:40:52.209Z
Learning: MyungJiwoo encountered multiple API calls when adding all dependencies to useEffect in OAuth callback hooks. The solution is to use useRef to prevent duplicate requests and useCallback to memoize the async function, keeping only essential dependencies (searchParams and the memoized function) in the dependency array.

Applied to files:

  • apps/what-today/src/pages/mypage/reservations-list/index.tsx
🧬 Code Graph Analysis (2)
apps/what-today/src/pages/mypage/reservations-list/index.tsx (4)
apps/what-today/src/schemas/myReservations.ts (3)
  • Reservation (136-136)
  • MyReservationsResponse (139-139)
  • ReservationStatus (160-160)
apps/what-today/src/apis/myReservations.ts (1)
  • fetchMyReservations (24-41)
apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx (1)
  • ReservationsListPageSkeleton (3-43)
apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx (1)
  • ReservationCardSkeleton (1-33)
apps/what-today/src/components/skeletons/reservations-list/ReservationsListPageSkeleton.tsx (1)
apps/what-today/src/components/skeletons/reservations-list/ReservationCardSkeleton.tsx (1)
  • ReservationCardSkeleton (1-33)
🔇 Additional comments (5)
apps/what-today/src/components/skeletons/index.ts (1)

1-2: 깔끔한 barrel export 구조입니다

스켈레톤 컴포넌트들을 중앙에서 관리하는 좋은 패턴입니다.

apps/what-today/src/components/skeletons/reservations-list/index.ts (1)

1-2: 적절한 모듈 구조입니다

예약 목록 관련 스켈레톤 컴포넌트들을 그룹화하여 관리하는 좋은 접근입니다.

apps/what-today/src/pages/mypage/reservations-list/index.tsx (3)

52-93: 수동 페이지네이션 구현이 복잡도를 증가시킵니다

useInfiniteQuery에서 수동 페이지네이션으로 전환한 이유가 PR 설명에 명확하지 않습니다. 이 접근 방식은 다음과 같은 잠재적 문제가 있습니다:

  1. 상태 관리 복잡도 증가
  2. React Query의 자동 캐싱, 재시도 등의 이점 상실
  3. 필터 변경 중 로딩 시 race condition 가능성

중복 제거 로직은 좋지만, useInfiniteQueryselect 옵션으로도 처리 가능합니다. 수동 구현이 꼭 필요한 특별한 이유가 있는지 확인이 필요합니다.


135-156: IntersectionObserver 구현이 깔끔합니다

수동 무한 스크롤 구현이 잘 되어 있습니다. threshold 설정도 적절합니다.


208-209: 날짜 정렬 제거 확인

AI 요약에 따르면 날짜별 정렬이 제거되었습니다. 이로 인해 예약 목록이 시간순으로 표시되지 않을 수 있습니다. 의도적인 변경인지 확인이 필요합니다.

Copy link
Contributor

@kjhyun0830 kjhyun0830 left a comment

Choose a reason for hiding this comment

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

수고하셨습니다!

@HarrySeop HarrySeop merged commit bf15ddd into develop Aug 4, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📮 Api 서버 API 통신 🎨 Design 마크업 및 스타일링 ♻️ Refactor 코드 리팩토링

Projects

None yet

Development

Successfully merging this pull request may close these issues.

예약 내역 페이지 버그수정 및 스켈레톤 UI 추가

4 participants