@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
@@ -1,334 +1,295 @@
1
- # List Page — 列表页模式
2
-
3
- > **触发**:用户描述含"列表/表格/查询/检索/卡片管理"。
4
- > **核心特征**:多条结构化数据 + 搜索/筛选 + 分页。
5
- > **页面级别**:L1(标题模式 PageHeader,自动继承 Sidebar)。
6
-
7
1
  ---
8
-
9
- ## 1. 子类型路由
10
-
11
- | 子类型 | 关键词 | 布局 | 核心组件 |
12
- | ------------------- | -------------------------------- | ----------------------------- | ----------------------------------- |
13
- | **standard** | "列表"/"表格"/"查询" | TWO_COL | DataTable + Pagination |
14
- | **l2-sidebar** | "分类"/"分组"/"左侧树" | TWO_COL + 内部 Sidebar(240px) | Sidebar + DataTable |
15
- | **expandable** | "展开"/"子项"/"详情行" | TWO_COL | DataTable(行内展开) |
16
- | **drawer** | "弹窗列表"/"选择器" | Drawer 内 | DataTable ⊂ Drawer |
17
- | **pure-card** | "纯卡片"/"卡片管理"/"智能体列表" | SINGLE_COL | CardGrid + ItemCard + CardActionBar |
18
- | **standard-card** | "卡片列表"/"分类卡片"/"资源卡片" | TWO_COL | Sidebar + CardGrid + ItemCard |
19
- | **view-toggle** | "视图切换"/"列表卡片切换" | TWO_COL + ViewToggle | ViewToggle + DataTable/CardGrid |
20
- | **advanced-filter** | "高级筛选"/"更多条件" | TWO_COL | AdvancedFilterPanel + DataTable |
21
-
22
- ### 路由优先级
23
-
24
- 1. "纯卡片"/"卡片管理" → pure-card
25
- 2. "卡片列表"/"分类卡片"/"资源卡片" → standard-card
26
- 3. "视图切换"/"列表卡片" → view-toggle
27
- 4. "高级筛选" → advanced-filter
28
- 5. "展开"/"子项" → expandable
29
- 6. "分类"/"分组"/"左侧树" → l2-sidebar
30
- 7. "弹窗列表"/"选择器" → drawer
31
- 8. 默认 → standard
32
-
2
+ name: page-rule-list
3
+ parent: page-rule-system
4
+ description: >
5
+ 列表页(PageType: ListPage)路由规则。根据子类型识别关键词,路由到 patterns/ 目录下对应详细规则。
6
+ 共享规则在 _shared/ 目录(表格列元规则 / 操作列规范 / 状态-操作模式)。
7
+ 产品配置在 products/{产品}/ 目录(列定义 / 状态机 / 业务映射)。
8
+ 三层参数化架构(v7.0):元规则(固化)+ 产品配置(灵活)+ 模式细节。
9
+ 触发:需要列表页规则、匹配列表页模板、生成列表页。
10
+ Version: 7.8.4
33
11
  ---
34
12
 
35
- ## 2. 标准结构
36
-
37
- ```
38
- ┌────────────────────────────────────────────┐
39
- │ PageHeader: 标题模式 [新建] │ ← Header zone
40
- ├────────────────────────────────────────────┤
41
- │ ActionToolbar: 🔍 搜索 [筛选▼] [刷新] │ ← Toolbar zone
42
- ├────────────────────────────────────────────┤
43
- │ ▢ ID │ 状态 │ 创建时间 │ 操作 │ ← Main zone
44
- │ ▢ ORD-001234 │ 进行中│ 2026-05-13│ ⋯ │
45
- │ ▢ ORD-001235 │ 已完成│ 2026-05-12│ ⋯ │
46
- ├────────────────────────────────────────────┤
47
- │ [已选 2 项] 批量审批 / 批量导出 / 批量删除 │ ← BulkActionBar (按需)
48
- ├────────────────────────────────────────────┤
49
- │ ← 1 / 24 → [50/页 ▼] 共 1200条 │ ← Footer zone
50
- └────────────────────────────────────────────┘
51
- ```
52
-
53
- ---
13
+ # 列表页路由规则
54
14
 
55
- ## 3. 必需组件
15
+ > ⚠️ **本文件是高阶路由索引,不含布局实现细节。**
16
+ > **生成页面时必须读取**:
17
+ > - `../pages/list-page/SKILL.md` — 子技能入口(子类型列表 + 属性模型)
18
+ > - `../pages/list-page/patterns/{subtype}.md` — 完整骨架 + DOM 结构 + CSS 约束
19
+ > - `../pages/list-page/_shared/search-combo-spec.md` — SearchCombo 20px 间距硬约束
20
+ > - `../pages/list-page/_shared/action-column-spec.md` — 操作列规范
21
+ >
22
+ > 本文件仅用于:(1) 了解 6 种子类型概览 (2) 快速判断属于哪个子类型
56
23
 
