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,64 @@
## 1. 后端:配置与类型
- [x] 1.1 types.ts: BaseTargetConfig 新增 group?: string, ResolvedTarget 新增 group: string
- [x] 1.2 config-loader.ts: 解析 group 字段(默认 "default"
- [x] 1.3 shared/api.ts: 新增 RecentSample 接口和 HistoryResponse 接口,移除 SummaryResponse.avgDurationMs移除 TargetStats.avgDurationMs 和 TargetStats.p99DurationMsTargetStatus 中 sparkline 替换为 recentSamples: RecentSample[],新增 group: string
- [x] 1.4 编写 config-loader 的 group 解析校验测试
## 2. 后端:数据存储
- [x] 2.1 store.ts: targets 表新增 grp 列ALTER TABLE 或重建建表语句syncTargets 写入 grp 值
- [x] 2.2 store.ts: 新增 getRecentSamples(targetId, limit) 方法替代 getSparkline返回包含 timestamp/duration_ms/success/matched 的结构化数据
- [x] 2.3 store.ts: getTrend 改用 from/to 时间范围参数替代 hours
- [x] 2.4 store.ts: getHistory 改用 from/to 时间范围 + page/pageSize 分页参数,返回 { items, total, page, pageSize }
- [x] 2.5 store.ts: getTargets 排序改为 ORDER BY CASE WHEN grp='default' THEN 0 ELSE 1 END, grp, id
- [x] 2.6 store.ts: getSummary 移除 avgDurationMs 计算逻辑
- [x] 2.7 store.ts: 移除 getSparkline 方法
- [x] 2.8 编写 store 的新增/变更方法的完整测试
## 3. 后端API 路由
- [x] 3.1 app.ts: createSummaryResponse 移除 avgDurationMs 字段
- [x] 3.2 app.ts: createTargetsResponse 返回 group 和 recentSamples 替代 sparkline移除 stats 中的 avgDurationMs 和 p99DurationMs
- [x] 3.3 app.ts: handleTrend 改用 from/to 查询参数(替代 hours校验参数格式
- [x] 3.4 app.ts: handleHistory 改用 from/to + page/pageSize 参数,返回 HistoryResponse 结构(含 total
- [x] 3.5 app.ts: 移除 mapCheckResult 中已不需要的字段映射
- [x] 3.6 编写 API 路由的测试,覆盖 from/to 参数校验、分页参数校验、recentSamples 返回结构
## 4. 前端:组件重构
- [x] 4.1 新增 StatusBar 组件:渲染 recentSampleCount 个色块UP 绿/DOWN 红/无数据灰)
- [x] 4.2 改造 SparklineChart 为 MiniSparkline接收 RecentSample[] 数据,提取 durationMs 绘制迷你折线图
- [x] 4.3 新增 GroupHeader 组件:显示分组名称和统计信息(分组名 (N个, X UP / Y DOWN)default 显示"默认分组"
- [x] 4.4 新增 TargetCard 组件:固定 280px 宽行1 为 StatusDot + 名称 + 类型标签行2 为 StatusBar + MiniSparklinehover 上浮效果,点击触发回调
- [x] 4.5 新增 CardGrid 组件CSS Grid auto-fill 280px 响应式布局,接收 targets 数组渲染 TargetCard
- [x] 4.6 新增 TargetGroup 组件:组合 GroupHeader + CardGrid接收分组名和该组 targets
- [x] 4.7 新增 TargetBoard 组件:接收 targets 数组,前端按 group 分组,顺序渲染 TargetGroup
- [x] 4.8 新增 StatusDonut 组件:基于 recharts PieChart 实现环形图,中间显示可用率百分比,外圈 UP/DOWN 比例
- [x] 4.9 新增 TimeRangePicker 组件快捷按钮1h/6h/24h/7d+ 分钟精度日期选择器,联动逻辑
- [x] 4.10 新增 Pagination 组件:显示页码按钮,支持翻页回调
- [x] 4.11 新增 TargetDetailModal 组件模态框布局80% 视口宽),筛选栏 + 左侧图表区40%+ 右侧列表区60%),组合 TrendChart/StatusDonut/Pagination
- [x] 4.12 改造 TrendChart适配 from/to 参数的时间范围,替代 hours
- [x] 4.13 改造 app.tsxSummaryCards 从 4 卡片改为 3 卡片TargetTable 替换为 TargetBoard模态框状态管理
- [x] 4.14 移除 TargetTable、TargetRow、旧版 TargetDetail 组件
## 5. 前端Hooks 与数据层
- [x] 5.1 新增 useTargetDetail hook管理模态框状态封装 trend + history 的并行请求逻辑
- [x] 5.2 改造 useTrend hook改用 from/to 参数请求 trend API
- [x] 5.3 新增 useHistory hook使用 from/to + page/pageSize 请求 history API返回 HistoryResponse 结构
## 6. 前端:样式
- [x] 6.1 重写 styles.css移除表格相关样式新增卡片样式280px 固定宽、圆角、阴影、分组样式、模态框样式backdrop + 居中 + 左右分栏、StatusBar 样式色块、TimeRangePicker 样式、Pagination 样式、响应式媒体查询
- [x] 6.2 SummaryCards grid 改为 repeat(3, 1fr)
## 7. 文档与配置示例
- [x] 7.1 更新 probes.example.yaml新增 group 字段示例
- [x] 7.2 更新 README.md配置说明新增 groupAPI 端点变更说明,项目结构更新组件列表
## 8. 质量保障
- [x] 8.1 执行 bun run checktypecheck + lint + format:check + 单元测试),修复所有问题
- [x] 8.2 执行 bun run verifycheck + build + smoke test确保构建产物正常运行