1
0

refactor: 移除 success 字段,简化为 matched 单层判定模型

This commit is contained in:
2026-05-11 13:12:55 +08:00
parent 548b44d28e
commit 35ba56888b
93 changed files with 3893 additions and 103 deletions

View File

@@ -0,0 +1,36 @@
## 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`