@epoint-testtech/ep-stage-skill 0.0.3-alpha.2 → 0.0.4-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +2 -2
- package/codex-skill/ep-stage/.omc/state/sessions/d636ad35-5fc9-4d5e-85b0-2bcad7d86ee5/pre-tool-advisory-throttle.json +10 -0
- package/codex-skill/ep-stage/glue-create-project/SKILL.md +206 -0
- package/codex-skill/ep-stage/glue-generate-testcase/SKILL.md +274 -0
- package/codex-skill/ep-stage/glue-generate-testcase/references/testcase-schema.md +112 -0
- package/codex-skill/ep-stage/glue-generate-testcase/references/testcase-tpl.md +72 -0
- package/codex-skill/ep-stage/glue-run-test/SKILL.md +289 -0
- package/codex-skill/ep-stage/glue-run-test/references/crud-pipeline.md +145 -0
- package/codex-skill/ep-stage/{glue-test → glue-run-test}/scripts/generate-crud-spec.mjs +3 -3
- package/codex-skill/ep-stage/recording-to-glue/SKILL.md +1 -0
- package/codex-skill/ep-stage/scripts/validate-skill.mjs +29 -7
- package/dist/src/cli/dev/extract-contract.d.ts +14 -0
- package/dist/src/cli/dev/extract-contract.d.ts.map +1 -0
- package/dist/src/cli/dev/extract-contract.js +114 -0
- package/dist/src/cli/generate-crud-contract.js +7 -77
- package/dist/src/cli/generate-playwright-tests.d.ts +0 -28
- package/dist/src/cli/generate-playwright-tests.d.ts.map +1 -1
- package/dist/src/cli/generate-playwright-tests.js +4 -81
- package/dist/src/cli/generate-testcase.d.ts +84 -0
- package/dist/src/cli/generate-testcase.d.ts.map +1 -0
- package/dist/src/cli/generate-testcase.js +300 -0
- package/dist/src/cli/index.d.ts +26 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +75 -0
- package/dist/src/cli/probe.d.ts +46 -0
- package/dist/src/cli/probe.d.ts.map +1 -0
- package/dist/src/cli/probe.js +447 -0
- package/dist/src/cli/run-gap-pipeline.js +4 -0
- package/dist/src/cli/run.d.ts +63 -0
- package/dist/src/cli/run.d.ts.map +1 -0
- package/dist/src/cli/run.js +116 -0
- package/dist/src/cli/spec.d.ts +48 -0
- package/dist/src/cli/spec.d.ts.map +1 -0
- package/dist/src/cli/spec.js +102 -0
- package/dist/src/context/stage-context.d.ts +72 -8
- package/dist/src/context/stage-context.d.ts.map +1 -1
- package/dist/src/context/stage-context.js +61 -15
- package/dist/src/contracts/inference-trace.d.ts +223 -0
- package/dist/src/contracts/inference-trace.d.ts.map +1 -0
- package/dist/src/contracts/inference-trace.js +12 -0
- package/dist/src/extractors/code-list.d.ts +3 -3
- package/dist/src/extractors/code-list.d.ts.map +1 -1
- package/dist/src/extractors/code-list.js +46 -11
- package/dist/src/generators/stage-skeleton-script.d.ts.map +1 -1
- package/dist/src/generators/stage-skeleton-script.js +9 -0
- package/dist/src/index.d.ts +7 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/inference/module-hints-inference.d.ts +30 -0
- package/dist/src/inference/module-hints-inference.d.ts.map +1 -0
- package/dist/src/inference/module-hints-inference.js +363 -0
- package/dist/src/inference/source-analysis.d.ts +26 -0
- package/dist/src/inference/source-analysis.d.ts.map +1 -0
- package/dist/src/inference/source-analysis.js +258 -0
- package/dist/src/testcase/testcase-generator.d.ts.map +1 -1
- package/dist/src/testcase/testcase-generator.js +4 -0
- package/dist/src/testcase/testcase-v2.d.ts +50 -0
- package/dist/src/testcase/testcase-v2.d.ts.map +1 -0
- package/dist/src/testcase/testcase-v2.js +1 -0
- package/dist/src/util/credentials.d.ts +12 -0
- package/dist/src/util/credentials.d.ts.map +1 -0
- package/dist/src/util/credentials.js +19 -0
- package/dist/src/util/i18n-testcase.d.ts +8 -0
- package/dist/src/util/i18n-testcase.d.ts.map +1 -0
- package/dist/src/util/i18n-testcase.js +55 -0
- package/dist/src/util/softlink.d.ts +33 -0
- package/dist/src/util/softlink.d.ts.map +1 -0
- package/dist/src/util/softlink.js +43 -0
- package/dist/src/validation/credentials.d.ts +19 -0
- package/dist/src/validation/credentials.d.ts.map +1 -0
- package/dist/src/validation/credentials.js +38 -0
- package/dist/src/validation/index.d.ts +6 -0
- package/dist/src/validation/index.d.ts.map +1 -0
- package/dist/src/validation/index.js +4 -0
- package/dist/src/validation/inference-trace.d.ts +13 -0
- package/dist/src/validation/inference-trace.d.ts.map +1 -0
- package/dist/src/validation/inference-trace.js +31 -0
- package/dist/src/validation/projects-index.d.ts +13 -0
- package/dist/src/validation/projects-index.d.ts.map +1 -0
- package/dist/src/validation/projects-index.js +37 -0
- package/dist/src/validation/testcase.d.ts +13 -0
- package/dist/src/validation/testcase.d.ts.map +1 -0
- package/dist/src/validation/testcase.js +53 -0
- package/dist/test/cli/extract-contract.test.d.ts +2 -0
- package/dist/test/cli/extract-contract.test.d.ts.map +1 -0
- package/dist/test/cli/extract-contract.test.js +32 -0
- package/dist/test/cli/generate-testcase-inference.test.d.ts +2 -0
- package/dist/test/cli/generate-testcase-inference.test.d.ts.map +1 -0
- package/dist/test/cli/generate-testcase-inference.test.js +63 -0
- package/dist/test/cli/generate-testcase-paths.test.d.ts +2 -0
- package/dist/test/cli/generate-testcase-paths.test.d.ts.map +1 -0
- package/dist/test/cli/generate-testcase-paths.test.js +165 -0
- package/dist/test/cli/generate-testcase-requirements.test.d.ts +2 -0
- package/dist/test/cli/generate-testcase-requirements.test.d.ts.map +1 -0
- package/dist/test/cli/generate-testcase-requirements.test.js +229 -0
- package/dist/test/cli/generate-testcase.test.d.ts +2 -0
- package/dist/test/cli/generate-testcase.test.d.ts.map +1 -0
- package/dist/test/cli/generate-testcase.test.js +130 -0
- package/dist/test/cli/index.test.d.ts +2 -0
- package/dist/test/cli/index.test.d.ts.map +1 -0
- package/dist/test/cli/index.test.js +113 -0
- package/dist/test/cli/probe.test.d.ts +2 -0
- package/dist/test/cli/probe.test.d.ts.map +1 -0
- package/dist/test/cli/probe.test.js +31 -0
- package/dist/test/cli/run.test.d.ts +2 -0
- package/dist/test/cli/run.test.d.ts.map +1 -0
- package/dist/test/cli/run.test.js +149 -0
- package/dist/test/cli/spec-boundary.test.d.ts +2 -0
- package/dist/test/cli/spec-boundary.test.d.ts.map +1 -0
- package/dist/test/cli/spec-boundary.test.js +198 -0
- package/dist/test/cli/spec.test.d.ts +2 -0
- package/dist/test/cli/spec.test.d.ts.map +1 -0
- package/dist/test/cli/spec.test.js +196 -0
- package/dist/test/code-list.test.d.ts +2 -0
- package/dist/test/code-list.test.d.ts.map +1 -0
- package/dist/test/code-list.test.js +39 -0
- package/dist/test/crud-contract.test.js +12 -32
- package/dist/test/inference/module-hints-inference.test.d.ts +2 -0
- package/dist/test/inference/module-hints-inference.test.d.ts.map +1 -0
- package/dist/test/inference/module-hints-inference.test.js +25 -0
- package/dist/test/inference/source-analysis.test.d.ts +2 -0
- package/dist/test/inference/source-analysis.test.d.ts.map +1 -0
- package/dist/test/inference/source-analysis.test.js +23 -0
- package/dist/test/material-inventory.test.js +13 -0
- package/dist/test/observable-pipeline.test.js +12 -3
- package/dist/test/stage-context.test.js +145 -13
- package/dist/test/util/credentials.test.d.ts +2 -0
- package/dist/test/util/credentials.test.d.ts.map +1 -0
- package/dist/test/util/credentials.test.js +64 -0
- package/dist/test/util/i18n-testcase.test.d.ts +2 -0
- package/dist/test/util/i18n-testcase.test.d.ts.map +1 -0
- package/dist/test/util/i18n-testcase.test.js +119 -0
- package/dist/test/util/softlink.test.d.ts +2 -0
- package/dist/test/util/softlink.test.d.ts.map +1 -0
- package/dist/test/util/softlink.test.js +82 -0
- package/dist/test/validation/credentials.test.d.ts +2 -0
- package/dist/test/validation/credentials.test.d.ts.map +1 -0
- package/dist/test/validation/credentials.test.js +72 -0
- package/dist/test/validation/projects-index.test.d.ts +2 -0
- package/dist/test/validation/projects-index.test.d.ts.map +1 -0
- package/dist/test/validation/projects-index.test.js +48 -0
- package/dist/test/validation/testcase.test.d.ts +2 -0
- package/dist/test/validation/testcase.test.d.ts.map +1 -0
- package/dist/test/validation/testcase.test.js +129 -0
- package/docs/README.md +6 -6
- package/docs/mvp-usage-guide.md +3 -3
- package/package.json +9 -4
- package/codex-skill/ep-stage/create-project/SKILL.md +0 -59
- package/codex-skill/ep-stage/glue-test/SKILL.md +0 -258
- package/codex-skill/ep-stage/glue-test/references/crud-pipeline.md +0 -139
- package/codex-skill/ep-stage/glue-testcase/SKILL.md +0 -31
- package/codex-skill/ep-stage/glue-testcase/references/testcase-schema.md +0 -67
- /package/codex-skill/ep-stage/{glue-testcase → glue-generate-testcase}/examples/observable-testcase.json +0 -0
- /package/codex-skill/ep-stage/{glue-test → glue-run-test}/references/gap-review-protocol.md +0 -0
- /package/codex-skill/ep-stage/{glue-test → glue-run-test}/references/harness-principles.md +0 -0
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
# CRUD Pipeline 参考(CRUD Pipeline Reference)
|
|
2
|
-
|
|
3
|
-
## 输入参数(Inputs)
|
|
4
|
-
|
|
5
|
-
使用显式输入。当用户已经明确给出路径时,不要大范围搜索。
|
|
6
|
-
|
|
7
|
-
| 输入 | 用途 | 说明 |
|
|
8
|
-
| --- | --- | --- |
|
|
9
|
-
| `--module-id` | 契约标识 | 稳定的技术标识,例如 `zwplace`。 |
|
|
10
|
-
| `--docs` | 需求/规格目录 | 当存在 `spec.yaml` 时优先使用;当前 CLI 可回退到 `code_list.md` 的模块标签。 |
|
|
11
|
-
| `--code-list` | 模块清单 | 通常为 `<knowledge-project>/_docs/code_list.md`。 |
|
|
12
|
-
| `--webapp` | 生成的 HTML 页面 | 包含 list/add/edit/detail HTML 文件的目录。 |
|
|
13
|
-
| `--java-actions` | Java Action 源码 | 包含 `*Action.java` 文件的目录,用于后端消息/规则。 |
|
|
14
|
-
| `--hints` | 策略决策 | 数据主键、搜索条件、按钮别名、自动填充覆盖、删除策略、断言。 |
|
|
15
|
-
| `--out` | 契约 JSON | 除非用户另有指定,否则输出保持在 `packages/ep-stage-skill/output/` 下。 |
|
|
16
|
-
|
|
17
|
-
## ModuleHints 指引(ModuleHints Guidance)
|
|
18
|
-
|
|
19
|
-
`ModuleHints` 是"已提取事实"与"测试人员策略"之间的边界。
|
|
20
|
-
|
|
21
|
-
以下内容应放入 hints,而不是由 Agent 自行推断:
|
|
22
|
-
|
|
23
|
-
- `dataKey.selectedField` 和 `dataKey.generationStrategy`
|
|
24
|
-
- `searchConditions[]`,尤其是 listbox 的 `value`
|
|
25
|
-
- `buttonAliases`
|
|
26
|
-
- `autofill.overrideFields`
|
|
27
|
-
- `deletePolicy`
|
|
28
|
-
- 断言策略覆盖
|
|
29
|
-
|
|
30
|
-
对于多条件 CRUD 冒烟测试,推荐:
|
|
31
|
-
|
|
32
|
-
```json
|
|
33
|
-
{
|
|
34
|
-
"dataKey": {
|
|
35
|
-
"selectedField": "placename",
|
|
36
|
-
"generationStrategy": "timestamp_prefix"
|
|
37
|
-
},
|
|
38
|
-
"searchConditions": [
|
|
39
|
-
{
|
|
40
|
-
"field": "placename",
|
|
41
|
-
"component": "input",
|
|
42
|
-
"seedValue": "自动化测试名称",
|
|
43
|
-
"strategy": "timestamp_prefix",
|
|
44
|
-
"updatePrefix": "修改"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"field": "placecategory",
|
|
48
|
-
"component": "listbox",
|
|
49
|
-
"value": "条线大厅",
|
|
50
|
-
"createSelections": [
|
|
51
|
-
{ "field": "placecategory", "value": "条线大厅" }
|
|
52
|
-
]
|
|
53
|
-
}
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
`searchConditions` 驱动生成的 `CrudFlowSlots`。`dataKey` 仍作为兼容性和策略锚点保留,但不应与独立的 `searchField` 概念重复。
|
|
59
|
-
|
|
60
|
-
## 生成契约(Generate Contract)
|
|
61
|
-
|
|
62
|
-
从仓库根目录执行:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
pnpm --filter @epoint/ep-stage-skill generate:crud-contract -- \
|
|
66
|
-
--module-id <module-id> \
|
|
67
|
-
--docs <absolute-upstream-docs-dir> \
|
|
68
|
-
--code-list <absolute-code-list-md> \
|
|
69
|
-
--webapp <absolute-webapp-html-dir> \
|
|
70
|
-
--java-actions <absolute-java-action-dir> \
|
|
71
|
-
--hints examples/<module>.module-hints.json \
|
|
72
|
-
--out output/<module>.crud.contract.json
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
由于 `pnpm --filter` 会在包目录内执行,上游路径通常应使用绝对路径。
|
|
76
|
-
|
|
77
|
-
## 检查契约闸门(Inspect Contract Gate)
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
node --input-type=module -e "
|
|
81
|
-
import fs from 'node:fs';
|
|
82
|
-
const c = JSON.parse(fs.readFileSync('packages/ep-stage-skill/output/<module>.crud.contract.json', 'utf8'));
|
|
83
|
-
console.log(JSON.stringify({
|
|
84
|
-
contractVersion: c.contractVersion,
|
|
85
|
-
module: c.module,
|
|
86
|
-
searchConditions: c.searchConditions?.map(({ field, label, component, value }) => ({ field, label, component, value })),
|
|
87
|
-
unresolvedSlots: c.unresolvedSlots?.map(({ slotId, reason }) => ({ slotId, reason }))
|
|
88
|
-
}, null, 2));
|
|
89
|
-
if (c.unresolvedSlots?.length) process.exit(2);
|
|
90
|
-
"
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
若退出码为 `2`,请更新 `ModuleHints` 并重新生成。不要从存在未解析槽位(unresolved slots)的契约生成最终 spec。
|
|
94
|
-
|
|
95
|
-
## 生成 Spec(Generate Spec)
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
pnpm --filter @epoint/ep-stage-skill generate:playwright-tests -- \
|
|
99
|
-
--contract output/<module>.crud.contract.json \
|
|
100
|
-
--out <absolute-glue-project>/src/tests/<name>.spec.ts \
|
|
101
|
-
--menu "<menu-path>"
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
生成的 spec 应当:
|
|
105
|
-
|
|
106
|
-
- 从 `../skeletons` 导入 `CrudPage`、`LoginPage`、`MenuPage` 以及 `type CrudFlowSlots`
|
|
107
|
-
- 定义 `const crudSlots: CrudFlowSlots`
|
|
108
|
-
- 调用 `await crudPage.runCrudFlow()`
|
|
109
|
-
- 避免内联 Playwright 操作流程
|
|
110
|
-
|
|
111
|
-
## 在消费方 glue 项目中验证(Verify In Consuming Glue Project)
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
cd <glue-project>
|
|
115
|
-
pnpm --ignore-workspace exec tsc --noEmit
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
运行时验证需要 `.env` 配置:
|
|
119
|
-
|
|
120
|
-
```text
|
|
121
|
-
LOGIN_SYSTEM_URL=...
|
|
122
|
-
LOGIN_USERNAME=...
|
|
123
|
-
LOGIN_PASSWORD=...
|
|
124
|
-
HEADLESS=false
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
仅当业务系统可达时才执行:
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
pnpm --ignore-workspace exec playwright test src/tests/<name>.spec.ts --project=chromium --headed --workers=1
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
若运行时失败,将失败原因归类为:
|
|
134
|
-
|
|
135
|
-
- 系统可达性或登录配置
|
|
136
|
-
- 上游物料不匹配
|
|
137
|
-
- `ModuleHints` 缺失或错误
|
|
138
|
-
- 骨架/组件行为
|
|
139
|
-
- 包生成器缺陷
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: glue-testcase
|
|
3
|
-
description: 使用时机:当需要基于 ep-stage 可观测 trace、场景推理结果和 coverage diff 先生成可人工审阅的胶水测试用例中间产物,再供 glue-test 组装 Playwright spec 时使用。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ep-stage: glue-testcase
|
|
7
|
-
|
|
8
|
-
本 skill 只负责测试用例中间产物(`glue-testcase.json` / `.md`),不直接生成或执行 Playwright spec。
|
|
9
|
-
|
|
10
|
-
## 工作流
|
|
11
|
-
|
|
12
|
-
```text
|
|
13
|
-
读取 .stage/trace
|
|
14
|
-
-> 检查 scenario-inference 是否已确认(--scenario)
|
|
15
|
-
-> 读取 coverage-diff
|
|
16
|
-
-> 生成 testcase JSON / Markdown(testcases/<module>.glue-testcase.*)
|
|
17
|
-
-> 展示推理摘要和未确认项
|
|
18
|
-
-> 人工确认后供 glue-test 消费
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## 关键约束
|
|
22
|
-
|
|
23
|
-
- 未确认的 `scenario-inference` 不得生成可执行 spec。
|
|
24
|
-
- `candidate` 和 `unresolved` 必须写入 testcase 的 `reviewStatus` 和 `unresolved`。
|
|
25
|
-
- 嵌套 CRUD 一期只能作为候选用例进入 testcase,不写入正式 CRUD 契约。
|
|
26
|
-
- 对话中展示的是可审阅推理摘要和证据链,不展示原始隐式思维链。
|
|
27
|
-
|
|
28
|
-
## 按需加载
|
|
29
|
-
|
|
30
|
-
- 用例 schema:`references/testcase-schema.md`
|
|
31
|
-
- 样例产物:`examples/observable-testcase.json`
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# glue-testcase schema
|
|
2
|
-
|
|
3
|
-
`glue-testcase` 的 JSON 顶层结构:
|
|
4
|
-
|
|
5
|
-
```json
|
|
6
|
-
{
|
|
7
|
-
"moduleId": "zwplace",
|
|
8
|
-
"moduleName": "场所窗口信息管理",
|
|
9
|
-
"cases": [
|
|
10
|
-
{
|
|
11
|
-
"caseId": "zwplace.create",
|
|
12
|
-
"title": "新增场所窗口信息管理",
|
|
13
|
-
"scenario": "crud.single-page",
|
|
14
|
-
"reviewStatus": "confirmed",
|
|
15
|
-
"evidence": ["skeleton=crud.skeleton-testcase/v1", "contract=crud-business-module/v1"],
|
|
16
|
-
"steps": ["进入菜单", "点击新增", "填写并保存测试数据"],
|
|
17
|
-
"assertions": ["新增后可查询到记录"],
|
|
18
|
-
"unresolved": []
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"caseId": "zwplace.read",
|
|
22
|
-
"title": "查询场所窗口信息管理",
|
|
23
|
-
"scenario": "crud.single-page",
|
|
24
|
-
"reviewStatus": "confirmed",
|
|
25
|
-
"evidence": ["skeleton=crud.skeleton-testcase/v1", "contract=crud-business-module/v1"],
|
|
26
|
-
"steps": ["进入菜单", "输入查询字段", "提交查询"],
|
|
27
|
-
"assertions": ["查询结果包含测试记录"],
|
|
28
|
-
"unresolved": []
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"caseId": "zwplace.update",
|
|
32
|
-
"title": "修改场所窗口信息管理",
|
|
33
|
-
"scenario": "crud.single-page",
|
|
34
|
-
"reviewStatus": "confirmed",
|
|
35
|
-
"evidence": ["skeleton=crud.skeleton-testcase/v1", "contract=crud-business-module/v1"],
|
|
36
|
-
"steps": ["定位测试记录", "点击修改", "保存更新值"],
|
|
37
|
-
"assertions": ["修改后可查询到更新记录"],
|
|
38
|
-
"unresolved": []
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"caseId": "zwplace.delete",
|
|
42
|
-
"title": "删除场所窗口信息管理",
|
|
43
|
-
"scenario": "crud.single-page",
|
|
44
|
-
"reviewStatus": "confirmed",
|
|
45
|
-
"evidence": ["skeleton=crud.skeleton-testcase/v1", "contract=crud-business-module/v1"],
|
|
46
|
-
"steps": ["定位测试记录", "点击删除", "确认删除策略"],
|
|
47
|
-
"assertions": ["删除结果符合契约断言策略"],
|
|
48
|
-
"unresolved": []
|
|
49
|
-
}
|
|
50
|
-
],
|
|
51
|
-
"reasoningSummary": {
|
|
52
|
-
"conclusion": "生成 4 条 CRUD 胶水测试用例。",
|
|
53
|
-
"evidenceChain": [],
|
|
54
|
-
"alternatives": ["crud.single-page"],
|
|
55
|
-
"confidence": "high",
|
|
56
|
-
"risks": [],
|
|
57
|
-
"needsHumanReview": false
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## 字段说明
|
|
63
|
-
|
|
64
|
-
- `reviewStatus`:`confirmed` / `needs_review` / `blocked`。`needs_review` 的用例不得进入 spec assembly。
|
|
65
|
-
- `caseId`:spec assembly 需要与生成脚本工作流粒度一致,CRUD 用例固定为 `<moduleId>.create`、`<moduleId>.read`、`<moduleId>.update`、`<moduleId>.delete`。
|
|
66
|
-
- `unresolved`:未确认项(如嵌套 CRUD 子表保存后断言)。必须落盘,不能只在对话解释。
|
|
67
|
-
- `reasoningSummary`:与 `.stage/trace/<run-id>/testcase-generation.json` 同构。
|
|
File without changes
|
|
File without changes
|
|
File without changes
|