Skip to content

feat: 팀 프로젝트 대시보드 위젯 구현 - #48

Merged
JiWoongE merged 4 commits into
developfrom
Feat/#45/dashboard-progress-summary-widgets
Jul 14, 2026
Merged

feat: 팀 프로젝트 대시보드 위젯 구현#48
JiWoongE merged 4 commits into
developfrom
Feat/#45/dashboard-progress-summary-widgets

Conversation

@JiWoongE

@JiWoongE JiWoongE commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Pull Request

작업 내용

  • 팀 프로젝트 대시보드용 업무 요약, 전체 진행률 위젯을 구현했습니다.
  • 피그마 시안 기준으로 상단 2x2 요약 카드 구조와 진행률 카드 UI를 맞췄습니다.
  • 실제 Supabase UUID 워크스페이스로 진입해도 팀 프로젝트 mock 데이터가 보이도록 매핑을 보완했습니다.

작업 결과

  • 팀 프로젝트 워크스페이스 대시보드에서 업무 요약, 전체 진행률 위젯을 추가해 확인할 수 있습니다.
  • 업무 요약은 전체 업무, 완료된 업무, 진행중, 팀 멤버 수를 카드 형태로 표시합니다.
  • 전체 진행률은 완료 개수와 전체 개수, 진행률 바를 피그마에 가깝게 표시합니다.

변경 사항

Added

  • 팀 프로젝트 대시보드 위젯
    • src/widgets/team-project/dashboard-work-summary
    • src/widgets/team-project/dashboard-overall-progress
  • 진행률 집계 공용 로직
    • src/entities/progress-chart/model/create-progress-chart-summary.ts

Changed

  • 팀 프로젝트 대시보드 위젯 카탈로그 및 템플릿 목록에 업무 요약, 전체 진행률 위젯을 추가했습니다.
  • 실제 UUID 워크스페이스에서도 팀 프로젝트 mock 태스크/멤버 데이터를 사용할 수 있도록 fallback 매핑을 추가했습니다.
  • 팀 프로젝트 mock 태스크/멤버 데이터를 피그마 시안 기준 숫자에 맞게 보강했습니다.

Fixed

  • Supabase 연동 이후 mock 문자열 workspaceId가 아닌 실제 UUID로 진입했을 때 팀 프로젝트 위젯 데이터가 비어 보이던 문제를 보완했습니다.

실행화면

image image

테스트

  • 로컬 실행 확인
  • 주요 시나리오 확인
  • 영향 범위 확인

