Skip to content

[πŸ› Bug/312] λŒ€μ‹œλ³΄λ“œ μƒνƒœ λ³€κ²½ μ‹œ 컬럼 리패치 였λ₯˜ ν•΄κ²°#313

Merged
aahreum merged 4 commits intomainfrom
feature/312/error
Dec 2, 2025
Merged

[πŸ› Bug/312] λŒ€μ‹œλ³΄λ“œ μƒνƒœ λ³€κ²½ μ‹œ 컬럼 리패치 였λ₯˜ ν•΄κ²°#313
aahreum merged 4 commits intomainfrom
feature/312/error

Conversation

@aahreum
Copy link
Member

@aahreum aahreum commented Dec 2, 2025

βœ… PR 체크리슀트

1. μ½”λ“œ & κΈ°λŠ₯

  • λ³€μˆ˜/ν•¨μˆ˜ 이름 이해 κ°€λŠ₯ν•œμ§€
  • κΈ°λŠ₯ 정상 λ™μž‘ & μ½˜μ†” μ—λŸ¬ μ—†μŒ

2. UI

  • UI λ™μž‘ 및 λ ˆμ΄μ•„μ›ƒ 확인

3. μ»¨λ²€μ…˜

  • νŒ€ μ»¨λ²€μ…˜μ— 맞게 ν•¨μˆ˜ 이름을 μ •μ˜ν–ˆλŠ”μ§€

πŸ”— 이슈 번호

✨ μž‘μ—…ν•œ λ‚΄μš©

  • λŒ€μ‹œλ³΄λ“œ μƒνƒœ λ³€κ²½ μ‹œ μ»¬λŸΌμ΄λ™ν•˜μ§€ μ•Šλ˜ 문제 ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ’ 리뷰 μš”μ²­ / μ½”λ©˜νŠΈ

πŸ’‘ 참고사항

Summary by CodeRabbit

  • New Features

    • μ»¬λŸΌλ³„ 재쑰회 등둝 κΈ°λŠ₯ μΆ”κ°€ 및 μΉ΄λ“œ 이동 λ°œμƒ μ‹œ μ–‘μͺ½ μ»¬λŸΌμ„ μ¦‰μ‹œ κ°±μ‹ ν•˜λ„λ‘ 연동
  • κ°œμ„  사항

    • μΉ΄λ“œ 이동 처리 둜직 κ°œμ„ μœΌλ‘œ μ΄λ™λœ μΉ΄λ“œκ°€ μ›μ»¬λŸΌμ—μ„œ μ¦‰μ‹œ 제거되고 λŒ€μƒ μ»¬λŸΌμ— 반영
    • μΉ΄λ“œ μ—…λ°μ΄νŠΈ 흐름 κ°œμ„ μœΌλ‘œ νŽΈμ§‘ ν›„ 반영 및 λͺ¨λ‹¬ λ‹«κΈ° λ™μž‘μ΄ 더 λΉ λ₯΄κ³  μΌκ΄€λ˜κ²Œ μž‘λ™
    • νŽ˜μ΄μ§€ λ‚΄ 데이터 μƒˆλ‘œκ³ μΉ¨ λ©”μ»€λ‹ˆμ¦˜ ν˜„λŒ€ν™”ν•˜μ—¬ 동기화 μ‹ λ’°μ„± ν–₯상

✏️ Tip: You can customize this high-level summary in your review settings.

@aahreum aahreum requested review from jung518 and yujin-fe December 2, 2025 09:07
@aahreum aahreum self-assigned this Dec 2, 2025
@aahreum aahreum added the πŸ› Bug 버그 발견/ν•΄κ²° label Dec 2, 2025
@coderabbitai
Copy link

coderabbitai bot commented Dec 2, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

μ»¬λŸΌλ³„ 리패치 콜백 등둝(onRegisterRefetch)κ³Ό μΉ΄λ“œ 이동 μ•Œλ¦Ό(onCardMoved)을 μΆ”κ°€ν•˜κ³ , μΉ΄λ“œ μ—…λ°μ΄νŠΈλ₯Ό μœ„ν•œ μƒˆ ν›…(useUpdateCard)을 λ„μž…ν•΄ ColumnCardList, CardDetailModal, DashboardDetail 사이에 리패치/이동 처리 흐름을 μ—°κ²°ν•©λ‹ˆλ‹€.

Changes

