## 1. 类型与 Schema 定义 - [ ] 1.1 创建 `src/server/checker/runner/icmp/types.ts`,定义 PingTargetConfig、PingExpectConfig、ResolvedPingConfig、ResolvedPingTarget、PingStats 接口 - [ ] 1.2 创建 `src/server/checker/runner/icmp/schema.ts`,定义 TypeBox schema(config、expect),导出 icmpCheckerSchemas ## 2. 跨平台解析器 - [ ] 2.1 创建 `src/server/checker/runner/icmp/parse.ts`,实现 parsePingOutput(stdout, platform) 函数,支持 Linux/macOS/Windows 三平台解析 - [ ] 2.2 创建 `tests/server/checker/runner/icmp/parse.test.ts`,覆盖 Linux、macOS、Windows 英文、Windows 中文、全部丢包、无法解析等场景 ## 3. 断言函数 - [ ] 3.1 创建 `src/server/checker/runner/icmp/expect.ts`,实现 checkAlive、checkPacketLoss、checkAvgLatency、checkMaxLatency 函数 - [ ] 3.2 创建 `tests/server/checker/runner/icmp/expect.test.ts`,覆盖各断言函数的通过和失败场景 ## 4. 配置校验 - [ ] 4.1 创建 `src/server/checker/runner/icmp/validate.ts`,实现 validatePingConfig 语义校验 - [ ] 4.2 创建 `tests/server/checker/runner/icmp/validate.test.ts`,覆盖 host 缺失、count/packetSize 非法、未知字段等场景 ## 5. Checker 主体实现 - [ ] 5.1 创建 `src/server/checker/runner/icmp/execute.ts`,实现 IcmpChecker class(execute、resolve、serialize、validate) - [ ] 5.2 创建 `src/server/checker/runner/icmp/index.ts`,导出 IcmpChecker - [ ] 5.3 在 `src/server/checker/runner/index.ts` 中 import IcmpChecker 并将 `new IcmpChecker()` 添加到 checkers 数组 ## 6. 集成测试 - [ ] 6.1 创建 `tests/server/checker/runner/icmp/execute.test.ts`,测试 IcmpChecker 的 execute 方法(mock Bun.spawn) - [ ] 6.2 更新 `tests/server/checker/runner/registry.test.ts`,验证 ping type 已注册 - [ ] 6.3 更新 `tests/server/checker/config-loader.test.ts`,添加 ping target 配置解析和校验测试 ## 7. Schema 导出与文档 - [ ] 7.1 更新 `probe-config.schema.json`,包含 ping target 和 expect 的 schema 片段 - [ ] 7.2 更新 `probes.example.yaml`,添加 ping checker 配置示例 - [ ] 7.3 更新 README.md,添加 ping checker 说明和系统依赖(ping 命令)注明 - [ ] 7.4 更新 DEVELOPMENT.md(如有必要) ## 8. 质量保障 - [ ] 8.1 执行完整测试套件(bun test),确保所有测试通过 - [ ] 8.2 执行代码检查(lint)和格式检查(format),确保无错误 - [ ] 8.3 验证 probe-config.schema.json 与运行期 schema 一致(运行 schema 生成脚本)