리뷰 체크리스트

  • PR base branch가 올바릅니다. (feature/* -> develop, 배포 시 develop 또는 release/* -> main)
  • 브랜치명이 Type/#issue-number/description 형식을 따릅니다.
  • 커밋 메시지가 컨벤션을 따릅니다.
  • 불필요한 console.log, 주석, 임시 코드를 제거했습니다.
  • 타입 에러와 린트 에러를 확인했습니다.
  • CodeRabbit 1차 리뷰를 확인했습니다.
  • CodeRabbit 리뷰 반영 후 Discord에 공유했습니다.
  • 최소 1명 이상의 approve 후 merge합니다.

리뷰 요청사항

  • 팀 프로젝트 대시보드에서 업무 요약, 전체 진행률 위젯의 피그마 반영 정도를 중점적으로 봐주시면 좋겠습니다.
  • 실제 UUID 워크스페이스 진입 시 mock fallback 처리 방향이 팀 컨벤션에 맞는지도 함께 확인 부탁드립니다.

관련 이슈

Closes #45

Summary by CodeRabbit

  • 새 기능
    • 팀 프로젝트 대시보드에 전체 진행률 위젯을 추가했습니다.
    • 팀 프로젝트 대시보드에 업무 요약(전체/완료/진행중/팀 멤버) 위젯을 추가했습니다.
  • 개선
    • 대시보드 위젯의 기본 배치(일부 위치/레이아웃)를 조정했습니다.
    • 팀 프로젝트 템플릿 기반 위젯 기본 추가 배치가 겹치지 않는지 개발 시 즉시 검증합니다.

@coderabbitai

coderabbitai Bot commented Jul 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: f7e50869-2f63-4b2a-9273-f478eb9b9a95

📥 Commits

Reviewing files that changed from the base of the PR and between 73aeea0 and 9d54b57.

📒 Files selected for processing (4)
  • src/views/dashboard/config/template-widget-layouts.ts
  • src/views/dashboard/config/template-widgets.ts
  • src/views/dashboard/config/validate-template-widget-layouts.ts
  • src/views/dashboard/ui/DashboardView.tsx

📝 Walkthrough

Walkthrough

진행률 요약 계산을 엔터티 모델로 이동하고 워크스페이스별 목업 데이터 해석을 확장했습니다. overall-progresswork-summary 위젯을 구현하고 대시보드 카탈로그 및 목적별 템플릿 레이아웃에 등록했습니다.

Changes

대시보드 진행률·업무 요약 위젯

Layer / File(s) Summary
진행률 요약 모델
src/entities/progress-chart/*, src/features/manage-progress-chart/model/progress-chart.ts
상태별·담당자별 집계와 진행률 계산을 엔터티 모델에 추가하고 공개 export를 구성했습니다.
워크스페이스 목업 조회
src/entities/task/model/mock-tasks-by-workspace.ts, src/entities/workspace-member/model/mock-workspace-members.ts
워크스페이스 UUID alias와 fallback을 지원하는 태스크·멤버 조회를 구성했습니다.
위젯 컴포넌트 구현
src/widgets/team-project/dashboard-overall-progress/*, src/widgets/team-project/dashboard-work-summary/*
두 위젯이 워크스페이스 데이터를 조회해 크기별 카드 UI를 렌더링하도록 추가했습니다.
템플릿 레이아웃 및 위젯 추가 흐름
src/views/dashboard/config/*, src/views/dashboard/ui/DashboardView.tsx
목적별 기본 레이아웃, 중복 검증, 카탈로그 등록 및 위젯 추가 시 레이아웃 조회를 구성했습니다.

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

Sequence Diagram(s)

sequenceDiagram
  participant Dashboard
  participant WidgetCatalog
  participant OverallProgress
  participant WorkSummary
  participant MockTaskProvider
  participant WorkspaceMemberProvider
  Dashboard->>WidgetCatalog: workspaceId로 위젯 렌더링 요청
  WidgetCatalog->>OverallProgress: workspaceId 전달
  WidgetCatalog->>WorkSummary: workspaceId 전달
  OverallProgress->>MockTaskProvider: 태스크 조회
  WorkSummary->>MockTaskProvider: 태스크 조회
  WorkSummary->>WorkspaceMemberProvider: 멤버 조회
  OverallProgress-->>Dashboard: 진행률 카드 렌더링
  WorkSummary-->>Dashboard: 업무 요약 카드 렌더링
Loading

Possibly related issues

  • TeampleRun/syncly#7 — 팀 프로젝트 대시보드 위젯 및 레이아웃 구성과 코드 수준으로 연결됩니다.

Possibly related PRs

  • TeampleRun/syncly#17 — 공유 태스크 mock 조회 API 변경이 워크스페이스별 태스크 조회와 연결됩니다.
  • TeampleRun/syncly#18 — 템플릿 및 위젯 카탈로그 구조 변경과 직접 연결됩니다.
  • TeampleRun/syncly#40createProgressChartSummary의 기존 feature 구현과 엔터티 이동 변경이 연결됩니다.

Suggested reviewers: 0011810, wjswlgh96, seongjinss555, kwon812

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.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
Title check ✅ Passed 제목은 팀 프로젝트 대시보드 위젯 추가라는 핵심 변경을 잘 요약하지만, 세부 위젯명보다는 다소 포괄적입니다.
Description check ✅ Passed 필수 섹션(작업 내용, 결과, 변경 사항, 실행화면, 테스트, 체크리스트, 요청사항, 이슈)이 모두 포함되어 있어 템플릿을 대부분 충족합니다.
Linked Issues check ✅ Passed 전체 진행률·업무 요약 위젯 구현, 카탈로그/템플릿 연결, mock/fallback 데이터 보강 등 #45의 핵심 요구사항을 충족합니다.
Out of Scope Changes check ✅ Passed 템플릿 분리, 검증 유틸, 레이아웃 조정 등도 모두 위젯 추가와 배치 흐름을 지원하는 범위 안에 있어 보입니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch Feat/#45/dashboard-progress-summary-widgets

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: 4

🤖 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/entities/progress-chart/model/create-progress-chart-summary.ts`:
- Around line 24-30: Update toPercentage so nonzero ratios retain one decimal
place, matching the progress card’s expected 46.7% result for 7/15; preserve the
existing zero-total return of 0 and replace integer rounding with one-decimal
precision.

In `@src/entities/workspace-member/model/mock-workspace-members.ts`:
- Around line 179-181: Update getMockWorkspaceMembersByWorkspaceId to fall back
to the team-workspace identifier when the supplied workspace UUID has no entry
in workspaceMemberAliasById, and update its callers to pass team-workspace for
the WorkSummary member lookup. Preserve alias resolution for known workspace
IDs.

In `@src/views/dashboard/config/widget-catalog.tsx`:
- Around line 70-81: team-project에서 함께 허용되는 위젯의 기본 레이아웃 좌표가 서로 겹치지 않도록 widget
catalog와 template-widgets의 레이아웃을 재계산하세요. 특히 work-summary와 my-tasks,
overall-progress와 calendar의 충돌을 제거하고 DashboardView가 addWidget에 전달하는 모든 기본 사각형이
비중첩 상태가 되게 하세요. team-project 허용 목록과 카탈로그 레이아웃을 검증하는 통합 테스트도 추가하세요.

In `@src/widgets/team-project/dashboard-work-summary/ui/WorkSummary.tsx`:
- Around line 30-31: Update WorkSummary to reuse the entity’s
createProgressChartSummary result for card values, using summary.totalTaskCount,
summary.doneTaskCount, and summary.inProgressTaskCount instead of local
countByStatus aggregation. Remove the unused completionRate calculation and the
countByStatus helper, while preserving the existing rendering structure.
🪄 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: ASSERTIVE

Plan: Pro Plus

Run ID: 6f88209f-32d0-40a1-8f7b-6f4cd60eeab6

📥 Commits

Reviewing files that changed from the base of the PR and between 9baf0c7 and 99f65cb.

📒 Files selected for processing (11)
  • src/entities/progress-chart/index.ts
  • src/entities/progress-chart/model/create-progress-chart-summary.ts
  • src/entities/task/model/mock-tasks-by-workspace.ts
  • src/entities/workspace-member/model/mock-workspace-members.ts
  • src/features/manage-progress-chart/model/progress-chart.ts
  • src/views/dashboard/config/template-widgets.ts
  • src/views/dashboard/config/widget-catalog.tsx
  • src/widgets/team-project/dashboard-overall-progress/index.ts
  • src/widgets/team-project/dashboard-overall-progress/ui/OverallProgress.tsx
  • src/widgets/team-project/dashboard-work-summary/index.ts
  • src/widgets/team-project/dashboard-work-summary/ui/WorkSummary.tsx

Comment thread src/entities/progress-chart/model/create-progress-chart-summary.ts
Comment thread src/entities/workspace-member/model/mock-workspace-members.ts Outdated
Comment thread src/views/dashboard/config/widget-catalog.tsx Outdated
Comment thread src/widgets/team-project/dashboard-work-summary/ui/WorkSummary.tsx Outdated

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

🤖 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/views/dashboard/config/template-widgets.ts`:
- Around line 37-38: Update the overlapping layout coordinates in
TEMPLATE_WIDGETS, specifically the side-project sprint-summary, my-tasks, and
velocity entries, so all widgets occupy non-overlapping areas. Preserve the
existing validateTemplateWidgetLayouts call for non-production environments
after correcting the catalog coordinates.
🪄 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: ASSERTIVE

Plan: Pro Plus

Run ID: 625264bd-89a2-45a5-9f08-6f66b8acf38d

📥 Commits

Reviewing files that changed from the base of the PR and between 99f65cb and 9b5610c.

📒 Files selected for processing (7)
  • src/entities/progress-chart/model/create-progress-chart-summary.ts
  • src/entities/workspace-member/model/mock-workspace-members.ts
  • src/views/dashboard/config/template-widgets.ts
  • src/views/dashboard/config/validate-template-widget-layouts.ts
  • src/views/dashboard/config/widget-catalog.tsx
  • src/widgets/team-project/dashboard-overall-progress/ui/OverallProgress.tsx
  • src/widgets/team-project/dashboard-work-summary/ui/WorkSummary.tsx

Comment thread src/views/dashboard/config/template-widgets.ts Outdated

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

🤖 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/views/dashboard/config/widget-catalog.tsx`:
- Line 29: Resolve the remaining default layout collisions in the shared widget
catalog, including the entries around my-tasks, recent-notices, recent-notes,
recent-resources, work-summary, overall-progress, calendar, and work-schedule.
Recalculate coordinates so every widget is non-overlapping across the
team-project and store-operation templates, or separate layouts per template;
add validation tests covering these layouts.
🪄 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: ASSERTIVE

Plan: Pro Plus

Run ID: 9b592246-9b67-45da-81d1-9e8a1d0f8e60

📥 Commits

Reviewing files that changed from the base of the PR and between 9b5610c and 73aeea0.

📒 Files selected for processing (1)
  • src/views/dashboard/config/widget-catalog.tsx

Comment thread src/views/dashboard/config/widget-catalog.tsx

@Kwon812 Kwon812 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

고생하셨습니다~

@JiWoongE
JiWoongE merged commit c4a8d24 into develop Jul 14, 2026
1 check passed
@JiWoongE
JiWoongE deleted the Feat/#45/dashboard-progress-summary-widgets branch July 14, 2026 01:10
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.

feat: 대시보드 전체 진행률 · 업무 요약 위젯 구현

2 participants