1
0
Files
DiAL/openspec/specs/target-detail-modal/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

4.3 KiB
Raw Blame History

Purpose

定义目标详情 Drawer时间范围筛选TDesign RadioGroup 快捷按钮 + DateRangePicker、Tabs 组织概览/趋势/记录三个面板、统计图表和分页检查结果列表。

Requirements

Requirement: 目标详情 Drawer

Dashboard SHALL 在用户点击目标表格行后从右侧滑出 Drawer展示该目标的详细统计图表和检查结果列表。

Scenario: 打开 Drawer

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

Scenario: Drawer 默认时间范围

  • WHEN Drawer 打开
  • THEN 筛选器 SHALL 默认选中 "24h" 快捷按钮

Scenario: 关闭 Drawer

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

Requirement: 时间范围筛选

Drawer SHALL 支持通过 TDesign RadioGroup 快捷按钮和 DateRangePicker 筛选数据的时间范围。

Scenario: 快捷时间范围按钮

  • WHEN Drawer 渲染
  • THEN 筛选栏 SHALL 显示 TDesign RadioGroupvariant=default-filled快捷按钮1h、6h、24h、7d当前选中的按钮高亮显示

Scenario: 点击快捷按钮

  • WHEN 用户点击快捷按钮(如 "24h"
  • THEN 筛选器 SHALL 自动设置对应的起止时间DateRangePicker 显示对应的时间范围,该按钮高亮

Scenario: 自定义日期时间选择

  • WHEN 用户通过 TDesign DateRangePickermode=date, enableTimePicker修改起止时间
  • THEN 快捷按钮 SHALL 取消高亮,表示当前为自定义时间范围

Scenario: 筛选触发数据刷新

  • WHEN 时间范围发生变化(快捷按钮或自定义选择)
  • THEN 系统 SHALL 通过 TanStack Query 重新请求该时间范围内的趋势数据和历史记录

Requirement: 统计图表展示

Drawer 概览和趋势面板 SHALL 展示统计数值、目标元信息和可用率趋势折线图、状态分布环形图。

Scenario: 概览面板统计数值

  • WHEN 概览 Tab 加载完成
  • THEN 面板 SHALL 使用 TDesign Statistic 组件展示总检查、正常、异常、可用率四个数值,使用 TDesign Row/Col 横向排列

Scenario: 概览面板元信息

  • WHEN 概览 Tab 加载完成
  • THEN 面板 SHALL 使用 TDesign Descriptions 组件展示目标地址、检查间隔、最新检查时间、状态详情

Scenario: 可用率趋势折线图

  • WHEN 趋势 Tab 加载完成且数据可用
  • THEN 面板 SHALL 展示 recharts 双 Y 轴折线图:耗时线颜色使用 --td-brand-color可用率线颜色使用 --td-success-color

Scenario: 状态分布环形图

  • WHEN 概览 Tab 加载完成
  • THEN 面板 SHALL 展示 recharts 环形图Donut ChartUP 颜色使用 --td-success-colorDOWN 颜色使用 --td-error-color中间显示可用率百分比数字

Requirement: 检查结果列表

Drawer 记录面板 SHALL 使用 TDesign PrimaryTable 展示检查结果,支持服务端分页。

Scenario: 展示检查结果

  • WHEN 记录 Tab 加载完成且历史记录可用
  • THEN 表格 SHALL 展示检查结果每条包含状态TDesign Tag、时间戳、statusDetail、耗时毫秒数和 failure 信息

Scenario: 分页导航

  • WHEN 检查结果总数超过一页
  • THEN 表格底部 SHALL 展示内建 pagination 分页器disableDataPage=true

Scenario: 翻页刷新

  • WHEN 用户切换分页页码
  • THEN 系统 SHALL 通过 TanStack Query 请求对应页码的历史记录数据,表格更新

Requirement: 内容组织布局

Drawer SHALL 使用 TDesign Tabs 组织概览、趋势、记录三个面板。

Scenario: Tabs 组织内容

  • WHEN Drawer 渲染
  • THEN 内容区域 SHALL 使用 TDesign Tabs 组件分为概览、趋势、记录三个标签页

Requirement: 标题栏类型标签

Drawer 标题栏 SHALL 显示目标类型标签,使用统一的类型显示映射系统。

Scenario: 类型标签显示

  • WHEN Drawer 标题栏渲染
  • THEN 标题栏 SHALL 在目标名称旁显示 TDesign Tag 类型标签HTTP / CMD

Scenario: 类型标签使用映射系统

  • WHEN Drawer 渲染类型标签
  • THEN 类型标签 SHALL 使用统一的类型显示映射函数,不硬编码映射逻辑