1
0
Files
DiAL/openspec/specs/data-retention/spec.md

2.1 KiB
Raw Blame History

Purpose

定义历史拨测数据的自动清理机制:可配置的保留时长和定时清理调度。

Requirements

Requirement: 数据保留配置

系统 SHALL 支持通过 runtime.retention 配置项指定历史数据保留时长,格式为持续时间字符串(<数字><单位>,单位支持 d/h/m)。

Scenario: 配置 7 天保留

  • WHEN 配置文件中 runtime.retention 设置为 "7d"
  • THEN 系统 SHALL 保留最近 7 天的检查结果,清理更早的数据

Scenario: 配置小时级保留

  • WHEN 配置文件中 runtime.retention 设置为 "24h"
  • THEN 系统 SHALL 保留最近 24 小时的检查结果

Scenario: 未配置 retention

  • WHEN 配置文件中未指定 runtime.retention
  • THEN 系统 SHALL 使用默认值 "7d"

Scenario: 无效 retention 格式

  • WHEN 配置文件中 runtime.retention 格式不合法(如 "abc""7x"
  • THEN 系统 SHALL 在配置校验阶段报错,拒绝启动

Requirement: 定时清理调度

系统 SHALL 以固定间隔1 小时)定期执行数据清理,删除超过保留时长的历史检查结果,并清理已无关联检查结果的非活跃目标行。

Scenario: 引擎启动后首次清理

  • WHEN ProbeEngine 启动
  • THEN 系统 SHALL 立即执行一次清理,然后每隔 1 小时再次执行

Scenario: 清理执行

  • WHEN 清理定时器触发
  • THEN 系统 SHALL 删除 check_results 表中 timestamp 早于 now - retentionMs 的所有记录

Scenario: 清理空壳非活跃目标

  • WHEN 清理定时器触发且 check_results 过期清理执行完毕
  • THEN 系统 SHALL 删除 targets 表中 active = 0 且在 check_results 表中不存在任何关联记录的目标行

Scenario: 引擎停止时清除定时器

  • WHEN ProbeEngine.stop() 被调用
  • THEN 系统 SHALL 清除清理定时器,不再执行后续清理

Scenario: retention 为 0 时不清理

  • WHEN 配置的 retention 解析为 0 毫秒
  • THEN 系统 SHALL 不注册清理定时器,数据永久保留