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

63 lines
3.8 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. 项目准备与依赖
- [x] 1.1 清理 demo 代码:移除 /api/demo 路由、DemoResponse 类型、前端 demo 展示逻辑
- [x] 1.2 安装 recharts 依赖
- [x] 1.3 创建 src/server/checker/ 目录结构和类型定义文件 types.ts
- [x] 1.4 创建示例 YAML 配置文件 probes.example.yaml
## 2. 配置解析层
- [x] 2.1 实现 YAML 配置类型定义ProbeConfig、TargetConfig、ExpectConfig 等)
- [x] 2.2 实现 config-loader.ts读取文件 + Bun.YAML.parse + 配置校验必填字段、name 唯一性、interval 格式、port 范围)
- [x] 2.3 重写 src/server/config.tsCLI 只接受配置文件路径参数,从 YAML 读取 host/port/dataDir
- [x] 2.4 为配置解析和校验编写完整测试
## 3. 数据存储层
- [x] 3.1 实现 store.tsSQLite 初始化建表、WAL 模式、复合索引)、数据目录自动创建
- [x] 3.2 实现 targets 表同步逻辑(根据 name 匹配:新增插入、删除移除、修改更新)
- [x] 3.3 实现 check_results 追加写入方法
- [x] 3.4 实现查询方法:按 target+时间范围查询、按小时聚合趋势、计算可用率/平均延迟/P99
- [x] 3.5 为数据存储层编写完整测试(初始化、同步、写入、查询、聚合)
## 4. 拨测引擎
- [x] 4.1 实现 fetcher.tsHTTP 请求执行method/header/body+ AbortController 超时控制
- [x] 4.2 实现 expect 校验逻辑status 列表匹配、bodyContains、maxLatencyMs
- [x] 4.3 实现 engine.ts按 interval 分组 → setInterval → Promise.all 并发拨测 → 结果写入 store
- [x] 4.4 为 fetcher 和 expect 校验编写完整测试(使用 mock HTTP server
- [x] 4.5 为调度引擎编写完整测试(分组逻辑、并发执行、单目标失败隔离)
## 5. API 路由层
- [x] 5.1 定义 src/shared/api.ts 响应类型SummaryResponse、TargetStatus、CheckResult、TrendPoint
- [x] 5.2 重写 src/server/app.ts注册新 API 路由(/api/summary、/api/targets、/api/targets/:id/history、/api/targets/:id/trend保留 /health
- [x] 5.3 实现 API 错误处理(目标不存在返回 404、参数无效返回 400
- [x] 5.4 为 API 路由编写完整测试(各端点正常响应、边界情况、错误处理)
## 6. 前端 Dashboard
- [x] 6.1 创建前端组件目录结构 src/web/components/ 和 src/web/hooks/
- [x] 6.2 实现 hooksuseSummary轮询 /api/summary、useTargets轮询 /api/targets、useTrend按需加载趋势数据
- [x] 6.3 实现 StatusDot 组件(绿色 UP / 红色 DOWN 圆点)
- [x] 6.4 实现 SummaryCards 组件4 个统计卡片)
- [x] 6.5 实现 SparklineChart 组件recharts 迷你折线图)
- [x] 6.6 实现 TrendChart 组件recharts 完整折线图,含时间轴和双 Y 轴)
- [x] 6.7 实现 TargetRow 组件表格行名称、URL、状态、延迟、Sparkline可展开
- [x] 6.8 实现 TargetDetail 组件(展开面板:统计摘要、趋势图、历史记录列表)
- [x] 6.9 实现 TargetTable 组件(组合 TargetRow 和 TargetDetail
- [x] 6.10 重写 App.tsx组合 SummaryCards + TargetTable处理加载和错误状态
- [x] 6.11 重写 styles.cssDashboard 布局样式(卡片、表格、详情面板、响应式)
- [x] 6.12 更新 vite.config.ts 代理配置确保 /api/* 转发
## 7. 集成与启动流程
- [x] 7.1 重写 src/server/dev.ts 和 src/server/server.ts启动流程为 读取配置 → 初始化 store → 同步 targets → 启动 engine → 启动 HTTP server
- [x] 7.2 更新构建脚本确保 recharts 正确打包进 executable
- [x] 7.3 更新 README.md新的 CLI 用法、YAML 配置说明、API 端点文档、项目结构变更
## 8. 端到端验证
- [x] 8.1 更新 smoke test 脚本适配新的 API 端点和前端路由
- [x] 8.2 手动验证完整流程YAML 配置 → 启动 → 拨测执行 → Dashboard 展示