@epoint-testtech/ep-stage-skill 0.0.4-alpha.0 → 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/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 +22 -2
- package/codex-skill/ep-stage/glue-generate-testcase/SKILL.md +119 -44
- package/codex-skill/ep-stage/glue-generate-testcase/references/testcase-tpl.md +72 -0
- package/codex-skill/ep-stage/glue-run-test/SKILL.md +45 -5
- package/dist/src/cli/generate-testcase.d.ts +1 -0
- package/dist/src/cli/generate-testcase.d.ts.map +1 -1
- package/dist/src/cli/generate-testcase.js +112 -9
- package/dist/src/cli/index.d.ts +8 -0
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +21 -1
- package/dist/src/cli/probe.d.ts +2 -0
- package/dist/src/cli/probe.d.ts.map +1 -1
- package/dist/src/cli/probe.js +239 -13
- package/dist/src/cli/spec.d.ts +6 -3
- package/dist/src/cli/spec.d.ts.map +1 -1
- package/dist/src/cli/spec.js +31 -3
- 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 +5 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- 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/validation/index.d.ts +1 -0
- package/dist/src/validation/index.d.ts.map +1 -1
- package/dist/src/validation/index.js +1 -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/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/index.test.js +20 -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/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.js +1 -1
- 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/package.json +1 -1
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inference-trace.json 的类型定义(Plan Task 2)。
|
|
3
|
+
*
|
|
4
|
+
* 本文件只定义 `InferenceTraceV1` 的顶层章节类型:
|
|
5
|
+
* - {@link MaterialInventoryTrace}:物料清单(Task 3 负责组装,本任务只定义类型)。
|
|
6
|
+
* - {@link SourceAnalysis}:源分析快照,由 {@link buildSourceAnalysis} 产出。
|
|
7
|
+
* - {@link ModuleHintsInference}:动态槽位推理过程,由 {@link inferModuleHintsFromMaterials} 产出。
|
|
8
|
+
* - {@link InferenceTraceV1}:以上章节 + coverageDiff + reasoningSummary 的总账。
|
|
9
|
+
*
|
|
10
|
+
* 设计原则(spec §8):顶层章节稳定,内部证据数组与 reason 允许扩展。
|
|
11
|
+
*/
|
|
12
|
+
import type { DeleteExpectedOutcome } from './crud-business-module.js';
|
|
13
|
+
/**
|
|
14
|
+
* 单个物料的解析状态。
|
|
15
|
+
*
|
|
16
|
+
* @property status - resolved 表示物料存在且可读;missing 表示未找到。
|
|
17
|
+
* @property value - 物料值(路径或解析结果);status 为 missing 时省略。
|
|
18
|
+
* @property reason - status 为 missing 时的缺失原因。
|
|
19
|
+
* @property evidence - 可选的来源证据(如"HTML 目录名")。
|
|
20
|
+
*/
|
|
21
|
+
export type MaterialSlotStatus = {
|
|
22
|
+
status: 'resolved' | 'missing';
|
|
23
|
+
value?: string;
|
|
24
|
+
reason?: string;
|
|
25
|
+
evidence?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* 物料清单章节(spec §7 materialInventory)。
|
|
29
|
+
*
|
|
30
|
+
* Task 3 在 probe.ts 中组装,本任务只定义类型。
|
|
31
|
+
*/
|
|
32
|
+
export type MaterialInventoryTrace = {
|
|
33
|
+
knowledgeRoot: string;
|
|
34
|
+
moduleId: MaterialSlotStatus;
|
|
35
|
+
menu: MaterialSlotStatus;
|
|
36
|
+
htmlFiles: MaterialSlotStatus[];
|
|
37
|
+
javaActionFiles: MaterialSlotStatus[];
|
|
38
|
+
docsFiles: MaterialSlotStatus[];
|
|
39
|
+
missing: string[];
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* 源分析模式。
|
|
43
|
+
*
|
|
44
|
+
* - `extracted`:存在 spec.yaml,契约从规格抽取。
|
|
45
|
+
* - `inferred`:无 spec.yaml,契约靠推理。
|
|
46
|
+
* - `mixed`:部分从规格抽取、部分靠推理。
|
|
47
|
+
* - `prd+html+java`:基于 PRD markdown + HTML 页面 + Java Action 推理(014 场景)。
|
|
48
|
+
*/
|
|
49
|
+
export type SourceAnalysisMode = 'extracted' | 'inferred' | 'mixed' | 'prd+html+java';
|
|
50
|
+
/**
|
|
51
|
+
* 源分析中登记的一个证据来源。
|
|
52
|
+
*
|
|
53
|
+
* @property kind - 来源类别(prd_markdown / spec_yaml / html / java_action 等)。
|
|
54
|
+
* @property path - 来源文件绝对路径。
|
|
55
|
+
* @property provides - 该来源为推理提供的能力(如 searchFields、backendMethods)。
|
|
56
|
+
*/
|
|
57
|
+
export type SourceAnalysisEntry = {
|
|
58
|
+
kind: string;
|
|
59
|
+
path: string;
|
|
60
|
+
provides: string[];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* UI 侧信号(来自 HTML 页面抽取)。
|
|
64
|
+
*
|
|
65
|
+
* @property pageId - 所属页面标识。
|
|
66
|
+
* @property kind - 信号类别(field / button / gridColumn / dialog / structureSignal)。
|
|
67
|
+
* @property label - 可读标签。
|
|
68
|
+
* @property value - 信号值(字段名 / 按钮文字 / 列 field 等)。
|
|
69
|
+
*/
|
|
70
|
+
export type UiSignal = {
|
|
71
|
+
pageId: string;
|
|
72
|
+
kind: 'field' | 'button' | 'gridColumn' | 'dialog' | 'structureSignal';
|
|
73
|
+
label: string;
|
|
74
|
+
value?: string;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* 后端侧信号(来自 Java Action 抽取)。
|
|
78
|
+
*
|
|
79
|
+
* @property controllerName - 所属 Controller 名称。
|
|
80
|
+
* @property kind - 信号类别(method / callbackMessage)。
|
|
81
|
+
* @property value - 信号值(方法名 / 消息文本)。
|
|
82
|
+
*/
|
|
83
|
+
export type BackendSignal = {
|
|
84
|
+
controllerName: string;
|
|
85
|
+
kind: 'method' | 'callbackMessage';
|
|
86
|
+
value: string;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* 源分析章节(spec §7 sourceAnalysis)。
|
|
90
|
+
*
|
|
91
|
+
* @property mode - 源分析模式。
|
|
92
|
+
* @property confidence - 推理置信度。
|
|
93
|
+
* @property sources - 登记的证据来源列表。
|
|
94
|
+
* @property fields - 跨页面汇总的字段名候选。
|
|
95
|
+
* @property businessRules - 从 PRD/Java 中提取的业务规则线索。
|
|
96
|
+
* @property uiSignals - UI 侧信号汇总。
|
|
97
|
+
* @property backendSignals - 后端侧信号汇总。
|
|
98
|
+
* @property unresolved - 未解析的来源或缺口说明。
|
|
99
|
+
*/
|
|
100
|
+
export type SourceAnalysis = {
|
|
101
|
+
mode: SourceAnalysisMode;
|
|
102
|
+
confidence: 'low' | 'medium' | 'high';
|
|
103
|
+
sources: SourceAnalysisEntry[];
|
|
104
|
+
fields: string[];
|
|
105
|
+
businessRules: string[];
|
|
106
|
+
uiSignals: UiSignal[];
|
|
107
|
+
backendSignals: BackendSignal[];
|
|
108
|
+
unresolved: string[];
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* dataKey 推理过程记录。
|
|
112
|
+
*
|
|
113
|
+
* @property selectedField - 最终选定的主键字段。
|
|
114
|
+
* @property reason - 选择理由。
|
|
115
|
+
* @property evidence - 支撑证据(出现该字段的位置)。
|
|
116
|
+
*/
|
|
117
|
+
export type DataKeyInference = {
|
|
118
|
+
selectedField?: string;
|
|
119
|
+
reason?: string;
|
|
120
|
+
evidence: string[];
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* 搜索条件推理过程记录。
|
|
124
|
+
*
|
|
125
|
+
* @property field - 搜索条件字段名。
|
|
126
|
+
* @property component - 控件类型(input / listbox)。
|
|
127
|
+
* @property resolved - 是否已解析到可用值/策略。
|
|
128
|
+
* @property reason - 未解析时的原因。
|
|
129
|
+
*/
|
|
130
|
+
export type SearchConditionInference = {
|
|
131
|
+
field: string;
|
|
132
|
+
component?: 'input' | 'listbox';
|
|
133
|
+
resolved: boolean;
|
|
134
|
+
reason?: string;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* 删除策略推理过程记录。
|
|
138
|
+
*
|
|
139
|
+
* @property value - 推理出的删除策略。
|
|
140
|
+
* @property reason - 选择理由。
|
|
141
|
+
* @property evidence - 支撑证据(Java messages)。
|
|
142
|
+
*/
|
|
143
|
+
export type DeletePolicyInference = {
|
|
144
|
+
value?: DeleteExpectedOutcome;
|
|
145
|
+
reason?: string;
|
|
146
|
+
evidence: string[];
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* 自定义工作流推理过程记录。
|
|
150
|
+
*
|
|
151
|
+
* @property label - 工作流标签(工具栏按钮文字)。
|
|
152
|
+
* @property actionAlias - 关联的动作别名。
|
|
153
|
+
* @property expectedIntent - 预期业务意图。
|
|
154
|
+
* @property expectedAssertion - 预期断言(有 Java callback 时填)。
|
|
155
|
+
* @property resolved - 是否已解析到可用断言。
|
|
156
|
+
* @property reason - 未解析时的原因。
|
|
157
|
+
* @property evidence - 支撑证据。
|
|
158
|
+
*/
|
|
159
|
+
export type CustomWorkflowInference = {
|
|
160
|
+
label: string;
|
|
161
|
+
actionAlias?: string[];
|
|
162
|
+
expectedIntent?: string;
|
|
163
|
+
expectedAssertion?: string;
|
|
164
|
+
resolved: boolean;
|
|
165
|
+
reason?: string;
|
|
166
|
+
evidence: string[];
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* 动态槽位推理章节(spec §7 moduleHintsInference)。
|
|
170
|
+
*
|
|
171
|
+
* @property mode - inferred 表示纯推理;merged 表示与显式 hints 合并。
|
|
172
|
+
* @property confidence - 推理置信度。
|
|
173
|
+
* @property dataKey - dataKey 推理过程。
|
|
174
|
+
* @property searchConditions - 搜索条件推理过程。
|
|
175
|
+
* @property buttonAliases - 按钮别名归类。
|
|
176
|
+
* @property deletePolicy - 删除策略推理过程。
|
|
177
|
+
* @property assertionPolicy - 断言策略推理过程。
|
|
178
|
+
* @property customWorkflows - 自定义工作流推理过程。
|
|
179
|
+
* @property unresolved - 未解析槽位列表。
|
|
180
|
+
*/
|
|
181
|
+
export type ModuleHintsInference = {
|
|
182
|
+
mode: 'inferred' | 'merged' | 'explicit_override';
|
|
183
|
+
confidence: 'low' | 'medium' | 'high';
|
|
184
|
+
dataKey: DataKeyInference;
|
|
185
|
+
searchConditions: SearchConditionInference[];
|
|
186
|
+
buttonAliases: Record<string, string[]>;
|
|
187
|
+
deletePolicy: DeletePolicyInference;
|
|
188
|
+
assertionPolicy: Record<string, string>;
|
|
189
|
+
customWorkflows: CustomWorkflowInference[];
|
|
190
|
+
unresolved: string[];
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* inference-trace.json 总账类型(schemaVersion: inference-trace/v1)。
|
|
194
|
+
*
|
|
195
|
+
* @property schemaVersion - 固定为 'inference-trace/v1'。
|
|
196
|
+
* @property codeListPath - code_list.md 绝对路径。
|
|
197
|
+
* @property generatedAt - 生成时间(ISO 8601)。
|
|
198
|
+
* @property materialInventory - 物料清单章节。
|
|
199
|
+
* @property sourceAnalysis - 源分析章节。
|
|
200
|
+
* @property moduleHintsInference - 动态槽位推理章节。
|
|
201
|
+
* @property coverageDiff - 覆盖差异章节(Task 3 后续 reconcile,本任务用内联形状)。
|
|
202
|
+
* @property reasoningSummary - 推理摘要章节。
|
|
203
|
+
*/
|
|
204
|
+
export type InferenceTraceV1 = {
|
|
205
|
+
schemaVersion: 'inference-trace/v1';
|
|
206
|
+
codeListPath: string;
|
|
207
|
+
generatedAt: string;
|
|
208
|
+
materialInventory: MaterialInventoryTrace;
|
|
209
|
+
sourceAnalysis: SourceAnalysis;
|
|
210
|
+
moduleHintsInference: ModuleHintsInference;
|
|
211
|
+
coverageDiff: {
|
|
212
|
+
coveredActions: unknown[];
|
|
213
|
+
uncoveredCandidates: unknown[];
|
|
214
|
+
needsReview: string[];
|
|
215
|
+
};
|
|
216
|
+
reasoningSummary: {
|
|
217
|
+
conclusion: string;
|
|
218
|
+
confidence: 'low' | 'medium' | 'high';
|
|
219
|
+
risks: string[];
|
|
220
|
+
needsHumanReview: boolean;
|
|
221
|
+
};
|
|
222
|
+
};
|
|
223
|
+
//# sourceMappingURL=inference-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference-trace.d.ts","sourceRoot":"","sources":["../../../src/contracts/inference-trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inference-trace.json 的类型定义(Plan Task 2)。
|
|
3
|
+
*
|
|
4
|
+
* 本文件只定义 `InferenceTraceV1` 的顶层章节类型:
|
|
5
|
+
* - {@link MaterialInventoryTrace}:物料清单(Task 3 负责组装,本任务只定义类型)。
|
|
6
|
+
* - {@link SourceAnalysis}:源分析快照,由 {@link buildSourceAnalysis} 产出。
|
|
7
|
+
* - {@link ModuleHintsInference}:动态槽位推理过程,由 {@link inferModuleHintsFromMaterials} 产出。
|
|
8
|
+
* - {@link InferenceTraceV1}:以上章节 + coverageDiff + reasoningSummary 的总账。
|
|
9
|
+
*
|
|
10
|
+
* 设计原则(spec §8):顶层章节稳定,内部证据数组与 reason 允许扩展。
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* 从 `code_list.md` 钻探出的单条上游物料引用。
|
|
3
3
|
*
|
|
4
4
|
* @property kind - 物料类别(html / java_action / spec / module_hints / other)。
|
|
5
|
-
* @property rawPath - markdown
|
|
6
|
-
* @property path -
|
|
5
|
+
* @property rawPath - markdown 中以反引号包裹的原始路径。
|
|
6
|
+
* @property path - 解析后的绝对路径(优先相对 knowledgeRoot,兼容回落到 code_list 所在目录)。
|
|
7
7
|
* @property exists - 解析后的路径是否真实存在,供下游 material-inventory gate 判定。
|
|
8
8
|
*/
|
|
9
9
|
export type ExtractedMaterialRef = {
|
|
@@ -15,7 +15,7 @@ export type ExtractedMaterialRef = {
|
|
|
15
15
|
export type ExtractedCodeListSummary = {
|
|
16
16
|
path: string;
|
|
17
17
|
knowledgeRoot?: string;
|
|
18
|
-
knowledgeRootSource: 'input' | 'code_list' | '
|
|
18
|
+
knowledgeRootSource: 'input' | 'code_list' | 'none';
|
|
19
19
|
menu?: string;
|
|
20
20
|
moduleLabel: string;
|
|
21
21
|
pages: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-list.d.ts","sourceRoot":"","sources":["../../../src/extractors/code-list.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,OAAO,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,OAAO,GAAG,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"code-list.d.ts","sourceRoot":"","sources":["../../../src/extractors/code-list.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,OAAO,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAyPF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,6BAAkC,GAC1C,wBAAwB,CAuC1B"}
|
|
@@ -57,6 +57,24 @@ function extractDeclaredKnowledgeRoot(content, filePath) {
|
|
|
57
57
|
const rawValue = cleanScalarValue(match[1]);
|
|
58
58
|
return path.isAbsolute(rawValue) ? rawValue : path.resolve(path.dirname(filePath), rawValue);
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* 解析 code_list.md 中“整理目录”声明的上游源码根。
|
|
62
|
+
*
|
|
63
|
+
* 支持格式:
|
|
64
|
+
* - `> 整理目录:`/abs/path``
|
|
65
|
+
* - `> 整理目录: /abs/path`
|
|
66
|
+
*
|
|
67
|
+
* @param content - code_list.md 文本内容。
|
|
68
|
+
* @returns 整理目录绝对路径;缺失或非绝对路径时返回 undefined。
|
|
69
|
+
*/
|
|
70
|
+
function extractOrganizeRoot(content) {
|
|
71
|
+
const match = content.match(/^>\s*整理目录[::]\s*`?(.+?)`?\s*$/m);
|
|
72
|
+
if (!match?.[1]) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
const candidate = cleanScalarValue(match[1]);
|
|
76
|
+
return path.isAbsolute(candidate) ? candidate : undefined;
|
|
77
|
+
}
|
|
60
78
|
/**
|
|
61
79
|
* 提取 code_list.md 顶层标量字段。
|
|
62
80
|
*
|
|
@@ -79,12 +97,27 @@ function cleanScalarValue(value) {
|
|
|
79
97
|
/**
|
|
80
98
|
* 解析 code_list.md 中声明的菜单路由。
|
|
81
99
|
*
|
|
100
|
+
* 人工读写约定:code_list.md 用中文键「菜单」,与「整理目录」同风格,
|
|
101
|
+
* 支持 blockquote 形式 `> 菜单:一级菜单>二级菜单` 与裸行 `菜单: …`(反引号包裹可选)。
|
|
102
|
+
* 同时向后兼容英文键 menu / menuPath(编码内部字段名仍为 menu)。
|
|
103
|
+
*
|
|
82
104
|
* @param content - code_list.md 文本内容。
|
|
83
105
|
* @returns 菜单路由;未声明时返回 undefined。
|
|
84
106
|
*/
|
|
85
107
|
function extractDeclaredMenu(content) {
|
|
86
|
-
|
|
87
|
-
|
|
108
|
+
// 优先:中文键「菜单」blockquote 形式(与「整理目录」同风格,反引号包裹可选)
|
|
109
|
+
const blockquoteMatch = content.match(/^>\s*菜单[::]\s*`?(.+?)`?\s*$/m);
|
|
110
|
+
if (blockquoteMatch?.[1]) {
|
|
111
|
+
const value = cleanScalarValue(blockquoteMatch[1]);
|
|
112
|
+
if (value) {
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// 裸行标量形式:菜单 / menu / menuPath(向后兼容英文键)
|
|
117
|
+
const scalarMatch = extractScalar(content, '菜单') ??
|
|
118
|
+
extractScalar(content, 'menu') ??
|
|
119
|
+
extractScalar(content, 'menuPath');
|
|
120
|
+
return scalarMatch?.[1] ? cleanScalarValue(scalarMatch[1]) : undefined;
|
|
88
121
|
}
|
|
89
122
|
/**
|
|
90
123
|
* 解析本次 code_list 应使用的上游物料根路径。
|
|
@@ -105,17 +138,20 @@ function resolveKnowledgeRoot(content, filePath, options) {
|
|
|
105
138
|
source: 'code_list',
|
|
106
139
|
};
|
|
107
140
|
}
|
|
108
|
-
|
|
141
|
+
const organizeRoot = extractOrganizeRoot(content);
|
|
142
|
+
if (organizeRoot) {
|
|
143
|
+
if (!existsSync(organizeRoot)) {
|
|
144
|
+
throw new Error(`code_list.md 声明的整理目录不存在:${organizeRoot}`);
|
|
145
|
+
}
|
|
109
146
|
return {
|
|
110
|
-
knowledgeRoot:
|
|
111
|
-
source: '
|
|
147
|
+
knowledgeRoot: organizeRoot,
|
|
148
|
+
source: 'code_list',
|
|
112
149
|
};
|
|
113
150
|
}
|
|
114
|
-
|
|
115
|
-
if (path.basename(codeListDir) === '_docs') {
|
|
151
|
+
if (options.knowledgeRoot) {
|
|
116
152
|
return {
|
|
117
|
-
knowledgeRoot: path.
|
|
118
|
-
source: '
|
|
153
|
+
knowledgeRoot: path.resolve(options.knowledgeRoot),
|
|
154
|
+
source: 'input',
|
|
119
155
|
};
|
|
120
156
|
}
|
|
121
157
|
return {
|
|
@@ -123,7 +159,7 @@ function resolveKnowledgeRoot(content, filePath, options) {
|
|
|
123
159
|
};
|
|
124
160
|
}
|
|
125
161
|
/**
|
|
126
|
-
* 按
|
|
162
|
+
* 按 knowledgeRoot / code_list 所在目录顺序产生候选根目录。
|
|
127
163
|
*
|
|
128
164
|
* @param filePath - code_list.md 的绝对路径。
|
|
129
165
|
* @param knowledgeRoot - 显式知识库根(可选)。
|
|
@@ -134,7 +170,6 @@ function materialRoots(filePath, knowledgeRoot) {
|
|
|
134
170
|
return [
|
|
135
171
|
...(knowledgeRoot ? [knowledgeRoot] : []),
|
|
136
172
|
codeListDir,
|
|
137
|
-
...(path.basename(codeListDir) === '_docs' ? [path.dirname(codeListDir)] : []),
|
|
138
173
|
];
|
|
139
174
|
}
|
|
140
175
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-skeleton-script.d.ts","sourceRoot":"","sources":["../../../src/generators/stage-skeleton-script.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAiF,MAAM,sCAAsC,CAAC;AAEtK,MAAM,MAAM,6BAA6B,GAAG,gBAAgB,GAAG,0BAA0B,CAAC;AAC1F,MAAM,MAAM,kCAAkC,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAEpF,MAAM,MAAM,qCAAqC,GAAG;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,kCAAkC,CAAC;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,2CAA2C,GAAG;IACxD,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,qCAAqC,EAAE,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAC5C,yCAAyC,GACzC,2CAA2C,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,oCAAoC,EAAE,CAAC;IACzD,MAAM,EAAE;QACN,oBAAoB,EAAE,MAAM,CAAC;QAC7B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,8BAA8B,EAAE,MAAM,CAAC;QACvC,6BAA6B,EAAE,MAAM,CAAC;QACtC,cAAc,EAAE,MAAM,CAAC;QACvB,4BAA4B,EAAE,MAAM,CAAC;QACrC,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,UAAU,EAAE;QACV,YAAY,EAAE,6BAA6B,CAAC;QAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,0BAA0B,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"stage-skeleton-script.d.ts","sourceRoot":"","sources":["../../../src/generators/stage-skeleton-script.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAiF,MAAM,sCAAsC,CAAC;AAEtK,MAAM,MAAM,6BAA6B,GAAG,gBAAgB,GAAG,0BAA0B,CAAC;AAC1F,MAAM,MAAM,kCAAkC,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAEpF,MAAM,MAAM,qCAAqC,GAAG;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,yCAAyC,GAAG;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,kCAAkC,CAAC;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,2CAA2C,GAAG;IACxD,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,qCAAqC,EAAE,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAC5C,yCAAyC,GACzC,2CAA2C,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,oCAAoC,EAAE,CAAC;IACzD,MAAM,EAAE;QACN,oBAAoB,EAAE,MAAM,CAAC;QAC7B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,8BAA8B,EAAE,MAAM,CAAC;QACvC,6BAA6B,EAAE,MAAM,CAAC;QACtC,cAAc,EAAE,MAAM,CAAC;QACvB,4BAA4B,EAAE,MAAM,CAAC;QACrC,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,UAAU,EAAE;QACV,YAAY,EAAE,6BAA6B,CAAC;QAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,0BAA0B,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAuRF;;;;;;GAMG;AACH,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,0BAA0B,GAAG,0BAA0B,CA0CpH;AA6DD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM,CAwBtF;AAwBD;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,CAoMzF"}
|
|
@@ -184,6 +184,13 @@ function findBlockedDeleteMessage(contract) {
|
|
|
184
184
|
/**
|
|
185
185
|
* 将契约中的数据生成策略映射为骨架支持的策略。
|
|
186
186
|
*
|
|
187
|
+
* 设计取舍:契约把"测试人员定"的策略标成 `human_required`(属于 unresolvedSlots,由 tester 决策)。
|
|
188
|
+
* 但 spec 组装阶段缺少喂策略的顺滑入口(spec CLI 不收 hints、contract 禁手编),
|
|
189
|
+
* 若硬抛错会导致测试人员审过用例后仍卡死。
|
|
190
|
+
* 故 `human_required` / 缺省时统一**默认到 `timestamp_prefix`**——这正是 unresolvedSlots
|
|
191
|
+
* `suggestedFormat` 自身给出的建议值,也是 CRUD 冒烟造唯一数据的标配;
|
|
192
|
+
* unresolvedSlots 仍保留作审计标记,测试人员后续可通过 ModuleHints 显式覆盖。
|
|
193
|
+
*
|
|
187
194
|
* @param strategy 契约数据生成策略
|
|
188
195
|
* @returns 骨架数据生成策略
|
|
189
196
|
*/
|
|
@@ -192,6 +199,8 @@ function mapDataStrategy(strategy) {
|
|
|
192
199
|
return 'fixed_value';
|
|
193
200
|
if (strategy === 'timestamp_prefix')
|
|
194
201
|
return 'timestamp_prefix';
|
|
202
|
+
if (strategy === 'human_required' || strategy === undefined)
|
|
203
|
+
return 'timestamp_prefix';
|
|
195
204
|
throw new Error(`当前数据生成策略无法自动映射到 CrudFlowSlots: ${strategy}`);
|
|
196
205
|
}
|
|
197
206
|
/**
|
package/dist/src/index.d.ts
CHANGED
|
@@ -49,4 +49,9 @@ export { glueReportToTrace, glueSpecAssemblyToTrace, playwrightExecutionToTrace,
|
|
|
49
49
|
export type { GlueReportSummary, GlueSpecAssemblySummary, PlaywrightExecutionSummary, } from './cli/run-gap-pipeline.js';
|
|
50
50
|
export { compareObservableRuns, summarizeGeneralizationRun, } from './generalization/generalization-eval.js';
|
|
51
51
|
export type { GeneralizationComparison, GeneralizationRunMetrics, MaterialResolutionStatus, SummarizeGeneralizationRunInput, } from './generalization/generalization-eval.js';
|
|
52
|
+
export { buildSourceAnalysis } from './inference/source-analysis.js';
|
|
53
|
+
export type { BuildSourceAnalysisInput } from './inference/source-analysis.js';
|
|
54
|
+
export { inferModuleHintsFromMaterials } from './inference/module-hints-inference.js';
|
|
55
|
+
export type { InferModuleHintsInput } from './inference/module-hints-inference.js';
|
|
56
|
+
export type { BackendSignal, CustomWorkflowInference, DataKeyInference, DeletePolicyInference, InferenceTraceV1, MaterialInventoryTrace, MaterialSlotStatus, ModuleHintsInference, SearchConditionInference, SourceAnalysis, SourceAnalysisEntry, SourceAnalysisMode, UiSignal } from './contracts/inference-trace.js';
|
|
52
57
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -24,3 +24,5 @@ export { applyCodeListWriteBack, collectCodeListMaterialRefsFromPath, isProtecte
|
|
|
24
24
|
export { createRuntimeFailureSummary, extractLoginSystemUrlFromEnvFile, parseRuntimeSummaryOutput, runtimeSummaryToTrace, } from './cli/run-gap-pipeline.js';
|
|
25
25
|
export { glueReportToTrace, glueSpecAssemblyToTrace, playwrightExecutionToTrace, } from './cli/run-gap-pipeline.js';
|
|
26
26
|
export { compareObservableRuns, summarizeGeneralizationRun, } from './generalization/generalization-eval.js';
|
|
27
|
+
export { buildSourceAnalysis } from './inference/source-analysis.js';
|
|
28
|
+
export { inferModuleHintsFromMaterials } from './inference/module-hints-inference.js';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ExtractedHtmlPage, ExtractedJavaAction } from '../index.js';
|
|
2
|
+
import type { ModuleHints } from '../contracts/crud-business-module.js';
|
|
3
|
+
import type { ModuleHintsInference, SourceAnalysis } from '../contracts/inference-trace.js';
|
|
4
|
+
/**
|
|
5
|
+
* inferModuleHintsFromMaterials 的输入参数。
|
|
6
|
+
*/
|
|
7
|
+
export type InferModuleHintsInput = {
|
|
8
|
+
sourceAnalysis: SourceAnalysis;
|
|
9
|
+
pages: ExtractedHtmlPage[];
|
|
10
|
+
actions: ExtractedJavaAction[];
|
|
11
|
+
explicitHints?: ModuleHints;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* 基于上游物料推理 ModuleHints 动态槽位。
|
|
15
|
+
*
|
|
16
|
+
* 推理规则:
|
|
17
|
+
* - dataKey.selectedField 优先选同时出现在列表页搜索区、表格列、新增/编辑页表单的 input 字段。
|
|
18
|
+
* - searchConditions 至少包含 dataKey input 条件;listbox 条件缺取值时只进 unresolved。
|
|
19
|
+
* - buttonAliases 从页面按钮标签归类(新增、搜索、修改、删除、确定、导出)。
|
|
20
|
+
* - deletePolicy 若 Java messages 含"不可删除",推为 blocked_by_business_rule。
|
|
21
|
+
* - customWorkflows 收集 CRUD/Export 骨架之外的工具栏按钮;有 Java callback 时填 assertion,否则 unresolved。
|
|
22
|
+
*
|
|
23
|
+
* @param input - 输入参数(sourceAnalysis、pages、actions、可选 explicitHints)。
|
|
24
|
+
* @returns 推理出的 hints 与推理过程。
|
|
25
|
+
*/
|
|
26
|
+
export declare function inferModuleHintsFromMaterials(input: InferModuleHintsInput): {
|
|
27
|
+
hints: ModuleHints;
|
|
28
|
+
inference: ModuleHintsInference;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=module-hints-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-hints-inference.d.ts","sourceRoot":"","sources":["../../../src/inference/module-hints-inference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,WAAW,EAEZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAIV,oBAAoB,EAEpB,cAAc,EACf,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,WAAW,CAAC;CAC7B,CAAC;AA4UF;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,qBAAqB,GAAG;IAC3E,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,oBAAoB,CAAC;CACjC,CAoEA"}
|