Cohort / File(s) Change Summary
μΉ΄λ“œ μ—…λ°μ΄νŠΈ ν›…
src/hooks/dashboard-detail/useUpdateCard.ts
μƒˆ ν›… μΆ”κ°€: useMutation 기반 μΉ΄λ“œ μ—…λ°μ΄νŠΈ λ‘œμ§μ„ μΊ‘μŠν™”ν•˜κ³  선택적 onSuccess μ½œλ°±μ„ λ…ΈμΆœ
컬럼 μΉ΄λ“œ 리슀트
src/components/dashboard-detail/card/ColumnCardList.tsx
곡개 props μΆ”κ°€: onRegisterRefetch(columnId, fn) 및 onCardMoved(fromColumnId, toColumnId); useInfiniteScrollμ—μ„œ resetData λ…ΈμΆœ 및 μ™ΈλΆ€ 리패치 등둝, μΉ΄λ“œκ°€ λ‹€λ₯Έ 컬럼으둜 μ΄λ™ν•˜λ©΄ μ›λ³Έμ—μ„œ μ œκ±°ν•˜κ³  onCardMoved 호좜
μΉ΄λ“œ 상세 λͺ¨λ‹¬
src/components/dashboard-detail/modal/card-detail-modal/CardDetailModal.tsx
κΈ°μ‘΄ update 흐름을 useUpdateCard ν›…μœΌλ‘œ ꡐ체: μ—…λ°μ΄νŠΈ 성곡 μ‹œ λͺ¨λ‹¬ μ’…λ£Œ 및 onUpdateCard 호좜둜 λ™μž‘ λ³€κ²½, κΈ°μ‘΄ refetch 제거
λŒ€μ‹œλ³΄λ“œ 상세 νŽ˜μ΄μ§€
src/pages/DashboardDetail.tsx
columnRefetchMap(useRef) μΆ”κ°€ 및 registerRefetch, handleCardMoved κ΅¬ν˜„. ColumnCardList에 onRegisterRefetch와 onCardMoved μ „λ‹¬ν•˜μ—¬ μ»¬λŸΌλ³„ 리패치/이동 처리 μ—°κ²°

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • μΆ”κ°€ κ²€ν†  ν•„μš” μ˜μ—­:
    • useUpdateCard의 νƒ€μž… μ„œλͺ… 및 onSuccess 호좜 κ°€λ“œ
    • ColumnCardListμ—μ„œ μΉ΄λ“œ 이동 μ‹œ totalCount κ°μ†Œμ™€ 제거 둜직 타이밍
    • DashboardDetail의 columnRefetchMap 등둝/ν•΄μ œ(λ©”λͺ¨λ¦¬/수λͺ…) 관리
    • 컬럼 κ°„ 동기화 μ‹œ race condition λ˜λŠ” 쀑볡 리패치 κ°€λŠ₯μ„±

Possibly related PRs

Suggested reviewers

  • jung518
  • yujin-fe
  • hjiasdq

Pre-merge checks and finishing touches

βœ… Passed checks (5 passed)
Check name Status Explanation
Title check βœ… Passed PR 제λͺ©μ΄ 링크된 이슈 #312의 제λͺ©κ³Ό λ™μΌν•˜λ©°, λŒ€μ‹œλ³΄λ“œ μƒνƒœ λ³€κ²½ μ‹œ 컬럼 리패치 였λ₯˜ ν•΄κ²°μ΄λΌλŠ” μ£Όμš” 변경사항을 λͺ…ν™•ν•˜κ²Œ μ„€λͺ…ν•©λ‹ˆλ‹€.
Description check βœ… Passed PR μ„€λͺ…이 μ €μž₯μ†Œμ˜ ν…œν”Œλ¦Ώμ„ μΆ©μ‹€νžˆ λ”°λ₯΄κ³  있으며, 체크리슀트 μ™„λ£Œ, 이슈 번호 λͺ…μ‹œ, μž‘μ—… λ‚΄μš© 기술 λ“± ν•„μˆ˜ 정보가 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
Linked Issues check βœ… Passed μ½”λ“œ 변경사항이 이슈 #312의 λͺ©ν‘œμΈ 'λŒ€μ‹œλ³΄λ“œ μƒνƒœ λ³€κ²½ μ‹œ 컬럼 리패치 였λ₯˜ ν•΄κ²°'을 μΆ©μ‘±ν•©λ‹ˆλ‹€. μƒˆλ‘œμš΄ refetch 콜백 등둝 λ©”μ»€λ‹ˆμ¦˜κ³Ό μΉ΄λ“œ 이동 감지 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
Out of Scope Changes check βœ… Passed λͺ¨λ“  변경사항이 컬럼 리패치 λ©”μ»€λ‹ˆμ¦˜ κ°œμ„ κ³Ό μΉ΄λ“œ 이동 μ²˜λ¦¬λΌλŠ” 이슈 λ²”μœ„ 내에 있으며, λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ 변경은 μ—†μŠ΅λ‹ˆλ‹€.
Docstring Coverage βœ… Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

