## 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