1
0
Files
DiAL/openspec/specs/probe-dashboard/spec.md
lanyuanxiaoyao f48e39a615 refactor: 全面重构前端 Dashboard 为 TDesign + TanStack Query 分组表格布局
- 卡片式布局改为分组 PrimaryTable,Modal 改为 Drawer
- 手写 hooks 替换为 TanStack Query(轮询/缓存/条件查询)
- CSS 607行精简至73行,颜色迁移至 TDesign tokens
- 可用率进度条颜色按 10% 一档红→绿渐变
- 新增纯函数测试 34 项全通过(排序/筛选/色阶阈值)
- 同步更新主 specs 并归档变更文档
2026-05-12 01:06:53 +08:00

2.6 KiB
Raw Blame History

Purpose

定义拨测系统的 React 前端 DashboardTDesign Statistic 统计卡片、按分组表格布局、目标详情 Drawer、TanStack Query 数据轮询和页面加载/错误状态。

Requirements

Requirement: 总览统计卡片

Dashboard SHALL 在页面顶部使用 TDesign Statistic 组件展示总览统计,包含总目标数、正常数和异常数。

Scenario: 展示统计卡片

  • WHEN 用户打开 Dashboard 页面
  • THEN 页面顶部 SHALL 使用 TDesign Row/Col 布局展示 3 个 TDesign Card + Statistic 组合全部目标数color=blue、正常目标数color=green、异常目标数color=red

Scenario: 统计数据自动刷新

  • WHEN 页面处于打开状态
  • THEN 统计卡片 SHALL 通过 TanStack Query 的 refetchInterval=8000 自动刷新数据

Requirement: 卡片式分组布局

Dashboard SHALL 使用按分组展示的表格布局,每个分组包含带统计的分组标题和独立 TDesign PrimaryTable。

表格列定义、排序、筛选、行交互的详细规范见 target-table

Scenario: 按分组渲染表格

  • WHEN 用户打开 Dashboard 页面
  • THEN 页面 SHALL 按 group 字段将目标分组展示,每组一个 PrimaryTable"default" 分组排在最上面

Scenario: 无分组时的展示

  • WHEN 所有目标均属于 "default" 分组
  • THEN 页面 SHALL 显示一个 "默认分组" 区域,表格正常展示

Requirement: 目标详情 Drawer

Dashboard SHALL 使用 TDesign Drawer 展示目标详情包含时间范围筛选、Tabs 组织的统计图表和分页检查记录列表。

Drawer 的时间范围筛选、Tabs 面板内容、检查结果列表的详细规范见 target-detail-drawer

Scenario: 打开 Drawer

  • WHEN 用户点击某个目标表格行
  • THEN 系统 SHALL 从右侧滑出 Drawerplacement="right", size="60%"),展示该目标的详情

Scenario: 关闭 Drawer

  • WHEN 用户点击 Drawer 关闭按钮、ESC 键或遮罩层
  • THEN Drawer SHALL 关闭

Requirement: 页面加载与错误状态

Dashboard SHALL 使用 TDesign 组件正确处理加载状态和 API 错误。

Scenario: 首次加载

  • WHEN 页面首次加载且数据尚未返回
  • THEN 表格 SHALL 显示 TDesign Loading 加载状态

Scenario: API 请求失败

  • WHEN 前端 API 请求失败
  • THEN 页面 SHALL 使用 TDesign Alert 组件theme=error显示错误提示

Scenario: Drawer 内部加载状态

  • WHEN Drawer 内趋势数据或历史记录正在加载
  • THEN 趋势面板 SHALL 显示 TDesign Skeleton 加载占位,记录表格 SHALL 显示 loading 状态