πŸ“œ Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between a994581 and cee2466.

πŸ“’ Files selected for processing (1)
  • src/pages/DashboardDetail.tsx (4 hunks)

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai bot requested a review from hjiasdq December 2, 2025 09:08
@github-actions
Copy link

github-actions bot commented Dec 2, 2025

@github-actions
Copy link

github-actions bot commented Dec 2, 2025

@aahreum aahreum merged commit 7996b7b into main Dec 2, 2025
1 check passed
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: 1

🧹 Nitpick comments (1)
src/components/dashboard-detail/card/ColumnCardList.tsx (1)

120-154: μΉ΄λ“œ 컬럼 이동 감지 둜직이 μ •ν™•ν•˜κ²Œ κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

κ΅¬ν˜„μ΄ κ²¬κ³ ν•©λ‹ˆλ‹€:

  • oldCard 쑴재 μ—¬λΆ€ ν™•μΈμœΌλ‘œ μ•ˆμ „μ„± 확보
  • 같은 컬럼 λ‚΄ μ—…λ°μ΄νŠΈμ™€ λ‹€λ₯Έ 컬럼으둜의 이동을 λͺ…ν™•νžˆ ꡬ뢄
  • 이동 μ‹œ totalCount κ°μ†Œ 처리 및 onCardMoved 호좜

λ‹€λ§Œ Lines 121-122의 let λ³€μˆ˜λ₯Ό ν΄λ‘œμ €μ—μ„œ μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄μ€ μ •ν™•ν•˜μ§€λ§Œ 가독성 μΈ‘λ©΄μ—μ„œ μ•½κ°„ λ³΅μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

