3.0 KiB
3.0 KiB
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,新方法返回更丰富的结构化数据