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

57 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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.tsx`statusDetail 引用改为 detail
- [ ] 6.2 修改 `src/web/components/OverviewTab.tsx`statusDetail 引用改为 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 机制