57
- | 组件 | 位置 | 说明 |
58
- | ----------------------------- | ------- | ----------------------------------------------------------- |
59
- | **PageHeader** | top | 标题模式(L1 页面);右侧主操作(如「新建」) |
60
- | **ActionToolbar** | toolbar | 单行 flex(nowrap);左 actions + 中 SearchCombo + 右 tools |
61
- | **DataTable** 或 **CardGrid** | main | 二选一,按子类型 |
62
- | **Pagination** | footer | 默认 10 条/页(标准列表) / 12 条/页(卡片) |
24
+ ## 1. 类型定义
63
25
 
64
- **框架级**(自动继承,不在 skill 内声明):Sidebar。
26
+ **页面类型**: ListPage
27
+ **核心特征**: 多条结构化数据的展示、筛选和操作入口
28
+ **识别条件**: 页面包含数据表格(DataTable)或卡片网格(CardGrid)+ 搜索/筛选 + 分页
65
29
 
66
30
  ---
67
31
 
68
- ## 4. SearchCombo 规范
32
+ ## 2. 子类型路由表
69
33
 
70
- > ListPage 顶部搜索 + 筛选的标准复合组件。**禁止**用 Input + Select 散件拼装。
34
+ | 子类型ID | 识别关键词 | 路由到 | 布局模式 | 核心组件 |
35
+ |----------|-----------|--------|----------|----------|
36
+ | standard | "列表"/"表格"/"查询" | → `patterns/standard-list.md` | 模式D | DataTable + Pagination |
37
+ | l2-sidebar | "分类"/"分组"/"左侧树" | → `patterns/l2-sidebar-list.md` | 模式D + Sidebar | Sidebar(240px) + DataTable |
38
+ | expandable | "展开"/"子项"/"详情" | → `patterns/expandable-list.md` | 模式D | DataTable(行内展开) |
39
+ | drawer | "弹窗列表"/"选择器" | → `patterns/drawer-list.md` | 模式D (Sheet 内) | DataTable ⊂ Sheet |
40
+ | **pure-card** | "纯卡片"/"卡片管理"/"智能体列表" | → `patterns/card-list.md` | 模式A-CARD | CardGrid + ItemCard + CardActionBar |
41
+ | **standard-card** | "卡片列表"/"分类卡片"/"资源卡片" | → `patterns/card-list.md` | 模式D-CARD (TWO_COL) | Sidebar + CardGrid + ItemCard + CardActionBar |
42
+ | **view-toggle** | "视图切换"/"列表卡片切换" | → `patterns/card-list.md` | 模式D + ViewToggle | ViewToggle + CardGrid/DataTable + ItemCard(tile) |
43
+ | advanced-filter | "高级筛选"/"更多条件" | → `patterns/advanced-filter-list.md` | 模式D+ | AdvancedFilterPanel + DataTable |
71
44
 
72
- ### 4.1 ActionToolbar 中的位置(硬约束)
45
+ > **v7.2 合并**:原 `pure-card-list.md` / `standard-card-list.md` / `view-toggle-list.md` 三个 patterns 合并为单一 `patterns/card-list.md`,子类型差异在其 §1 差异矩阵中区分。
73
46
 
74
- - SearchCombo 是 ActionToolbar 的**直接子元素**,位于 `.left-actions` 之后、`.right-tools` 之前
75
- - 与 `.left-actions` 间距 = **20px**
47
+ ### 路由判定优先级
76
48
 
77
- ### 4.2 结构
49
+ 1. 含"纯卡片"/"卡片管理"关键词 → pure-card
50
+ 2. 含"卡片列表"/"分类卡片"/"资源卡片"关键词 → standard-card
51
+ 3. 含"视图切换"/"列表卡片"关键词 → view-toggle
52
+ 4. 含"高级筛选"关键词 → advanced-filter
53
+ 5. 含"展开"/"子项"关键词 → expandable
54
+ 6. 含"分类"/"分组"/"左侧树"关键词 → l2-sidebar
55
+ 7. 含"弹窗列表"/"选择器"关键词 → drawer
56
+ 8. 其他列表场景 → standard(默认)
78
57
 
79
- ```
80
- [ 维度Select | 分隔线 | 搜索Input | 搜索Button(图标) ]
81
- ```
58
+ ---
82
59
 
83
- - 容器统一 border + radius 6px + height 32px + min-width 200px
84
- - 内部元素无独立边框
60
+ ## 3. 通用属性模型
85
61
 
86
- ### 4.3 交互规则
62
+ | 属性 | 值 | 说明 |
63
+ |------|-----|------|
64
+ | layout.type | TWO_COL / SINGLE_COL | 见 `rules/page-frame.json` layoutSelectionRules |
65
+ | layout.frame | L1 | 列表页为 L1 级页面,自动继承 Sidebar(含Logo+产品名)。无面包屑。 |
66
+ | responsive | Desktop ≥1200px(完整), Tablet 768-1199px(横滚), Mobile <768px(不推荐) |
67
+ | pagination.default | 标准列表 10 条/页, 纯卡片 12 条/页 |
87
68
 
