1
0
Files
DiAL/openspec/changes/checker-observation/tasks.md

4.3 KiB
Raw Blame History

1. 共享类型与接口变更

  • 1.1 修改 src/shared/api.ts 中 CheckResult 类型:移除 statusDetail新增 detail 和 observation 字段
  • 1.2 修改 src/server/checker/types.ts 中 StoredCheckResult 类型status_detail 替换为 observation
  • 1.3 修改 src/server/checker/runner/types.ts 中 CheckerDefinition 接口:新增 buildDetail 方法

2. 存储层适配

  • 2.1 修改 src/server/checker/store.ts 中 check_results 表 DDLstatus_detail 列替换为 observation TEXT 列
  • 2.2 修改 src/server/checker/store.ts 中 insertCheckResult 方法:写入 observationJSON.stringify替代 statusDetail
  • 2.3 修改 src/server/checker/store.ts 中 getHistory、getLatestCheck、getLatestChecksMap 读取类型:返回 observation 字段替代 status_detail
  • 2.4 修改 src/server/checker/engine.ts 中 writeResult 方法:传递 observation 替代 statusDetail异常兜底结果 observation 为 null

3. Checker execute 改造(返回 observation 替代 statusDetail

  • 3.1 改造 HTTP checker execute.ts组装 observation 对象statusCode/headers/bodyPreview/contentType/contentLength拿到响应后始终采集 bodyPreview移除 statusDetail 赋值
  • 3.2 改造 TCP checker execute.ts组装 observation 对象connected/connectTimeMs/banner/error移除 statusDetail 赋值和 buildStatusDetail 函数
  • 3.3 改造 UDP checker execute.ts组装 observation 对象responded/responseSize/responsePreview/sourceAddress/sourcePort/error移除 statusDetail 赋值和 build*Detail 函数
  • 3.4 改造 ICMP checker execute.ts组装 observation 对象(复用 PingStats 字段 + error移除 statusDetail 赋值和 buildStatusDetail 函数
  • 3.5 改造 DB checker execute.ts组装 observation 对象connected/rowCount/rowsPreview/error移除 statusDetail 赋值
  • 3.6 改造 CMD checker execute.ts组装 observation 对象exitCode/stdoutPreview/stderrPreview/error移除 statusDetail 赋值
  • 3.7 改造 LLM checker types.ts 和 observation.ts保留执行期完整 outputText新增持久化 observation 派生结构outputPreview/outputLength/截断 headers
  • 3.8 改造 LLM checker execute.ts返回持久化 observation继续用执行期 LlmCheckObservation 执行 expect移除 buildStatusDetail 函数

4. Checker buildDetail 实现

  • 4.1 为 HTTP checker 实现 buildDetail 方法:返回 "HTTP {statusCode}" 格式
  • 4.2 为 TCP checker 实现 buildDetail 方法:返回连接状态和 banner 摘要
  • 4.3 为 UDP checker 实现 buildDetail 方法:返回响应状态和大小摘要
  • 4.4 为 ICMP checker 实现 buildDetail 方法:返回存活状态、平均延迟和丢包率摘要
  • 4.5 为 DB checker 实现 buildDetail 方法:返回连接状态或行数摘要
  • 4.6 为 CMD checker 实现 buildDetail 方法:返回 "exitCode={N}" 格式
  • 4.7 为 LLM checker 实现 buildDetail 方法:返回 provider/mode/status/finish/output/usage 摘要

5. API 序列化层适配

  • 5.1 修改 src/server/helpers.ts 中 mapCheckResult接收 type 参数,反序列化 observationobservation 为 null 时 detail 为 null否则调用 buildDetail 动态构造 detail
  • 5.2 修改 src/server/routes/dashboard.ts:传递 target.type 给 mapCheckResult
  • 5.3 修改 src/server/routes/history.ts:传递 target.type 给 mapCheckResult

6. 前端适配

  • 6.1 修改 src/web/constants/history-table-columns.tsxstatusDetail 引用改为 detail
  • 6.2 修改 src/web/components/OverviewTab.tsxstatusDetail 引用改为 detail

7. 测试与质量保障

  • 7.1 更新所有涉及 CheckResult 的现有测试,适配 statusDetail → detail + observation 字段变更
  • 7.2 为各 checker 的 buildDetail 方法编写单元测试
  • 7.3 更新 CheckerDefinition mock、store、engine、dashboard/history API、前端组件与 constants 的测试 fixture
  • 7.4 为 mapCheckResult 编写 observation JSON parse、null observation、unknown type 或 malformed observation 的覆盖测试
  • 7.5 执行完整测试套件、代码检查和格式检查,确保无回归

8. 文档更新

  • 8.1 更新 README.md 和/或 DEVELOPMENT.md反映 CheckResult 类型变更和 observation 机制