2.9 KiB
2.9 KiB
MODIFIED Requirements
Requirement: 新增共享类型
系统 SHALL 在 src/shared/api.ts 中定义 Dashboard 和 Metrics 相关共享类型。CheckResult SHALL 包含 durationMs(null | number)、failure(CheckFailure | null)、matched(boolean)、detail(null | string)、observation(Record<string, unknown> | null)、timestamp(string)。其中 detail 替代原 statusDetail 字段名。
Scenario: DashboardResponse 类型
- WHEN 前后端共享
DashboardResponse类型 - THEN 该类型 SHALL 包含 summary 和 targets 字段
Scenario: TargetStatus 类型
- WHEN 前后端共享
TargetStatus类型 - THEN 该类型 SHALL 包含目标基本信息字段(id、name、description、group、type、target、interval)、stats(totalChecks、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: string、matched: boolean、durationMs: number | null、detail: string | null、observation: Record<string, unknown> | null、failure字段,不包含 statusDetail 字段,不包含 success 字段
Scenario: RecentSample 类型
- WHEN 前后端共享
RecentSample类型 - THEN 该类型 SHALL 包含
timestamp: string、durationMs: number | null、up: boolean字段,其中 up 为 boolean 且等于 matched
Scenario: HistoryResponse 类型
- WHEN 前后端共享
HistoryResponse类型 - THEN 该类型 SHALL 包含
items: CheckResult[]、total: number、page: number、pageSize: 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