88
- | 触发 | 行为 |
89
- | ------------------------- | -------------------------------- |
90
- | 切换维度 | input.value 清空 → input.focus() |
91
- | 输入框回车 / 点击搜索按钮 | 执行搜索 → 重置到第 1 页 |
92
- | 输入框 hover 显示 × | 清空输入 → 维度切回"全部" |
93
- | 输入框为空时点搜索 | 清除当前条件 → 重置分页 |
69
+ > **框架组件自动继承**:Sidebar 的存在性由 `rules/page-frame.json` 统一管理,子技能只定义内容区组件。L1 级页面自动包含:Sidebar(顶部Logo+产品名),无面包屑。
94
70
 
95
- ### 4.4 FilterTag 展示
71
+ ---
96
72
 
97
- - 已应用的搜索条件以 FilterTag 形式展示
98
- - 单条 Tag 含 `label: value ×`
99
- - 多条提供「清空全部」链接
73
+ ## 4. 组件推荐
100
74
 
101
- ### 4.5 搜索维度配置示例
75
+ ### 必需组件
102
76
 
103
- > 维度按业务上下文动态配置;默认含「全部」。
77
+ | 组件 | 引用 | 层级 | 位置 | 说明 |
78
+ |------|------|------|------|------|
79
+ | PageHeader | — | ORGANISM | top | 页面标题(18px/medium),默认无描述 |
80
+ | ActionToolbar | — | ORGANISM | top | 操作工具栏,单行 flex(flex-wrap:nowrap),左侧创建按钮 + 右侧搜索工具 |
81
+ | Pagination | — | MOLECULAR | bottom | 分页控件 |
104
82
 
105
- ```json
106
- // 默认维度
107
- [
108
- { "label": "全部", "value": "all" },
109
- { "label": "名称", "value": "name" },
110
- { "label": "ID", "value": "id" }
111
- ]
83
+ > **框架级组件**(自动继承,无需在此声明):Sidebar 由 `rules/page-frame.json` 统一管理,L1 级页面自动包含。
84
+ > 注:DataTable 为 standard/l2/expandable/drawer/view-toggle 的必需组件;CardGrid 为 standard-card/pure-card/view-toggle 的必需组件。
112
85
 
113
- // ECS 实例列表示例
114
- [
115
- { "label": "全部", "value": "all" },
116
- { "label": "实例 ID/名称", "value": "instance" },
117
- { "label": "IP", "value": "ip" },
118
- { "label": "标签", "value": "tag" }
119
- ]
120
- ```
86
+ ### 禁止组件
121
87
 
88
+ | 组件 | 约束 | 原因 |
89
+ |------|------|------|
90
+ | Form(ORGANISM) | 禁止直接出现在内容区 | 表单应通过 Dialog/Sheet/FormPage 触发 |
91
+ | Chart(ORGANISM) | 禁止出现在标准列表页 | 图表属于 Dashboard |
92
+ | PageContainer | 禁止嵌套 | 见 `rules/layout-rules.json` |
93
+ | 内联编辑 | 禁止 | 编辑应通过 Sheet/Dialog/FormPage |
94
+ | 拖拽排序 | 禁止 | 表格数据为服务端排序 |
95
+ | 无限滚动 | 禁止 | B2B 管理场景需精确分页 |
96
+ | 悬浮操作栏 | 禁止 | 遮挡数据,可发现性差 |
97
+ | 右键菜单 | 禁止 | 可发现性差,移动端不兼容 |
98
+ | hr/section-divider | 禁止 | 组件间距通过 padding/margin 控制,禁止用分割线分隔 PageHeader/ActionToolbar/DataTable
122
99
  ---
123
100
 
124
- ## 5. DataTable 规则(核心)
125
-
126
- ### 5.1 列元规则(每列必备)
127
-
128
- | 规则 | 说明 |
129
- | -------- | ------------------------------------- |
130
- | 唯一 ID | 用于列宽 / 显隐持久化 |
131
- | 显隐规则 | "始终显示" 或 "条件显示" + 触发条件 |
132
- | 宽度定义 | 固定 px / 百分比 / minmax |
133
- | 对齐方式 | left(默认)/ center / right |
134
- | 排序能力 | 是否支持服务端排序 |
135
- | 固定方向 | left(前缀列)/ right(操作列)/ none |
136
- | 字体 | ID/IP/Hash 等机器列用 `font-mono` |
101
+ ## 5.1 Card 内左右对齐【稳定规则 / 硬约束】
137
102
 
138
- ### 5.2 列固定
103
+ > **这是列表页生成中最容易不稳定的点,必须严格遵守:**
139
104
 
140
- - 左固定:Checkbox(48px) + ID/名称(20%)
141
- - 右固定:操作列(140px)
142
- - 固定列与滚动列交界处 `box-shadow: 1px 0 0 var(--border)`
143
- - 固定列 `z-index: 10`,滚动列 `z-index: 1`
105
+ 水平 padding 采用**分层模型 v7.5**,职责严格划分:
144
106
 
