Skip to content

[Feature/#356] 워크스페이스 목록/멤버관리/설정/알림/타임라인 에러 바운더리 적용 - #366

Merged
jjjsun merged 2 commits into
developfrom
feature/#356
Jul 31, 2026
Merged

[Feature/#356] 워크스페이스 목록/멤버관리/설정/알림/타임라인 에러 바운더리 적용#366
jjjsun merged 2 commits into
developfrom
feature/#356

Conversation

@jjjsun

@jjjsun jjjsun commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

🚨 관련 이슈

Closed #365

✨ 변경사항

  • 🐞 BugFix Something isn't working
  • 💻 CrossBrowsing Browser compatibility
  • 🌏 Deploy Deploy
  • 🎨 Design Markup & styling
  • 📃 Docs Documentation writing and editing (README.md, etc.)
  • ✨ Feature Feature
  • 🔨 Refactor Code refactoring
  • ⚙️ Setting Development environment setup
  • ✅ Test Test related (storybook, jest, etc.)

✏️ 작업 내용

제 담당 페이지/영역에 컴포넌트 레벨 ErrorBoundary를 적용했습니다.
랜더 타임 에러시 해당 영역만 fallback UI로 대체하고, API isError 인라인 UI는 기존 그대로 유지했습니다.

  • 워크스페이스 목록 (Workspace.tsx)
  • 워크스페이스 기본정보 (WorkspaceSetting.tsx)
  • 멤버 관리 (MemberManagement.tsx)
  • 타임라인 (Timeline.tsx)
  • 타임라인 성과 차트 (TimelinePerformancePanel.tsx)
  • 알림 (Setting.tsx)

😅 미완성 작업

N/A

💡 ErrorBoundary 개념 정리

제가 에러바운더리 이해가 조금 어려워서 한번 개념정리 했습니다!

⚠️ ErrorBoundary란?

React에서 자식 컴포넌트가 랜더링 중에 JS 에러를 throw하면, 원래 페이지 전체가 깨질 수 있다.
일부분만 에러가 난 것이지만, 사용자에게 보여지는 걸로는 페이지 전체 오류로 보여지는 현상이 나타난다.

페이지 전체 오류가 아닌 일부 오류로 표현되기 위해 ErrorBoundary가 사용된다.
ErrorBoundary는 그 에러를 중간에서 잡아서, 에러가 난 그 영역만 에러 UI+다시 시도로 바꿔주는 안전망이다.

즉, 일부 UI crash가 화이트스크린으로 번지지 않도록 막아주고, 오류 난 해당 영역만 복구하는 울타리 장치이다!

API 에러와 차이점은? (isError)

구분 처리 방식 예시
렌더 타임 JS crash ErrorBoundary + Fallback undefined.map(), 차트 내부 throw
API 실패 기존 isError 인라인 UI 목록 불러오기 실패, 알림 설정 불러오기 실패

이번 작업에서 isLoadingisError UI 수정하지 않았습니다.
로딩/API 실패는 이미 정상적으로 그려지는 상태여서, ErrorBoundary 대상이 아닙니다!

📢 논의 사항 및 참고 사항

  • Fallback은 공용 컴포넌트를 재사용했고, 코드 효율성을 위해 새 Fallback은 추가하지 않았습니다..!
  • API isError 처리는 유지했습니다.

💬 리뷰어 가이드 (P-Rules)
P1: 필수 반영 (Critical) - 버그 가능성, 컨벤션 위반. 해결 전 머지 불가.
P2: 적극 권장 (Recommended) - 더 나은 대안 제시. 가급적 반영 권장.
P3: 제안 (Suggestion) - 아이디어 공유. 반영 여부는 드라이버 자율.
P4: 단순 확인/칭찬 (Nit) - 사소한 오타, 칭찬 등 피드백.

Summary by CodeRabbit

  • 개선 사항
    • 타임라인 차트와 본문에서 오류 발생 시 전체 화면 대신 해당 영역의 안내 화면이 표시됩니다.
    • 알림 설정, 멤버 관리, 워크스페이스 목록 및 설정 화면에 영역별 오류 처리가 적용되었습니다.
    • 데이터가 변경되면 오류 상태가 자동으로 초기화되어 최신 내용을 다시 확인할 수 있습니다.

@jjjsun
jjjsun requested review from Seojegyeong and YermIm July 31, 2026 07:23
@jjjsun jjjsun self-assigned this Jul 31, 2026
@jjjsun jjjsun added the ✨ Feature 기능 개발 label Jul 31, 2026
@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown

📚 Storybook 배포 완료

항목 링크
📖 Storybook https://69a147b60a56365d9e2185ef-eugycwrpnf.chromatic.com/
🔍 Chromatic https://www.chromatic.com/build?appId=69a147b60a56365d9e2185ef&number=508

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jjjsun, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 38 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 531b8435-0c70-4ec8-943c-de7bcbf0f045

📥 Commits

Reviewing files that changed from the base of the PR and between 8b0d74f and 28393bc.

📒 Files selected for processing (1)
  • src/components/timeline/TimelinePerformancePanel.tsx
📝 Walkthrough

Walkthrough

타임라인, 워크스페이스, 알림 설정 영역에 ErrorBoundary를 적용했습니다. 렌더링 오류가 발생하면 영역별 fallback UI를 표시합니다. 관련 데이터 또는 draft 상태가 변경되면 오류 경계를 초기화합니다.

Changes

타임라인 오류 격리

Layer / File(s) Summary
타임라인 본문 및 차트 오류 처리
src/components/timeline/TimelinePerformancePanel.tsx, src/pages/dashboard/timeline/Timeline.tsx
타임라인 본문은 AreaErrorFallback을 표시하도록 변경했습니다. timelineList, viewUnit, periodIndex 변경 시 경계를 초기화합니다. 일별 추세 차트는 ChartErrorFallback을 표시합니다.

워크스페이스 오류 격리

Layer / File(s) Summary
워크스페이스 목록, 설정, 멤버 관리 오류 처리
src/pages/workspace/Workspace.tsx, src/pages/workspace/WorkspaceSetting.tsx, src/pages/workspace/MemberManagement.tsx
각 영역을 ErrorBoundary로 감쌌습니다. 목록은 workspaces, 설정은 detail, 멤버 관리는 memberspendingMembers 변경 시 경계를 초기화합니다. 기존 폼, 목록, 테이블, 모달 동작은 유지됩니다.

알림 설정 오류 격리

Layer / File(s) Summary
알림 설정 영역 오류 처리
src/pages/setting/Setting.tsx
NotificationSectionAreaErrorFallback을 연결했습니다. draftOrgNotif, draftChannel, draftWorkspaceNotif 변경 시 경계를 초기화합니다. 기존 알림 설정 props와 상태 변경 로직은 유지됩니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: yermim, seojegyeong

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed PR 코드 변경사항이 이슈 #365의 모든 요구사항을 충족합니다. Workspace.tsx, WorkspaceSetting.tsx, MemberManagement.tsx, Timeline.tsx, TimelinePerformancePanel.tsx, Setting.tsx에 ErrorBoundary를 적용했고, 공용 Fallback을 재사용하며, API isError 처리는 유지했습니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 이슈 #365의 범위 내입니다. ErrorBoundary와 AreaErrorFallback/ChartErrorFallback 추가만 수행되었으며, 기존 로직과 API 에러 처리는 변경되지 않았습니다.
Title check ✅ Passed 제목이 워크스페이스, 멤버 관리, 설정, 알림, 타임라인에 ErrorBoundary를 적용한 주요 변경사항을 명확하게 요약합니다.
Description check ✅ Passed 관련 이슈, 변경 유형, 작업 내용, 미완성 작업, 논의 사항을 포함해 변경 목적과 범위를 충분히 설명합니다.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/#356

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

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/timeline/TimelinePerformancePanel.tsx`:
- Around line 25-26: Update the ChartErrorFallback import in
TimelinePerformancePanel.tsx to use the `@/` alias, resolving it through the
components/common/error path instead of the relative path. Leave the other
imports unchanged.
- Around line 372-380: Update the ErrorBoundary wrapping TimelineDailyTrendChart
to include resetKeys for the chart’s relevant state: viewUnit, chartPeriodIndex,
chartRangeStart, and chartRangeEnd. Preserve the existing FallbackComponent and
chart rendering behavior while ensuring changes to any of those values reset the
fallback.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 959df9c7-ff77-42f2-8de6-42fa724a6f82

📥 Commits

Reviewing files that changed from the base of the PR and between 9aa66ae and 8b0d74f.

📒 Files selected for processing (6)
  • src/components/timeline/TimelinePerformancePanel.tsx
  • src/pages/dashboard/timeline/Timeline.tsx
  • src/pages/setting/Setting.tsx
  • src/pages/workspace/MemberManagement.tsx
  • src/pages/workspace/Workspace.tsx
  • src/pages/workspace/WorkspaceSetting.tsx

Comment thread src/components/timeline/TimelinePerformancePanel.tsx Outdated
Comment thread src/components/timeline/TimelinePerformancePanel.tsx Outdated

@YermIm YermIm left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

P4: 확인했습니다!!

@jjjsun
jjjsun merged commit 332cdff into develop Jul 31, 2026
3 checks passed
@jjjsun
jjjsun deleted the feature/#356 branch July 31, 2026 10:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ [Feature] 담당 페이지 ErrorBoundary 적용 (워크스페이스/타임라인/알림)

2 participants