@givolt/i3-composer-agent 2.3.1 → 2.3.3

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.
Files changed (173) hide show
  1. package/.agents/plugins/marketplace.json +1 -1
  2. package/.claude/commands/i3-prototype.md +5 -7
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/.claude-plugin/plugin.json +1 -1
  5. package/.codex-plugin/plugin.json +1 -1
  6. package/.gemini/commands/i3-prototype.toml +5 -7
  7. package/README.md +16 -7
  8. package/bin/agent-targets.json +4 -2
  9. package/bin/i3-composer-agent.cjs +74 -7
  10. package/bin/install.cjs +16 -1
  11. package/bin/native-layout.cjs +1 -1
  12. package/bin/native-migration.cjs +27 -3
  13. package/bin/tool-selector.cjs +24 -7
  14. package/bin/wizard.cjs +89 -15
  15. package/commands/i3-prototype.toml +5 -7
  16. package/docs/codebuddy-setup.md +91 -3
  17. package/docs/codex-setup.md +6 -0
  18. package/docs/other-hosts.md +1 -1
  19. package/docs/ui-prototype-native/MAIN-SESSION-REPORT.md +66 -0
  20. package/docs/ui-prototype-native/USAGE.md +93 -0
  21. package/docs/workbuddy-setup.md +6 -0
  22. package/evals/cases/i3-frontend-ui-engineering.json +16 -0
  23. package/evals/cases/i3-ui-prototype.json +109 -0
  24. package/evals/cases/i3-using-agent-skills.json +28 -0
  25. package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.css +3 -0
  26. package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.js +8 -0
  27. package/evals/fixtures/i3-ui-prototype/admin-list/capability-definition.json +67 -0
  28. package/evals/fixtures/i3-ui-prototype/admin-list/index.html +89 -0
  29. package/evals/fixtures/i3-ui-prototype/admin-list/readme.md +52 -0
  30. package/evals/fixtures/i3-ui-prototype/admin-list/template.json +8 -0
  31. package/evals/zh-CN/cases/i3-frontend-ui-engineering.json +17 -0
  32. package/evals/zh-CN/cases/i3-ui-prototype.json +115 -0
  33. package/evals/zh-CN/cases/i3-using-agent-skills.json +30 -0
  34. package/hooks/codebuddy-upstream.cjs +93 -0
  35. package/hooks/i3-prototype.cjs +12 -0
  36. package/hooks/manage.cjs +162 -0
  37. package/package.json +61 -1
  38. package/plugin.json +1 -1
  39. package/scripts/design-provider-test.js +7 -0
  40. package/scripts/enterprise-template-test.js +27 -1
  41. package/scripts/lib/prototype-fixture.cjs +17 -0
  42. package/scripts/prototype-cache-test.js +55 -0
  43. package/scripts/prototype-generation-entry-test.js +6 -0
  44. package/scripts/prototype-generation-evidence-test.js +10 -0
  45. package/scripts/prototype-generation-native-test.js +78 -0
  46. package/scripts/prototype-generation-test.js +99 -0
  47. package/scripts/prototype-inventory-test.js +43 -0
  48. package/scripts/prototype-locations-test.js +79 -0
  49. package/scripts/prototype-project-test.js +183 -0
  50. package/scripts/ui-prototype-codebuddy-hook-test.js +106 -0
  51. package/scripts/ui-prototype-content-test.js +123 -0
  52. package/scripts/ui-prototype-dependencies-test.js +213 -0
  53. package/scripts/ui-prototype-devtools-test.js +53 -0
  54. package/scripts/ui-prototype-execution-evidence-test.js +62 -0
  55. package/scripts/ui-prototype-execution-gates-test.js +66 -0
  56. package/scripts/ui-prototype-execution-policy-test.js +42 -0
  57. package/scripts/ui-prototype-execution-runtime-test.js +27 -0
  58. package/scripts/ui-prototype-ide-source-test.js +73 -0
  59. package/scripts/ui-prototype-native-test.js +504 -0
  60. package/scripts/ui-prototype-registration-test.js +53 -0
  61. package/scripts/ui-prototype-template-test.js +261 -0
  62. package/scripts/ui-prototype-test.js +10 -0
  63. package/scripts/ui-prototype-transcript-auto-test.js +67 -0
  64. package/skills/i3-frontend-ui-engineering/SKILL.md +1 -1
  65. package/skills/i3-incremental-implementation/SKILL.md +1 -1
  66. package/skills/i3-ui-prototype/SKILL.md +158 -19
  67. package/skills/i3-ui-prototype/assets/capabilities/generation.json +833 -0
  68. package/skills/i3-ui-prototype/assets/capabilities/management.json +294 -0
  69. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/acceptance.json +51 -0
  70. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/component-map.json +13 -0
  71. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/generation-component-map.json +300 -0
  72. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/index.html +11 -0
  73. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package-lock.json +2298 -0
  74. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package.json +22 -0
  75. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/public/prototype-config.json +6 -0
  76. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/App.vue +136 -0
  77. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/components/DeviceEditor.vue +111 -0
  78. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/config.ts +19 -0
  79. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/content.ts +28 -0
  80. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/devices.ts +50 -0
  81. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/theme.ts +25 -0
  82. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/main.ts +18 -0
  83. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/style.css +50 -0
  84. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/useDevices.ts +66 -0
  85. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/devices.test.ts +44 -0
  86. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/theme.test.ts +26 -0
  87. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tsconfig.json +15 -0
  88. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/vite.config.ts +4 -0
  89. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/profile.json +174 -0
  90. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/readme.md +61 -0
  91. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/index.html +11 -0
  92. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package-lock.json +2298 -0
  93. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package.json +22 -0
  94. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/public/prototype-config.json +21 -0
  95. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/App.vue +62 -0
  96. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/PrototypeShell.vue +59 -0
  97. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/config.ts +23 -0
  98. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/presentation.ts +29 -0
  99. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/theme.ts +25 -0
  100. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/main.ts +18 -0
  101. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/style.css +26 -0
  102. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/presentation.test.ts +23 -0
  103. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/theme.test.ts +26 -0
  104. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tsconfig.json +15 -0
  105. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/vite.config.ts +4 -0
  106. package/skills/i3-ui-prototype/assets/hosts/codebuddy/profile.json +13 -0
  107. package/skills/i3-ui-prototype/assets/optional-skills/host-targets.json +739 -0
  108. package/skills/i3-ui-prototype/assets/optional-skills/sources.json +27 -0
  109. package/skills/i3-ui-prototype/assets/templates/catalog.js +149 -0
  110. package/skills/i3-ui-prototype/assets/templates/catalog.json +2 -1
  111. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/capability-definition.json +294 -0
  112. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/component-inventory.json +707 -0
  113. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/generation.json +49 -0
  114. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/index.html +507 -2
  115. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline-build.json +265 -0
  116. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline.js +8888 -0
  117. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template-inventory.json +28791 -0
  118. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template.json +9 -0
  119. package/skills/i3-ui-prototype/assets/templates/gallery/index.html +5 -5
  120. package/skills/i3-ui-prototype/assets/templates/generation-options.js +42 -0
  121. package/skills/i3-ui-prototype/assets/templates/index.html +3 -0
  122. package/skills/i3-ui-prototype/assets/templates/presentation.html +17 -0
  123. package/skills/i3-ui-prototype/references/artifact-contract.md +26 -1
  124. package/skills/i3-ui-prototype/references/content-template.md +81 -0
  125. package/skills/i3-ui-prototype/references/enterprise-admin.md +6 -0
  126. package/skills/i3-ui-prototype/references/entry-contract.md +71 -0
  127. package/skills/i3-ui-prototype/references/execution-evidence.md +66 -0
  128. package/skills/i3-ui-prototype/references/expert-adapter.md +33 -5
  129. package/skills/i3-ui-prototype/references/framework-contract.md +76 -0
  130. package/skills/i3-ui-prototype/references/generation-contract.md +122 -0
  131. package/skills/i3-ui-prototype/references/interaction-acceptance.md +169 -0
  132. package/skills/i3-ui-prototype/references/legacy-native.md +58 -0
  133. package/skills/i3-ui-prototype/references/optional-skills.md +63 -0
  134. package/skills/i3-ui-prototype/references/project-layout.md +92 -0
  135. package/skills/i3-ui-prototype/references/template-adapters.md +7 -1
  136. package/skills/i3-ui-prototype/references/workflow-contract.md +62 -4
  137. package/skills/i3-ui-prototype/scripts/adapters/easel-html.cjs +1 -1
  138. package/skills/i3-ui-prototype/scripts/browser-workspace.cjs +72 -0
  139. package/skills/i3-ui-prototype/scripts/codebuddy-context.cjs +75 -0
  140. package/skills/i3-ui-prototype/scripts/codebuddy-hook.cjs +157 -0
  141. package/skills/i3-ui-prototype/scripts/codebuddy-ide-source.cjs +69 -0
  142. package/skills/i3-ui-prototype/scripts/codebuddy-registration.cjs +123 -0
  143. package/skills/i3-ui-prototype/scripts/content-template.cjs +98 -0
  144. package/skills/i3-ui-prototype/scripts/enterprise-template.cjs +13 -6
  145. package/skills/i3-ui-prototype/scripts/execution-assertions.cjs +43 -0
  146. package/skills/i3-ui-prototype/scripts/execution-evidence.cjs +146 -0
  147. package/skills/i3-ui-prototype/scripts/execution-gates.cjs +147 -0
  148. package/skills/i3-ui-prototype/scripts/execution-policy.cjs +41 -0
  149. package/skills/i3-ui-prototype/scripts/execution-runtime.cjs +60 -0
  150. package/skills/i3-ui-prototype/scripts/generation-assets.cjs +18 -0
  151. package/skills/i3-ui-prototype/scripts/generation-contract.cjs +214 -0
  152. package/skills/i3-ui-prototype/scripts/generation-evidence.cjs +50 -0
  153. package/skills/i3-ui-prototype/scripts/generation-replan.cjs +34 -0
  154. package/skills/i3-ui-prototype/scripts/hosts/codebuddy.cjs +16 -0
  155. package/skills/i3-ui-prototype/scripts/manage-baseline.cjs +1 -1
  156. package/skills/i3-ui-prototype/scripts/native-browser.cjs +785 -0
  157. package/skills/i3-ui-prototype/scripts/native-build.cjs +91 -0
  158. package/skills/i3-ui-prototype/scripts/native-delivery.cjs +103 -0
  159. package/skills/i3-ui-prototype/scripts/native-devtools.cjs +92 -0
  160. package/skills/i3-ui-prototype/scripts/native-files.cjs +35 -0
  161. package/skills/i3-ui-prototype/scripts/native-pilot-lib.cjs +292 -0
  162. package/skills/i3-ui-prototype/scripts/native-pilot.cjs +50 -0
  163. package/skills/i3-ui-prototype/scripts/optional-skill-install.cjs +203 -0
  164. package/skills/i3-ui-prototype/scripts/project-registry.cjs +126 -0
  165. package/skills/i3-ui-prototype/scripts/prototype-dependencies.cjs +81 -0
  166. package/skills/i3-ui-prototype/scripts/prototype-hooks.cjs +87 -0
  167. package/skills/i3-ui-prototype/scripts/prototype-lib.cjs +31 -13
  168. package/skills/i3-ui-prototype/scripts/prototype-locations.cjs +69 -0
  169. package/skills/i3-ui-prototype/scripts/sync-template.cjs +19 -0
  170. package/skills/i3-ui-prototype/scripts/template-contract.cjs +407 -0
  171. package/skills/i3-ui-prototype/scripts/template-inventory.cjs +78 -0
  172. package/skills/i3-ui-prototype/scripts/validate-result.cjs +117 -0
  173. package/skills/i3-using-agent-skills/SKILL.md +2 -5