145
- ### 5.3 行高
107
+ - **Card.paddingX (20px)** → 提供 Card 外侧边缘 ↔ **非 Table 子组件** (PageHeader / ActionToolbar / BulkActionBar / Pagination) 外缘的外侧呼吸
108
+ - **Table td.paddingX (12px)** → 仅提供中间列与列之间的内部呼吸(相邻 td 12+12=24)
109
+ - **Table 首末列 padding-left/right = 20px** → 表格作为密集数据区,额外享有 20px 视觉缩进
146
110
 
147
- - 单行内容:56px
148
- - 多行内容(如规格列):72px+
111
+ > 注意:Table 首列内容 X = Card 外缘 + 40px,与 PageHeader / ActionToolbar / Pagination 起始线**不对齐**(这是设计预期)。
149
112
 
150
- ### 5.4 选择框三态
113
+ Card 白卡容器:`padding: 0 var(--card-padding-x)` (上下 0 / 左右 20px)。注意:`--card-padding-x` (20px) 独立于 `--page-container-padding` (16px),后者为 PageContainer 外层间距。
151
114
 
152
- | 状态 | 视觉 | 触发 |
153
- | ------ | ---------------- | --------------- |
154
- | 未选 | 默认 | |
155
- | 半选 ☐̲ | 当前页有部分选中 | 自动计算 |
156
- | 全选 | 当前页全选 | 点表头 checkbox |
115
+ | 组件 | 水平 padding | 起始线 X 坐标 | 说明 |
116
+ |------|---------------|-----------------|------|
117
+ | Card 白卡容器 | **20px** | Card 外缘 | `padding: 0 var(--card-padding-x)`【外侧呼吸提供者】 |
118
+ | PageHeader | **0** | Card 外缘 + 20 | 外侧呼吸由 Card.paddingX 提供 |
119
+ | ActionToolbar | **0** | Card 外缘 + 20 | 外侧呼吸由 Card.paddingX 提供 |
120
+ | **Table th / td 中间列** | **12px** | — | 仅提供列间内部呼吸(列间距 24px) |
121
+ | **Table th / td 首列** | `padding-left: 20px` | **Card 外缘 + 40** | 表格额外享有 20px 缩进 |
122
+ | **Table th / td 末列** | `padding-right: 20px` | 末缘 = Card 右缘 - 40 | 同上 |
123
+ | BulkActionBar | **0** | Card 外缘 + 20 | 外侧呼吸由 Card.paddingX 提供 |
124
+ | Pagination | **0** | Card 外缘 + 20 | 外侧呼吸由 Card.paddingX 提供 |
157
125
 
158
- ### 5.5 行选择交互
126
+ ### 参考 CSS
159
127
 
160
- - Checkbox:切换当前行
161
- - 行点击(非操作区):跳转 DetailPage
162
- - Shift+点击:范围选中
163
- - Ctrl/Cmd+点击:切换单行
164
- - 选中样式:背景 `bg-accent`(与 Checkbox 选中态一致)
165
-
166
- ### 5.6 列宽拖拽
167
-
168
- - 拖拽手柄置于列头右边界,宽 2px,`cursor: col-resize`
169
- - 仅对 `visibility: always` 的列允许拖拽
170
- - 最小宽度取列定义的 `minWidth`(无定义时默认 100px,状态/监控类窄列 80px)
171
- - 最大宽度不超过表格宽度的 50%
172
- - 拖拽过程对 `document.body` 加 `cursor: col-resize` + `user-select: none`,防鼠标越界丢失光标
173
- - 拖拽结束写入 `localStorage`(key 命名 `columnWidths:{产品ID}`);初始化时读取恢复
174
- - 列配置弹窗提供「恢复默认列宽」按钮,清 localStorage 后刷新
128
+ ```css
129
+ .data-table thead th,
130
+ .data-table tbody td { padding: 12px 12px; }
131
+ .data-table thead th:first-child,
132
+ .data-table tbody td:first-child { padding-left: 20px; }
133
+ .data-table thead th:last-child,
134
+ .data-table tbody td:last-child { padding-right: 20px; }
135
+ ```
175
136
 
176
- ### 5.7 列排序
137
+ ### 禁止项
177
138
 
178
- - 表头右侧 `⇅` 图标(`text-tertiary`、12px)
179
- - 升序 `↑` / 降序 `↓` `primary`
180
- - 点击循环:默认 升序 降序 默认
181
- - 排序状态持久化到 `localStorage`
139
+ - 禁止在非 Table 子组件 (PageHeader / ActionToolbar / BulkActionBar / Pagination) 重复设置 paddingX(会与 Card.paddingX 叠加为 40px)
140
+ - 禁止 Table 中间列 td paddingX 不为 12px(列间距不为 24px,与设计不一致)
141
+ - 禁止 Table 首列 padding-left 为非 20 值(0 / 12 / 16 / 24 都不适用)
142
+ - 禁止 Table 末列 padding-right 为非 20 值(同上)
143
+ - ❌ 禁止使用 `px-4` / `px-6` 等字面量。Tailwind 唯一可接受模式:`px-3 first:pl-5 last:pr-5`(20px = pl-5 / pr-5)
144
+ - ❌ 禁止在 Card 与子组件之间插入额外的 paddingX 包裹层(如为 `.card-scrollable` 加 paddingX)
182
145
 
