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,39 @@
## Why
当前 expect 规则仅有 `status``bodyContains``maxLatencyMs` 三条,无法满足 API 网关拨测中对 JSON 返回值字段校验、HTML 页面内容校验、响应头校验等常见需求。body 校验能力单薄(仅子串匹配),需要增强为多种可组合的校验方法,覆盖主流响应格式。
## What Changes
- 新增 `headers` 规则,支持按响应头键值对校验
- 重构 body 校验:将独立的 `bodyContains` 移至 `body` 分组下,新增五种 body 校验方法:
- `contains`:子串匹配(从原 `bodyContains` 迁移)
- `regex`:正则表达式全文匹配
- `json`JSONPath 提取值后比较
- `css`CSS 选择器提取 HTML 元素文本/属性后比较
- `xpath`XPath 提取 XML/HTML 节点后比较
- body 五种方法可任意组合AND 串联
- 新增操作符系统:`equals`(默认)、`contains``match`(正则)、`empty``exists``gte``lte``gt``lt`
- 新增依赖:`cheerio`CSS 选择器)、`xpath` + `@xmldom/xmldom`XPath 引擎)
- **BREAKING**`expect.bodyContains` 迁移至 `expect.body.contains`
## Capabilities
### New Capabilities
- `expect-body-checkers`body 响应校验方法集contains/regex/json/css/xpath及操作符系统
### Modified Capabilities
- `probe-config`expect 配置 schema 变更,新增 headers/body 分组bodyContains 迁移
- `probe-engine`checkExpect 函数扩展,支持新的 body 校验方法和操作符
## Impact
- 类型定义:`src/server/checker/types.ts`ExpectConfig/BodyExpectConfig/ExpectOperator
- 配置加载:`src/server/checker/config-loader.ts`(解析新的 expect 结构)
- 拨测执行:`src/server/checker/fetcher.ts`checkExpect 扩展)
- 数据存储:`src/server/checker/store.ts`expect JSON 序列化兼容)
- 前端展示状态判定逻辑不变matched 字段语义不变)
- 配置文件:`probes.example.yaml`(更新示例)
- README.md更新配置文档
- 依赖:`package.json` 新增 cheerio、xpath、@xmldom/xmldom