1
0
Files
DiAL/openspec/changes/archive/2026-05-09-http-probe-checker/tasks.md

3.8 KiB
Raw Blame History

1. 项目准备与依赖

  • 1.1 清理 demo 代码:移除 /api/demo 路由、DemoResponse 类型、前端 demo 展示逻辑
  • 1.2 安装 recharts 依赖
  • 1.3 创建 src/server/checker/ 目录结构和类型定义文件 types.ts
  • 1.4 创建示例 YAML 配置文件 probes.example.yaml

2. 配置解析层

  • 2.1 实现 YAML 配置类型定义ProbeConfig、TargetConfig、ExpectConfig 等)
  • 2.2 实现 config-loader.ts读取文件 + Bun.YAML.parse + 配置校验必填字段、name 唯一性、interval 格式、port 范围)
  • 2.3 重写 src/server/config.tsCLI 只接受配置文件路径参数,从 YAML 读取 host/port/dataDir
  • 2.4 为配置解析和校验编写完整测试

3. 数据存储层

  • 3.1 实现 store.tsSQLite 初始化建表、WAL 模式、复合索引)、数据目录自动创建
  • 3.2 实现 targets 表同步逻辑(根据 name 匹配:新增插入、删除移除、修改更新)
  • 3.3 实现 check_results 追加写入方法
  • 3.4 实现查询方法:按 target+时间范围查询、按小时聚合趋势、计算可用率/平均延迟/P99
  • 3.5 为数据存储层编写完整测试(初始化、同步、写入、查询、聚合)

4. 拨测引擎

  • 4.1 实现 fetcher.tsHTTP 请求执行method/header/body+ AbortController 超时控制
  • 4.2 实现 expect 校验逻辑status 列表匹配、bodyContains、maxLatencyMs
  • 4.3 实现 engine.ts按 interval 分组 → setInterval → Promise.all 并发拨测 → 结果写入 store
  • 4.4 为 fetcher 和 expect 校验编写完整测试(使用 mock HTTP server
  • 4.5 为调度引擎编写完整测试(分组逻辑、并发执行、单目标失败隔离)

5. API 路由层

  • 5.1 定义 src/shared/api.ts 响应类型SummaryResponse、TargetStatus、CheckResult、TrendPoint
  • 5.2 重写 src/server/app.ts注册新 API 路由(/api/summary、/api/targets、/api/targets/:id/history、/api/targets/:id/trend保留 /health
  • 5.3 实现 API 错误处理(目标不存在返回 404、参数无效返回 400
  • 5.4 为 API 路由编写完整测试(各端点正常响应、边界情况、错误处理)

6. 前端 Dashboard

  • 6.1 创建前端组件目录结构 src/web/components/ 和 src/web/hooks/
  • 6.2 实现 hooksuseSummary轮询 /api/summary、useTargets轮询 /api/targets、useTrend按需加载趋势数据
  • 6.3 实现 StatusDot 组件(绿色 UP / 红色 DOWN 圆点)
  • 6.4 实现 SummaryCards 组件4 个统计卡片)
  • 6.5 实现 SparklineChart 组件recharts 迷你折线图)
  • 6.6 实现 TrendChart 组件recharts 完整折线图,含时间轴和双 Y 轴)
  • 6.7 实现 TargetRow 组件表格行名称、URL、状态、延迟、Sparkline可展开
  • 6.8 实现 TargetDetail 组件(展开面板:统计摘要、趋势图、历史记录列表)
  • 6.9 实现 TargetTable 组件(组合 TargetRow 和 TargetDetail
  • 6.10 重写 App.tsx组合 SummaryCards + TargetTable处理加载和错误状态
  • 6.11 重写 styles.cssDashboard 布局样式(卡片、表格、详情面板、响应式)
  • 6.12 更新 vite.config.ts 代理配置确保 /api/* 转发

7. 集成与启动流程

  • 7.1 重写 src/server/dev.ts 和 src/server/server.ts启动流程为 读取配置 → 初始化 store → 同步 targets → 启动 engine → 启动 HTTP server
  • 7.2 更新构建脚本确保 recharts 正确打包进 executable
  • 7.3 更新 README.md新的 CLI 用法、YAML 配置说明、API 端点文档、项目结构变更

8. 端到端验证

  • 8.1 更新 smoke test 脚本适配新的 API 端点和前端路由
  • 8.2 手动验证完整流程YAML 配置 → 启动 → 拨测执行 → Dashboard 展示