183
- ### 5.8 文字换行
146
+ ### 验证方法
184
147
 
185
- | 列类型 | 处理 |
186
- | ------- | -------------------------------------------------- |
187
- | ID / IP | `font-mono` + `word-break: break-all` + `truncate` |
188
- | 规格 | 多行展示,不截断 |
189
- | 标签 | 最多 3 个 + `+N`,不自动换行 |
148
+ 生成后逐项验证:
190
149
 
191
- ---
150
+ 1. PageHeader 标题左边缘 X = ActionToolbar 首个控件 X = Pagination 左侧起始 X = **Card 左边缘 + 20px**
151
+ 2. Table 首列 (checkbox) 内容左边缘 X = **Card 左边缘 + 40px**(20 + 20)
152
+ 3. Table 末列内容右边缘 X = **Card 右边缘 - 40px**
153
+ 4. Table 相邻两个中间列内容间距 = **24px**(例如「ID」列右边缘 ↔ 「状态」列左边缘)
192
154
 
193
- ## 6. 操作列规范(硬约束)
155
+ 任一不一致即为违反。
194
156
 
195
- ### 6.1 结构
157
+ ### 视觉预期
196
158
 
197
- 操作列 = 主操作 + 分隔线 + 次要操作 + 分隔线 + 状态操作 + 分隔线 + 更多
159
+ - thead 背景、tbody tr `border-bottom`、BulkActionBar 背景、Pagination `border-top` **不延伸到 Card 左右边缘**(Card 左右各保留 20px 白边)
160
+ - 表格首末列内容在此基础上进一步缩进 20px,总体与 Card 边缘保持 40px 距离
161
+ - 这是设计预期行为;表格作为密集数据区,额外的首末列缩进为文本提供更舒适的阅读呼吸
198
162
 
199
- | 元素 | 样式 | 禁用 |
200
- | ------------------- | -------- | -------------------------------- |
201
- | 主操作(管理/查看) | 链接样式 | — |
202
- | `\|` 分隔线 | — | — |
203
- | 次要操作 | 文字按钮 | `opacity-45 pointer-events-none` |
204
- | 状态操作 | 下拉按钮 | 同上 |
205
- | "..." 更多 | Dropdown | — |
163
+ > Token 定义:`rules/design-tokens.json` · `componentSpacing.Card.padding` + `componentSpacing.DataTable.firstLastCellRule` + `componentSpacing.DataTable.horizontalAlignmentRule`
164
+ > 组件详细规范:`rules/component-specs.json` · `C17-Table.horizontalPaddingRule`
206
165
 
207
- ### 6.2 水平对齐(硬约束)
166
+ ---
208
167
 
209
- - `text-align: left`,**表头与表体均需显式声明**
210
- - 表头「操作」左边缘 X = 表体「详情」链接左边缘 X
211
- - ❌ 禁止操作列内容居中
212
- - ❌ 禁止只在 `.col-action` 上设 text-align(部分浏览器会被覆盖)
168
+ ## 5.2 ContentCard 表面规则 v7.6【硬约束】
213
169
 
214
- ### 6.3 操作列行为映射
170
+ 内容区大卡片容器(ContentCard 作为白卡容器使用时)表面规则:
215
171
 
216
- | 操作 | 触发 | 前置 | 二次确认 | 目标 | 返回行为 |
217
- | --------- | -------- | ------------- | --------------- | ----------------- | ------------------------------------ |
218
- | 查看/管理 | 点链接 | — | 否 | DetailPage | 返回列表保持筛选+分页 |
219
- | 编辑 | 点按钮 | — | 否 | FormPage / Drawer | 保存成功返回列表 + Toast「保存成功」 |
220
- | 删除 | 点按钮 | 资源已停止 | 是(三级 Dialog) | Dialog 确认 | 确认后刷新 + Toast「删除成功」 |
221
- | 更多 | Dropdown | — | 按操作分级 | Dropdown 菜单 | 选择子操作 |
172
+ | 属性 | v7.5 及之前 | **v7.6(当前)** |
173
+ |------|-------------|----------------|
174
+ | `border` | `1px solid hsl(var(--gray-line))` | **`none`(去掉)** |
175
+ | `box-shadow` | `0 1px 2px rgba(0,0,0,0.04)` `shadow-card` | **`var(--shadow-sm)` = `0 1px 2px rgba(0,0,0,0.05)`** |
176
+ | `border-radius` | `var(--radius-lg)` = 12px | 保持不变 |
177
+ | `background` | `hsl(var(--card))` | 保持不变 |
222
178
 
223
- ---
179
+ ### 参考 CSS
224
180
 
