testcase-to-jsonl.mdc
1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
---
description: 测试用例 XML → case_atoms.jsonl 的标准处理流程
globs: testCase/**/*.xml
alwaysApply: false
---
# 测试用例 XML → case_atoms.jsonl 处理规范
当用户提供测试用例 XML 文件(通常在 `testCase/` 目录),要求转换为知识库时,**必须**按以下流程执行。
## 1. 确认版本号与输出目录
- 从文件名或用户描述提取 `app_version`(如 `v4.40.0`)
- 输出到 `build/<app_version>/case_atoms.jsonl`
## 2. 必须先运行预处理脚本
**在任何解析之前,先调用 `scripts/parse_testcase_to_jsonl.py`(已内置预处理)**,该脚本会自动:
1. 剥除 base64 图片数据(XML 体积通常减少 80%~95%)
2. 过滤纯截图期望结果(`R` 只有 `[截图]` 的 atom)
3. 过滤空 R / 废弃用例(含"作废"/"没有这种场景")
4. 修复裸 `&` 符号
```bash
# 修改脚本顶部的 APP_VERSION 和路径后运行:
python3 scripts/parse_testcase_to_jsonl.py
```
## 3. case_atoms.jsonl 字段规范
每条 atom 与 `rule_atoms.jsonl` 对齐,核心字段:
| 字段 | 说明 |
|------|------|
| `atom_id` | `{app_version}_{fingerprint12}` |
| `atom_type` | `"case_rule"` |
| `C` | 前置条件(来自 preconditions 或 case_name) |
| `A` | 操作(来自 step actions;若空则用 case_name) |
| `R` | 期望结果(必须有文字,纯截图过滤) |
| `canon_text` | `C=...\|A=...\|R=...` |
| `merge_fingerprint` | sha1(canon_text) 前 12 位 |
| `evidence` | `TC-{version} suite:... case:... externalid:...` |
## 4. 质量检查
生成后验证:
- `R 为空的 atoms` = 0
- `R 含纯截图的 atoms` = 0
- 模块分布合理(AUTH/INCOME/CLINIC/INQUIRY/PATIENT/NOTIFICATION)
## 5. 不要做的事
- ❌ 不要直接读原始 XML 解析(base64 太大,会超时/报错)
- ❌ 不要把废弃用例(含"作废")纳入知识库
- ❌ 不要把无 R 的 atom 入库(规则不完整)