1
0
Files
DiAL/openspec/changes/archive/2026-05-11-card-ui-refactor/specs/probe-data-store/spec.md

3.0 KiB
Raw Blame History

ADDED Requirements

Requirement: targets 表分组列

系统 SHALL 在 targets 表中新增 grp 列存储分组信息。

Scenario: 新增 grp 列

  • WHEN 数据库初始化
  • THEN targets 表 SHALL 包含 grp TEXT NOT NULL DEFAULT 'default'

Scenario: 同步分组信息

  • WHEN 系统同步 targets 到数据库
  • THEN 每个 target 的 grp 列 SHALL 存储其 group 配置值,未配置的存储 'default'

Requirement: 结构化采样数据查询

系统 SHALL 提供 getRecentSamples 方法替代 getSparkline,返回包含状态信息的结构化采样数据。

Scenario: 获取最近采样数据

  • WHEN 调用 getRecentSamples(targetId, 30)
  • THEN 系统 SHALL 返回最多 30 条记录,每条包含 timestamp、duration_ms、success、matched

Scenario: 采样数据排序

  • WHEN 获取采样数据
  • THEN 记录 SHALL 按 timestamp 降序排列(最新在前)

Requirement: 趋势数据时间范围查询

系统 SHALL 支持按任意时间范围查询趋势聚合数据,替代固定 hours 参数。

Scenario: 按时间范围查询趋势

  • WHEN 查询指定 target 在 from 到 to 时间范围内的趋势数据
  • THEN 系统 SHALL 返回按小时分组的聚合数据,包括每小时的 avgDurationMs、availability 和 totalChecks

Requirement: 历史记录时间范围和分页查询

系统 SHALL 支持按时间范围筛选并分页查询历史记录。

Scenario: 按时间范围筛选历史记录

  • WHEN 查询指定 target 在 from 到 to 时间范围内的历史记录
  • THEN 系统 SHALL 返回该时间范围内的记录,按 timestamp 降序排列

Scenario: 分页查询历史记录

  • WHEN 查询指定 page 和 pageSize 的历史记录
  • THEN 系统 SHALL 返回对应页的数据和总记录数

Requirement: 目标列表按分组排序

系统 SHALL 保证 targets 查询结果按分组排序返回。

Scenario: 分组排序查询

  • WHEN 查询所有 targets
  • THEN 结果 SHALL 将 "default" 分组目标排在首位,其余分组按分组名称和目标插入顺序排列

MODIFIED Requirements

Requirement: targets 表同步

系统 SHALL 在启动时将 YAML 配置中的目标列表同步到 SQLite targets 表,并持久化 target 类型、展示摘要、领域配置、调度配置、expect 配置和分组信息。

Scenario: 首次同步目标

  • WHEN 数据库为空且 YAML 中定义了 N 个 typed target
  • THEN 系统 SHALL 将所有目标插入 targets 表,包含 name、type、target、config、interval_ms、timeout_ms、expect 和 grp

Scenario: 配置变更后重新同步

  • WHEN YAML 配置发生变更(新增、删除或修改目标)后重启
  • THEN 系统 SHALL 根据 name 字段匹配:新增的插入、删除的移除、修改的更新(含 grp 字段)

REMOVED Requirements

Requirement: sparkline 查询

Reason: 替换为结构化 getRecentSamples 方法 Migration: 使用 getRecentSamples 替代 getSparkline新方法返回更丰富的结构化数据