3.4 KiB
3.4 KiB
Why
当前系统以 HTTP 请求作为唯一 checker 形态,target、expect、存储、API 和 Dashboard 都围绕 URL、HTTP method、status code 与 response body 建模,无法自然表达本地命令检查等非 HTTP 场景。项目尚未上线,没有兼容性约束,适合一次性重构为面向多种 checker 类型的清晰模型。
What Changes
- BREAKING: 移除顶层
target.url、target.method、target.headers、target.body配置形态,改为target.type判别不同 checker 类型,并将领域字段放入http或command分组。 - BREAKING:
expect.body从对象分组改为有序规则数组,按配置顺序执行并快速失败。 - 引入
httptarget 类型,支持 HTTP URL、method、headers、body、最大 body 读取字节数和 HTTP 专用 expect。 - 引入
commandtarget 类型,支持本地命令exec + args、cwd、env、最大输出读取字节数和 command 专用 expect。 - 为不同 checker 类型提供领域默认成功语义:HTTP 默认
expect.status: [200],command 默认expect.exitCode: [0]。 - 引入全局并发限制
runtime.maxConcurrentChecks,默认值为 20。 - 引入 size 配置解析,支持
B、KB、MB、GB,HTTPmaxBodyBytes和 commandmaxOutputBytes默认均为100MB。 - 调整 expect 执行管线:先执行状态类检查,再执行耗时检查,再执行元数据或内容检查;同一内容字段内部按数组顺序检查,任一失败立即返回结构化失败信息。
- 将 check result 的失败信息结构化入库,区分 runner 执行错误与 expect 不匹配,便于后续追查。
- 将 DB、API、Dashboard 从 HTTP-only 字段命名调整为通用 checker 展示模型,同时保留 HTTP 和 command 的领域专用细节。
- 同步更新 README、示例配置和测试,覆盖 typed target、默认 expect、快速失败、输出限制、失败信息和 Dashboard 展示。
Capabilities
New Capabilities
command-checker: 定义本地命令 checker 的配置、执行、安全边界、默认成功语义、输出限制和 expect 校验。
Modified Capabilities
probe-config: YAML 配置从 HTTP-only target 改为 typed target,新增 runtime 并发限制、HTTP/command 默认配置和 size 字符串解析。probe-engine: 调度引擎从固定 HTTP fetch 改为按 target type 选择 runner,并在全局并发限制下执行检查。expect-body-checkers: HTTP body expect 改为有序规则数组,通用值操作符可复用于 stdout/stderr/header/body 等不同字段。probe-data-store: targets 和 check_results schema 从 HTTP-only 字段改为 checker 通用字段,并持久化结构化失败信息。probe-api: API 响应从 URL/method/statusCode/latencyMs 为中心改为 type/target/durationMs/statusDetail/failure 等通用 checker 契约。probe-dashboard: Dashboard 从 HTTP 拨测视图调整为 checker 通用视图,展示类型、目标、耗时、最近失败原因和领域状态详情。
Impact
- 影响后端类型定义、配置加载校验、调度执行、HTTP runner、command runner、expect 校验模块、SQLite schema、聚合查询和 API 映射。
- 影响前后端共享 API 类型和 Dashboard 表格、详情、历史记录、趋势图展示字段。
- 影响 README、
probes.example.yaml、单元测试和 smoke test 配置样例。 - 不引入新依赖,优先复用 Bun、TypeScript、现有 cheerio/xpath 和 SQLite 能力。