225
- ## 7. Card 内对齐规则(硬约束 — 最容易不稳定的点)
181
+ ```css
182
+ .card,
183
+ .card-wrapper {
184
+ background: hsl(var(--card));
185
+ border-radius: var(--radius-lg);
186
+ /* v7.6:去掉 1px border,使用最弱阴影 */
187
+ box-shadow: var(--shadow-sm);
188
+ overflow: hidden;
189
+ }
190
+ ```
226
191
 
227
- 水平 padding 分层模型:
192
+ ### 禁止项
228
193
 
229
- - **Card.paddingX = 24px**:提供 Card 外缘 非 Table 子组件的呼吸
230
- - **Table 中间列 padding = 12px**(左右 12+12=24,列间 24px)
231
- - **Table 首列 padding-left = 20px**(额外缩进)
232
- - **Table 末列 padding-right = 20px**
194
+ - 禁止 `border: 1px solid hsl(var(--gray-line))`(v7.6 去线框后不再需要)
195
+ - 禁止硬编码 `box-shadow: 0 1px 2px rgba(0,0,0,0.04)`(一律走 `var(--shadow-sm)`)
196
+ - 禁止使用 `shadow-DEFAULT` / `shadow-md` 等更强阴影(会造成表面过重)
197
+ - 禁止同时使用 `border` + `shadow`(v7.6 为二选一关系,仅保留 `shadow`)
233
198
 
234
- | 组件 | 水平 padding | 起始 X |
235
- | ------------------------------------------------------- | ------------------- | -------------- |
236
- | Card 白卡容器 | **24px** | Card 外缘 |
237
- | PageHeader / ActionToolbar / BulkActionBar / Pagination | **0** | Card 外缘 + 24 |
238
- | Table 中间列 td | 12px | — |
239
- | Table 首列 td | padding-left: 20px | Card 外缘 + 44 |
240
- | Table 末列 td | padding-right: 20px | Card 右缘 - 44 |
199
+ ### 不适用场景(依然使用 border)
241
200
 
242
- ### 禁止项
201
+ - 浮层类:Dropdown / Popover / Select content / Tooltip
202
+ - 业务卡片列表项 (item-card / GenericCard)
203
+ - @teamix-evo/ui 默认 Card(未作为内容区白卡容器使用时)
243
204
 
244
- - 在 PageHeader / ActionToolbar / Pagination 上重复设 paddingX(会与 Card.paddingX 叠加为 48px)
245
- - Table 中间列 padding 不为 12px
246
- - ❌ Table 首/末列 padding 不为 20px
247
- - ❌ 用 `px-4` `px-6` 字面量 — 用 `px-3 first:pl-5 last:pr-5`
248
- - ❌ 在 Card 与子组件间插入额外 paddingX 包裹层
205
+ > Token 定义:`rules/design-tokens.json` · `componentSpacing.Card.surface`
206
+ > 组件规格:`rules/component-specs.json` · `C7-Card.contentCardOverride`
249
207
 
250
- ### 验证
208
+ ---
251
209
 
252
- 1. PageHeader / ActionToolbar / Pagination 起始 X = Card 左缘 + 24
253
- 2. Table 首列 (checkbox) 内容 X = Card 左缘 + 44
254
- 3. Table 相邻中间列内容间距 = 24
210
+ ## 5. 嵌套约束
211
+
212
+ | 父子关系 | 状态 | 说明 |
213
+ |----------|------|------|
214
+ | PageContainer → ContentWrapper | ALLOW | 右侧内容大容器(必需) |
215
+ | ContentWrapper → Card(白卡容器) | ALLOW | 白色卡片容器,包裹所有业务内容(必需) |
216
+ | Card(白卡容器) → PageHeader | ALLOW | 标准结构 |
217
+ | Card(白卡容器) → ActionToolbar | ALLOW | 操作工具栏 |
218
+ | Card(白卡容器) → DataTable | ALLOW | 核心组件 |
219
+ | Card(白卡容器) → CardGrid | ALLOW | 卡片列表 |
220
+ | Card(白卡容器) → ViewToggle | ALLOW | 视图切换 |
221
+ | Card(白卡容器) → AdvancedFilterPanel | ALLOW | 高级筛选面板 |
222
+ | Card(白卡容器) → Pagination | ALLOW | 分页控件 |
223
+ | ContentWrapper → PageHeader / ActionToolbar / DataTable / CardGrid / Pagination | FORBID | 业务组件必须经过白卡容器包裹 |
224
+ | Card(白卡容器) → Card(白卡容器) | FORBID | 白卡容器为单例,禁止嵌套 |
225
+ | ActionToolbar → SearchCombo | ALLOW | 搜索组合 |
226
+ | CardGrid → ItemCard | ALLOW | 业务卡片(v7.3 起详见 `patterns/card-list.md` §9.1) |
227
+ | ItemCard → CardActionBar | ALLOW | 卡片操作栏,三态:hover-slidebar / hover-fade / always-visible(v7.3 详见 `patterns/card-list.md` §9.3) |
228
+ | DataTable → Pagination | ALLOW | 分页控件 |
229
+ | DataTable → Dialog | WARN | 确认弹窗由全局状态管理 |
230
+ | DataTable → Form | FORBID | 表格内不应直接嵌套完整表单 |
231
+ | Sidebar → DescriptionList | FORBID | 描述列表不应嵌套在侧边栏 |
255
232
 
