## 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.YAML`,SQLite 使用 Bun 内置 `bun:sqlite` - **构建打包**:现有 single executable 打包链路不变,YAML 配置文件为外部文件不嵌入 executable - **API 变更**:**BREAKING** 移除 `/api/demo`,新增 `/api/summary`、`/api/targets`、`/api/targets/:id/history`、`/api/targets/:id/trend`