@@ -0,0 +1,833 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "version": "1.0.0",
4
+ "core": [
5
+ "layout",
6
+ "navigation",
7
+ "accessibility",
8
+ "theme",
9
+ "visual",
10
+ "interaction"
11
+ ],
12
+ "capabilities": {
13
+ "layout": {
14
+ "id": "layout",
15
+ "title": "布局与响应式",
16
+ "scenarios": [
17
+ {
18
+ "id": "structure",
19
+ "steps": [
20
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
21
+ ],
22
+ "expected": "所选导航与内容布局实际呈现,区域顺序和滚动边界与固定选择一致"
23
+ },
24
+ {
25
+ "id": "responsive",
26
+ "steps": [
27
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
28
+ ],
29
+ "expected": "桌面、平板与窄屏主要内容和操作可达,不通过隐藏必需字段适配"
30
+ }
31
+ ],
32
+ "parameters": {},
33
+ "defaults": {}
34
+ },
35
+ "navigation": {
36
+ "id": "navigation",
37
+ "title": "导航与页面上下文",
38
+ "scenarios": [
39
+ {
40
+ "id": "routes",
41
+ "steps": [
42
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
43
+ ],
44
+ "expected": "每个声明页面可达,当前项、返回、深链接及不存在页面状态正确"
45
+ },
46
+ {
47
+ "id": "context",
48
+ "steps": [
49
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
50
+ ],
51
+ "expected": "按固定规则检查折叠、移动菜单、返回后的筛选和页码状态"
52
+ }
53
+ ],
54
+ "parameters": {},
55
+ "defaults": {}
56
+ },
57
+ "accessibility": {
58
+ "id": "accessibility",
59
+ "title": "键盘与可读性",
60
+ "scenarios": [
61
+ {
62
+ "id": "keyboard",
63
+ "steps": [
64
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
65
+ ],
66
+ "expected": "名称、标签、Tab顺序、焦点可见及主要操作键盘可达"
67
+ },
68
+ {
69
+ "id": "contrast-overflow",
70
+ "steps": [
71
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
72
+ ],
73
+ "expected": "实际文字与浮层可读;窄屏无阻断性裁剪,减少动效仍可操作"
74
+ }
75
+ ],
76
+ "parameters": {},
77
+ "defaults": {}
78
+ },
79
+ "theme": {
80
+ "id": "theme",
81
+ "title": "四种命名主题",
82
+ "scenarios": [
83
+ {
84
+ "id": "switch",
85
+ "steps": [
86
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
87
+ ],
88
+ "expected": "明亮、暗黑、清新、科技均实际覆盖组件、浮层与外壳,默认明亮且切换保留业务状态"
89
+ },
90
+ {
91
+ "id": "persistence",
92
+ "steps": [
93
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
94
+ ],
95
+ "expected": "刷新恢复、非法偏好和拒绝存储安全回退,实例间隔离"
96
+ }
97
+ ],
98
+ "parameters": {},
99
+ "defaults": {}
100
+ },
101
+ "visual": {
102
+ "id": "visual",
103
+ "title": "客户视觉选择",
104
+ "scenarios": [
105
+ {
106
+ "id": "profile",
107
+ "steps": [
108
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
109
+ ],
110
+ "expected": "实际风格、间距密度、圆角、边框与阴影符合所选预设,未覆盖框架和客户明确要求"
111
+ }
112
+ ],
113
+ "parameters": {},
114
+ "defaults": {}
115
+ },
116
+ "interaction": {
117
+ "id": "interaction",
118
+ "title": "操作有效与状态保护",
119
+ "scenarios": [
120
+ {
121
+ "id": "actions",
122
+ "steps": [
123
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
124
+ ],
125
+ "expected": "每个声明业务操作有有效结果;不可用操作说明原因,忙碌时防止重复提交"
126
+ },
127
+ {
128
+ "id": "failure",
129
+ "steps": [
130
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
131
+ ],
132
+ "expected": "操作失败后对象和输入保留,可按规定重试,不用提示文字冒充操作完成"
133
+ }
134
+ ],
135
+ "parameters": {},
136
+ "defaults": {}
137
+ },
138
+ "collection": {
139
+ "id": "collection",
140
+ "title": "列表记录与行操作",
141
+ "scenarios": [
142
+ {
143
+ "id": "identity",
144
+ "steps": [
145
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
146
+ ],
147
+ "expected": "记录稳定身份、总数、可见行与行操作对象对应,不串记录"
148
+ },
149
+ {
150
+ "id": "actions",
151
+ "steps": [
152
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
153
+ ],
154
+ "expected": "逐项检查列表工具栏和行操作,不以一个按钮代替全部操作"
155
+ }
156
+ ],
157
+ "parameters": {},
158
+ "defaults": {}
159
+ },
160
+ "filter": {
161
+ "id": "filter",
162
+ "title": "筛选与重置",
163
+ "scenarios": [
164
+ {
165
+ "id": "query-reset",
166
+ "steps": [
167
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
168
+ ],
169
+ "expected": "命中、无结果、重置正确;页码与选择按合同重置"
170
+ }
171
+ ],
172
+ "parameters": {
173
+ "resetPage": {
174
+ "enum": [
175
+ true
176
+ ]
177
+ },
178
+ "clearSelection": {
179
+ "enum": [
180
+ true
181
+ ]
182
+ }
183
+ },
184
+ "defaults": {
185
+ "resetPage": true,
186
+ "clearSelection": true
187
+ }
188
+ },
189
+ "selection": {
190
+ "id": "selection",
191
+ "title": "选择与批量对象",
192
+ "scenarios": [
193
+ {
194
+ "id": "selection",
195
+ "steps": [
196
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
197
+ ],
198
+ "expected": "当前页单选、全选、半选及不可选记录正确"
199
+ },
200
+ {
201
+ "id": "change-clear",
202
+ "steps": [
203
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
204
+ ],
205
+ "expected": "筛选、翻页或容量变化按约定清空选择"
206
+ }
207
+ ],
208
+ "parameters": {
209
+ "strategy": {
210
+ "enum": [
211
+ "current-page-clear-on-change"
212
+ ]
213
+ }
214
+ },
215
+ "defaults": {
216
+ "strategy": "current-page-clear-on-change"
217
+ }
218
+ },
219
+ "pagination": {
220
+ "id": "pagination",
221
+ "title": "分页与容量",
222
+ "scenarios": [
223
+ {
224
+ "id": "pages",
225
+ "steps": [
226
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
227
+ ],
228
+ "expected": "默认容量覆盖首中末页,总数与实际行一致"
229
+ },
230
+ {
231
+ "id": "page-size",
232
+ "steps": [
233
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
234
+ ],
235
+ "expected": "逐一切换固定选项、恢复默认,页码及选择符合约定"
236
+ }
237
+ ],
238
+ "parameters": {
239
+ "mode": {
240
+ "enum": [
241
+ "fixed",
242
+ "adjustable"
243
+ ]
244
+ },
245
+ "fixedPageSize": {
246
+ "integer": 1
247
+ },
248
+ "defaultPageSize": {
249
+ "integer": 1
250
+ },
251
+ "pageSizeOptions": {
252
+ "positiveIntegers": true
253
+ },
254
+ "minimumTestPages": {
255
+ "integer": 3
256
+ }
257
+ },
258
+ "defaults": {
259
+ "mode": "adjustable",
260
+ "defaultPageSize": 10,
261
+ "pageSizeOptions": [
262
+ 10,
263
+ 20,
264
+ 50
265
+ ],
266
+ "minimumTestPages": 3
267
+ }
268
+ },
269
+ "bulk": {
270
+ "id": "bulk",
271
+ "title": "批量操作",
272
+ "scenarios": [
273
+ {
274
+ "id": "targets",
275
+ "steps": [
276
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
277
+ ],
278
+ "expected": "无选择不可提交,只影响选中身份;成功范围与失败策略来自本次PRD"
279
+ }
280
+ ],
281
+ "parameters": {
282
+ "target": {
283
+ "enum": [
284
+ "selected-only"
285
+ ]
286
+ },
287
+ "resultPolicy": {
288
+ "enum": [
289
+ "all-or-nothing",
290
+ "partial"
291
+ ]
292
+ }
293
+ },
294
+ "defaults": {
295
+ "target": "selected-only"
296
+ }
297
+ },
298
+ "feedback": {
299
+ "id": "feedback",
300
+ "title": "加载空失败与恢复",
301
+ "scenarios": [
302
+ {
303
+ "id": "states",
304
+ "steps": [
305
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
306
+ ],
307
+ "expected": "逐区域触发加载、无数据、筛选无结果、失败和恢复;不存在记录与权限限制有明确状态"
308
+ }
309
+ ],
310
+ "parameters": {},
311
+ "defaults": {}
312
+ },
313
+ "columns": {
314
+ "id": "columns",
315
+ "title": "列设置与宽表",
316
+ "scenarios": [
317
+ {
318
+ "id": "visibility-order",
319
+ "steps": [
320
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
321
+ ],
322
+ "expected": "显示/隐藏、上移/下移、锁定列和恢复默认均生效"
323
+ },
324
+ {
325
+ "id": "persistence-scroll",
326
+ "steps": [
327
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
328
+ ],
329
+ "expected": "刷新恢复约定列偏好,存储失败仍可本轮操作,宽表可滚动且操作列可达"
330
+ }
331
+ ],
332
+ "parameters": {
333
+ "lockedKeys": {
334
+ "strings": true
335
+ },
336
+ "persist": {
337
+ "boolean": true
338
+ },
339
+ "horizontalScroll": {
340
+ "enum": [
341
+ true
342
+ ]
343
+ }
344
+ },
345
+ "defaults": {
346
+ "lockedKeys": [],
347
+ "persist": true,
348
+ "horizontalScroll": true
349
+ }
350
+ },
351
+ "deletion": {
352
+ "id": "deletion",
353
+ "title": "删除与保护",
354
+ "scenarios": [
355
+ {
356
+ "id": "preview-confirm",
357
+ "steps": [
358
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
359
+ ],
360
+ "expected": "核对对象身份、数量、可删除与受阻原因,取消不改变数据"
361
+ },
362
+ {
363
+ "id": "retry-conflict",
364
+ "steps": [
365
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
366
+ ],
367
+ "expected": "失败保留选择;记录变化重新核对,结果与本次PRD的整批/部分成功策略一致"
368
+ }
369
+ ],
370
+ "parameters": {
371
+ "resultPolicy": {
372
+ "enum": [
373
+ "all-or-nothing",
374
+ "partial"
375
+ ]
376
+ },
377
+ "versionCheck": {
378
+ "enum": [
379
+ true
380
+ ]
381
+ },
382
+ "confirmation": {
383
+ "enum": [
384
+ true
385
+ ]
386
+ }
387
+ },
388
+ "defaults": {
389
+ "versionCheck": true,
390
+ "confirmation": true
391
+ }
392
+ },
393
+ "edit": {
394
+ "id": "edit",
395
+ "title": "表单与字段联动",
396
+ "scenarios": [
397
+ {
398
+ "id": "fields",
399
+ "steps": [
400
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
401
+ ],
402
+ "expected": "字段类型、必填、格式、长度、联动和只读状态逐项对应需求"
403
+ },
404
+ {
405
+ "id": "save-retry",
406
+ "steps": [
407
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
408
+ ],
409
+ "expected": "校验失败定位字段,提交失败保留输入,再试成功更新正确记录"
410
+ }
411
+ ],
412
+ "parameters": {
413
+ "presentation": {
414
+ "enum": [
415
+ "drawer",
416
+ "modal",
417
+ "page"
418
+ ]
419
+ },
420
+ "preserveOnFailure": {
421
+ "enum": [
422
+ true
423
+ ]
424
+ }
425
+ },
426
+ "defaults": {
427
+ "presentation": "drawer",
428
+ "preserveOnFailure": true
429
+ }
430
+ },
431
+ "dirty": {
432
+ "id": "dirty",
433
+ "title": "未保存修改保护",
434
+ "scenarios": [
435
+ {
436
+ "id": "leave-close",
437
+ "steps": [
438
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
439
+ ],
440
+ "expected": "关闭、返回、切页和身份变化按约定保留/确认丢弃,不静默丢失输入"
441
+ },
442
+ {
443
+ "id": "resume",
444
+ "steps": [
445
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
446
+ ],
447
+ "expected": "需要草稿恢复时验证恢复与版本;不需要时明确丢弃策略"
448
+ }
449
+ ],
450
+ "parameters": {
451
+ "closePolicy": {
452
+ "enum": [
453
+ "confirm-discard",
454
+ "save-draft"
455
+ ]
456
+ },
457
+ "restoreDraft": {
458
+ "boolean": true
459
+ }
460
+ },
461
+ "defaults": {
462
+ "closePolicy": "confirm-discard",
463
+ "restoreDraft": false
464
+ }
465
+ },
466
+ "dialog": {
467
+ "id": "dialog",
468
+ "title": "抽屉弹窗与焦点",
469
+ "scenarios": [
470
+ {
471
+ "id": "lifetime",
472
+ "steps": [
473
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
474
+ ],
475
+ "expected": "实际打开与关闭的生命周期完整,抽屉进出中间态存在,未提前卸载"
476
+ },
477
+ {
478
+ "id": "focus-scroll",
479
+ "steps": [
480
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
481
+ ],
482
+ "expected": "遮罩、Escape、取消、背景滚动与焦点恢复符合固定呈现参数,嵌套弹层不串状态"
483
+ }
484
+ ],
485
+ "parameters": {
486
+ "presentation": {
487
+ "enum": [
488
+ "drawer",
489
+ "modal"
490
+ ]
491
+ },
492
+ "maskBlur": {
493
+ "enum": [
494
+ true
495
+ ]
496
+ },
497
+ "closePolicy": {
498
+ "enum": [
499
+ "confirm-dirty",
500
+ "explicit-cancel"
501
+ ]
502
+ }
503
+ },
504
+ "defaults": {
505
+ "presentation": "drawer",
506
+ "maskBlur": true,
507
+ "closePolicy": "confirm-dirty"
508
+ }
509
+ },
510
+ "menu": {
511
+ "id": "menu",
512
+ "title": "下拉与更多操作",
513
+ "scenarios": [
514
+ {
515
+ "id": "open-actions",
516
+ "steps": [
517
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
518
+ ],
519
+ "expected": "菜单键盘开关和焦点正确,逐操作核对对象、权限与结果"
520
+ }
521
+ ],
522
+ "parameters": {},
523
+ "defaults": {}
524
+ },
525
+ "detail": {
526
+ "id": "detail",
527
+ "title": "详情分组Tab与历史",
528
+ "scenarios": [
529
+ {
530
+ "id": "identity",
531
+ "steps": [
532
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
533
+ ],
534
+ "expected": "详情对象、分组、状态与列表对应"
535
+ },
536
+ {
537
+ "id": "tabs-return",
538
+ "steps": [
539
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
540
+ ],
541
+ "expected": "采用Tab/历史时切换和返回保留约定上下文,未声明的示例业务不自动移植"
542
+ }
543
+ ],
544
+ "parameters": {},
545
+ "defaults": {}
546
+ },
547
+ "hierarchy": {
548
+ "id": "hierarchy",
549
+ "title": "层级与树联动",
550
+ "scenarios": [
551
+ {
552
+ "id": "expand",
553
+ "steps": [
554
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
555
+ ],
556
+ "expected": "逐层展开/收起,路径和节点身份稳定,无数据和不可用节点明确"
557
+ },
558
+ {
559
+ "id": "selection-link",
560
+ "steps": [
561
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
562
+ ],
563
+ "expected": "父子选择策略、半选、搜索和关联列表按声明类型实测,树表展开不丢行或误选"
564
+ }
565
+ ],
566
+ "parameters": {
567
+ "kind": {
568
+ "enum": [
569
+ "filter-tree",
570
+ "tree-table",
571
+ "permission-tree"
572
+ ]
573
+ },
574
+ "selectionPolicy": {
575
+ "enum": [
576
+ "single",
577
+ "independent",
578
+ "cascade"
579
+ ]
580
+ },
581
+ "idField": {
582
+ "string": true
583
+ },
584
+ "parentField": {
585
+ "string": true
586
+ },
587
+ "childrenField": {
588
+ "string": true
589
+ }
590
+ },
591
+ "defaults": {
592
+ "kind": "filter-tree",
593
+ "selectionPolicy": "single"
594
+ }
595
+ },
596
+ "wizard": {
597
+ "id": "wizard",
598
+ "title": "分步向导",
599
+ "scenarios": [
600
+ {
601
+ "id": "validation",
602
+ "steps": [
603
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
604
+ ],
605
+ "expected": "每步校验,非法输入不能越过;前后切换保留正确数据"
606
+ },
607
+ {
608
+ "id": "review-submit",
609
+ "steps": [
610
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
611
+ ],
612
+ "expected": "最终复核与提交对象一致,失败保留可重试,关闭和继续符合草稿策略"
613
+ }
614
+ ],
615
+ "parameters": {},
616
+ "defaults": {}
617
+ },
618
+ "canvas": {
619
+ "id": "canvas",
620
+ "title": "流程画布及属性",
621
+ "scenarios": [
622
+ {
623
+ "id": "select-edit",
624
+ "steps": [
625
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
626
+ ],
627
+ "expected": "节点选择与属性联动,移动和键盘操作作用于同一节点"
628
+ },
629
+ {
630
+ "id": "zoom-fit",
631
+ "steps": [
632
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
633
+ ],
634
+ "expected": "缩放、适合画布、滚动正确,拖动坐标随缩放换算"
635
+ },
636
+ {
637
+ "id": "edges-validation",
638
+ "steps": [
639
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
640
+ ],
641
+ "expected": "新增删除节点与连线、连线规则及校验反馈正确"
642
+ },
643
+ {
644
+ "id": "readonly-dirty",
645
+ "steps": [
646
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
647
+ ],
648
+ "expected": "只读不能编辑,未保存保护与保存结果符合本次业务状态"
649
+ }
650
+ ],
651
+ "parameters": {},
652
+ "defaults": {}
653
+ },
654
+ "authorization": {
655
+ "id": "authorization",
656
+ "title": "权限与数据范围",
657
+ "scenarios": [
658
+ {
659
+ "id": "availability",
660
+ "steps": [
661
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
662
+ ],
663
+ "expected": "菜单、按钮、字段的隐藏/禁用和原因符合实际PRD角色"
664
+ },
665
+ {
666
+ "id": "scope-route",
667
+ "steps": [
668
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
669
+ ],
670
+ "expected": "切换范围及直达路由按模拟权限合同处理;不把前端演示称为服务端授权"
671
+ }
672
+ ],
673
+ "parameters": {},
674
+ "defaults": {}
675
+ },
676
+ "lifecycle": {
677
+ "id": "lifecycle",
678
+ "title": "状态版本与进度",
679
+ "scenarios": [
680
+ {
681
+ "id": "transitions",
682
+ "steps": [
683
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
684
+ ],
685
+ "expected": "允许操作随业务状态变化,拒绝无效转移;版本冲突和历史展示有依据"
686
+ }
687
+ ],
688
+ "parameters": {},
689
+ "defaults": {}
690
+ },
691
+ "persistence": {
692
+ "id": "persistence",
693
+ "title": "偏好与模拟数据隔离",
694
+ "scenarios": [
695
+ {
696
+ "id": "isolation",
697
+ "steps": [
698
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
699
+ ],
700
+ "expected": "本次实例、用户、范围和页面的偏好或草稿按约定隔离"
701
+ },
702
+ {
703
+ "id": "storage-failure",
704
+ "steps": [
705
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
706
+ ],
707
+ "expected": "坏缓存与拒存储有恢复,不静默覆盖其他实例"
708
+ }
709
+ ],
710
+ "parameters": {
711
+ "scope": {
712
+ "enum": [
713
+ "instance",
714
+ "user-page",
715
+ "user-scope-page"
716
+ ]
717
+ }
718
+ },
719
+ "defaults": {}
720
+ },
721
+ "relation": {
722
+ "id": "relation",
723
+ "title": "关联对象选择",
724
+ "scenarios": [
725
+ {
726
+ "id": "pick-return",
727
+ "steps": [
728
+ "在当前固定构建中操作本绑定实例,记录操作前后状态与实际工具证据。"
729
+ ],
730
+ "expected": "检索、范围过滤、选择、取消和回填对象一致"
731
+ }
732
+ ],
733
+ "parameters": {
734
+ "multiple": {
735
+ "boolean": true
736
+ },
737
+ "scopeField": {
738
+ "string": true
739
+ }
740
+ },
741
+ "defaults": {}
742
+ }
743
+ },
744
+ "patterns": {
745
+ "management-list": {
746
+ "required": [
747
+ "collection",
748
+ "filter",
749
+ "selection",
750
+ "pagination",
751
+ "bulk",
752
+ "feedback",
753
+ "columns"
754
+ ]
755
+ },
756
+ "tree-list": {
757
+ "required": [
758
+ "collection",
759
+ "filter",
760
+ "selection",
761
+ "pagination",
762
+ "bulk",
763
+ "feedback",
764
+ "columns",
765
+ "hierarchy"
766
+ ]
767
+ },
768
+ "tree-table": {
769
+ "required": [
770
+ "collection",
771
+ "filter",
772
+ "selection",
773
+ "pagination",
774
+ "bulk",
775
+ "feedback",
776
+ "columns",
777
+ "hierarchy"
778
+ ]
779
+ },
780
+ "edit-form": {
781
+ "required": [
782
+ "edit",
783
+ "dirty",
784
+ "dialog",
785
+ "feedback"
786
+ ]
787
+ },
788
+ "form-page": {
789
+ "required": [
790
+ "edit",
791
+ "dirty",
792
+ "feedback"
793
+ ]
794
+ },
795
+ "detail": {
796
+ "required": [
797
+ "detail",
798
+ "feedback"
799
+ ]
800
+ },
801
+ "wizard": {
802
+ "required": [
803
+ "wizard",
804
+ "edit",
805
+ "dirty",
806
+ "feedback"
807
+ ]
808
+ },
809
+ "workflow": {
810
+ "required": [
811
+ "canvas",
812
+ "edit",
813
+ "dirty",
814
+ "feedback"
815
+ ]
816
+ },
817
+ "permissions": {
818
+ "required": [
819
+ "authorization",
820
+ "hierarchy",
821
+ "edit",
822
+ "dirty",
823
+ "feedback"
824
+ ]
825
+ },
826
+ "content": {
827
+ "required": [
828
+ "detail",
829
+ "feedback"
830
+ ]
831
+ }
832
+ }
833
+ }