256
233
  ---
257
234
 
258
- ## 8. 状态-操作模式
259
-
260
- ### 8.1 元规则
235
+ ## 6. 共享规则引用
261
236
 
262
- - 每个状态必须定义操作可用性矩阵
263
- - 禁用样式统一 `opacity-45 pointer-events-none`
264
- - 混合状态时批量按钮禁用,hover 提示原因
265
- - 异步操作必须有 Toast + 列表刷新机制
237
+ 以下规范为多个子类型共用,提取到 `_shared/` 目录:
266
238
 
267
- ### 8.2 操作确认分级
239
+ | 共享规则 | 路径 | 被引用子类型 |
240
+ |----------|------|-------------|
241
+ | 表格列元规则 | `_shared/column-meta-rules.md` | standard, l2-sidebar, expandable, drawer, view-toggle(列表视图) |
242
+ | 操作列规范 | `_shared/action-column-spec.md` | standard, l2-sidebar, expandable, drawer, view-toggle(列表视图) |
243
+ | 状态-操作模式 | `_shared/state-action-pattern.md` | standard, l2-sidebar, expandable, drawer, pure-card, standard-card, view-toggle |
244
+ | 业务卡片三件套规格(v7.3 下沉) | `patterns/card-list.md` §9(ItemCard/CardGrid/CardActionBar 完整规格) | pure-card, standard-card, view-toggle(均路由到 patterns/card-list.md) |
268
245
 
269
- | 级别 | 适用 | 确认方式 |
270
- | -------------------- | -------------------- | --------------------- |
271
- | **一级**(可逆) | 查看、编辑、远程连接 | 直接执行 |
272
- | **二级**(影响状态) | 启动、停止、重启 | Dialog 确认 |
273
- | **三级**(不可逆) | 删除 | Dialog + 输入确认文本 |
246
+ 子类型文件按需要引用对应共享文件。
274
247
 
275
- ### 8.3 异步反馈
248
+ ## 7. 产品配置引用
276
249
 
277
- | 操作 | Toast 文案 | 列表 |
278
- | -------- | ------------------------- | ------------ |
279
- | 状态变更 | "操作已提交" | 轮询状态 |
280
- | 删除 | "删除已提交" | 移除行或刷新 |
281
- | 批量 | "批量操作已提交,共 N 条" | 轮询 |
250
+ > 具体列定义、状态机、业务场景按产品隔离,存放在 `products/{产品}/` 目录。
251
+ > AI 读取时需根据目标产品加载对应配置文件。
282
252
 
283
- ### 8.4 页面间导航交互
253
+ | 产品类型 | 列定义 | 状态机 | 业务映射 |
254
+ |----------|--------|--------|---------|
255
+ | ECS | `products/ecs/columns.json` | `products/ecs/states.json` | `products/ecs/mapping.json` |
256
+ | PolarDB | `products/polar-db/columns.json` | `products/polar-db/states.json` | `products/polar-db/mapping.json` |
257
+ | Cloud-Catalog | `products/cloud-catalog/columns.json` | `products/cloud-catalog/states.json` | — |
258
+ | AI Gateway | `products/ai-gateway/columns.json` | `products/ai-gateway/states.json` | `products/ai-gateway/mapping.json` + `cards.json`(v7.2 新增,卡片视图 slot 绑定) |
284
259
 
285
- - **操作列「查看/管理」** → DetailPage(页面跳转);面包屑返回,保持筛选+分页
286
- - **操作列「编辑」**FormPage 或 Drawer(跳转/侧滑);保存/取消返回列表,保存附 Toast
287
- - **创建操作**FormPage(页面跳转);创建成功/取消返回列表
288
- - **搜索执行**当前列表(数据刷新);重置到第 1 页
289
- - **筛选条件变更**当前列表(数据刷新);重置到第 1 页,保持筛选条件
260
+ **读取规则**:
261
+ 1. 根技能确定页面类型Phase
262
+ 2. 子技能匹配子类型Phase ②
263
+ 3. 根据目标产品加载 `products/{产品}/` 下对应配置文件 Phase ②.5
264
+ 4. 元规则(列应该有显隐规则/拖拽/排序) + 产品配置(具体列名/宽度/状态) Phase 生成 HTML
290
265
 
291
266
  ---
292
267
 
