feat: implement dashboard widgets functionality

Backend:
- Add dashboard API router with widget endpoints
- Create dashboard schemas for widget data
- Add dashboard tests

Frontend:
- Enhance Dashboard page with widget components
- Add dashboard service for API calls
- Create reusable dashboard components

OpenSpec:
- Archive add-dashboard-widgets change
- Add dashboard capability specs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
beabigegg
2026-01-08 22:52:28 +08:00
parent 3d678ba5b0
commit 4860704543
17 changed files with 2152 additions and 28 deletions

View File

@@ -0,0 +1,38 @@
# Proposal: add-dashboard-widgets
## Summary
Replace the placeholder Dashboard page with functional dashboard widgets that provide users with an at-a-glance overview of their work and system status.
## Motivation
The current Dashboard displays only a welcome message and placeholder text ("Features will be added as development progresses"). Users need a centralized view of:
- Their assigned tasks and workload
- Project health across the organization
- Quick access to common actions
- System statistics
## Scope
### In Scope
- Dashboard statistics cards (my tasks, overdue, completion rate)
- My workload summary widget (reuses existing `/workload/me` API)
- Project health summary widget (reuses existing `/projects/health/dashboard` API)
- Quick actions section with navigation links
- Backend API endpoint for aggregated dashboard data
### Out of Scope
- Customizable widget layout (future enhancement)
- Real-time WebSocket updates for dashboard (can be added later)
- Dashboard for specific roles (manager vs engineer views)
## Dependencies
Reuses existing APIs:
- `GET /workload/me` - User workload summary
- `GET /projects/health/dashboard` - Project health overview
- `GET /api/projects/{project_id}/tasks` with `assignee_id` filter
## Risk Assessment
**Low Risk** - This change primarily adds a new frontend page using existing backend APIs. A new lightweight aggregation endpoint is added but doesn't modify existing data structures.