1
0
Files
DiAL/openspec/changes/checker-observation/specs/probe-api/spec.md

2.9 KiB
Raw Blame History

MODIFIED Requirements

Requirement: 新增共享类型

系统 SHALL 在 src/shared/api.ts 中定义 Dashboard 和 Metrics 相关共享类型。CheckResult SHALL 包含 durationMsnull | number、failureCheckFailure | null、matchedboolean、detailnull | string、observationRecord<string, unknown> | null、timestampstring。其中 detail 替代原 statusDetail 字段名。

Scenario: DashboardResponse 类型

  • WHEN 前后端共享 DashboardResponse 类型
  • THEN 该类型 SHALL 包含 summary 和 targets 字段

Scenario: TargetStatus 类型

  • WHEN 前后端共享 TargetStatus 类型
  • THEN 该类型 SHALL 包含目标基本信息字段id、name、description、group、type、target、interval、statstotalChecks、upChecks、downChecks、availability、currentStreak 和 recentSamples 字段,其中 name 和 description 类型均为 null 或字符串

Scenario: TargetMetricsResponse 类型

  • WHEN 前后端共享 TargetMetricsResponse 类型
  • THEN 该类型 SHALL 包含 targetId、window、stats 和 trend 字段

Scenario: TrendPoint 类型

  • WHEN 前后端共享 TrendPoint 类型
  • THEN 该类型 SHALL 包含 bucketStart、avgDurationMs、minDurationMs、maxDurationMs、availability、totalChecks、upChecks、downChecks 字段

Scenario: CheckResult 类型变更

  • WHEN 前端或后端引用 CheckResult 类型
  • THEN 该类型 SHALL 包含 timestamp: stringmatched: booleandurationMs: number | nulldetail: string | nullobservation: Record<string, unknown> | nullfailure 字段,不包含 statusDetail 字段,不包含 success 字段

Scenario: RecentSample 类型

  • WHEN 前后端共享 RecentSample 类型
  • THEN 该类型 SHALL 包含 timestamp: stringdurationMs: number | nullup: boolean 字段,其中 up 为 boolean 且等于 matched

Scenario: HistoryResponse 类型

  • WHEN 前后端共享 HistoryResponse 类型
  • THEN 该类型 SHALL 包含 items: CheckResult[]total: numberpage: numberpageSize: number 字段

Scenario: API 序列化构造 detail

  • WHEN API 路由序列化 StoredCheckResult 为 API 响应
  • THEN 系统 SHALL 从 StoredCheckResult 中反序列化 observation根据 target type 通过 checkerRegistry 获取对应 checker 并调用 buildDetail(observation) 动态生成 detail 字段

Scenario: mapCheckResult 接收 type 参数

  • WHEN 序列化辅助函数 mapCheckResult 被调用
  • THEN 函数 SHALL 接收 target type 参数,用于从 registry 获取对应 checker 调用 buildDetail

Scenario: Dashboard API 传递 type

  • WHEN Dashboard 路由序列化 latestCheck
  • THEN 路由 SHALL 将 target.type 传递给 mapCheckResult

Scenario: History API 传递 type

  • WHEN History 路由序列化历史记录列表
  • THEN 路由 SHALL 将已查询的 target.type 传递给 mapCheckResult