가독성을 μœ„ν•΄ λ‹€μŒκ³Ό 같이 λ¦¬νŒ©ν† λ§μ„ κ³ λ €ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  const handleUpdateCard = (updated: CardDetailResponse) => {
-   let fromColumnId: number | null = null;
-   let toColumnId: number | null = null;
+   let movedColumns: { from: number; to: number } | null = null;

    infiniteSetData((prev) => {
      if (!prev) {
        return prev;
      }

      const oldCard = prev.cards.find((c) => c.id === updated.id);
      if (!oldCard) {
        return prev;
      }

      if (oldCard.columnId === updated.columnId) {
        return {
          ...prev,
          cards: prev.cards.map((c) => (c.id === updated.id ? updated : c)),
        };
      }

-     fromColumnId = oldCard.columnId;
-     toColumnId = updated.columnId;
+     movedColumns = { from: oldCard.columnId, to: updated.columnId };

      return {
        ...prev,
        cards: prev.cards.filter((c) => c.id !== updated.id),
        totalCount: prev.totalCount - 1,
      };
    });

-   if (fromColumnId !== null && toColumnId !== null) {
-     onCardMoved(fromColumnId, toColumnId);
+   if (movedColumns) {
+     onCardMoved(movedColumns.from, movedColumns.to);
    }
  };
πŸ“œ Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 2f81bf8 and a994581.

πŸ“’ Files selected for processing (4)
  • src/components/dashboard-detail/card/ColumnCardList.tsx (6 hunks)
  • src/components/dashboard-detail/modal/card-detail-modal/CardDetailModal.tsx (2 hunks)
  • src/hooks/dashboard-detail/useUpdateCard.ts (1 hunks)
  • src/pages/DashboardDetail.tsx (4 hunks)
🧰 Additional context used
πŸ““ Path-based instructions (2)
**/*.tsx

βš™οΈ CodeRabbit configuration file

**/*.tsx: reviews:
instructions: |
우리 νŒ€μ€ λ‹€μŒμ˜ μ½”λ“œ μŠ€νƒ€μΌ κ°€μ΄λ“œλ₯Ό λ”°λ¦…λ‹ˆλ‹€:

[κΈ°λ³Έ κ·œμΉ™]
- λ³€μˆ˜λŠ” const μš°μ„  μ‚¬μš©
- 파일λͺ…은 PascalCase둜 μž‘μ„±
- μ»΄ν¬λ„ŒνŠΈλŠ” default exportλ₯Ό μ‚¬μš©
- 파일λͺ…κ³Ό μ»΄ν¬λ„ŒνŠΈλͺ…은 λ°˜λ“œμ‹œ 일치 (PascalCase)
- λΆˆν•„μš”ν•œ propsλŠ” μ „λ‹¬ν•˜μ§€ μ•ŠκΈ°
- UI κ΄€λ ¨ μƒνƒœλŠ” λͺ…ν™•ν•œ 이름 μ‚¬μš© (isOpen, isLoading λ“±)

[ν•¨μˆ˜ 넀이밍 κ·œμΉ™]
- λͺ¨λ“  ν•¨μˆ˜λŠ” **동사 + λͺ©μ μ–΄**
- UI 이벀트 ν•Έλ“€λŸ¬λŠ” handle* μ‚¬μš© (handleClick, handleToggle λ“±)
- λ‚΄λΆ€ λ‘œμ§μ€ calculate / convert / format λ“± 의미 기반 넀이밍 μ‚¬μš©

[디렉토리 & 파일 ꡬ쑰]
- λ””λ ‰ν† λ¦¬λŠ” kebab-case
- μ»΄ν¬λ„ŒνŠΈ νŒŒμΌμ€ PascalCase
- assetsλŠ” index 기반 export (Icons, Images, Logos λ“±)
- import μ‹œ κ·Έλ£Ή λ‹¨μœ„ import μ‚¬μš©

[μƒμˆ˜ / ν™˜κ²½ λ³€μˆ˜]
- SNAKE_CASE μ‚¬μš©
- 예: PAGE_SIZE, API_URL

[ν•¨μˆ˜ μ„ μ–Έ κ·œμΉ™]
- μ»΄ν¬λ„ŒνŠΈλŠ” 선언식 function Component() ν˜•νƒœ
- μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ˜ 둜직 ν•¨μˆ˜λŠ” ν™”μ‚΄ν‘œ ν•¨μˆ˜ μ‚¬μš©
- μœ ν‹Έμ„± μ»΄ν¬λ„ŒνŠΈκ°€ μ•„λ‹ˆλ©΄ default export

[주석 & λ¬Έμ„œν™”]
- TODO 주석 μ‚¬μš© (λ―Έμ™„μ„± μ½”λ“œ ν‘œμ‹œ)
- TSDoc을 μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„λ‘œ ν™œμš©
- μ˜ˆμ‹œλ₯Ό ν¬ν•¨ν•œ κ°„λ‹¨ν•œ μ„€λͺ… μΆ”κ°€

Files:

  • src/pages/DashboardDetail.tsx
  • src/components/dashboard-detail/modal/card-detail-modal/CardDetailModal.tsx
  • src/components/dashboard-detail/card/ColumnCardList.tsx
**/*.ts

βš™οΈ CodeRabbit configuration file

**/*.ts: language: "ko-KR"

reviews:
instructions: |
우리 νŒ€μ€ λ‹€μŒμ˜ μ½”λ“œ μŠ€νƒ€μΌ κ°€μ΄λ“œλ₯Ό λ”°λ¦…λ‹ˆλ‹€:

[κΈ°λ³Έ κ·œμΉ™]
- λ³€μˆ˜λŠ” 항상 const μš°μ„  μ‚¬μš©
- 파일λͺ…은 camelCase둜 μž‘μ„±
- ν•„μš” μ—†λŠ” μ½”λ“œλŠ” μ¦‰μ‹œ 제거 (λ―Έμ‚¬μš© λ³€μˆ˜/ν•¨μˆ˜ κΈˆμ§€)
- ν•¨μˆ˜λ₯Ό μ œμ™Έν•œ μœ ν‹Έ νŒŒμΌμ€ default export λŒ€μ‹  named export ꢌμž₯

[ν•¨μˆ˜ 넀이밍 κ·œμΉ™]
- λͺ¨λ“  ν•¨μˆ˜λŠ” **동사 + λͺ©μ μ–΄** ν˜•νƒœλ‘œ μž‘μ„±
- 데이터 쑰회 ν•¨μˆ˜: get / fetch / load
- 데이터 μˆ˜μ • ν•¨μˆ˜: set / update / save / remove
- 이벀트 ν•¨μˆ˜: handle μ‚¬μš©
- 계산 / λ³€ν™˜ ν•¨μˆ˜: calculate / convert / parse / format
- 쑰건 검사 ν•¨μˆ˜: is / has / can

[디렉토리 & 파일 ꡬ쑰]
- 디렉토리λͺ…은 kebab-case μ‚¬μš©
- 에셋(icon, image, logos)은 index νŒŒμΌμ„ ν†΅ν•œ 일괄 export
- import μ‹œ `@/assets/icons` ν˜•νƒœλ‘œ κ·Έλ£Ή λ‹¨μœ„ import

[μƒμˆ˜ / ν™˜κ²½ λ³€μˆ˜]
- SNAKE_CASE μ‚¬μš©
- 예: PAGE_SIZE, API_URL

[주석 & λ¬Έμ„œν™”]
- TODO 주석 적극 ν™œμš© (κΈ‰ν•œ PR / λ―Έκ΅¬ν˜„ μ˜μ—­)
- TSDoc μ‚¬μš© κ°€λŠ₯ (μ»΄ν¬λ„ŒνŠΈ μ„€λͺ…, μ‚¬μš© μ˜ˆμ‹œ μΆ”κ°€)
- @param은 TypeScript νƒ€μž…μœΌλ‘œ μ„€λͺ…ν•˜κΈ° λ•Œλ¬Έμ— λΉ„μ‚¬μš©

Files:

  • src/hooks/dashboard-detail/useUpdateCard.ts
🧠 Learnings (2)
πŸ“š Learning: 2025-11-29T18:56:30.435Z
Learnt from: aahreum
Repo: sprint-19-part3-7team/Taskify-Frontend PR: 265
File: src/pages/DashboardDetail.tsx:106-116
Timestamp: 2025-11-29T18:56:30.435Z
Learning: In src/pages/DashboardDetail.tsx, column names (title field) are allowed to contain leading or trailing whitespace. Trimming whitespace from column names is not required.

Applied to files:

  • src/pages/DashboardDetail.tsx
  • src/components/dashboard-detail/card/ColumnCardList.tsx
πŸ“š Learning: 2025-12-01T01:09:10.680Z
Learnt from: aahreum
Repo: sprint-19-part3-7team/Taskify-Frontend PR: 287
File: src/lib/apis/Invitations.ts:31-35
Timestamp: 2025-12-01T01:09:10.680Z
Learning: In this codebase, mutation functions (POST/PUT/DELETE) return the full response object (`res`) instead of `res.data`, because `useMutation` internally processes `res.data`. Only GET methods return `res.data` directly.

Applied to files:

  • src/components/dashboard-detail/modal/card-detail-modal/CardDetailModal.tsx
🧬 Code graph analysis (1)
src/hooks/dashboard-detail/useUpdateCard.ts (3)
src/types/card.ts (1)
  • CardDetailResponse (10-22)
src/lib/apis/cards.ts (2)
  • UpdateCardType (3-11)
  • updateCard (51-54)
src/hooks/useMutation.ts (1)
  • TData (11-59)
πŸ”‡ Additional comments (7)
src/pages/DashboardDetail.tsx (3)

1-1: μ»¬λŸΌλ³„ 리패치 관리λ₯Ό μœ„ν•œ useRef λ„μž…μ΄ μ μ ˆν•©λ‹ˆλ‹€.

useRefλ₯Ό μ‚¬μš©ν•˜μ—¬ μ»¬λŸΌλ³„ 리패치 ν•¨μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” 방식은 λ¦¬λ Œλ”λ§μ„ μœ λ°œν•˜μ§€ μ•ŠμœΌλ©΄μ„œλ„ μ΅œμ‹  μ½œλ°±μ„ μœ μ§€ν•  수 μžˆλŠ” μ˜¬λ°”λ₯Έ μ ‘κ·Όμž…λ‹ˆλ‹€.

Also applies to: 37-37


118-129: μΉ΄λ“œ 이동 감지 및 μžλ™ 리패치 둜직이 잘 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

두 ν•¨μˆ˜μ˜ 역할이 λͺ…ν™•ν•˜λ©° κ΅¬ν˜„μ΄ μ •ν™•ν•©λ‹ˆλ‹€:

  • registerRefetch: μ»¬λŸΌλ³„ 리패치 ν•¨μˆ˜ 등둝
  • handleCardMoved: μΉ΄λ“œ 이동 μ‹œ μ–‘μͺ½ 컬럼 μžλ™ 리패치

동일 컬럼 λ‚΄ 이동을 μ‘°κΈ° λ°˜ν™˜ν•˜μ—¬ λΆˆν•„μš”ν•œ 리패치λ₯Ό λ°©μ§€ν•œ 점도 μ’‹μŠ΅λ‹ˆλ‹€.


207-208: ColumnCardList에 μƒˆ props 전달이 μ˜¬λ°”λ¦…λ‹ˆλ‹€.

μ»¬λŸΌλ³„ 리패치 등둝과 μΉ΄λ“œ 이동 μ•Œλ¦Όμ„ μœ„ν•œ 콜백이 적절히 μ „λ‹¬λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

src/components/dashboard-detail/modal/card-detail-modal/CardDetailModal.tsx (2)

9-9: useUpdateCard ν›…μœΌλ‘œμ˜ λ¦¬νŒ©ν† λ§μ΄ μ μ ˆν•©λ‹ˆλ‹€.

μΉ΄λ“œ μ—…λ°μ΄νŠΈ λ‘œμ§μ„ μ»€μŠ€ν…€ ν›…μœΌλ‘œ μΆ”μƒν™”ν•˜μ—¬ μž¬μ‚¬μš©μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ΄ ν–₯μƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€. import 정리도 κΉ”λ”ν•˜κ²Œ μ²˜λ¦¬λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Also applies to: 14-14


78-83: μƒˆλ‘œμš΄ 리패치 μ „λž΅μ— 맞좘 μ—…λ°μ΄νŠΈ 흐름이 μ˜¬λ°”λ¦…λ‹ˆλ‹€.

cardDetailQuery.refetch() λŒ€μ‹  editModal.handleModalCloseAll()을 μ‚¬μš©ν•˜κ³ , μ»¬λŸΌλ³„ λ¦¬νŒ¨μΉ˜λŠ” onUpdateCard(updated)λ₯Ό 톡해 μƒμœ„μ—μ„œ μ²˜λ¦¬ν•˜λ„λ‘ λ³€κ²½ν•œ 것이 μƒˆλ‘œμš΄ μ•„ν‚€ν…μ²˜μ™€ 일관성 있게 κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

src/hooks/dashboard-detail/useUpdateCard.ts (1)

1-21: μΉ΄λ“œ μ—…λ°μ΄νŠΈ λ‘œμ§μ„ μž¬μ‚¬μš© κ°€λŠ₯ν•œ ν›…μœΌλ‘œ 잘 μΆ”μƒν™”ν–ˆμŠ΅λ‹ˆλ‹€.

κ΅¬ν˜„μ΄ κΉ”λ”ν•˜κ³  νƒ€μž… μ•ˆμ „μ„±λ„ ν™•λ³΄λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€:

  • UseUpdateCardOptions μΈν„°νŽ˜μ΄μŠ€λ‘œ λͺ…ν™•ν•œ API 제곡
  • onSuccess μ½œλ°±μ„ ν†΅ν•œ μœ μ—°ν•œ ν›„μ²˜λ¦¬ 지원
  • Lines 13-15의 방어적 κ°€λ“œκ°€ 견고성을 λ†’μž„

νŒ€ μ½”λ”© κ°€μ΄λ“œλΌμΈλ„ 잘 μ€€μˆ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€ (camelCase 파일λͺ…, default export, 동사+λͺ©μ μ–΄ 넀이밍).

src/components/dashboard-detail/card/ColumnCardList.tsx (1)

24-25: μ»¬λŸΌλ³„ 리패치 및 μΉ΄λ“œ 이동 감지λ₯Ό μœ„ν•œ props μΆ”κ°€κ°€ μ μ ˆν•©λ‹ˆλ‹€.

μƒˆλ‘œμš΄ propsλ₯Ό 톡해 μƒμœ„ μ»΄ν¬λ„ŒνŠΈμ™€μ˜ 톡신이 λͺ…ν™•ν•˜κ²Œ κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Also applies to: 36-37

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

πŸ› Bug 버그 발견/ν•΄κ²°

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[πŸ› Bug] λŒ€μ‹œλ³΄λ“œ μƒνƒœ λ³€κ²½ μ‹œ 컬럼 리패치 였λ₯˜ ν•΄κ²°

1 participant