@epoint-testtech/ep-stage-skill 0.0.10 → 0.5.0-alpha.2
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 +27 -27
- package/codex-skill/ep-stage/glue-create-project/SKILL.md +223 -223
- package/codex-skill/ep-stage/glue-generate-testcase/SKILL.md +275 -275
- package/codex-skill/ep-stage/glue-generate-testcase/examples/observable-testcase.json +40 -40
- package/codex-skill/ep-stage/glue-generate-testcase/references/testcase-schema.md +95 -95
- package/codex-skill/ep-stage/glue-run-test/SKILL.md +273 -296
- package/codex-skill/ep-stage/glue-run-test/references/ai-runtime-loop.md +30 -30
- package/codex-skill/ep-stage/glue-run-test/references/crud-pipeline.md +132 -132
- package/codex-skill/ep-stage/glue-run-test/references/gap-review-protocol.md +44 -44
- package/codex-skill/ep-stage/glue-run-test/references/harness-principles.md +46 -46
- package/codex-skill/ep-stage/glue-run-test/references/playwright-cli-odav.md +127 -166
- package/codex-skill/ep-stage/glue-run-test/scripts/generate-crud-spec.mjs +149 -149
- package/codex-skill/ep-stage/recording-to-glue/SKILL.md +28 -28
- package/codex-skill/ep-stage/scripts/validate-skill.mjs +95 -98
- package/dist/src/cli/generate-testcase.d.ts +0 -1
- package/dist/src/cli/generate-testcase.d.ts.map +1 -1
- package/dist/src/cli/generate-testcase.js +1 -6
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +14 -38
- package/dist/src/cli/run.d.ts +0 -2
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +21 -70
- package/dist/src/cli/spec.d.ts.map +1 -1
- package/dist/src/cli/spec.js +0 -9
- package/dist/src/contracts/glue-contract-v1.d.ts +0 -35
- package/dist/src/contracts/glue-contract-v1.d.ts.map +1 -1
- package/dist/src/extractors/code-list-json5.d.ts +1 -34
- package/dist/src/extractors/code-list-json5.d.ts.map +1 -1
- package/dist/src/extractors/code-list-json5.js +0 -1
- package/dist/src/extractors/html-page.d.ts +0 -9
- package/dist/src/extractors/html-page.d.ts.map +1 -1
- package/dist/src/extractors/html-page.js +2 -26
- package/dist/src/generators/agent-inferred-workflow-script.js +66 -66
- package/dist/src/generators/stage-skeleton-script.d.ts +0 -50
- package/dist/src/generators/stage-skeleton-script.d.ts.map +1 -1
- package/dist/src/generators/stage-skeleton-script.js +116 -449
- package/dist/src/runtime/ai-runtime-trace.d.ts.map +1 -1
- package/dist/src/runtime/ai-runtime-trace.js +0 -8
- package/dist/src/testcase/contract-testcase-assembler.d.ts +0 -28
- package/dist/src/testcase/contract-testcase-assembler.d.ts.map +1 -1
- package/dist/src/testcase/contract-testcase-assembler.js +75 -329
- package/dist/src/validation/contract.d.ts.map +1 -1
- package/dist/src/validation/contract.js +0 -29
- package/dist/test/cli/generate-testcase-json5.test.d.ts +2 -0
- package/dist/test/cli/generate-testcase-json5.test.d.ts.map +1 -0
- package/dist/test/cli/generate-testcase-json5.test.js +154 -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 +114 -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 +429 -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 +112 -0
- package/dist/test/code-list-json5.test.d.ts +2 -0
- package/dist/test/code-list-json5.test.d.ts.map +1 -0
- package/dist/test/code-list-json5.test.js +84 -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/gap-inference.test.d.ts +2 -0
- package/dist/test/gap-inference.test.d.ts.map +1 -0
- package/dist/test/gap-inference.test.js +597 -0
- package/dist/test/generalization.test.d.ts +2 -0
- package/dist/test/generalization.test.d.ts.map +1 -0
- package/dist/test/generalization.test.js +73 -0
- package/dist/test/material-inventory.test.d.ts +2 -0
- package/dist/test/material-inventory.test.d.ts.map +1 -0
- package/dist/test/material-inventory.test.js +155 -0
- package/dist/test/observable-chain.test.d.ts +2 -0
- package/dist/test/observable-chain.test.d.ts.map +1 -0
- package/dist/test/observable-chain.test.js +123 -0
- package/dist/test/page-structure.test.d.ts +2 -0
- package/dist/test/page-structure.test.d.ts.map +1 -0
- package/dist/test/page-structure.test.js +45 -0
- package/dist/test/runtime/ai-runtime-trace.test.d.ts +2 -0
- package/dist/test/runtime/ai-runtime-trace.test.d.ts.map +1 -0
- package/dist/test/runtime/ai-runtime-trace.test.js +78 -0
- package/dist/test/scenario-inference.test.d.ts +2 -0
- package/dist/test/scenario-inference.test.d.ts.map +1 -0
- package/dist/test/scenario-inference.test.js +73 -0
- package/dist/test/stage-context.test.d.ts +2 -0
- package/dist/test/stage-context.test.d.ts.map +1 -0
- package/dist/test/stage-context.test.js +395 -0
- package/dist/test/testcase/testcase-markdown.test.d.ts +2 -0
- package/dist/test/testcase/testcase-markdown.test.d.ts.map +1 -0
- package/dist/test/testcase/testcase-markdown.test.js +48 -0
- package/dist/test/testcase-generator.test.d.ts +2 -0
- package/dist/test/testcase-generator.test.d.ts.map +1 -0
- package/dist/test/testcase-generator.test.js +276 -0
- package/dist/test/testcase-skeleton.test.d.ts +2 -0
- package/dist/test/testcase-skeleton.test.d.ts.map +1 -0
- package/dist/test/testcase-skeleton.test.js +185 -0
- package/dist/test/testcase-spec-assembly.test.d.ts +2 -0
- package/dist/test/testcase-spec-assembly.test.d.ts.map +1 -0
- package/dist/test/testcase-spec-assembly.test.js +105 -0
- 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/contract.test.d.ts +2 -0
- package/dist/test/validation/contract.test.d.ts.map +1 -0
- package/dist/test/validation/contract.test.js +116 -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 +74 -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-v1-draft.test.d.ts +2 -0
- package/dist/test/validation/testcase-v1-draft.test.d.ts.map +1 -0
- package/dist/test/validation/testcase-v1-draft.test.js +173 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +7 -0
- package/docs/README.md +124 -124
- package/examples/schemeresource-observable-docs/schemeresource.context.md +20 -20
- package/examples/schemeresource.module-hints.json +38 -38
- package/examples/schemeresource.observable.code_list.md +37 -37
- package/examples/zwplace-observable-docs/zwplace.context.md +16 -16
- package/examples/zwplace-placecategory-validation.json +29 -29
- package/examples/zwplace.module-hints.json +69 -69
- package/examples/zwplace.observable.code_list.md +37 -37
- package/package.json +19 -13
- package/codex-skill/ep-stage/glue-generate-testcase/references/testcase-tpl.md +0 -72
- package/codex-skill/ep-stage/glue-run-test/scripts/extract-page-elements-eval.mjs +0 -233
- package/codex-skill/ep-stage/page-element-scan/SKILL.md +0 -91
- package/codex-skill/ep-stage/page-element-scan/evals/evals.json +0 -37
- package/codex-skill/ep-stage/page-element-scan/evals/fixtures/sample-list-page.html +0 -85
- package/codex-skill/ep-stage/page-element-scan/references/pagination-controls.md +0 -153
- package/codex-skill/ep-stage/page-element-scan/scripts/extract-page-elements-eval.mjs +0 -233
- package/codex-skill/ep-stage/page-element-scan/scripts/extract-page-elements.mjs +0 -298
- package/codex-skill/ep-stage/page-element-scan/scripts/scan-page.mjs +0 -749
- package/dist/src/cli/probe.d.ts +0 -46
- package/dist/src/cli/probe.d.ts.map +0 -1
- package/dist/src/cli/probe.js +0 -447
- package/dist/src/cli/run-report.d.ts +0 -46
- package/dist/src/cli/run-report.d.ts.map +0 -1
- package/dist/src/cli/run-report.js +0 -331
- package/dist/src/extractors/prd-extractor.d.ts +0 -70
- package/dist/src/extractors/prd-extractor.d.ts.map +0 -1
- package/dist/src/extractors/prd-extractor.js +0 -248
- package/dist/src/testcase/button-interaction-inference.d.ts +0 -37
- package/dist/src/testcase/button-interaction-inference.d.ts.map +0 -1
- package/dist/src/testcase/button-interaction-inference.js +0 -385
- package/dist/src/testcase/prd-button-mapper.d.ts +0 -72
- package/dist/src/testcase/prd-button-mapper.d.ts.map +0 -1
- package/dist/src/testcase/prd-button-mapper.js +0 -148
- package/dist/src/testcase/testcase-v2.d.ts +0 -50
- package/dist/src/testcase/testcase-v2.d.ts.map +0 -1
- package/dist/src/testcase/testcase-v2.js +0 -1
- package/docs/mvp-usage-guide.md +0 -298
package/docs/README.md
CHANGED
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
# @epoint-testtech/ep-stage-skill
|
|
2
|
-
|
|
3
|
-
> ep-stage 胶水编码 Skill 与 CLI — 从 `code_list.json5` 生成用例、契约、脚本任务并驱动执行闭环
|
|
4
|
-
|
|
5
|
-
## 定位
|
|
6
|
-
|
|
7
|
-
`ep-stage-skill` 是 **ep-stage 生态的 AI 驱动层**。它同时提供:
|
|
8
|
-
|
|
9
|
-
- 面向 Claude Code / Codex 的 Skill 文案与执行剧本。
|
|
10
|
-
- 面向确定性处理的 TypeScript CLI。
|
|
11
|
-
- 上游物料抽取、契约生成、用例装配、spec 组装、AI Runtime 任务准备和执行报告衔接能力。
|
|
12
|
-
|
|
13
|
-
当前正式用户链路以三个 Skill 为入口:
|
|
14
|
-
|
|
15
|
-
```text
|
|
16
|
-
/glue-create-project -> /glue-generate-testcase -> /glue-run-test
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Skill 外发形式
|
|
20
|
-
|
|
21
|
-
AI Agent 可发现的 Skill 入口通过双目录 symlink 暴露:
|
|
22
|
-
|
|
23
|
-
```text
|
|
24
|
-
.claude/skills/{glue-create-project, glue-generate-testcase, glue-run-test, recording-to-glue}
|
|
25
|
-
.agents/skills/{glue-create-project, glue-generate-testcase, glue-run-test, recording-to-glue}
|
|
26
|
-
-> packages/ep-stage-skill/codex-skill/ep-stage/<skill>/
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
用户行为文案以 `packages/ep-stage-skill/codex-skill/ep-stage/*/SKILL.md` 为准。
|
|
30
|
-
|
|
31
|
-
## 当前链路
|
|
32
|
-
|
|
33
|
-
```text
|
|
34
|
-
需求目录/_docs/code_list.json5
|
|
35
|
-
-> testcase 子命令解析物料、提取契约、生成 testcase
|
|
36
|
-
-> testcase.json5 + testcase.md + credentials.template.json5 + .ep-stage/contract.json5
|
|
37
|
-
-> spec / prepare-tasks 子命令组装 glue 骨架并生成 AI Runtime tasks
|
|
38
|
-
-> Agent 使用真实页面 O-D-A-V 产出 ai-snippets.json5
|
|
39
|
-
-> run 子命令合并 resolved snippet 并执行完整 spec
|
|
40
|
-
-> glue-report / repair-report
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## CLI 子命令
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
# 生成用例、契约、审阅视图和凭据模板
|
|
47
|
-
pnpm --filter @epoint-testtech/ep-stage-skill cli -- testcase \
|
|
48
|
-
--code-list <需求目录/_docs/code_list.json5> \
|
|
49
|
-
--tests-dir <glue项目>/src/tests/<需求名> \
|
|
50
|
-
--requirement-dir <需求目录/_docs> \
|
|
51
|
-
--project-dir <glue项目> \
|
|
52
|
-
--direct-url <待测列表页直达 URL>
|
|
53
|
-
|
|
54
|
-
# 基于 testcase.json5 + contract.json5 生成初始 glue spec
|
|
55
|
-
pnpm --filter @epoint-testtech/ep-stage-skill cli -- spec \
|
|
56
|
-
--testcase <glue项目>/src/tests/<需求名>/testcase.json5 \
|
|
57
|
-
--out <glue项目>/src/tests/<需求名>/crud.spec.ts
|
|
58
|
-
|
|
59
|
-
# 准备执行任务:缺 spec 时自动补组装 glue 骨架,并输出 AI Runtime tasks
|
|
60
|
-
pnpm --filter @epoint-testtech/ep-stage-skill cli -- prepare-tasks \
|
|
61
|
-
--testcase <glue项目>/src/tests/<需求名>/testcase.json5
|
|
62
|
-
|
|
63
|
-
# 合并 Agent 产出的 ai-snippets.json5 并执行完整 spec
|
|
64
|
-
pnpm --filter @epoint-testtech/ep-stage-skill cli -- run \
|
|
65
|
-
--testcase <glue项目>/src/tests/<需求名>/testcase.json5 \
|
|
66
|
-
--ai-snippets <glue项目>/src/tests/<需求名>/.ep-stage/ai-snippets.json5 \
|
|
67
|
-
--headless false
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
> 正常用户不需要直接运行这些命令;Skill 会按步骤包装调用。开发调试时可用 `pnpm --filter @epoint-testtech/ep-stage-skill cli -- <subcommand>` 直接验证 CLI 行为。
|
|
71
|
-
|
|
72
|
-
## 输入与产物
|
|
73
|
-
|
|
74
|
-
### 输入
|
|
75
|
-
|
|
76
|
-
`testcase` 子命令的正式输入是需求目录下的:
|
|
77
|
-
|
|
78
|
-
```text
|
|
79
|
-
_docs/code_list.json5
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
`code_list.json5` 只记录上游研发对需求和出码产物的结构化总结,不应写入测试执行结果、最终 Playwright locator、账号密码或运行态页面观察。
|
|
83
|
-
|
|
84
|
-
### 产物
|
|
85
|
-
|
|
86
|
-
| 产物 | 说明 |
|
|
87
|
-
|------|------|
|
|
88
|
-
| `testcase.json5` | 用例事实源,后续 `/glue-run-test` 的入口 |
|
|
89
|
-
| `testcase.md` | 人工审阅视图,每次重跑会按 `testcase.json5` 重新渲染 |
|
|
90
|
-
| `credentials.template.json5` | 凭据模板 |
|
|
91
|
-
| `credentials.json5` | 实际测试凭据,由人工填写或交互生成,通常不提交 |
|
|
92
|
-
| `.ep-stage/contract.json5` | 下游消费契约,记录可信槽位、证据和未解析项 |
|
|
93
|
-
| `.ep-stage/inference-trace.json` | 用例生成过程账本 |
|
|
94
|
-
| `.ep-stage/ai-runtime-trace.json5` | run 阶段任务和结果账本 |
|
|
95
|
-
| `.ep-stage/ai-snippets.json5` | Agent Runtime 产出的 resolved snippets |
|
|
96
|
-
| `.ep-stage/repair-runs/<round>/repair-report.md` | 执行失败时的修补建议 |
|
|
97
|
-
|
|
98
|
-
## 关键约束
|
|
99
|
-
|
|
100
|
-
- `code_list.json5` 是上游输入,不反灌测试契约、运行结果或账号密码。
|
|
101
|
-
- `contract.json5` 中每个非平凡字段都应有来源;无法确认的字段进入 `unresolvedSlots`。
|
|
102
|
-
- 生成策略只使用 `glue` / `ai`;阻断场景用 `coverageStatus: blocked` 表达。
|
|
103
|
-
- `glue-run-test` 不重新钻探上游物料,只消费 `testcase.json5` 和 `.ep-stage/contract.json5`。
|
|
104
|
-
- AI Runtime 只合并 `status="resolved"` 的 snippet;缺 resolved 结果时停止并写 `needs_review`,不追加占位代码。
|
|
105
|
-
- 真实系统执行必须使用有界面模式,便于人工观察运行态推理和业务副作用。
|
|
106
|
-
|
|
107
|
-
## 开发
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
pnpm build
|
|
111
|
-
pnpm test
|
|
112
|
-
pnpm typecheck
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## 生态关系
|
|
116
|
-
|
|
117
|
-
```text
|
|
118
|
-
ep-stage-skill(Skill + CLI)
|
|
119
|
-
├── 消费 stage-create glue 模板项目
|
|
120
|
-
├── 消费 stage-core 基础能力
|
|
121
|
-
├── 读取需求目录 _docs/code_list.json5
|
|
122
|
-
├── 产出 testcase / contract / trace / spec / snippets
|
|
123
|
-
└── 驱动 glue-report 与 repair-report 闭环
|
|
124
|
-
```
|
|
1
|
+
# @epoint-testtech/ep-stage-skill
|
|
2
|
+
|
|
3
|
+
> ep-stage 胶水编码 Skill 与 CLI — 从 `code_list.json5` 生成用例、契约、脚本任务并驱动执行闭环
|
|
4
|
+
|
|
5
|
+
## 定位
|
|
6
|
+
|
|
7
|
+
`ep-stage-skill` 是 **ep-stage 生态的 AI 驱动层**。它同时提供:
|
|
8
|
+
|
|
9
|
+
- 面向 Claude Code / Codex 的 Skill 文案与执行剧本。
|
|
10
|
+
- 面向确定性处理的 TypeScript CLI。
|
|
11
|
+
- 上游物料抽取、契约生成、用例装配、spec 组装、AI Runtime 任务准备和执行报告衔接能力。
|
|
12
|
+
|
|
13
|
+
当前正式用户链路以三个 Skill 为入口:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
/glue-create-project -> /glue-generate-testcase -> /glue-run-test
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Skill 外发形式
|
|
20
|
+
|
|
21
|
+
AI Agent 可发现的 Skill 入口通过双目录 symlink 暴露:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
.claude/skills/{glue-create-project, glue-generate-testcase, glue-run-test, recording-to-glue}
|
|
25
|
+
.agents/skills/{glue-create-project, glue-generate-testcase, glue-run-test, recording-to-glue}
|
|
26
|
+
-> packages/ep-stage-skill/codex-skill/ep-stage/<skill>/
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
用户行为文案以 `packages/ep-stage-skill/codex-skill/ep-stage/*/SKILL.md` 为准。
|
|
30
|
+
|
|
31
|
+
## 当前链路
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
需求目录/_docs/code_list.json5
|
|
35
|
+
-> testcase 子命令解析物料、提取契约、生成 testcase
|
|
36
|
+
-> testcase.json5 + testcase.md + credentials.template.json5 + .ep-stage/contract.json5
|
|
37
|
+
-> spec / prepare-tasks 子命令组装 glue 骨架并生成 AI Runtime tasks
|
|
38
|
+
-> Agent 使用真实页面 O-D-A-V 产出 ai-snippets.json5
|
|
39
|
+
-> run 子命令合并 resolved snippet 并执行完整 spec
|
|
40
|
+
-> glue-report / repair-report
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## CLI 子命令
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# 生成用例、契约、审阅视图和凭据模板
|
|
47
|
+
pnpm --filter @epoint-testtech/ep-stage-skill cli -- testcase \
|
|
48
|
+
--code-list <需求目录/_docs/code_list.json5> \
|
|
49
|
+
--tests-dir <glue项目>/src/tests/<需求名> \
|
|
50
|
+
--requirement-dir <需求目录/_docs> \
|
|
51
|
+
--project-dir <glue项目> \
|
|
52
|
+
--direct-url <待测列表页直达 URL>
|
|
53
|
+
|
|
54
|
+
# 基于 testcase.json5 + contract.json5 生成初始 glue spec
|
|
55
|
+
pnpm --filter @epoint-testtech/ep-stage-skill cli -- spec \
|
|
56
|
+
--testcase <glue项目>/src/tests/<需求名>/testcase.json5 \
|
|
57
|
+
--out <glue项目>/src/tests/<需求名>/crud.spec.ts
|
|
58
|
+
|
|
59
|
+
# 准备执行任务:缺 spec 时自动补组装 glue 骨架,并输出 AI Runtime tasks
|
|
60
|
+
pnpm --filter @epoint-testtech/ep-stage-skill cli -- prepare-tasks \
|
|
61
|
+
--testcase <glue项目>/src/tests/<需求名>/testcase.json5
|
|
62
|
+
|
|
63
|
+
# 合并 Agent 产出的 ai-snippets.json5 并执行完整 spec
|
|
64
|
+
pnpm --filter @epoint-testtech/ep-stage-skill cli -- run \
|
|
65
|
+
--testcase <glue项目>/src/tests/<需求名>/testcase.json5 \
|
|
66
|
+
--ai-snippets <glue项目>/src/tests/<需求名>/.ep-stage/ai-snippets.json5 \
|
|
67
|
+
--headless false
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
> 正常用户不需要直接运行这些命令;Skill 会按步骤包装调用。开发调试时可用 `pnpm --filter @epoint-testtech/ep-stage-skill cli -- <subcommand>` 直接验证 CLI 行为。
|
|
71
|
+
|
|
72
|
+
## 输入与产物
|
|
73
|
+
|
|
74
|
+
### 输入
|
|
75
|
+
|
|
76
|
+
`testcase` 子命令的正式输入是需求目录下的:
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
_docs/code_list.json5
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`code_list.json5` 只记录上游研发对需求和出码产物的结构化总结,不应写入测试执行结果、最终 Playwright locator、账号密码或运行态页面观察。
|
|
83
|
+
|
|
84
|
+
### 产物
|
|
85
|
+
|
|
86
|
+
| 产物 | 说明 |
|
|
87
|
+
|------|------|
|
|
88
|
+
| `testcase.json5` | 用例事实源,后续 `/glue-run-test` 的入口 |
|
|
89
|
+
| `testcase.md` | 人工审阅视图,每次重跑会按 `testcase.json5` 重新渲染 |
|
|
90
|
+
| `credentials.template.json5` | 凭据模板 |
|
|
91
|
+
| `credentials.json5` | 实际测试凭据,由人工填写或交互生成,通常不提交 |
|
|
92
|
+
| `.ep-stage/contract.json5` | 下游消费契约,记录可信槽位、证据和未解析项 |
|
|
93
|
+
| `.ep-stage/inference-trace.json` | 用例生成过程账本 |
|
|
94
|
+
| `.ep-stage/ai-runtime-trace.json5` | run 阶段任务和结果账本 |
|
|
95
|
+
| `.ep-stage/ai-snippets.json5` | Agent Runtime 产出的 resolved snippets |
|
|
96
|
+
| `.ep-stage/repair-runs/<round>/repair-report.md` | 执行失败时的修补建议 |
|
|
97
|
+
|
|
98
|
+
## 关键约束
|
|
99
|
+
|
|
100
|
+
- `code_list.json5` 是上游输入,不反灌测试契约、运行结果或账号密码。
|
|
101
|
+
- `contract.json5` 中每个非平凡字段都应有来源;无法确认的字段进入 `unresolvedSlots`。
|
|
102
|
+
- 生成策略只使用 `glue` / `ai`;阻断场景用 `coverageStatus: blocked` 表达。
|
|
103
|
+
- `glue-run-test` 不重新钻探上游物料,只消费 `testcase.json5` 和 `.ep-stage/contract.json5`。
|
|
104
|
+
- AI Runtime 只合并 `status="resolved"` 的 snippet;缺 resolved 结果时停止并写 `needs_review`,不追加占位代码。
|
|
105
|
+
- 真实系统执行必须使用有界面模式,便于人工观察运行态推理和业务副作用。
|
|
106
|
+
|
|
107
|
+
## 开发
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
pnpm build
|
|
111
|
+
pnpm test
|
|
112
|
+
pnpm typecheck
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## 生态关系
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
ep-stage-skill(Skill + CLI)
|
|
119
|
+
├── 消费 stage-create glue 模板项目
|
|
120
|
+
├── 消费 stage-core 基础能力
|
|
121
|
+
├── 读取需求目录 _docs/code_list.json5
|
|
122
|
+
├── 产出 testcase / contract / trace / spec / snippets
|
|
123
|
+
└── 驱动 glue-report 与 repair-report 闭环
|
|
124
|
+
```
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# 方案资源文档可观测入口补充说明
|
|
2
|
-
|
|
3
|
-
本文件是 `packages/ep-stage-skill/examples/schemeresource.observable.code_list.md` 的配套文档物料,用于模拟
|
|
4
|
-
`stage-glue` 在交互补齐后,为 `code_list.md` 增补的可消费上下文。
|
|
5
|
-
|
|
6
|
-
## 当前确定信息
|
|
7
|
-
|
|
8
|
-
- 模块:方案资源文档(`schemeresource`)
|
|
9
|
-
- 菜单(当前模拟值):`方案资源文档>方案资源文档列表`
|
|
10
|
-
- 列表页标题:`方案资源文档列表`
|
|
11
|
-
- 当前结构判断:标准单列表 CRUD,列表页具备 `新增记录 / 删除选定 / 修改记录 / 详细信息`
|
|
12
|
-
- 已知约束:新增页要求上传附件,`类型` 字段来自下拉代码项 `方案资源类型`
|
|
13
|
-
- 已知删除策略:列表页 `deleteSelect()` 调用 `service.deleteByGuid(sel)`,成功后回调消息为 `成功删除!`,当前样例已写入 `deletePolicy=success_delete`
|
|
14
|
-
- 当前一期目标:先把第二个真实业务模块的 `code_list.md` 默认入口样例落出来,再在 e2e 中验证是否需要交互补齐附件、下拉值和菜单真值
|
|
15
|
-
|
|
16
|
-
## 备注
|
|
17
|
-
|
|
18
|
-
- 上游真实 HTML / Java Action 仍来自 `knowledge-project/epoint-web-v9.5.2`
|
|
19
|
-
- 当前样例的价值在于:让 `--code-list` 默认入口对第二个普通 CRUD 样本也可以只依赖一个可写文件完成物料扎口
|
|
20
|
-
- 本样例不预设附件文件、不猜测 `方案资源类型` 的实际取值;这些属于后续 e2e 联调时的交互补齐范围
|
|
1
|
+
# 方案资源文档可观测入口补充说明
|
|
2
|
+
|
|
3
|
+
本文件是 `packages/ep-stage-skill/examples/schemeresource.observable.code_list.md` 的配套文档物料,用于模拟
|
|
4
|
+
`stage-glue` 在交互补齐后,为 `code_list.md` 增补的可消费上下文。
|
|
5
|
+
|
|
6
|
+
## 当前确定信息
|
|
7
|
+
|
|
8
|
+
- 模块:方案资源文档(`schemeresource`)
|
|
9
|
+
- 菜单(当前模拟值):`方案资源文档>方案资源文档列表`
|
|
10
|
+
- 列表页标题:`方案资源文档列表`
|
|
11
|
+
- 当前结构判断:标准单列表 CRUD,列表页具备 `新增记录 / 删除选定 / 修改记录 / 详细信息`
|
|
12
|
+
- 已知约束:新增页要求上传附件,`类型` 字段来自下拉代码项 `方案资源类型`
|
|
13
|
+
- 已知删除策略:列表页 `deleteSelect()` 调用 `service.deleteByGuid(sel)`,成功后回调消息为 `成功删除!`,当前样例已写入 `deletePolicy=success_delete`
|
|
14
|
+
- 当前一期目标:先把第二个真实业务模块的 `code_list.md` 默认入口样例落出来,再在 e2e 中验证是否需要交互补齐附件、下拉值和菜单真值
|
|
15
|
+
|
|
16
|
+
## 备注
|
|
17
|
+
|
|
18
|
+
- 上游真实 HTML / Java Action 仍来自 `knowledge-project/epoint-web-v9.5.2`
|
|
19
|
+
- 当前样例的价值在于:让 `--code-list` 默认入口对第二个普通 CRUD 样本也可以只依赖一个可写文件完成物料扎口
|
|
20
|
+
- 本样例不预设附件文件、不猜测 `方案资源类型` 的实际取值;这些属于后续 e2e 联调时的交互补齐范围
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
{
|
|
2
|
-
"dataKey": {
|
|
3
|
-
"selectedField": "scheme_name",
|
|
4
|
-
"generationStrategy": "timestamp_prefix"
|
|
5
|
-
},
|
|
6
|
-
"searchConditions": [
|
|
7
|
-
{
|
|
8
|
-
"field": "scheme_name",
|
|
9
|
-
"component": "input",
|
|
10
|
-
"seedValue": "自动化测试方案资源",
|
|
11
|
-
"strategy": "timestamp_prefix",
|
|
12
|
-
"updatePrefix": "修改"
|
|
13
|
-
}
|
|
14
|
-
],
|
|
15
|
-
"buttonAliases": {
|
|
16
|
-
"create": ["新增记录", "新增"],
|
|
17
|
-
"saveAndClose": ["保存并关闭"],
|
|
18
|
-
"search": ["搜索", "查询"],
|
|
19
|
-
"edit": ["修改记录", "修改"],
|
|
20
|
-
"delete": ["删除选定"],
|
|
21
|
-
"confirm": ["确定"]
|
|
22
|
-
},
|
|
23
|
-
"autofill": {
|
|
24
|
-
"overrideFields": [
|
|
25
|
-
{
|
|
26
|
-
"field": "scheme_name",
|
|
27
|
-
"strategy": "timestamp_prefix",
|
|
28
|
-
"value": "自动化测试方案资源"
|
|
29
|
-
}
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
"deletePolicy": "success_delete",
|
|
33
|
-
"assertionPolicy": {
|
|
34
|
-
"afterCreate": "record_exists",
|
|
35
|
-
"afterUpdate": "record_exists",
|
|
36
|
-
"afterDelete": "toast_message"
|
|
37
|
-
}
|
|
38
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"dataKey": {
|
|
3
|
+
"selectedField": "scheme_name",
|
|
4
|
+
"generationStrategy": "timestamp_prefix"
|
|
5
|
+
},
|
|
6
|
+
"searchConditions": [
|
|
7
|
+
{
|
|
8
|
+
"field": "scheme_name",
|
|
9
|
+
"component": "input",
|
|
10
|
+
"seedValue": "自动化测试方案资源",
|
|
11
|
+
"strategy": "timestamp_prefix",
|
|
12
|
+
"updatePrefix": "修改"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"buttonAliases": {
|
|
16
|
+
"create": ["新增记录", "新增"],
|
|
17
|
+
"saveAndClose": ["保存并关闭"],
|
|
18
|
+
"search": ["搜索", "查询"],
|
|
19
|
+
"edit": ["修改记录", "修改"],
|
|
20
|
+
"delete": ["删除选定"],
|
|
21
|
+
"confirm": ["确定"]
|
|
22
|
+
},
|
|
23
|
+
"autofill": {
|
|
24
|
+
"overrideFields": [
|
|
25
|
+
{
|
|
26
|
+
"field": "scheme_name",
|
|
27
|
+
"strategy": "timestamp_prefix",
|
|
28
|
+
"value": "自动化测试方案资源"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"deletePolicy": "success_delete",
|
|
33
|
+
"assertionPolicy": {
|
|
34
|
+
"afterCreate": "record_exists",
|
|
35
|
+
"afterUpdate": "record_exists",
|
|
36
|
+
"afterDelete": "toast_message"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
# 方案资源文档代码清单
|
|
2
|
-
|
|
3
|
-
> 此文件用于模拟 `stage-glue` 在交互补齐后回写到 `code_list.md` 的结果。
|
|
4
|
-
> 当前样例面向 `schemeresource` 普通 CRUD;真实 e2e 时仍允许继续通过交互补齐菜单真值和业务种子值。
|
|
5
|
-
|
|
6
|
-
knowledgeRoot: ../../../knowledge-project/epoint-web-v9.5.2
|
|
7
|
-
menu: 方案资源文档>方案资源文档列表
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## 已补齐入口字段
|
|
12
|
-
|
|
13
|
-
- `knowledgeRoot`:用于把 `code_list.md` 中的相对物料路径统一解析到真实上游物料根目录。
|
|
14
|
-
- `menu`:先给默认入口一个可消费的菜单路径,避免链路一开始就停在 menu gate。
|
|
15
|
-
- `./schemeresource.module-hints.json`:补齐当前已知的 `dataKey`、按钮别名、删除策略和断言策略;附件文件、下拉值等未确认业务值留待 e2e 交互补齐。
|
|
16
|
-
|
|
17
|
-
## 文档物料(模拟交互补齐后的可消费 docsDir)
|
|
18
|
-
|
|
19
|
-
- `./schemeresource-observable-docs/schemeresource.context.md`
|
|
20
|
-
|
|
21
|
-
## 前端文件
|
|
22
|
-
|
|
23
|
-
- `src/main/webapp/perpage/schemeresource/schemeresourcelist.html`
|
|
24
|
-
- `src/main/webapp/perpage/schemeresource/schemeresourceadd.html`
|
|
25
|
-
- `src/main/webapp/perpage/schemeresource/schemeresourceedit.html`
|
|
26
|
-
- `src/main/webapp/perpage/schemeresource/schemeresourcedetail.html`
|
|
27
|
-
|
|
28
|
-
## 后端文件
|
|
29
|
-
|
|
30
|
-
- `src/main/java/com/epoint/schemeresource/action/SchemeResourceListAction.java`
|
|
31
|
-
- `src/main/java/com/epoint/schemeresource/action/SchemeResourceAddAction.java`
|
|
32
|
-
- `src/main/java/com/epoint/schemeresource/action/SchemeResourceEditAction.java`
|
|
33
|
-
- `src/main/java/com/epoint/schemeresource/action/SchemeResourceDetailAction.java`
|
|
34
|
-
|
|
35
|
-
## 提示物料
|
|
36
|
-
|
|
37
|
-
- `./schemeresource.module-hints.json`
|
|
1
|
+
# 方案资源文档代码清单
|
|
2
|
+
|
|
3
|
+
> 此文件用于模拟 `stage-glue` 在交互补齐后回写到 `code_list.md` 的结果。
|
|
4
|
+
> 当前样例面向 `schemeresource` 普通 CRUD;真实 e2e 时仍允许继续通过交互补齐菜单真值和业务种子值。
|
|
5
|
+
|
|
6
|
+
knowledgeRoot: ../../../knowledge-project/epoint-web-v9.5.2
|
|
7
|
+
menu: 方案资源文档>方案资源文档列表
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 已补齐入口字段
|
|
12
|
+
|
|
13
|
+
- `knowledgeRoot`:用于把 `code_list.md` 中的相对物料路径统一解析到真实上游物料根目录。
|
|
14
|
+
- `menu`:先给默认入口一个可消费的菜单路径,避免链路一开始就停在 menu gate。
|
|
15
|
+
- `./schemeresource.module-hints.json`:补齐当前已知的 `dataKey`、按钮别名、删除策略和断言策略;附件文件、下拉值等未确认业务值留待 e2e 交互补齐。
|
|
16
|
+
|
|
17
|
+
## 文档物料(模拟交互补齐后的可消费 docsDir)
|
|
18
|
+
|
|
19
|
+
- `./schemeresource-observable-docs/schemeresource.context.md`
|
|
20
|
+
|
|
21
|
+
## 前端文件
|
|
22
|
+
|
|
23
|
+
- `src/main/webapp/perpage/schemeresource/schemeresourcelist.html`
|
|
24
|
+
- `src/main/webapp/perpage/schemeresource/schemeresourceadd.html`
|
|
25
|
+
- `src/main/webapp/perpage/schemeresource/schemeresourceedit.html`
|
|
26
|
+
- `src/main/webapp/perpage/schemeresource/schemeresourcedetail.html`
|
|
27
|
+
|
|
28
|
+
## 后端文件
|
|
29
|
+
|
|
30
|
+
- `src/main/java/com/epoint/schemeresource/action/SchemeResourceListAction.java`
|
|
31
|
+
- `src/main/java/com/epoint/schemeresource/action/SchemeResourceAddAction.java`
|
|
32
|
+
- `src/main/java/com/epoint/schemeresource/action/SchemeResourceEditAction.java`
|
|
33
|
+
- `src/main/java/com/epoint/schemeresource/action/SchemeResourceDetailAction.java`
|
|
34
|
+
|
|
35
|
+
## 提示物料
|
|
36
|
+
|
|
37
|
+
- `./schemeresource.module-hints.json`
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# 场所窗口信息管理可观测入口补充说明
|
|
2
|
-
|
|
3
|
-
本文件是 `packages/ep-stage-skill/examples/zwplace.observable.code_list.md` 的配套文档物料,用于模拟
|
|
4
|
-
`stage-glue` 在交互补齐后,为 `code_list.md` 增补的可消费上下文。
|
|
5
|
-
|
|
6
|
-
## 当前确定信息
|
|
7
|
-
|
|
8
|
-
- 模块:场所窗口信息管理(`zwplace`)
|
|
9
|
-
- 菜单:`场所窗口信息管理>场所窗口信息列表`
|
|
10
|
-
- 列表页标题:`场所信息管理列表`
|
|
11
|
-
- 当前一期目标:验证普通 CRUD 场景的可观测链路,不把嵌套 CRUD 写入正式契约
|
|
12
|
-
|
|
13
|
-
## 备注
|
|
14
|
-
|
|
15
|
-
- 上游真实 HTML / Java Action 仍来自 `knowledge-project/epoint-web-v9.5.2`
|
|
16
|
-
- 当前样例的价值在于:让 `--code-list` 默认入口可以只依赖一个可写文件完成物料扎口
|
|
1
|
+
# 场所窗口信息管理可观测入口补充说明
|
|
2
|
+
|
|
3
|
+
本文件是 `packages/ep-stage-skill/examples/zwplace.observable.code_list.md` 的配套文档物料,用于模拟
|
|
4
|
+
`stage-glue` 在交互补齐后,为 `code_list.md` 增补的可消费上下文。
|
|
5
|
+
|
|
6
|
+
## 当前确定信息
|
|
7
|
+
|
|
8
|
+
- 模块:场所窗口信息管理(`zwplace`)
|
|
9
|
+
- 菜单:`场所窗口信息管理>场所窗口信息列表`
|
|
10
|
+
- 列表页标题:`场所信息管理列表`
|
|
11
|
+
- 当前一期目标:验证普通 CRUD 场景的可观测链路,不把嵌套 CRUD 写入正式契约
|
|
12
|
+
|
|
13
|
+
## 备注
|
|
14
|
+
|
|
15
|
+
- 上游真实 HTML / Java Action 仍来自 `knowledge-project/epoint-web-v9.5.2`
|
|
16
|
+
- 当前样例的价值在于:让 `--code-list` 默认入口可以只依赖一个可写文件完成物料扎口
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
{
|
|
2
|
-
"dataKey": {
|
|
3
|
-
"selectedField": "placecategory",
|
|
4
|
-
"generationStrategy": "timestamp_prefix"
|
|
5
|
-
},
|
|
6
|
-
"buttonAliases": {
|
|
7
|
-
"create": ["新增场所信息管理", "新增"],
|
|
8
|
-
"saveAndClose": ["保存并关闭"],
|
|
9
|
-
"search": ["搜索", "查询"],
|
|
10
|
-
"edit": ["修改", "编辑"],
|
|
11
|
-
"delete": ["删除选定"],
|
|
12
|
-
"confirm": ["确定"]
|
|
13
|
-
},
|
|
14
|
-
"autofill": {
|
|
15
|
-
"overrideFields": [
|
|
16
|
-
{
|
|
17
|
-
"field": "placecategory",
|
|
18
|
-
"strategy": "timestamp_prefix",
|
|
19
|
-
"value": "自动化测试场所分类"
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
},
|
|
23
|
-
"deletePolicy": "blocked_by_business_rule",
|
|
24
|
-
"assertionPolicy": {
|
|
25
|
-
"afterCreate": "record_exists",
|
|
26
|
-
"afterUpdate": "record_exists",
|
|
27
|
-
"afterDelete": "toast_message"
|
|
28
|
-
}
|
|
29
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"dataKey": {
|
|
3
|
+
"selectedField": "placecategory",
|
|
4
|
+
"generationStrategy": "timestamp_prefix"
|
|
5
|
+
},
|
|
6
|
+
"buttonAliases": {
|
|
7
|
+
"create": ["新增场所信息管理", "新增"],
|
|
8
|
+
"saveAndClose": ["保存并关闭"],
|
|
9
|
+
"search": ["搜索", "查询"],
|
|
10
|
+
"edit": ["修改", "编辑"],
|
|
11
|
+
"delete": ["删除选定"],
|
|
12
|
+
"confirm": ["确定"]
|
|
13
|
+
},
|
|
14
|
+
"autofill": {
|
|
15
|
+
"overrideFields": [
|
|
16
|
+
{
|
|
17
|
+
"field": "placecategory",
|
|
18
|
+
"strategy": "timestamp_prefix",
|
|
19
|
+
"value": "自动化测试场所分类"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"deletePolicy": "blocked_by_business_rule",
|
|
24
|
+
"assertionPolicy": {
|
|
25
|
+
"afterCreate": "record_exists",
|
|
26
|
+
"afterUpdate": "record_exists",
|
|
27
|
+
"afterDelete": "toast_message"
|
|
28
|
+
}
|
|
29
|
+
}
|