@teamix-evo/skills 0.4.0 → 0.6.0

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 (97) hide show
  1. package/README.md +7 -3
  2. package/manifest.json +3 -2
  3. package/package.json +2 -2
  4. package/src/teamix-evo-code-opentrek/SKILL.md +12 -10
  5. package/src/teamix-evo-code-opentrek/api-layering.md +8 -5
  6. package/src/teamix-evo-code-opentrek/checklist.md +2 -0
  7. package/src/teamix-evo-code-opentrek/error-and-loading.md +38 -25
  8. package/src/teamix-evo-code-opentrek/file-structure.md +63 -54
  9. package/src/teamix-evo-code-opentrek/forms-and-validation.md +14 -12
  10. package/src/teamix-evo-code-opentrek/reuse-first.md +2 -0
  11. package/src/teamix-evo-code-opentrek/routing-and-codesplit.md +23 -21
  12. package/src/teamix-evo-code-opentrek/testing.md +32 -28
  13. package/src/teamix-evo-code-uni-manager/SKILL.md +12 -10
  14. package/src/teamix-evo-code-uni-manager/api-layering.md +2 -0
  15. package/src/teamix-evo-code-uni-manager/checklist.md +2 -0
  16. package/src/teamix-evo-code-uni-manager/error-and-loading.md +3 -1
  17. package/src/teamix-evo-code-uni-manager/file-structure.md +2 -0
  18. package/src/teamix-evo-code-uni-manager/forms-and-validation.md +2 -0
  19. package/src/teamix-evo-code-uni-manager/reuse-first.md +3 -1
  20. package/src/teamix-evo-code-uni-manager/routing-and-codesplit.md +3 -1
  21. package/src/teamix-evo-code-uni-manager/testing.md +2 -0
  22. package/src/teamix-evo-design-opentrek/SKILL.md +213 -52
  23. package/src/teamix-evo-design-opentrek/boundaries.md +25 -5
  24. package/src/teamix-evo-design-opentrek/brand.md +7 -7
  25. package/src/teamix-evo-design-opentrek/checklist.md +15 -13
  26. package/src/teamix-evo-design-opentrek/components.md +89 -39
  27. package/src/teamix-evo-design-opentrek/examples/detail-ai-gateway-1.html +1069 -0
  28. package/src/teamix-evo-design-opentrek/examples/detail-ai-gateway-instance.html +941 -0
  29. package/src/teamix-evo-design-opentrek/examples/detail-page-api-doc.html +906 -0
  30. package/src/teamix-evo-design-opentrek/examples/detail-page-config.html +993 -0
  31. package/src/teamix-evo-design-opentrek/examples/detail-page-monitor.html +1339 -0
  32. package/src/teamix-evo-design-opentrek/examples/detail-page.html +933 -0
  33. package/src/teamix-evo-design-opentrek/examples/settings-page.html +1119 -0
  34. package/src/teamix-evo-design-opentrek/examples/standard-card-list.html +1094 -0
  35. package/src/teamix-evo-design-opentrek/examples/standard-table-list.html +1361 -0
  36. package/src/teamix-evo-design-opentrek/examples/wizard-form-page.html +877 -0
  37. package/src/teamix-evo-design-opentrek/flows.md +85 -12
  38. package/src/teamix-evo-design-opentrek/foundations.md +12 -9
  39. package/src/teamix-evo-design-opentrek/generation-flow.md +84 -14
  40. package/src/teamix-evo-design-opentrek/pages/detail-page/SKILL.md +260 -0
  41. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/api-doc-detail.md +163 -0
  42. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/comparison-detail.md +100 -0
  43. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/monitor-detail.md +190 -0
  44. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/resource-detail.md +148 -0
  45. package/src/teamix-evo-design-opentrek/pages/form-page/SKILL.md +362 -0
  46. package/src/teamix-evo-design-opentrek/pages/list-page/SKILL.md +286 -0
  47. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/action-column-spec.md +60 -0
  48. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/column-meta-rules.md +117 -0
  49. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/search-combo-spec.md +194 -0
  50. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/state-action-pattern.md +51 -0
  51. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/advanced-filter-list.md +94 -0
  52. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/card-list.md +558 -0
  53. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/drawer-list.md +76 -0
  54. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/expandable-list.md +70 -0
  55. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/l2-sidebar-list.md +73 -0
  56. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/standard-list.md +198 -0
  57. package/src/teamix-evo-design-opentrek/patterns/color-mapping.md +96 -0
  58. package/src/teamix-evo-design-opentrek/patterns/dashboard.md +2 -0
  59. package/src/teamix-evo-design-opentrek/patterns/detail-page.md +218 -152
  60. package/src/teamix-evo-design-opentrek/patterns/form-page.md +437 -228
  61. package/src/teamix-evo-design-opentrek/patterns/list-page.md +221 -260
  62. package/src/teamix-evo-design-opentrek/patterns/page-types.md +40 -125
  63. package/src/teamix-evo-design-opentrek/philosophy.md +7 -5
  64. package/src/teamix-evo-design-opentrek/rules/_assets/OP_AGENT RUNTIME.svg +1 -0
  65. package/src/teamix-evo-design-opentrek/rules/_assets/OP_AI GATEWAY.svg +1 -0
  66. package/src/teamix-evo-design-opentrek/rules/_assets/OP_AI STUDIO.svg +1 -0
  67. package/src/teamix-evo-design-opentrek/rules/_assets/OP_DEV-2.svg +1 -0
  68. package/src/teamix-evo-design-opentrek/rules/_assets/OP_LOGO.svg +1 -0
  69. package/src/teamix-evo-design-opentrek/rules/_assets/OP_OPS.svg +1 -0
  70. package/src/teamix-evo-design-opentrek/rules/boundaries.rules.json +3 -3
  71. package/src/teamix-evo-design-opentrek/rules/business-mapping.json +124 -0
  72. package/src/teamix-evo-design-opentrek/rules/common-components.json +924 -0
  73. package/src/teamix-evo-design-opentrek/rules/component-specs.json +1083 -0
  74. package/src/teamix-evo-design-opentrek/rules/design-tokens.css +433 -0
  75. package/src/teamix-evo-design-opentrek/rules/design-tokens.json +2798 -0
  76. package/src/teamix-evo-design-opentrek/rules/layout-rules.json +218 -0
  77. package/src/teamix-evo-design-opentrek/rules/page-flow.json +351 -0
  78. package/src/teamix-evo-design-opentrek/rules/page-frame.json +241 -0
  79. package/src/teamix-evo-design-opentrek/rules/page-header-spec.md +123 -0
  80. package/src/teamix-evo-design-opentrek/rules/page-types.json +206 -0
  81. package/src/teamix-evo-design-opentrek/rules/sidebar-spec.md +217 -0
  82. package/src/teamix-evo-design-opentrek/rules/styling.json +188 -0
  83. package/src/teamix-evo-design-opentrek/rules/token-mapping.md +284 -0
  84. package/src/teamix-evo-design-uni-manager/SKILL.md +18 -27
  85. package/src/teamix-evo-design-uni-manager/boundaries.md +7 -4
  86. package/src/teamix-evo-design-uni-manager/brand.md +1 -1
  87. package/src/teamix-evo-design-uni-manager/components.md +33 -28
  88. package/src/teamix-evo-design-uni-manager/foundations.md +24 -21
  89. package/src/teamix-evo-design-uni-manager/generation-flow.md +46 -8
  90. package/src/teamix-evo-design-uni-manager/patterns/dashboard.md +3 -1
  91. package/src/teamix-evo-design-uni-manager/patterns/detail-page.md +42 -13
  92. package/src/teamix-evo-design-uni-manager/patterns/form-page.md +67 -30
  93. package/src/teamix-evo-design-uni-manager/patterns/list-page.md +73 -40
  94. package/src/teamix-evo-design-uni-manager/patterns/page-types.md +14 -12
  95. package/src/teamix-evo-design-uni-manager/philosophy.md +4 -2
  96. package/src/teamix-evo-design-uni-manager/rules/boundaries.rules.json +3 -3
  97. package/src/teamix-evo-manage/SKILL.md +74 -66
