@epoint-testtech/ep-stage-skill 0.0.10 → 0.0.12
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/code-list-generate/SKILL.md +168 -0
- package/codex-skill/ep-stage/code-list-generate/assets/code_list.template.json5 +325 -0
- package/codex-skill/ep-stage/code-list-generate/assets/example-zwplace.json5 +588 -0
- package/codex-skill/ep-stage/code-list-generate/evals/evals.json +47 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/java/com/epoint/schemeresource/action/SchemeResourceAddAction.java +119 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/java/com/epoint/schemeresource/action/SchemeResourceDetailAction.java +70 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/java/com/epoint/schemeresource/action/SchemeResourceEditAction.java +107 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/java/com/epoint/schemeresource/action/SchemeResourceListAction.java +167 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/java/com/epoint/schemeresource/api/ISchemeResourceService.java +84 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/java/com/epoint/schemeresource/api/entity/SchemeResource.java +218 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/java/com/epoint/schemeresource/impl/SchemeResourceService.java +146 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/java/com/epoint/schemeresource/impl/SchemeResourceServiceImpl.java +110 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/webapp/perpage/schemeresource/schemeresourceadd.html +158 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/webapp/perpage/schemeresource/schemeresourcedetail.html +89 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/webapp/perpage/schemeresource/schemeresourceedit.html +125 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/schemeresource-req/src/main/webapp/perpage/schemeresource/schemeresourcelist.html +224 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/docs//345/234/272/346/211/200/347/252/227/345/217/243/344/277/241/346/201/257/347/256/241/347/220/206/345/217/212/345/220/204/347/253/257/347/273/237/350/256/241/346/243/200/347/264/242/346/237/245/347/234/213_prd.md +602 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/action/GxhZwPlaceAddAction.java +210 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/action/GxhZwPlaceDetailAction.java +69 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/action/GxhZwPlaceEditAction.java +235 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/action/GxhZwPlaceListAction.java +145 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/api/IGxhZwPlaceService.java +87 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/api/entity/GxhZwPlace.java +306 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/api/entity/GxhZwPlaceHistory.java +205 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/api/entity/GxhZwWindow.java +184 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/impl/GxhZwPlaceService.java +151 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/java/com/epoint/zwplace/impl/GxhZwPlaceServiceImpl.java +96 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/webapp/perpage/zwplace/gxhzwplaceadd.html +253 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/webapp/perpage/zwplace/gxhzwplacedetail.html +146 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/webapp/perpage/zwplace/gxhzwplaceedit.html +275 -0
- package/codex-skill/ep-stage/code-list-generate/evals/fixtures/zwplace-req/src/main/webapp/perpage/zwplace/gxhzwplacelist.html +168 -0
- package/codex-skill/ep-stage/code-list-generate/evals/grade-code-list.mjs +184 -0
- package/codex-skill/ep-stage/code-list-generate/references/epoint-extraction.md +106 -0
- package/codex-skill/ep-stage/code-list-generate/references/field-contract.md +122 -0
- package/codex-skill/ep-stage/code-list-generate/scripts/validate-code-list.mjs +202 -0
- package/codex-skill/ep-stage/glue-create-project/SKILL.md +227 -223
- package/dist/src/cli/index.js +0 -0
- package/dist/src/extractors/code-list-json5.d.ts +5 -0
- package/dist/src/extractors/code-list-json5.d.ts.map +1 -1
- package/dist/src/generators/stage-skeleton-script.d.ts +4 -0
- package/dist/src/generators/stage-skeleton-script.d.ts.map +1 -1
- package/dist/src/generators/stage-skeleton-script.js +389 -362
- package/dist/src/testcase/contract-testcase-assembler.d.ts +10 -1
- package/dist/src/testcase/contract-testcase-assembler.d.ts.map +1 -1
- package/dist/src/testcase/contract-testcase-assembler.js +80 -21
- package/package.json +14 -12
|
@@ -0,0 +1,588 @@
|
|
|
1
|
+
{
|
|
2
|
+
schemaVersion: 'ep-stage-code-list/v1-draft',
|
|
3
|
+
|
|
4
|
+
requirement: {
|
|
5
|
+
id: 'REQ0011',
|
|
6
|
+
name: '场所窗口信息管理及各端统计检索查看',
|
|
7
|
+
type: '新增功能',
|
|
8
|
+
priority: '高',
|
|
9
|
+
targetEnds: ['PC-管理端', 'H5-移动端'],
|
|
10
|
+
businessRoles: [
|
|
11
|
+
{
|
|
12
|
+
label: '业务管理员',
|
|
13
|
+
targetEnd: 'PC-管理端',
|
|
14
|
+
responsibilities: ['维护场所和窗口信息', '同步第三方窗口管理系统数据'],
|
|
15
|
+
evidence: ['场所窗口信息管理及各端统计检索查看_prd.md#2.1 核心用户角色'],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
label: '领导/管理者',
|
|
19
|
+
targetEnd: 'PC-管理端',
|
|
20
|
+
responsibilities: ['通过统计大屏查看场所窗口整体情况'],
|
|
21
|
+
evidence: ['场所窗口信息管理及各端统计检索查看_prd.md#2.1 核心用户角色'],
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: '群众',
|
|
25
|
+
targetEnd: 'H5-移动端',
|
|
26
|
+
responsibilities: ['通过移动端查询场所和窗口详细信息'],
|
|
27
|
+
evidence: ['场所窗口信息管理及各端统计检索查看_prd.md#2.1 核心用户角色'],
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
sourceRoot: {
|
|
33
|
+
root: 'F:/001-Proj/ep-stage/knowledge-project/epoint-web-v9.5.2',
|
|
34
|
+
pathBase: 'knowledgeRoot',
|
|
35
|
+
sourceFilesAreRelativeTo: 'sourceRoot.root',
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
// 兼容当前 CLI 读取器的顶层字段;语义等同 module.id / module.name。
|
|
39
|
+
module: 'zwplace',
|
|
40
|
+
moduleName: '场所窗口信息管理',
|
|
41
|
+
description: '场所窗口信息管理模块,当前出码主要覆盖 PC 管理端大厅地址管理、窗口子表维护和同步入口。',
|
|
42
|
+
|
|
43
|
+
systems: [
|
|
44
|
+
{
|
|
45
|
+
name: '集成受理平台',
|
|
46
|
+
version: '8.4',
|
|
47
|
+
frameVersion: '950',
|
|
48
|
+
targetEnd: 'PC-管理端',
|
|
49
|
+
// 登录地址(loginUrl):研发可在出码总结时补齐;留空时由 glue-generate-testcase 交互补充。
|
|
50
|
+
defaultLoginUrl: 'http://192.168.203.46:8100/epoint-web/frame/pages/login/login',
|
|
51
|
+
evidence: ['plan.md#上下文 project_context'],
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
|
|
55
|
+
// 测试访问数据模板:用于生成 credentials.json5。
|
|
56
|
+
// code_list.json5 是上游出码总结事实源;若账号、密码、角色、权限不能由上游明确给出,可先留空,由生成用例环节交互补齐。
|
|
57
|
+
testAccess: {
|
|
58
|
+
systems: [
|
|
59
|
+
{
|
|
60
|
+
systemName: '集成受理平台',
|
|
61
|
+
loginUrl: '',
|
|
62
|
+
roles: [
|
|
63
|
+
{
|
|
64
|
+
role: '业务管理员',
|
|
65
|
+
username: '',
|
|
66
|
+
password: '',
|
|
67
|
+
permissions: ['新增', '修改', '删除', '导出', '同步', '查看'],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
role: '领导/管理者',
|
|
71
|
+
username: '',
|
|
72
|
+
password: '',
|
|
73
|
+
permissions: ['查看统计大屏'],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
role: '群众',
|
|
77
|
+
username: '',
|
|
78
|
+
password: '',
|
|
79
|
+
permissions: ['移动端查询查看'],
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
moduleInfo: {
|
|
87
|
+
id: 'zwplace',
|
|
88
|
+
name: '场所窗口信息管理',
|
|
89
|
+
packagePath: 'com.epoint.zwplace',
|
|
90
|
+
frontendBasePath: 'src/main/webapp/perpage/zwplace',
|
|
91
|
+
backendBasePath: 'src/main/java/com/epoint/zwplace',
|
|
92
|
+
deriveRule: '从页面目录 perpage/zwplace 与 Java 包 com.epoint.zwplace 归纳模块标识。',
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
implementedScope: [
|
|
96
|
+
{
|
|
97
|
+
featureId: 'F001',
|
|
98
|
+
featureName: '场所列表管理',
|
|
99
|
+
implementedBy: ['pages.list', 'backend.actions.GxhZwPlaceListAction'],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
featureId: 'F002',
|
|
103
|
+
featureName: '新增场所',
|
|
104
|
+
implementedBy: ['pages.add', 'backend.actions.GxhZwPlaceAddAction'],
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
featureId: 'F003',
|
|
108
|
+
featureName: '修改场所',
|
|
109
|
+
implementedBy: ['pages.edit', 'backend.actions.GxhZwPlaceEditAction'],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
featureId: 'F004',
|
|
113
|
+
featureName: '删除场所',
|
|
114
|
+
implementedBy: ['pages.list.toolbarActions.delete', 'backend.actions.GxhZwPlaceListAction.methods.deleteSelect'],
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
featureId: 'F005',
|
|
118
|
+
featureName: '同步窗口管理系统',
|
|
119
|
+
implementationStatus: 'entry_exists_service_stub',
|
|
120
|
+
implementedBy: ['pages.list.toolbarActions.syncWindowSystem', 'backend.dao.GxhZwPlaceService.methods.syncWindowSystem'],
|
|
121
|
+
note: '页面和 Action 有同步入口;Service 当前返回“同步功能暂未实现,请联系管理员配置窗口管理系统接口。”',
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
|
|
125
|
+
prdMentionedButNotImplemented: [
|
|
126
|
+
{
|
|
127
|
+
featureIds: ['F008', 'F009', 'F010', 'F011', 'F012'],
|
|
128
|
+
featureName: '管理者统计大屏',
|
|
129
|
+
reason: 'PRD 描述了统计大屏能力,但 sourceFiles.frontend / sourceFiles.actions / sourceFiles.services 未提供对应统计大屏页面或后端实现文件。',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
featureIds: ['F013', 'F014', 'F015', 'F016'],
|
|
133
|
+
featureName: '移动端群众查看',
|
|
134
|
+
reason: 'PRD 描述了移动端群众查看能力,但 sourceFiles.frontend / sourceFiles.actions / sourceFiles.services 未提供 H5 页面或移动端接口实现文件。',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
featureIds: ['F006', 'F007'],
|
|
138
|
+
featureName: '窗口管理系统接口数据映射与同步冲突处理',
|
|
139
|
+
reason: 'PRD 描述了接口映射和冲突处理;当前出码只发现同步入口和 service stub,未发现真实第三方接口调用、映射或冲突处理实现。',
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
|
|
143
|
+
sourceFiles: {
|
|
144
|
+
frontend: [
|
|
145
|
+
{ role: 'list', path: 'src/main/webapp/perpage/zwplace/gxhzwplacelist.html', title: '场所信息管理列表' },
|
|
146
|
+
{ role: 'add', path: 'src/main/webapp/perpage/zwplace/gxhzwplaceadd.html', title: '场所信息管理添加' },
|
|
147
|
+
{ role: 'edit', path: 'src/main/webapp/perpage/zwplace/gxhzwplaceedit.html', title: '场所信息管理编辑' },
|
|
148
|
+
{ role: 'detail', path: 'src/main/webapp/perpage/zwplace/gxhzwplacedetail.html', title: '场所信息管理详情' },
|
|
149
|
+
],
|
|
150
|
+
actions: [
|
|
151
|
+
{ name: 'GxhZwPlaceListAction', path: 'src/main/java/com/epoint/zwplace/action/GxhZwPlaceListAction.java', restController: 'gxhzwplacelistaction' },
|
|
152
|
+
{ name: 'GxhZwPlaceAddAction', path: 'src/main/java/com/epoint/zwplace/action/GxhZwPlaceAddAction.java', restController: 'gxhzwplaceaddaction' },
|
|
153
|
+
{ name: 'GxhZwPlaceEditAction', path: 'src/main/java/com/epoint/zwplace/action/GxhZwPlaceEditAction.java', restController: 'gxhzwplaceeditaction' },
|
|
154
|
+
{ name: 'GxhZwPlaceDetailAction', path: 'src/main/java/com/epoint/zwplace/action/GxhZwPlaceDetailAction.java', restController: 'gxhzwplacedetailaction' },
|
|
155
|
+
],
|
|
156
|
+
services: [
|
|
157
|
+
{ name: 'IGxhZwPlaceService', path: 'src/main/java/com/epoint/zwplace/api/IGxhZwPlaceService.java', kind: 'interface' },
|
|
158
|
+
{ name: 'GxhZwPlaceServiceImpl', path: 'src/main/java/com/epoint/zwplace/impl/GxhZwPlaceServiceImpl.java', kind: 'serviceImpl' },
|
|
159
|
+
{ name: 'GxhZwPlaceService', path: 'src/main/java/com/epoint/zwplace/impl/GxhZwPlaceService.java', kind: 'dao' },
|
|
160
|
+
],
|
|
161
|
+
entities: [
|
|
162
|
+
{ name: 'GxhZwPlace', path: 'src/main/java/com/epoint/zwplace/api/entity/GxhZwPlace.java', table: 'gxh_zw_place' },
|
|
163
|
+
{ name: 'GxhZwWindow', path: 'src/main/java/com/epoint/zwplace/api/entity/GxhZwWindow.java', table: 'gxh_zw_window' },
|
|
164
|
+
{ name: 'GxhZwPlaceHistory', path: 'src/main/java/com/epoint/zwplace/api/entity/GxhZwPlaceHistory.java', table: 'gxh_zw_place_history' },
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
pages: [
|
|
169
|
+
{
|
|
170
|
+
pageId: 'gxhzwplacelist',
|
|
171
|
+
role: 'list',
|
|
172
|
+
title: '场所信息管理列表',
|
|
173
|
+
path: 'src/main/webapp/perpage/zwplace/gxhzwplacelist.html',
|
|
174
|
+
initAction: 'gxhzwplacelistaction',
|
|
175
|
+
// 待测页面直达链接(directUrl):优先在上游出码总结中补齐;留空时由 glue-generate-testcase 交互补充。
|
|
176
|
+
directUrl: 'http://192.168.203.46:8100/epoint-web/perpage/zwplace/gxhzwplacelist.html',
|
|
177
|
+
description: '场所信息列表展示,支持分页、排序、查询、删除、导出、同步窗口管理系统、修改和查看。',
|
|
178
|
+
queryFields: [
|
|
179
|
+
{
|
|
180
|
+
label: '场所名称',
|
|
181
|
+
bind: 'dataBean.placename',
|
|
182
|
+
component: 'mini-textbox',
|
|
183
|
+
elementHints: [{ attr: 'bind', value: 'dataBean.placename' }],
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
label: '场所分类',
|
|
187
|
+
bind: 'dataBean.placecategory',
|
|
188
|
+
component: 'mini-combobox',
|
|
189
|
+
modelRef: 'placecategoryModel',
|
|
190
|
+
elementHints: [{ attr: 'id', value: 'placecategory' }, { attr: 'action', value: 'placecategoryModel' }],
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
label: '状态',
|
|
194
|
+
bind: 'dataBean.status',
|
|
195
|
+
component: 'mini-combobox',
|
|
196
|
+
modelRef: 'statusModel',
|
|
197
|
+
elementHints: [{ attr: 'id', value: 'status' }, { attr: 'action', value: 'statusModel' }],
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
toolbarActions: [
|
|
201
|
+
{ label: '新增场所信息管理', actionName: 'openAdd', opens: 'pages.add' },
|
|
202
|
+
{ label: '删除选定', actionName: 'deleteData', backendMethod: 'deleteSelect' },
|
|
203
|
+
{ label: '导出', component: 'mini-dataexport', backendMethod: 'getExportModel', elementHints: [{ attr: 'id', value: 'dataexport' }, { attr: 'gridId', value: 'datagrid' }] },
|
|
204
|
+
{ label: '同步窗口管理系统', actionName: 'syncWindowSystem', backendMethod: 'syncWindowSystem' },
|
|
205
|
+
],
|
|
206
|
+
// 兼容当前 glue-generate-testcase 读取器;语义等同 toolbarActions 的按钮摘要。
|
|
207
|
+
buttons: [
|
|
208
|
+
{ label: '新增场所信息管理', action: 'create', backendMethod: null },
|
|
209
|
+
{ label: '删除选定', action: 'delete', backendMethod: 'deleteSelect' },
|
|
210
|
+
{ label: '导出', action: 'export', backendMethod: 'getExportModel' },
|
|
211
|
+
{ label: '同步窗口管理系统', action: 'custom', customAction: 'syncWindowSystem', backendMethod: 'syncWindowSystem' },
|
|
212
|
+
],
|
|
213
|
+
rowActions: [
|
|
214
|
+
{ label: '修改', actionName: 'openEdit', opens: 'pages.edit' },
|
|
215
|
+
{ label: '查看', actionName: 'openDetail', opens: 'pages.detail' },
|
|
216
|
+
],
|
|
217
|
+
dataGrid: {
|
|
218
|
+
id: 'datagrid',
|
|
219
|
+
idField: 'rowguid',
|
|
220
|
+
backendMethod: 'getDataGridData',
|
|
221
|
+
columns: [
|
|
222
|
+
{ field: 'placename', label: '场所名称' },
|
|
223
|
+
{ field: 'placecategory', label: '场所分类', dataOptions: "{code:'场所分类'}" },
|
|
224
|
+
{ field: 'address', label: '详细地址', renderer: 'addressRenderer' },
|
|
225
|
+
{ field: 'servicetime', label: '统一对外服务时间' },
|
|
226
|
+
{ field: 'consultphone', label: '咨询电话' },
|
|
227
|
+
{ field: 'complaintphone', label: '投诉电话' },
|
|
228
|
+
{ field: 'status', label: '状态', dataOptions: "{code:'数据状态'}" },
|
|
229
|
+
{ field: 'version', label: '版本号' },
|
|
230
|
+
],
|
|
231
|
+
},
|
|
232
|
+
backendMethods: ['getDataGridData', 'deleteSelect', 'getExportModel', 'syncWindowSystem', 'getPlacecategoryModel', 'getStatusModel'],
|
|
233
|
+
evidence: ['sourceFiles.frontend[role=list]', 'sourceFiles.actions[name=GxhZwPlaceListAction]'],
|
|
234
|
+
},
|
|
235
|
+
|
|
236
|
+
{
|
|
237
|
+
pageId: 'gxhzwplaceadd',
|
|
238
|
+
role: 'add',
|
|
239
|
+
title: '场所信息管理添加',
|
|
240
|
+
path: 'src/main/webapp/perpage/zwplace/gxhzwplaceadd.html',
|
|
241
|
+
initAction: 'gxhzwplaceaddaction',
|
|
242
|
+
description: '新增场所信息,维护场所基础字段和窗口信息子表。',
|
|
243
|
+
formFields: [
|
|
244
|
+
{ label: '场所名称', bind: 'dataBean.placename', component: 'mini-textbox', required: true, maxLength: 50 },
|
|
245
|
+
{ label: '场所分类', bind: 'dataBean.placecategory', component: 'mini-combobox', required: true, modelRef: 'placecategoryModel' },
|
|
246
|
+
{ label: '区划名称', bind: 'dataBean.districtname', component: 'mini-combobox', required: true, modelRef: 'districtModel' },
|
|
247
|
+
{ label: '街道名称', bind: 'dataBean.streetname', component: 'mini-textbox', required: true, maxLength: 50 },
|
|
248
|
+
{ label: '路/弄/号', bind: 'dataBean.address', component: 'mini-textbox', required: true, maxLength: 50 },
|
|
249
|
+
{ label: '是否社区办理', bind: 'dataBean.iscommunity', component: 'mini-combobox', required: true, modelRef: 'iscommunityModel' },
|
|
250
|
+
{ label: '统一对外服务时间', bind: 'dataBean.servicetime', component: 'mini-textbox', required: true, maxLength: 100 },
|
|
251
|
+
{ label: '咨询电话', bind: 'dataBean.consultphone', component: 'mini-textbox', maxLength: 20 },
|
|
252
|
+
{ label: '投诉电话', bind: 'dataBean.complaintphone', component: 'mini-textbox', maxLength: 20 },
|
|
253
|
+
],
|
|
254
|
+
toolbarActions: [
|
|
255
|
+
{ label: '保存', actionName: 'save', backendMethod: 'saveDraft' },
|
|
256
|
+
{ label: '保存并关闭', actionName: 'saveAndClose', backendMethod: 'add' },
|
|
257
|
+
{ label: '关闭', actionName: "epoint.closeDialog('close')" },
|
|
258
|
+
],
|
|
259
|
+
buttons: [
|
|
260
|
+
{ label: '保存', action: 'save', customAction: 'saveDraft', backendMethod: 'saveDraft' },
|
|
261
|
+
{ label: '保存并关闭', action: 'create', backendMethod: 'add' },
|
|
262
|
+
{ label: '关闭', action: 'cancel', backendMethod: null },
|
|
263
|
+
],
|
|
264
|
+
rowActions: [],
|
|
265
|
+
childGrids: [
|
|
266
|
+
{
|
|
267
|
+
id: 'windowGrid',
|
|
268
|
+
label: '窗口信息',
|
|
269
|
+
actions: [{ label: '添加窗口', actionName: 'addWindow' }, { label: '删除选中', actionName: 'deleteSelectedWindow' }],
|
|
270
|
+
columns: [
|
|
271
|
+
{ field: 'windowname', label: '窗口名称', required: true },
|
|
272
|
+
{ field: 'windowtype', label: '窗口类型', required: true, modelRef: 'windowtypeModel' },
|
|
273
|
+
{ field: 'windowaddress', label: '窗口地址' },
|
|
274
|
+
],
|
|
275
|
+
},
|
|
276
|
+
],
|
|
277
|
+
backendMethods: ['saveDraft', 'add', 'getStreetList', 'getPlacecategoryModel', 'getDistrictModel', 'getIscommunityModel', 'getWindowtypeModel', 'getWindowtypeData'],
|
|
278
|
+
evidence: ['sourceFiles.frontend[role=add]', 'sourceFiles.actions[name=GxhZwPlaceAddAction]'],
|
|
279
|
+
},
|
|
280
|
+
|
|
281
|
+
{
|
|
282
|
+
pageId: 'gxhzwplaceedit',
|
|
283
|
+
role: 'edit',
|
|
284
|
+
title: '场所信息管理编辑',
|
|
285
|
+
path: 'src/main/webapp/perpage/zwplace/gxhzwplaceedit.html',
|
|
286
|
+
initAction: 'gxhzwplaceeditaction',
|
|
287
|
+
description: '编辑场所信息,保存并关闭时版本号加一并归档历史数据。',
|
|
288
|
+
formFields: ['same_as_pages.add.formFields'],
|
|
289
|
+
childGrids: ['same_as_pages.add.childGrids'],
|
|
290
|
+
toolbarActions: [
|
|
291
|
+
{ label: '保存', actionName: 'save', backendMethod: 'saveDraft' },
|
|
292
|
+
{ label: '保存并关闭', actionName: 'saveAndClose', backendMethod: 'save' },
|
|
293
|
+
{ label: '关闭', actionName: "epoint.closeDialog('close')" },
|
|
294
|
+
],
|
|
295
|
+
buttons: [
|
|
296
|
+
{ label: '保存', action: 'save', customAction: 'saveDraft', backendMethod: 'saveDraft' },
|
|
297
|
+
{ label: '保存并关闭', action: 'update', backendMethod: 'save' },
|
|
298
|
+
{ label: '关闭', action: 'cancel', backendMethod: null },
|
|
299
|
+
],
|
|
300
|
+
rowActions: [],
|
|
301
|
+
backendMethods: ['pageLoad', 'saveDraft', 'save', 'getStreetList', 'getPlacecategoryModel', 'getDistrictModel', 'getIscommunityModel', 'getWindowtypeModel', 'getWindowtypeData'],
|
|
302
|
+
evidence: ['sourceFiles.frontend[role=edit]', 'sourceFiles.actions[name=GxhZwPlaceEditAction]'],
|
|
303
|
+
},
|
|
304
|
+
|
|
305
|
+
{
|
|
306
|
+
pageId: 'gxhzwplacedetail',
|
|
307
|
+
role: 'detail',
|
|
308
|
+
title: '场所信息管理详情',
|
|
309
|
+
path: 'src/main/webapp/perpage/zwplace/gxhzwplacedetail.html',
|
|
310
|
+
initAction: 'gxhzwplacedetailaction',
|
|
311
|
+
description: '查看场所信息详情和窗口信息列表,只读展示。',
|
|
312
|
+
buttons: [
|
|
313
|
+
{ label: '关闭', action: 'cancel', backendMethod: null },
|
|
314
|
+
],
|
|
315
|
+
rowActions: [],
|
|
316
|
+
backendMethods: ['pageLoad', 'getWindowtypeModel', 'getWindowtypeData'],
|
|
317
|
+
evidence: ['sourceFiles.frontend[role=detail]', 'sourceFiles.actions[name=GxhZwPlaceDetailAction]'],
|
|
318
|
+
},
|
|
319
|
+
],
|
|
320
|
+
|
|
321
|
+
backend: {
|
|
322
|
+
callChain: '前端页面 -> Action -> IGxhZwPlaceService -> GxhZwPlaceServiceImpl -> GxhZwPlaceService(DAO) -> 数据库',
|
|
323
|
+
actions: [
|
|
324
|
+
{
|
|
325
|
+
name: 'GxhZwPlaceListAction',
|
|
326
|
+
restController: 'gxhzwplacelistaction',
|
|
327
|
+
methods: [
|
|
328
|
+
{ name: 'deleteSelect', description: '删除选中数据;非 DRAFT 状态返回“在用数据不可删除!”。' },
|
|
329
|
+
{ name: 'getDataGridData', description: '按 placename like、placecategory eq、status eq 查询分页列表。' },
|
|
330
|
+
{ name: 'syncWindowSystem', description: '调用 service.syncWindowSystem 并返回消息。' },
|
|
331
|
+
{ name: 'getExportModel', description: '返回列表导出字段配置。' },
|
|
332
|
+
{ name: 'getPlacecategoryModel', description: '读取“场所分类”代码项。' },
|
|
333
|
+
{ name: 'getStatusModel', description: '读取“数据状态”代码项。' },
|
|
334
|
+
],
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
name: 'GxhZwPlaceAddAction',
|
|
338
|
+
restController: 'gxhzwplaceaddaction',
|
|
339
|
+
methods: [
|
|
340
|
+
{ name: 'saveDraft', description: '保存草稿,状态 DRAFT,数据源 MANUAL。' },
|
|
341
|
+
{ name: 'add', description: '保存并关闭,状态 ACTIVE,版本 V1,数据源 MANUAL。' },
|
|
342
|
+
{ name: 'checkPlacenameUnique', description: '按 placename 校验唯一性。' },
|
|
343
|
+
{ name: 'saveWindows', description: '保存窗口子表。' },
|
|
344
|
+
{ name: 'getStreetList', description: '按 districtname 查询街道列表。' },
|
|
345
|
+
],
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
name: 'GxhZwPlaceEditAction',
|
|
349
|
+
restController: 'gxhzwplaceeditaction',
|
|
350
|
+
methods: [
|
|
351
|
+
{ name: 'pageLoad', description: '按 guid 加载场所和窗口列表。' },
|
|
352
|
+
{ name: 'saveDraft', description: '保存草稿,版本号和状态不变。' },
|
|
353
|
+
{ name: 'save', description: '保存并关闭,归档历史数据,版本号加一,草稿状态改为 ACTIVE。' },
|
|
354
|
+
{ name: 'updateWindows', description: '先删除原窗口子表,再插入本次窗口数据。' },
|
|
355
|
+
],
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
name: 'GxhZwPlaceDetailAction',
|
|
359
|
+
restController: 'gxhzwplacedetailaction',
|
|
360
|
+
methods: [
|
|
361
|
+
{ name: 'pageLoad', description: '按 guid 加载场所和窗口列表。' },
|
|
362
|
+
{ name: 'getWindowtypeData', description: '返回窗口类型数据给前端渲染。' },
|
|
363
|
+
],
|
|
364
|
+
},
|
|
365
|
+
],
|
|
366
|
+
services: [
|
|
367
|
+
{
|
|
368
|
+
name: 'GxhZwPlaceService',
|
|
369
|
+
kind: 'dao',
|
|
370
|
+
methods: [
|
|
371
|
+
'insert',
|
|
372
|
+
'deleteByGuid',
|
|
373
|
+
'update',
|
|
374
|
+
'countGxhZwPlace',
|
|
375
|
+
'find',
|
|
376
|
+
'findList',
|
|
377
|
+
'paginatorList',
|
|
378
|
+
'insertWindow',
|
|
379
|
+
'deleteWindows',
|
|
380
|
+
'findWindowList',
|
|
381
|
+
'archivePlace',
|
|
382
|
+
'syncWindowSystem',
|
|
383
|
+
'findStreetList',
|
|
384
|
+
],
|
|
385
|
+
},
|
|
386
|
+
],
|
|
387
|
+
},
|
|
388
|
+
|
|
389
|
+
dataModels: [
|
|
390
|
+
{
|
|
391
|
+
ref: 'placecategoryModel',
|
|
392
|
+
label: '场所分类',
|
|
393
|
+
sourceKind: 'dictionary_runtime',
|
|
394
|
+
actionMethods: ['GxhZwPlaceListAction.getPlacecategoryModel', 'GxhZwPlaceAddAction.getPlacecategoryModel', 'GxhZwPlaceEditAction.getPlacecategoryModel'],
|
|
395
|
+
dictionaryCode: '场所分类',
|
|
396
|
+
optionsKnownAtStaticTime: false,
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
ref: 'statusModel',
|
|
400
|
+
label: '状态',
|
|
401
|
+
sourceKind: 'dictionary_runtime',
|
|
402
|
+
actionMethods: ['GxhZwPlaceListAction.getStatusModel'],
|
|
403
|
+
dictionaryCode: '数据状态',
|
|
404
|
+
optionsKnownAtStaticTime: false,
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
ref: 'districtModel',
|
|
408
|
+
label: '区划名称',
|
|
409
|
+
sourceKind: 'static_options',
|
|
410
|
+
actionMethods: ['GxhZwPlaceAddAction.getDistrictModel', 'GxhZwPlaceEditAction.getDistrictModel'],
|
|
411
|
+
options: ['黄浦区', '徐汇区', '长宁区', '静安区', '普陀区', '虹口区', '杨浦区', '闵行区', '宝山区', '嘉定区', '浦东新区', '金山区', '松江区', '青浦区', '奉贤区', '崇明区'],
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
ref: 'iscommunityModel',
|
|
415
|
+
label: '是否社区办理',
|
|
416
|
+
sourceKind: 'static_options',
|
|
417
|
+
actionMethods: ['GxhZwPlaceAddAction.getIscommunityModel', 'GxhZwPlaceEditAction.getIscommunityModel'],
|
|
418
|
+
options: ['是', '否'],
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
ref: 'windowtypeModel',
|
|
422
|
+
label: '窗口类型',
|
|
423
|
+
sourceKind: 'dictionary_runtime',
|
|
424
|
+
actionMethods: ['GxhZwPlaceAddAction.getWindowtypeModel', 'GxhZwPlaceEditAction.getWindowtypeModel', 'GxhZwPlaceDetailAction.getWindowtypeModel'],
|
|
425
|
+
dictionaryCode: '窗口类型',
|
|
426
|
+
optionsKnownAtStaticTime: false,
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
ref: 'streetList',
|
|
430
|
+
label: '街道名称',
|
|
431
|
+
sourceKind: 'db_runtime',
|
|
432
|
+
actionMethods: ['GxhZwPlaceAddAction.getStreetList', 'GxhZwPlaceEditAction.getStreetList'],
|
|
433
|
+
dependency: 'districtname',
|
|
434
|
+
optionsKnownAtStaticTime: false,
|
|
435
|
+
},
|
|
436
|
+
],
|
|
437
|
+
|
|
438
|
+
entities: [
|
|
439
|
+
{
|
|
440
|
+
name: 'GxhZwPlace',
|
|
441
|
+
table: 'gxh_zw_place',
|
|
442
|
+
description: '场所信息实体。',
|
|
443
|
+
fields: [
|
|
444
|
+
{ name: 'placename', type: 'String(50)', label: '场所名称' },
|
|
445
|
+
{ name: 'placecategory', type: 'String(20)', label: '场所分类' },
|
|
446
|
+
{ name: 'districtname', type: 'String(50)', label: '区划名称' },
|
|
447
|
+
{ name: 'streetname', type: 'String(50)', label: '街道名称' },
|
|
448
|
+
{ name: 'address', type: 'String(50)', label: '路/弄/号' },
|
|
449
|
+
{ name: 'iscommunity', type: 'String(10)', label: '是否社区办理' },
|
|
450
|
+
{ name: 'servicetime', type: 'String(100)', label: '统一对外服务时间' },
|
|
451
|
+
{ name: 'consultphone', type: 'String(20)', label: '咨询电话' },
|
|
452
|
+
{ name: 'complaintphone', type: 'String(20)', label: '投诉电话' },
|
|
453
|
+
{ name: 'status', type: 'String(20)', label: '状态' },
|
|
454
|
+
{ name: 'version', type: 'String(20)', label: '版本号' },
|
|
455
|
+
{ name: 'datasource', type: 'String(20)', label: '窗口来源渠道' },
|
|
456
|
+
{ name: 'centercode', type: 'String(50)', label: '政务中心编号' },
|
|
457
|
+
],
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
name: 'GxhZwWindow',
|
|
461
|
+
table: 'gxh_zw_window',
|
|
462
|
+
description: '窗口信息实体。',
|
|
463
|
+
fields: [
|
|
464
|
+
{ name: 'placeguid', type: 'String(50)', label: '所属场所 GUID' },
|
|
465
|
+
{ name: 'windowname', type: 'String(100)', label: '窗口名称' },
|
|
466
|
+
{ name: 'windowtype', type: 'String(20)', label: '窗口类型' },
|
|
467
|
+
{ name: 'windowaddress', type: 'String(200)', label: '窗口地址' },
|
|
468
|
+
{ name: 'windowguid', type: 'String(50)', label: '窗口编号' },
|
|
469
|
+
],
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
name: 'GxhZwPlaceHistory',
|
|
473
|
+
table: 'gxh_zw_place_history',
|
|
474
|
+
description: '场所历史记录实体,用于保存归档版本。',
|
|
475
|
+
fields: [],
|
|
476
|
+
},
|
|
477
|
+
],
|
|
478
|
+
|
|
479
|
+
businessRules: [
|
|
480
|
+
{
|
|
481
|
+
ruleId: 'delete.onlyDraftAllowed',
|
|
482
|
+
description: '仅草稿状态数据可删除,非 DRAFT 状态删除时被阻断。',
|
|
483
|
+
scope: ['delete'],
|
|
484
|
+
sourceKind: 'static_scan',
|
|
485
|
+
assertionHint: '在用数据不可删除!',
|
|
486
|
+
evidence: ['src/main/java/com/epoint/zwplace/action/GxhZwPlaceListAction.java#deleteSelect'],
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
ruleId: 'placename.unique',
|
|
490
|
+
description: '新增和编辑保存前校验场所名称唯一性。',
|
|
491
|
+
scope: ['create', 'update'],
|
|
492
|
+
sourceKind: 'static_scan',
|
|
493
|
+
assertionHint: '场所名称已存在!',
|
|
494
|
+
evidence: [
|
|
495
|
+
'src/main/java/com/epoint/zwplace/action/GxhZwPlaceAddAction.java#checkPlacenameUnique',
|
|
496
|
+
'src/main/java/com/epoint/zwplace/action/GxhZwPlaceEditAction.java#checkPlacenameUnique',
|
|
497
|
+
],
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
ruleId: 'create.saveAndCloseActive',
|
|
501
|
+
description: '新增保存并关闭时状态为 ACTIVE,版本为 V1,数据源为 MANUAL。',
|
|
502
|
+
scope: ['create'],
|
|
503
|
+
sourceKind: 'static_scan',
|
|
504
|
+
evidence: ['src/main/java/com/epoint/zwplace/action/GxhZwPlaceAddAction.java#add'],
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
ruleId: 'update.archiveAndVersionPlusOne',
|
|
508
|
+
description: '编辑保存并关闭时归档历史数据,版本号加一;草稿状态改为 ACTIVE。',
|
|
509
|
+
scope: ['update'],
|
|
510
|
+
sourceKind: 'static_scan',
|
|
511
|
+
evidence: ['src/main/java/com/epoint/zwplace/action/GxhZwPlaceEditAction.java#save'],
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
ruleId: 'windowGrid.requiredFields',
|
|
515
|
+
description: '窗口子表每行窗口名称、窗口类型不能为空。',
|
|
516
|
+
scope: ['create', 'update', 'windowGrid'],
|
|
517
|
+
sourceKind: 'static_scan',
|
|
518
|
+
assertionHints: ['第N行窗口名称不能为空!', '第N行窗口类型不能为空!'],
|
|
519
|
+
evidence: ['src/main/webapp/perpage/zwplace/gxhzwplaceadd.html#validateWindows'],
|
|
520
|
+
},
|
|
521
|
+
],
|
|
522
|
+
|
|
523
|
+
integrations: [
|
|
524
|
+
{
|
|
525
|
+
integrationId: 'syncWindowSystem',
|
|
526
|
+
label: '同步窗口管理系统',
|
|
527
|
+
trigger: '列表页按钮“同步窗口管理系统”',
|
|
528
|
+
currentImplementation: 'service_stub',
|
|
529
|
+
staticMessage: '同步功能暂未实现,请联系管理员配置窗口管理系统接口。',
|
|
530
|
+
prdExpectedEndpoint: '/rest/zwzx/query',
|
|
531
|
+
prdFieldMappings: [
|
|
532
|
+
{ from: '政务中心名称', to: '场所名称' },
|
|
533
|
+
{ from: '场所分类', to: '场所分类' },
|
|
534
|
+
{ from: '是否统管社区', to: '是否社区办理' },
|
|
535
|
+
{ from: '区', to: '区划名称' },
|
|
536
|
+
{ from: '街镇', to: '街道名称' },
|
|
537
|
+
{ from: '详细地址', to: '路/弄/号' },
|
|
538
|
+
{ from: '咨询电话', to: '咨询电话' },
|
|
539
|
+
{ from: '投诉电话', to: '投诉电话' },
|
|
540
|
+
{ from: '综窗名称', to: '窗口名称' },
|
|
541
|
+
{ from: '综窗类型', to: '窗口类型' },
|
|
542
|
+
{ from: '综窗对外地址', to: '窗口地址' },
|
|
543
|
+
],
|
|
544
|
+
evidence: [
|
|
545
|
+
'场所窗口信息管理及各端统计检索查看_prd.md#4.2.5 F005 同步窗口管理系统',
|
|
546
|
+
'src/main/java/com/epoint/zwplace/impl/GxhZwPlaceService.java#syncWindowSystem',
|
|
547
|
+
],
|
|
548
|
+
},
|
|
549
|
+
],
|
|
550
|
+
|
|
551
|
+
routeHints: {
|
|
552
|
+
contextPathHint: '/epoint-web',
|
|
553
|
+
rule: '运行环境 origin + contextPathHint + 页面 path 去掉 src/main/webapp 后的路径。',
|
|
554
|
+
pages: [
|
|
555
|
+
{ pageId: 'gxhzwplacelist', routePath: '/perpage/zwplace/gxhzwplacelist.html' },
|
|
556
|
+
{ pageId: 'gxhzwplaceadd', routePath: '/perpage/zwplace/gxhzwplaceadd.html' },
|
|
557
|
+
{ pageId: 'gxhzwplaceedit', routePath: '/perpage/zwplace/gxhzwplaceedit.html' },
|
|
558
|
+
{ pageId: 'gxhzwplacedetail', routePath: '/perpage/zwplace/gxhzwplacedetail.html' },
|
|
559
|
+
],
|
|
560
|
+
runtimeOriginRequired: true,
|
|
561
|
+
},
|
|
562
|
+
|
|
563
|
+
downstreamRuntimeNeeds: [
|
|
564
|
+
{
|
|
565
|
+
needId: 'runtime.origin',
|
|
566
|
+
description: '真实运行环境 origin 需要由运行配置或人工交互提供。',
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
needId: 'dictionary.placecategory.firstEffectiveOption',
|
|
570
|
+
description: '场所分类字典值来自运行态代码项;首个有效值需要打开真实系统读取。',
|
|
571
|
+
relatedDataModel: 'placecategoryModel',
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
needId: 'dictionary.status.firstEffectiveOption',
|
|
575
|
+
description: '状态字典值来自运行态代码项;首个有效值需要打开真实系统读取。',
|
|
576
|
+
relatedDataModel: 'statusModel',
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
needId: 'dictionary.windowtype.firstEffectiveOption',
|
|
580
|
+
description: '窗口类型字典值来自运行态代码项;窗口子表测试时需要打开真实系统读取。',
|
|
581
|
+
relatedDataModel: 'windowtypeModel',
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
needId: 'locator.finalPlaywrightLocator',
|
|
585
|
+
description: 'code_list.json5 只提供 HTML/MiniUI 元素线索;最终 Playwright locator 由 contract 生成器和运行态验证确认。',
|
|
586
|
+
},
|
|
587
|
+
],
|
|
588
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "code-list-generate",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 0,
|
|
6
|
+
"prompt": "我们是上游研发,刚完成需求 REQ0011「场所窗口信息管理及各端统计检索查看」的出码,需要把出码总结交给下游测试团队,下游用它生成自动化测试用例。下游要求的输入文件是 code_list.json5。\n\n源码根:<FIXTURE>/zwplace-req(前端页面在 src/main/webapp/perpage/zwplace/,后端在 src/main/java/com/epoint/zwplace/)\n需求文档(PRD):<FIXTURE>/zwplace-req/docs/场所窗口信息管理及各端统计检索查看_prd.md\n\n请通读源码和 PRD,生成 code_list.json5 写到:<OUTPUTS>/code_list.json5",
|
|
7
|
+
"expected_output": "符合 ep-stage-code-list/v1-draft 的 code_list.json5:module=zwplace;pages 覆盖 list/add/edit/detail 四角色;list 页按钮正确分类 create/delete/export/custom;queryFields 区分输入框与下拉;add 页含窗口信息子表;businessRules 含删除阻断规则(assertionHint 含『不可删除』);entities 覆盖 gxh_zw_place/gxh_zw_window;无凭据;路径可解析",
|
|
8
|
+
"files": [],
|
|
9
|
+
"assertions": [
|
|
10
|
+
"产物文件存在且 JSON5 可解析",
|
|
11
|
+
"四大必填字段齐全(module/moduleName/systems/pages)",
|
|
12
|
+
"module 标识正确(zwplace)",
|
|
13
|
+
"pages 覆盖 list/add/edit/detail 四角色",
|
|
14
|
+
"list 页按钮分类:含 create/delete/export",
|
|
15
|
+
"「同步窗口管理系统」分类为 custom",
|
|
16
|
+
"queryFields ≥3 且输入框/下拉区分正确(场所名称=textbox;场所分类/状态=combobox)",
|
|
17
|
+
"add 页含窗口信息子表(≥2 列且含 windowname 字段)",
|
|
18
|
+
"businessRules 含删除阻断规则且提示含「不可删除」",
|
|
19
|
+
"entities 覆盖 gxh_zw_place 与 gxh_zw_window",
|
|
20
|
+
"dataModels 区分 dictionary_runtime 与 static_options",
|
|
21
|
+
"edit 页「保存并关闭」action=update 且 backendMethod=save",
|
|
22
|
+
"sourceRoot.root 提供且 pages[].path 全部可解析",
|
|
23
|
+
"无明文凭据(password 类字段全部留空)",
|
|
24
|
+
"关键事实带 evidence 溯源(pages 或 businessRules)"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": 1,
|
|
29
|
+
"prompt": "我们是上游研发,刚完成「方案资源管理」模块(英文标识 schemeresource)的出码,需要把出码总结交给下游测试团队生成自动化测试用例,输入文件是 code_list.json5。\n\n源码根:<FIXTURE>/schemeresource-req(前端页面在 src/main/webapp/perpage/schemeresource/,后端在 src/main/java/com/epoint/schemeresource/)\n\n需求文档还没整理好,先按源码出一份。请生成 code_list.json5 写到:<OUTPUTS>/code_list.json5",
|
|
30
|
+
"expected_output": "符合契约的 code_list.json5:module=schemeresource;pages 覆盖 list/add/edit/detail;list 页按钮含 create/delete/export;queryFields 从源码提取(名称/类型/简介);无 PRD 时 requirement 事实不编造(留空、省略或标注待补),运行态不可知的值进 downstreamRuntimeNeeds;无凭据;路径可解析",
|
|
31
|
+
"files": [],
|
|
32
|
+
"assertions": [
|
|
33
|
+
"产物文件存在且 JSON5 可解析",
|
|
34
|
+
"四大必填字段齐全(module/moduleName/systems/pages)",
|
|
35
|
+
"module 标识正确(schemeresource)",
|
|
36
|
+
"pages 覆盖 list/add/edit/detail 四角色",
|
|
37
|
+
"list 页按钮含 create/delete/export 分类",
|
|
38
|
+
"list 页 queryFields ≥2 且 label 来自源码(名称/类型/简介)",
|
|
39
|
+
"sourceRoot.root 提供且 pages[].path 全部可解析",
|
|
40
|
+
"无明文凭据(password 类字段全部留空)",
|
|
41
|
+
"关键事实带 evidence 溯源(pages 或 businessRules)",
|
|
42
|
+
"无 PRD 时不编造需求事实(qualitative:requirement 节缺失/留空/标注待补均为通过;编造具体需求ID、章节 evidence 为不通过)",
|
|
43
|
+
"运行态不可知的值不捏造为静态事实(qualitative:字典选项、真实 origin 等应留空、省略或登记到 downstreamRuntimeNeeds)"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|