---
id: FEAT-0019
type: feature
status: closed
stage: done
solution: implemented
title: 全局仪表盘 (Global Dashboard)
created_at: '2026-01-11T13:41:44.193793'
opened_at: '2026-01-11T13:41:44.193793'
updated_at: '2026-01-11T13:41:44.193794'
parent: EPIC-0002
dependencies: []
related: []
domains: []
tags:
- '#EPIC-0002'
- '#FEAT-0019'
uid: d4a344
---

## FEAT-0019: 全局仪表盘 (Global Dashboard)

## 目标 (Objective)

实现项目级的全局仪表盘 (Dashboard)，作为用户的默认着陆页。
该页面旨在提供"上帝视角"，帮助用户快速掌握项目健康度、近期动态和关键瓶颈，而无需深入 Issue 列表。

## 验收标准 (Acceptance Criteria)

1.  **指标卡片 (Metric Cards)**:
    - 显示 **待办总数 (Total Backlog)**。
    - 显示 **本周完成 (Completed This Week)**。
    - 显示 **阻塞 Issue (Blocked Issues)**。
    - 显示 **速率趋势 (Velocity Trend)** (简单趋势图或升降指标)。
2.  **动态流 (Activity Feed)**:
    - 实时(或近实时)显示项目内的关键事件: Issue 创建/关闭/状态流转。
    - (可选) Git Commit 摘要 (如果已集成 VCS)。
3.  **快速操作 (Quick Actions)**:
    - 提供 "创建 Issue" 快捷入口。
    - 提供 "最近项目" 切换入口。
4.  **后端支持**:
    - 新增 `GET /api/v1/stats/dashboard` 接口，聚合上述指标数据。

## 技术任务 (Technical Tasks)

- [x] **后端 API**: 实现 `monoco.daemon.features.stats` 模块及聚合接口。
  - **现状分析**: 当前 Daemon 仅提供 `list_projects`, `list_issues`, `get_board_data` 接口，无聚合 Stats API。
  - **实现方案**: 新增 `GET /api/v1/stats/dashboard`。
  - **Blocked 定义**: 暂定为 "存在未 Close 的前置依赖 (dependencies)" 的 Issue。
- [x] **前端状态管理**: 重构前端状态管理 (Zustand)。
  - **Store 设计**: 在 `@monoco-io/kanban-core` 中扩展或新增 Store，统一管理 Project Stats 与 Issues。
    - `useDashboardStore`: 管理聚合指标 (Stats) 和动态 (Activity)。
    - `useKanbanStore`: 继续管理 Issue 列表数据。
  - **数据同步**: 升级 `useKanbanSync` Hook。
    - 监听 SSE (`issue_upserted`, `issue_deleted`)。
    - 当事件触发时，不仅更新 Issue List，同时触发 `dashboardStore.fetchStats()` 以保持聚合数据实时性。
- [x] **前端布局**: 创建 Dashboard 页面布局 (Grid System)。
  - **现状分析**: `Kanban/apps/web/src/app/components/StatsBoard.tsx` 目前仅支持 基于 BoardData 的客户端计算。
  - **迁移计划**: 重构 `StatsBoard` 组件，使其直接从 `useDashboardStore` 消费数据，移除 Props 传递。
- [x] **UI 组件**: 实现 MetricCard, ActivityList 等展示组件。
- [x] **数据集成**: 前后端联调，确保数据实时性。
  - **同步机制**: 复用现有的 SSE (`/api/v1/events`) 机制，当 Issue 变更时触发 Dashboard 刷新。

## Review Comments

- [x] Self-Review