293
- ## 9. 嵌套约束
294
-
295
- | 父子关系 | 状态 |
296
- | ----------------------------------------------------------------------------------------------- | ---------------------------- |
297
- | PageContainer → ContentWrapper → Card(白卡容器) → PageHeader/ActionToolbar/DataTable/Pagination | ALLOW |
298
- | ContentWrapper → 业务组件(无 Card 包裹) | **FORBID** |
299
- | Card → Card | **FORBID**(白卡单例) |
300
- | ActionToolbar → SearchCombo | ALLOW |
301
- | CardGrid → ItemCard → CardActionBar | ALLOW |
302
- | DataTable → Pagination | ALLOW |
303
- | DataTable → Form | **FORBID**(用 Drawer 触发) |
304
-
305
- ---
268
+ ## 规范引用
306
269
 
307
- ## 10. 禁止项
270
+ - **读取路径**:见根技能 `../../SKILL.md` §4.5 四阶段读取决策树
271
+ - 阶段①:`page-types.json` + `business-mapping.json`
272
+ - 阶段②:`page-frame.json` + `layout-rules.json` + `page-flow.json` + `_shared/search-combo-spec.md`;卡片子类型 (pure-card / standard-card / view-toggle) 追加读取 `patterns/card-list.md`(v7.3 起为三件套唯一规范来源)
273
+ - 阶段②.5:`products/{产品}/columns.json` + `states.json`(v6.2 新增)
274
+ - 阶段③(生成 HTML 时):`design-tokens.json` + `design-tokens.css` + `styling.json` + `../boundaries.md` + `../foundations.md`
308
275
 
309
- | 禁项 | 原因 |
310
- | ---------------------- | ----------------------------------- |
311
- | Form 直接出现在内容区 | 应通过 Dialog/Drawer/FormPage 触发 |
312
- | Chart 出现在标准列表 | 图表归属 Dashboard |
313
- | 内联编辑 | 编辑必须通过 Drawer/Dialog/FormPage |
314
- | 拖拽排序 | 表格数据为服务端排序 |
315
- | 无限滚动 | B2B 管理场景需精确分页 |
316
- | 悬浮操作栏 | 遮挡数据,可发现性差 |
317
- | 右键菜单 | 移动端不兼容 |
318
- | `hr` / section-divider | 间距通过 padding/margin 控制 |
276
+ > `rules/design-tokens.css` 是设计 Token 的唯一真相源(:root 变量定义):生成 HTML 原型时需将 :root 变量块嵌入页面 `<style>` 标签;生成 React/TSX 需确保项目已通过 `@import` 引入该 CSS 文件。
319
277
 
320
278
  ---
321
279
 
322
- ## 11. 列表页特有自检
323
-
324
- - [ ] PageHeader / ActionToolbar / DataTable / Pagination 嵌套结构正确
325
- - [ ] Card 内统一左右 padding 24px(除 Table 列)
326
- - [ ] 子类型组件正确(standard DataTable,pure-card 用 CardGrid)
327
- - [ ] SearchCombo 位置正确(间距 20px)
328
- - [ ] 操作列水平对齐左对齐
329
- - [ ] 状态-操作矩阵在所有状态下正确
330
- - [ ] 二次确认按级别正确(启动/停止 = Dialog;删除 = 输入确认)
331
- - [ ] 批量操作按钮:选中 ≥1 行显示,混合状态禁用
332
- - [ ] 搜索:回车执行、维度切换清空、FilterTag 展示
333
- - [ ] 分页:保持筛选 + "共 N 条"
334
- - [ ] 边界:空数据 Empty + 加载 Loading + 错误 ErrorState
280
+ ## 验证清单 (Validation Checklist)
281
+
282
+ > **通用检查项**(布局分区/颜色Token/间距/字体/尺寸/禁用样式/异步操作/空数据/加载中)见根技能 `../../docs/validation-workflow.md` 验证清单。此处仅列出列表页特有检查项。
283
+
284
+ | 检查项 | 检查点 | 目标 |
285
+ |--------|--------|------|
286
+ | 嵌套结构 | PageContainer → ContentWrapper → Card(白卡容器) → PageHeader/ActionToolbar/DataTable/Pagination | 100% |
287
+ | Card 内统一左右内边距 | PageHeader/ActionToolbar/DataTable/Pagination 在 Card 内左右 padding 均为 24px | 100% |
288
+ | 必需组件 | PageHeader、ActionToolbar、Pagination + 子类型组件(DataTable/CardGrid) | 100% |
289
+ | 禁止组件 | 无内联编辑、拖拽排序、无限滚动、悬浮操作栏、右键菜单 | 0 个 |
290
+ | 子类型组件 | 按子类型路由到正确组件(DataTable 或 CardGrid) | 正确 |
291
+ | 操作可用性 | 状态-操作矩阵匹配 | 所有状态正确 |
292
+ | 二次确认 | 启动/停止/重启 Dialog确认,删除需输入确认 | 正确 |
293
+ | 批量操作 | 选中≥1行显示、混合状态禁用、异步处理 | 正确 |
294
+ | 搜索交互 | 回车执行、下拉切换维度、FilterTag 展示 | 正确 |
295
+ | 分页 | 默认条数、保持筛选、"共N条" | 正确 |