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

3.1 KiB
Raw Blame History

Why

项目当前只有 demo 验证链路(/api/demo + 前端展示连接状态),缺少核心业务逻辑。需要一个 HTTP 拨测工具,通过 YAML 配置文件定义拨测目标URL、method、header、body、期望条件等后端按配置定时、并行批量拨测结果持久化到本地 SQLite前端 Dashboard 展示各目标实时状态、可用率、延迟趋势等。

What Changes

  • 清理 demo 样例代码:移除 /api/demo 路由、DemoResponse 类型、前端 demo 展示逻辑,保留路由框架、服务启动、构建打包链路和 /health 端点
  • 新增 YAML 配置文件解析:使用 Bun 内置 Bun.YAML.parse() 读取拨测规则文件,包含 server 配置、数据目录、全局默认值和拨测目标列表
  • 简化 CLI 参数:只保留一个命令行参数——配置文件路径,所有配置统一到 YAML 文件
  • 新增 SQLite 数据存储:使用 bun:sqlite 存储拨测目标(从 YAML 同步)和拨测结果(追加写入),支持索引查询
  • 新增拨测调度引擎:按 target 的 interval 分组,每组独立 timer组内 Promise.all 并发拨测,支持 expect 校验(状态码、响应体、延迟阈值)
  • 新增 REST API 层:提供总览统计、目标列表含当前状态、历史记录、趋势聚合等接口
  • 新增前端 Dashboard:使用 React 组件展示统计卡片、目标列表表格(含状态圆点和迷你趋势线)、可展开详情面板(含完整趋势图),通过轮询 5-10s 更新数据
  • 引入 recharts 依赖:用于趋势图和迷你 Sparkline 可视化

Capabilities

New Capabilities

  • probe-config: YAML 配置文件格式定义、解析校验与 CLI 启动流程
  • probe-engine: 拨测调度引擎——按 interval 分组定时、并发拨测、expect 校验、结果存储
  • probe-data-store: SQLite 数据存储——targets 同步、results 追加、索引与聚合查询
  • probe-api: REST API 层——总览统计、目标列表含状态、历史记录、趋势聚合
  • probe-dashboard: React 前端 Dashboard——统计卡片、目标表格、详情面板、趋势图

Modified Capabilities

  • fullstack-app-runtime: CLI 参数从 --host/--port 简化为单个配置文件路径参数;移除 /api/demo 路由;新增 /api/* 拨测相关 API 路由
  • frontend-development-workflow: 前端从 demo 展示页面替换为拨测 Dashboard移除 /api/demo 相关代理场景

Impact

  • 代码变更src/server/app.ts 路由重写、src/server/config.ts 简化、src/shared/api.ts 类型重写、src/web/ 前端全部重写
  • 新增模块src/server/checker/ 目录engine、fetcher、store、config-loader、types
  • 新增依赖recharts(前端图表)
  • 无新增外部依赖YAML 解析使用 Bun 内置 Bun.YAMLSQLite 使用 Bun 内置 bun:sqlite
  • 构建打包:现有 single executable 打包链路不变YAML 配置文件为外部文件不嵌入 executable
  • API 变更BREAKING 移除 /api/demo,新增 /api/summary/api/targets/api/targets/:id/history/api/targets/:id/trend