@@ -0,0 +1,218 @@
1
+ {
2
+ "version": "1.2",
3
+ "description": "页面容器规则 — PageContainer 嵌套约束与内容组织模式。所有页面布局遵循此规范。页面框架(TopNavigation/Sidebar/Breadcrumb/返回按钮)由 page-frame.json 定义。",
4
+ "nestingRules": {
5
+ "description": "标准嵌套层次,定义页面从外到内的层级结构。",
6
+ "hierarchy": {
7
+ "layer1_layout": {
8
+ "name": "Layout",
9
+ "description": "最外层布局框架,提供 Sidebar + Header + Footer",
10
+ "required": true
11
+ },
12
+ "layer2_pageContainer": {
13
+ "name": "PageContainer",
14
+ "description": "页面级容器,面包屑、标题、操作",
15
+ "required": true
16
+ },
17
+ "layer3_contentWrapper": {
18
+ "name": "ContentWrapper",
19
+ "description": "右侧内容大容器,包裹白卡容器",
20
+ "required": true
21
+ },
22
+ "layer4_cardWrapper": {
23
+ "name": "Card (白卡容器)",
24
+ "description": "白色卡片容器,包裹 PageHeader + ActionToolbar + 业务组件 + Pagination,形成统一的内容块",
25
+ "required": true
26
+ },
27
+ "layer5_businessComponent": {
28
+ "name": "内容组件",
29
+ "description": "具体业务组件(Table / Form / Descriptions / Chart 等)",
30
+ "required": true
31
+ }
32
+ },
33
+ "constraints": [
34
+ {
35
+ "from": "Layout",
36
+ "to": "PageContainer",
37
+ "status": "ALLOW"
38
+ },
39
+ {
40
+ "from": "PageContainer",
41
+ "to": "ContentWrapper",
42
+ "status": "ALLOW"
43
+ },
44
+ {
45
+ "from": "ContentWrapper",
46
+ "to": "Card (白卡容器)",
47
+ "status": "ALLOW"
48
+ },
49
+ {
50
+ "from": "Card (白卡容器)",
51
+ "to": "PageHeader / ActionToolbar / DataTable / CardGrid / Card / Tabs / QueryFilter / Form / Pagination / BulkActionBar",
52
+ "status": "ALLOW"
53
+ },
54
+ {
55
+ "from": "ContentWrapper",
56
+ "to": "PageHeader / ActionToolbar / DataTable / CardGrid / Pagination",
57
+ "status": "FORBID",
58
+ "reason": "业务组件必须经过白卡容器包裹,禁止直接挂在 ContentWrapper 下"
59
+ },
60
+ {
61
+ "from": "Card (白卡容器)",
62
+ "to": "Card (白卡容器)",
63
+ "status": "FORBID",
64
+ "reason": "白卡容器为单例,禁止嵌套"
65
+ },
66
+ {
67
+ "from": "PageContainer",
68
+ "to": "PageContainer",
69
+ "status": "FORBID",
70
+ "reason": "禁止嵌套 PageContainer"
71
+ },
72
+ {
73
+ "from": "PageContainer",
74
+ "to": "DataTable / CardGrid / Pagination",
75
+ "status": "FORBID",
76
+ "reason": "业务组件必须经过 ContentWrapper + Card 包裹,禁止直接挂在 PageContainer 下"
77
+ },
78
+ {
79
+ "from": "PageContainer",
80
+ "to": "PageHeader / Breadcrumb / ActionToolbar",
81
+ "status": "FORBID",
82
+ "reason": "PageHeader / Breadcrumb / ActionToolbar 必须在 Card 白卡容器内顶部渲染,禁止直接挂在 PageContainer 下"
83
+ },
84
+ {
85
+ "from": "Card (白卡容器)",
86
+ "to": "hr / section-divider / Separator",
87
+ "status": "FORBID",
88
+ "reason": "Card 内部组件间距通过 padding + margin 控制,禁止使用分割线分隔 PageHeader / ActionToolbar / DataTable 等组件"
89
+ }
90
+ ]
91
+ },
92
+ "pageContainerModes": {
93
+ "description": "PageContainer 内容组织的 4 种标准模式。",
94
+ "modes": {
95
+ "模式A": {
96
+ "name": "直接内容",
97
+ "structure": "PageContainer → ContentWrapper → Card(白卡容器) → PageHeader + Table/Form/Chart + Pagination",
98
+ "scenario": "简单页面,无需额外分组",
99
+ "examples": [
100
+ "简洁列表页",
101
+ "简单表单页"
102
+ ]
103
+ },
104
+ "模式B": {
105
+ "name": "Card分组",
106
+ "structure": "PageContainer → ContentWrapper → Card(白卡容器) → PageHeader + Card[搜索区] + Card[表格区] + Pagination",
107
+ "scenario": "多区块页面",
108
+ "examples": [
109
+ "多区块详情页",
110
+ "分区表单页"
111
+ ]
112
+ },
113
+ "模式C": {
114
+ "name": "Tabs分组",
115
+ "structure": "PageContainer → ContentWrapper → Card(白卡容器) → PageHeader + Tabs → TabPaneA + TabPaneB + Pagination",
116
+ "scenario": "分类展示",
117
+ "examples": [
118
+ "Tab 分类详情页",
119
+ "多视图设置页"
120
+ ]
121
+ },
122
+ "模式D": {
123
+ "name": "复合模式",
124
+ "structure": "PageContainer → ContentWrapper → Card(白卡容器) → PageHeader + ActionToolbar + DataTable + Pagination",
125
+ "scenario": "列表页标准模式",
126
+ "examples": [
127
+ "标准列表页",
128
+ "高级筛选列表页"
129
+ ]
130
+ }
131
+ }
132
+ },
133
+ "pageContainerExtensions": {
134
+ "description": "v4.0 新增的 PageContainer 扩展模式。",
135
+ "extensions": {
136
+ "模式D+": {
137
+ "name": "高级筛选列表",
138
+ "structure": "PageContainer → ContentWrapper → Card(白卡容器) → PageHeader + ActionToolbar + AdvancedFilterPanel(可展开) + DataTable + BulkActionBar + Pagination",
139
+ "scenario": "多条件组合筛选",
140
+ "detail": "高级筛选按钮位于 ActionToolbar 右侧,展开后显示多条件组合面板,收起后恢复基础 SearchCombo"
141
+ },
142
+ "视图切换": {
143
+ "name": "列表↔卡片视图切换",
144
+ "structure": "PageContainer → ContentWrapper → Card(白卡容器) → PageHeader + ActionToolbar + ViewToggle[列表|卡片] → CardGrid/DataTable + Pagination",
145
+ "scenario": "用户可切换视图模式",
146
+ "cardGridCSS": "grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)),gap 16px",
147
+ "responsiveBreakpoints": {
148
+ ">1400px": "4列",
149
+ "1080-1400px": "3列",
150
+ "768-1080px": "2列",
151
+ "<768px": "1列"
152
+ }
153
+ },
154
+ "模式D-CARD": {
155
+ "name": "常规卡片列表",
156
+ "structure": "PageContainer → ContentWrapper → Card(白卡容器) → PageHeader + ActionToolbar(ToggleGroup胶囊筛选) + CardGrid(CardGrid > ItemCard + CardActionBar,完整规格见 pages/list-page/patterns/card-list.md §9) + Pagination",
157
+ "scenario": "有 Sidebar 的纯卡片视图,无 ViewToggle",
158
+ "cardGridCSS": "grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)),gap 16px",
159
+ "defaultPageSize": 12,
160
+ "typicalScenarios": [
161
+ "分类资源管理",
162
+ "团队项目卡片",
163
+ "分组知识库"
164
+ ]
165
+ },
166
+ "模式A-CARD": {
167
+ "name": "纯卡片列表",
168
+ "structure": "PageContainer → ContentWrapper → Card(白卡容器) → PageHeader + ActionToolbar(ToggleGroup胶囊筛选) + CardGrid(CardGrid > ItemCard + CardActionBar,完整规格见 pages/list-page/patterns/card-list.md §9) + Pagination",
169
+ "scenario": "纯卡片视图,无 Sidebar,无 ViewToggle",
170
+ "cardGridCSS": "grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)),gap 16px",
171
+ "defaultPageSize": 12,
172
+ "typicalScenarios": [
173
+ "智能体管理",
174
+ "模型管理",
175
+ "插件管理",
176
+ "资源目录"
177
+ ]
178
+ }
179
+ }
180
+ },
181
+ "layoutToPageMapping": {
182
+ "description": "页面类型与布局模式的对应关系。",
183
+ "mapping": [
184
+ {
185
+ "pageType": "ListPage(标准)",
186
+ "mode": "模式D"
187
+ },
188
+ {
189
+ "pageType": "ListPage(高级筛选)",
190
+ "mode": "模式D+"
191
+ },
192
+ {
193
+ "pageType": "ListPage(视图切换)",
194
+ "mode": "模式D + ViewToggle"
195
+ },
196
+ {
197
+ "pageType": "ListPage(纯卡片)",
198
+ "mode": "模式A-CARD"
199
+ },
200
+ {
201
+ "pageType": "ListPage(常规卡片)",
202
+ "mode": "模式D-CARD"
203
+ },
204
+ {
205
+ "pageType": "ListPage(简洁)",
206
+ "mode": "模式A"
207
+ },
208
+ {
209
+ "pageType": "DetailPage",
210
+ "mode": "模式A 或 模式B"
211
+ },
212
+ {
213
+ "pageType": "FormPage",
214
+ "mode": "模式A 或 模式B"
215
+ }
216
+ ]
217
+ }
218
+ }
@@ -0,0 +1,351 @@
1
+ {
2
+ "version": "1.0",
3
+ "description": "页面流转规则 — CRUD 操作路径 + 页面间导航 + 交互触发逻辑。",
4
+ "crudFlow": {
5
+ "description": "标准 CRUD 页面流转路径,定义了操作从源页面到目标页面的完整链路。",
6
+ "operations": [
7
+ {
8
+ "operation": "创建(C)",
9
+ "sourcePage": "ListPage",
10
+ "targetPage": "FormPage(新建模式)",
11
+ "trigger": "点击「新建」按钮",
12
+ "returnBehavior": "保存成功返回列表,失败留表单页",
13
+ "urlPattern": "/entity/new",
14
+ "toastMessage": "创建成功"
15
+ },
16
+ {
17
+ "operation": "读取(R)",
18
+ "sourcePage": "ListPage",
19
+ "targetPage": "DetailPage",
20
+ "trigger": "点击行链接或「查看」按钮",
21
+ "returnBehavior": "点击「返回」或面包屑回到 ListPage",
22
+ "urlPattern": "/entity/:id",
23
+ "toastMessage": null
24
+ },
25
+ {
26
+ "operation": "更新(U)",
27
+ "sourcePage": "ListPage 或 DetailPage",
28
+ "targetPage": "FormPage(编辑模式)",
29
+ "trigger": "点击「编辑」按钮",
30
+ "returnBehavior": "保存后返回原页面",
31
+ "urlPattern": "/entity/:id/edit",
32
+ "toastMessage": "保存成功"
33
+ },
34
+ {
35
+ "operation": "删除(D)",
36
+ "sourcePage": "ListPage",
37
+ "targetPage": "Dialog(确认弹窗)",
38
+ "trigger": "点击「删除」按钮",
39
+ "returnBehavior": "确认后刷新 ListPage",
40
+ "urlPattern": "无路由变化",
41
+ "toastMessage": "删除成功"
42
+ }
43
+ ]
44
+ },
45
+ "pageNavigation": {
46
+ "description": "页面间导航交互,定义了各种导航动作的目标页面和返回约定。",
47
+ "navigations": [
48
+ {
49
+ "sourceAction": "操作列「管理/查看」",
50
+ "targetPage": "DetailPage",
51
+ "navType": "页面跳转",
52
+ "returnConvention": "Breadcrumb + PageHeader 提供返回入口,返回后保持列表筛选+分页"
53
+ },
54
+ {
55
+ "sourceAction": "操作列「编辑」",
56
+ "targetPage": "FormPage 或 Sheet",
57
+ "navType": "页面跳转/侧滑",
58
+ "returnConvention": "保存后返回列表,Sonner 提示结果;取消返回列表"
59
+ },
60
+ {
61
+ "sourceAction": "操作列「删除」",
62
+ "targetPage": "Dialog确认弹窗",
63
+ "navType": "弹窗",
64
+ "returnConvention": "确认后刷新列表,Sonner 提示;取消关闭弹窗"
65
+ },
66
+ {
67
+ "sourceAction": "操作列「远程连接」",
68
+ "targetPage": "Dialog(连接弹窗)",
69
+ "navType": "弹窗",
70
+ "returnConvention": "关闭后返回列表"
71
+ },
72
+ {
73
+ "sourceAction": "创建实例",
74
+ "targetPage": "FormPage(新建模式)",
75
+ "navType": "页面跳转",
76
+ "returnConvention": "创建成功/取消后返回列表"
77
+ },
78
+ {
79
+ "sourceAction": "批量创建",
80
+ "targetPage": "FormPage(批量模式)",
81
+ "navType": "页面跳转",
82
+ "returnConvention": "提交后返回列表"
83
+ },
84
+ {
85
+ "sourceAction": "监控图标",
86
+ "targetPage": "DetailPage(monitor)",
87
+ "navType": "页面跳转",
88
+ "returnConvention": "返回后保持列表筛选"
89
+ },
90
+ {
91
+ "sourceAction": "ID 链接点击",
92
+ "targetPage": "DetailPage",
93
+ "navType": "页面跳转",
94
+ "returnConvention": "同操作列「管理」"
95
+ },
96
+ {
97
+ "sourceAction": "搜索执行",
98
+ "targetPage": "当前列表页(刷新数据)",
99
+ "navType": "数据刷新",
100
+ "returnConvention": "保持分页在第1页"
101
+ },
102
+ {
103
+ "sourceAction": "筛选条件变更",
104
+ "targetPage": "当前列表页(刷新数据)",
105
+ "navType": "数据刷新",
106
+ "returnConvention": "重置到第1页,保持筛选条件"
107
+ },
108
+ {
109
+ "sourceAction": "列配置确认",
110
+ "targetPage": "当前表格(列变更)",
111
+ "navType": "列显隐切换",
112
+ "returnConvention": "不刷新数据"
113
+ }
114
+ ]
115
+ },
116
+ "actionPageCombos": {
117
+ "description": "页面动作与页面组合模式的标准映射。",
118
+ "combos": [
119
+ {
120
+ "comboName": "列表页标准组合",
121
+ "actions": "查看 + 编辑 + 删除 + 批量",
122
+ "uiManifestation": "行内操作按钮 + 顶部批量操作栏",
123
+ "detail": "查看→详情页;编辑→表单页/行内编辑;删除→确认弹窗;批量→选中行后启用"
124
+ },
125
+ {
126
+ "comboName": "详情页标准组合",
127
+ "actions": "编辑 + 删除 + 返回",
128
+ "uiManifestation": "顶部操作栏 + 内容区",
129
+ "detail": "编辑→跳转表单页;删除→确认弹窗;返回→返回列表页"
130
+ },
131
+ {
132
+ "comboName": "表单页标准组合",
133
+ "actions": "保存 + 取消 + 提交",
134
+ "uiManifestation": "底部操作栏(保存/取消) 或 顶部",
135
+ "detail": "保存→本地校验后提交;取消→确认未保存更改;提交→校验+提交流程"
136
+ },
137
+ {
138
+ "comboName": "Dashboard 标准组合",
139
+ "actions": "筛选 + 刷新 + 下钻",
140
+ "uiManifestation": "顶部筛选栏 + 刷新按钮 + 图表可点击",
141
+ "detail": "筛选→联动刷新所有图表;刷新→重新获取数据;下钻→点击图表进入明细页"
142
+ }
143
+ ]
144
+ },
145
+ "actionAreaLayout": {
146
+ "description": "操作区排列规则 — 不同类型页面的操作按钮对齐方式与主按钮位置。",
147
+ "areas": {
148
+ "页面级操作区": {
149
+ "description": "列表页 ActionToolbar、概览页操作区",
150
+ "alignment": "左右分布(左侧主要操作 + 右侧搜索工具)",
151
+ "primaryButton": "左侧第一位",
152
+ "constraint": "同一区域 Primary 按钮最多 1 个",
153
+ "buttonLimit": "直接展示 ≤3 个,超出入 Dropdown"
154
+ },
155
+ "表单操作区": {
156
+ "description": "表单页底部/顶部操作栏",
157
+ "alignment": "左对齐(页面表单)/ 右对齐(弹窗表单)",
158
+ "primaryButton": "页面表单最左侧,弹窗表单最右侧",
159
+ "constraint": "[取消] [确定] 顺序,主按钮在右侧(弹窗)或左侧(页面)",
160
+ "buttonLimit": "≤3 个,超出入 Dropdown"
161
+ },
162
+ "弹窗操作区": {
163
+ "description": "Dialog/Sheet 底部操作栏",
164
+ "alignment": "右对齐",
165
+ "primaryButton": "最右侧",
166
+ "constraint": "[取消] [确定] 顺序",
167
+ "buttonLimit": "≤2-3 个"
168
+ },
169
+ "表格行操作区": {
170
+ "description": "操作列内的行级操作",
171
+ "alignment": "左对齐(行内)",
172
+ "primaryButton": "主操作(管理/查看)为第一个链接",
173
+ "constraint": "≤3 个直接展示,>3 入 Dropdown(···)",
174
+ "separatorRule": "主操作 | 次要操作 | 状态操作 | 更多,以 | 分隔"
175
+ }
176
+ }
177
+ },
178
+ "asyncOperationHandling": {
179
+ "description": "异步操作的 Sonner 反馈与列表刷新规则。",
180
+ "operations": [
181
+ {
182
+ "operationType": "启动/停止/重启",
183
+ "postBehavior": "异步任务,不阻塞UI",
184
+ "feedback": "Sonner「操作已提交」",
185
+ "listRefresh": "轮询状态或任务完成通知"
186
+ },
187
+ {
188
+ "operationType": "删除",
189
+ "postBehavior": "异步任务",
190
+ "feedback": "Sonner「删除已提交」",
191
+ "listRefresh": "移除对应行或刷新列表"
192
+ },
193
+ {
194
+ "operationType": "批量操作",
195
+ "postBehavior": "异步任务",
196
+ "feedback": "Sonner「批量操作已提交,共N条」",
197
+ "listRefresh": "轮询状态"
198
+ },
199
+ {
200
+ "operationType": "创建/批量创建",
201
+ "postBehavior": "同步跳转",
202
+ "feedback": "跳转 FormPage",
203
+ "listRefresh": "创建成功后返回列表"
204
+ }
205
+ ]
206
+ },
207
+ "operationConfirmationLevels": {
208
+ "description": "操作确认三级规范。",
209
+ "levels": [
210
+ {
211
+ "level": "一级(可逆)",
212
+ "confirmationMethod": "无确认,直接执行",
213
+ "applicableOperations": "查看、编辑、远程连接"
214
+ },
215
+ {
216
+ "level": "二级(有未保存内容)",
217
+ "confirmationMethod": "Dialog确认弹窗",
218
+ "applicableOperations": "取消/离开、启动、停止、重启"
219
+ },
220
+ {
221
+ "level": "三级(不可逆)",
222
+ "confirmationMethod": "Dialog + 输入确认文本",
223
+ "applicableOperations": "删除(需输入「DELETE」)、资源释放"
224
+ }
225
+ ]
226
+ },
227
+ "feedbackMechanism": {
228
+ "description": "反馈机制矩阵,定义各种场景下的反馈类型和持续时间。",
229
+ "feedbacks": [
230
+ {
231
+ "scenario": "操作成功",
232
+ "type": "Sonner/Sonner 成功提示",
233
+ "duration": "3s",
234
+ "note": "「操作成功,实例正在启动」"
235
+ },
236
+ {
237
+ "scenario": "操作失败",
238
+ "type": "Sonner/Sonner 错误提示",
239
+ "duration": "5s",
240
+ "note": "含错误原因"
241
+ },
242
+ {
243
+ "scenario": "异步任务",
244
+ "type": "通知中心 + Sonner",
245
+ "duration": "持久",
246
+ "note": "任务完成时通知"
247
+ },
248
+ {
249
+ "scenario": "加载中",
250
+ "type": "Skeleton / Spinner",
251
+ "duration": "至加载完成",
252
+ "note": "首次加载/筛选加载"
253
+ },
254
+ {
255
+ "scenario": "空数据",
256
+ "type": "Empty",
257
+ "duration": "持久",
258
+ "note": "含创建引导按钮"
259
+ },
260
+ {
261
+ "scenario": "网络异常",
262
+ "type": "Alert",
263
+ "duration": "手动关闭",
264
+ "note": "含重试按钮"
265
+ },
266
+ {
267
+ "scenario": "保存成功",
268
+ "type": "Sonner/Sonner 提示",
269
+ "duration": "3s",
270
+ "note": "「保存成功」"
271
+ },
272
+ {
273
+ "scenario": "删除确认",
274
+ "type": "Dialog 二次确认",
275
+ "duration": "用户操作",
276
+ "note": "危险操作需输入确认文本"
277
+ }
278
+ ]
279
+ },
280
+ "loadingStrategy": {
281
+ "description": "加载状态反馈策略,根据等待时间选择适当的加载提示方式。",
282
+ "thresholds": [
283
+ {
284
+ "duration": "< 300ms",
285
+ "strategy": "无需加载提示",
286
+ "type": "none"
287
+ },
288
+ {
289
+ "duration": "300ms - 1s",
290
+ "strategy": "可选加载提示",
291
+ "type": "optional"
292
+ },
293
+ {
294
+ "duration": "1s - 10s",
295
+ "strategy": "必须使用加载反馈",
296
+ "type": "required",
297
+ "types": [
298
+ "Skeleton 骨架屏",
299
+ "区域蒙层 Spinner(50%透明度)",
300
+ "按钮内 Spinner",
301
+ "图标 Spinner(24px/32px)"
302
+ ]
303
+ },
304
+ {
305
+ "duration": "> 10s",
306
+ "strategy": "进度条 + 预估时间",
307
+ "type": "progress",
308
+ "types": [
309
+ "进度条",
310
+ "时间预估",
311
+ "可取消"
312
+ ]
313
+ }
314
+ ],
315
+ "loadingTypes": {
316
+ "全局骨架屏": "用于首次加载或页面切换",
317
+ "区域蒙层Spinner": "用于局部数据刷新,50%透明度遮罩",
318
+ "按钮内Spinner": "用于提交/保存等按钮操作反馈",
319
+ "图标Spinner": "用于24px/32px的加载动画图标"
320
+ }
321
+ },
322
+ "keyboardShortcuts": {
323
+ "description": "全局键盘快捷键。",
324
+ "shortcuts": [
325
+ {
326
+ "key": "Enter",
327
+ "action": "执行搜索"
328
+ },
329
+ {
330
+ "key": "Esc",
331
+ "action": "关闭弹窗/取消选择"
332
+ },
333
+ {
334
+ "key": "Ctrl/Cmd + A",
335
+ "action": "全选当前页"
336
+ },
337
+ {
338
+ "key": "Ctrl/Cmd + F",
339
+ "action": "聚焦搜索框"
340
+ },
341
+ {
342
+ "key": "↑/↓",
343
+ "action": "表格行导航(聚焦时)"
344
+ },
345
+ {
346
+ "key": "Space",
347
+ "action": "切换行选中状态"
348
+ }
349
+ ]
350
+ }
351
+ }