@teamix-evo/skills 0.5.0 → 0.7.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 (75) hide show
  1. package/manifest.json +23 -37
  2. package/package.json +2 -2
  3. package/src/teamix-evo-design-opentrek/SKILL.md +210 -42
  4. package/src/teamix-evo-design-opentrek/boundaries.md +3 -3
  5. package/src/teamix-evo-design-opentrek/components.md +41 -40
  6. package/src/teamix-evo-design-opentrek/examples/detail-ai-gateway-1.html +1069 -0
  7. package/src/teamix-evo-design-opentrek/examples/detail-ai-gateway-instance.html +941 -0
  8. package/src/teamix-evo-design-opentrek/examples/detail-page-api-doc.html +906 -0
  9. package/src/teamix-evo-design-opentrek/examples/detail-page-config.html +993 -0
  10. package/src/teamix-evo-design-opentrek/examples/detail-page-monitor.html +1339 -0
  11. package/src/teamix-evo-design-opentrek/examples/detail-page.html +933 -0
  12. package/src/teamix-evo-design-opentrek/examples/settings-page.html +1119 -0
  13. package/src/teamix-evo-design-opentrek/examples/standard-card-list.html +1094 -0
  14. package/src/teamix-evo-design-opentrek/examples/standard-table-list.html +1361 -0
  15. package/src/teamix-evo-design-opentrek/examples/wizard-form-page.html +877 -0
  16. package/src/teamix-evo-design-opentrek/flows.md +85 -12
  17. package/src/teamix-evo-design-opentrek/foundations.md +9 -9
  18. package/src/teamix-evo-design-opentrek/generation-flow.md +15 -3
  19. package/src/teamix-evo-design-opentrek/pages/detail-page/SKILL.md +260 -0
  20. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/api-doc-detail.md +163 -0
  21. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/comparison-detail.md +100 -0
  22. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/monitor-detail.md +190 -0
  23. package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/resource-detail.md +148 -0
  24. package/src/teamix-evo-design-opentrek/pages/form-page/SKILL.md +362 -0
  25. package/src/teamix-evo-design-opentrek/pages/list-page/SKILL.md +286 -0
  26. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/action-column-spec.md +60 -0
  27. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/column-meta-rules.md +117 -0
  28. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/search-combo-spec.md +194 -0
  29. package/src/teamix-evo-design-opentrek/pages/list-page/_shared/state-action-pattern.md +51 -0
  30. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/advanced-filter-list.md +94 -0
  31. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/card-list.md +558 -0
  32. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/drawer-list.md +76 -0
  33. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/expandable-list.md +70 -0
  34. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/l2-sidebar-list.md +73 -0
  35. package/src/teamix-evo-design-opentrek/pages/list-page/patterns/standard-list.md +198 -0
  36. package/src/teamix-evo-design-opentrek/patterns/color-mapping.md +1 -1
  37. package/src/teamix-evo-design-opentrek/patterns/detail-page.md +217 -152
  38. package/src/teamix-evo-design-opentrek/patterns/form-page.md +437 -231
  39. package/src/teamix-evo-design-opentrek/patterns/list-page.md +220 -292
  40. package/src/teamix-evo-design-opentrek/patterns/page-types.md +40 -130
  41. package/src/teamix-evo-design-opentrek/rules/_assets/OP_AGENT RUNTIME.svg +1 -0
  42. package/src/teamix-evo-design-opentrek/rules/_assets/OP_AI GATEWAY.svg +1 -0
  43. package/src/teamix-evo-design-opentrek/rules/_assets/OP_AI STUDIO.svg +1 -0
  44. package/src/teamix-evo-design-opentrek/rules/_assets/OP_DEV-2.svg +1 -0
  45. package/src/teamix-evo-design-opentrek/rules/_assets/OP_LOGO.svg +1 -0
  46. package/src/teamix-evo-design-opentrek/rules/_assets/OP_OPS.svg +1 -0
  47. package/src/teamix-evo-design-opentrek/rules/boundaries.rules.json +3 -3
  48. package/src/teamix-evo-design-opentrek/rules/business-mapping.json +124 -0
  49. package/src/teamix-evo-design-opentrek/rules/common-components.json +924 -0
  50. package/src/teamix-evo-design-opentrek/rules/component-specs.json +1083 -0
  51. package/src/teamix-evo-design-opentrek/rules/design-tokens.css +433 -0
  52. package/src/teamix-evo-design-opentrek/rules/design-tokens.json +2798 -0
  53. package/src/teamix-evo-design-opentrek/rules/layout-rules.json +218 -0
  54. package/src/teamix-evo-design-opentrek/rules/page-flow.json +351 -0
  55. package/src/teamix-evo-design-opentrek/rules/page-frame.json +241 -0
  56. package/src/teamix-evo-design-opentrek/rules/page-header-spec.md +123 -0
  57. package/src/teamix-evo-design-opentrek/rules/page-types.json +206 -0
  58. package/src/teamix-evo-design-opentrek/rules/sidebar-spec.md +217 -0
  59. package/src/teamix-evo-design-opentrek/rules/styling.json +188 -0
  60. package/src/teamix-evo-design-opentrek/rules/token-mapping.md +284 -0
  61. package/src/teamix-evo-design-uni-manager/SKILL.md +1 -1
  62. package/src/teamix-evo-design-uni-manager/boundaries.md +3 -3
  63. package/src/teamix-evo-design-uni-manager/brand.md +1 -1
  64. package/src/teamix-evo-design-uni-manager/components.md +30 -28
  65. package/src/teamix-evo-design-uni-manager/foundations.md +21 -21
  66. package/src/teamix-evo-design-uni-manager/generation-flow.md +3 -1
  67. package/src/teamix-evo-design-uni-manager/patterns/detail-page.md +1 -1
  68. package/src/teamix-evo-design-uni-manager/patterns/form-page.md +18 -18
  69. package/src/teamix-evo-design-uni-manager/patterns/list-page.md +29 -29
  70. package/src/teamix-evo-design-uni-manager/patterns/page-types.md +11 -11
  71. package/src/teamix-evo-design-uni-manager/philosophy.md +1 -1
  72. package/src/teamix-evo-design-uni-manager/rules/boundaries.rules.json +3 -3
  73. package/src/teamix-evo-manage/SKILL.md +288 -121
  74. package/src/teamix-evo-upgrade/SKILL.md +298 -0
  75. package/src/teamix-evo-design-opentrek/patterns/sidebar.md +0 -122
@@ -1,203 +1,268 @@
1
- # Detail Page — 详情页模式
1
+ ---
2
+ name: page-rule-detail
3
+ parent: page-rule-system
4
+ description: >
5
+ 详情页(PageType: DetailPage)路由规则。根据子类型识别关键词,路由到 patterns/ 目录下对应详细规则。
6
+ 共享规则在 _shared/ 目录(PageHeader L2 面包屑强约束)。
7
+ 包含通用属性模型、组件推荐、嵌套约束、交互补充、视觉规范同步。
8
+ 触发:需要详情页规则、匹配详情页模板、生成详情页。
9
+ Version: 7.8.4
10
+ ---
11
+
12
+ # 详情页路由规则
2
13
 
3
- > ⚠️ **Prerequisites**: 你必须已在 [generation-flow.md](../generation-flow.md) Step 2 确认页面类型为 **DetailPage**,并由 Step 3 引导到这里。
14
+ > ⚠️ **本文件是高阶路由索引,不含布局实现细节。**
15
+ > **生成页面时必须读取**:
16
+ > - `../pages/detail-page/SKILL.md` — 子技能入口(子类型列表 + 属性模型)
17
+ > - `../pages/detail-page/patterns/{subtype}.md` — 完整骨架 + DOM 结构 + CSS 约束(resource / monitor / api-doc / comparison)
18
+ > - `../rules/page-header-spec.md` — PageHeader L2 面包屑硬约束
19
+ >
20
+ > 本文件仅用于:(1) 了解详情页子类型概览 (2) 快速判断属于哪个子类型
4
21
 
5
- > **触发**:用户描述含"详情/查看/信息/概览"。
6
- > **核心特征**:单条记录的只读展示 + DescriptionList + 操作按钮。
7
- > **页面级别**:L2(面包屑模式 PageHeader,自动继承 Sidebar)。
22
+ ## 1. 类型定义
23
+
24
+ **页面类型**: DetailPage
25
+ **核心特征**: 单条记录的只读展示 + DescriptionList + 操作按钮
26
+ **识别条件**: 页面展示单个实体的完整信息 + 描述列表(DescriptionList) + Tab分类 + 操作按钮
8
27
 
9
28
  ---
10
29
 
11
- ## 1. 子类型识别
30
+ ## 2. 子类型路由表
12
31
 
13
- | 子类型 | 关键词 | 差异特征 |
14
- | ------------ | ------------------------ | ------------------------------------------ |
15
- | **标准详情** | "详情"/"基本信息" | PageHeader + DescriptionList + 操作按钮 |
16
- | **资源详情** | "实例详情"/"资源"/"监控" | InfoCard + MonitorPanel + Tabs(关联资源) |
17
- | **概览型** | "概览"/"总览" | StatCard + Chart + DescriptionList |
18
- | **流程型** | "审批"/"流程"/"记录" | Steps + Timeline + DescriptionList |
19
- | **对比型** | "对比"/"比较" | 双栏/多栏 DescriptionList 对照 |
32
+ | 子类型ID | 识别关键词 | 路由到 | 核心组件 |
33
+ |----------|-----------|--------|----------|
34
+ | resource | "实例详情"/"资源"/"详情"/"查看"/"信息" | `patterns/resource-detail.md` | InfoCard + DescriptionList + Tabs |
35
+ | monitor | "监控"/"指标"/"性能"/"告警"/"Metrics" | `patterns/monitor-detail.md` | MetricCard + ChartPanel + AlertList + TimeRangeSelector |
36
+ | api-doc | "API"/"接口"/"端点"/"文档"/"接口文档"/"模型API" | `patterns/api-doc-detail.md` | ApiEndpoint + ParameterTable + CodeBlock |
37
+ | comparison | "对比"/"比较"/"差异"/"版本对比" | `patterns/comparison-detail.md` | 双栏 DescriptionList |
20
38
 
21
- ---
39
+ ### 路由判定优先级
22
40
 
23
- ## 2. 标准结构(资源详情)
24
-
25
- ```
26
- ┌─────────────────────────────────────────────┐
27
- │ PageHeader(面包屑模式) │
28
- │ 实例与镜像 > 实例列表 > 实例详情 [创建镜像]│ ← Header
29
- │ │
30
- │ InfoCard ─ 基本信息 │ ← 摘要区
31
- │ 组织 | 资源集 | 创建人 | 创建时间 │
32
- │ │
33
- │ InfoCard ─ 监控 │
34
- │ [CPU 使用率] [内存使用率](MonitorPanel) │
35
- │ │
36
- │ Tabs │ ← 分类
37
- │ [基本信息] [监控] [云盘] [安全组] [快照] │
38
- │ │
39
- │ DescriptionList ─ 基本信息 │ ← 主区
40
- │ 架构: X86 地域: cn-beijing │
41
- │ 实例ID: i-xxx 状态: [Badge 运行中] │
42
- │ │
43
- │ DescriptionList ─ 配置信息 │
44
- │ vCPU: 2 内存: 4 GiB │
45
- └─────────────────────────────────────────────┘
46
- ```
47
-
48
- ## 简洁详情结构
49
-
50
- ```
51
- ┌─────────────────────────────────────────────┐
52
- │ PageHeader(面包屑模式) │
53
- │ 用户列表 > 用户详情 [编辑] [删除] │
54
- │ │
55
- │ DescriptionList (column: 2) │
56
- │ 姓名: 张三 邮箱: zhangsan@example.com │
57
- │ 角色: 管理员 状态: [Badge 启用] │
58
- │ 创建时间: 2026-01-15 更新: 2026-04-20 │
59
- └─────────────────────────────────────────────┘
60
- ```
41
+ 1. 含"监控"/"指标"/"性能"/"告警"/"Metrics" → monitor
42
+ 2. 含"API"/"接口"/"端点"/"文档" → api-doc
43
+ 3. 含"对比"/"比较"/"差异" → comparison
44
+ 4. 其他详情场景 → resource(默认)
61
45
 
62
46
  ---
63
47
 
64
- ## 3. 必需组件
48
+ ## 3. 通用属性模型
65
49
 
66
- | 组件 | 位置 | 说明 |
67
- | ------------------- | ---- | ------------------------------- |
68
- | **PageHeader** | top | 面包屑模式(L2 页面)+ 操作按钮组 |
69
- | **DescriptionList** | main | 详情页核心展示组件 |
70
- | **DescriptionItem** | main | 描述项最小展示单元 |
50
+ | 属性 | | 说明 |
51
+ |------|-----|------|
52
+ | layout.type | TWO_COL / SINGLE_COL | `rules/page-frame.json` layoutSelectionRules |
53
+ | layout.frame | L2 | 详情页为 L2 级页面,自动继承 Sidebar + PageHeader 面包屑模式 |
54
+ | responsive | 768px 侧边栏折叠为抽屉,DescriptionList 列数从 4 降为 2 |
71
55
 
72
- **框架级**(自动继承):Sidebar、PageHeader 由 page-frame 管控。
56
+ > **框架组件自动继承**:Sidebar、PageHeader 由 `rules/page-frame.json` 统一管理,L2 级页面自动继承。
73
57
 
74
- ### 可选组件
58
+ ---
75
59
 
76
- - **InfoCard** — 顶部摘要(组织/创建人/创建时间)
77
- - **Tabs** — 信息分多类(基本/监控/关联资源)
78
- - **MonitorPanel** — CPU/内存/网络监控(仅资源详情)
79
- - **Badge** — 状态指示
80
- - **Tooltip** ID / 截断字段悬浮
60
+ ## 4. 组件推荐
61
+
62
+ ### 必需组件
63
+
64
+ | 组件 | 引用 | 层级 | 位置 | 说明 |
65
+ |------|------|------|------|------|
66
+ | PageHeader | — | ORGANISM | top | 面包屑模式 + 操作按钮组(详见 `../rules/page-header-spec.md`) |
67
+ | DescriptionList | — | ORGANISM | center | 核心展示组件,支持 2/3/4 列布局 |
68
+ | DescriptionItem | — | ATOMIC | center | 单个键值对单元,6 种交互模式 |
69
+
70
+ ### 可选组件(跨子类型通用)
71
+
72
+ | 组件 | 引用 | 条件 | 说明 |
73
+ |------|------|------|------|
74
+ | InfoCard | — | 需展示摘要信息 | 顶部摘要卡片 |
75
+ | CopyableText | — | ID/IP/资源名 | 可复制原子 |
76
+ | StatusBadge | — | 资源运行态 | 带前置圆点的状态徽章 |
77
+ | Tabs | — | 信息分多类展示 | Tab 分组 |
78
+ | Dialog | — | 需二次确认 | 删除/释放确认 |
79
+ | Sheet | — | 需编辑详情 | 侧滑编辑 |
80
+ | DropdownMenu | — | 操作多项 | "更多"下拉 |
81
+ | Tag | — | 状态/标签 | — |
82
+ | Badge | — | 运行状态 | — |
83
+ | Tooltip | — | 悬浮提示 | — |
84
+ | Separator | — | 信息分组 | — |
85
+ | Alert | — | 操作提示 | — |
86
+ | Empty | — | 无关联数据 | — |
87
+ | Spinner | — | 加载中 | — |
88
+ | Sonner | — | 操作反馈 | — |
89
+
90
+ ### 禁止组件
91
+
92
+ | 组件 | 约束 | 原因 |
93
+ |------|------|------|
94
+ | Form (ORGANISM) | 禁止在主内容区 | 编辑应通过 Sheet/Dialog/FormPage |
95
+ | DataTable | 禁止在主内容区 | 关联数据通过 Tabs 子面板展示 |
96
+ | Chart (ORGANISM) | 禁止替代 DescriptionList | 监控通过 ChartPanel,详见 patterns/monitor-detail.md |
97
+ | PageContainer | 禁止嵌套 | 见 layout-rules.json |
98
+ | QueryFilter | 禁止出现 | 详情页无筛选需求 |
81
99
 
82
100
  ---
83
101
 
84
- ## 4. DescriptionItem 字段交互
85
-
86
- | 类型 | 触发 | 反馈 |
87
- | -------------- | ---------- | --------------------------------- |
88
- | 默认展示 | | 只读文本,空值 `-` 占位 |
89
- | 可复制 | 📋 图标 | 图标高亮 + Toast "已复制" |
90
- | 可编辑(行内) | ✎ 图标 | 切换为 Input |
91
- | 链接跳转 | 点字段值 | 链接样式(VPC、安全组等关联资源) |
92
- | 状态展示 | | Badge + 语义色 |
93
- | 悬浮提示 | hover | Tooltip 完整内容(截断时) |
102
+ ## 5. 嵌套约束(通用)
103
+
104
+ | 父子关系 | 状态 | 说明 |
105
+ |----------|------|------|
106
+ | PageContainer → ContentWrapper | ALLOW | 右侧内容大容器(必需) |
107
+ | ContentWrapper Card(白卡容器) | ALLOW | 白色卡片容器(必需) |
108
+ | Card(白卡容器) → PageHeader | ALLOW | 标准结构(面包屑模式) |
109
+ | Card(白卡容器) → InfoCard | ALLOW | 摘要卡片 |
110
+ | Card(白卡容器) → Tabs | ALLOW | 分类 Tab |
111
+ | Card(白卡容器) → DescriptionList | ALLOW | 核心展示 |
112
+ | ContentWrapper → PageHeader / DescriptionList / Tabs | FORBID | 必须经过白卡容器包裹 |
113
+ | Card(白卡容器) → Card(白卡容器) | FORBID | 白卡容器为单例 |
114
+ | DescriptionList → ListSection | ALLOW | 信息分组 |
115
+ | ListSection → DescriptionItem | ALLOW | 分组详情项 |
116
+ | Tabs → TabPane → DescriptionList | ALLOW | Tab 内展示详情 |
117
+ | Tabs → TabPane → DataTable | ALLOW | Tab 内展示关联资源 |
118
+ | PageHeader → ActionGroup | ALLOW | 操作按钮组 |
119
+ | Sidebar → DescriptionList | FORBID | 描述列表不应在侧边栏 |
120
+
121
+ > 子类型特有嵌套约束见对应 `patterns/*.md`。
94
122
 
95
123
  ---
96
124
 
97
- ## 5. 操作按钮规则
125
+ ## 6. 页面交互补充(跨子类型共享)
98
126
 
99
- ### 5.1 位置
127
+ ### DescriptionItem 字段交互
100
128
 
101
- - **位置 A**:PageHeader 右侧(主操作 + 更多 Dropdown)
102
- - **位置 B**:DescriptionItem 内(行内编辑、复制)
129
+ | 交互类型 | 触发 | 视觉反馈 |
130
+ |----------|------|----------|
131
+ | 默认展示 | — | 只读文本 |
132
+ | 可复制 | 点击复制图标 | Sonner "已复制" |
133
+ | 可编辑 | 点击编辑图标 | 行内切换为 Input |
134
+ | 链接跳转 | 点击字段值 | 蓝色链接 |
135
+ | 状态展示 | — | Badge 颜色 |
136
+ | 悬浮提示 | hover | Tooltip 完整内容 |
103
137
 
104
- ### 5.2 操作分级
138
+ ### 操作按钮行为
105
139
 
106
- | 级别 | 适用 | 确认 |
107
- | ---------------- | --------------- | --------------------- |
108
- | 一级(可逆) | 编辑、续费/降配 | 直接执行 |
109
- | 二级(影响状态) | 释放、创建镜像 | Dialog 确认 |
110
- | 三级(不可逆) | 删除 | Dialog + 输入确认文本 |
140
+ | 操作 | 前置条件 | 二次确认 | 返回行为 |
141
+ |------|---------|---------|----------|
142
+ | 编辑 | | | 保存后返回详情页 |
143
+ | 删除 | 实例已停止 | Dialog + 输入确认 | 返回列表页 |
144
+ | 释放/创建镜像 | 实例已停止 | Dialog 确认 | 异步操作,返回列表 |
145
+ | 续费/降配 | 运行中 | 否 | 完成后返回详情页 |
146
+ | 返回/关闭 | 无 | 否 | 返回 ListPage |
111
147
 
112
- ### 5.3 异步反馈
148
+ ### Tab 切换交互
113
149
 
114
- | 操作 | Toast | 页面 |
115
- | --------------- | ------------ | --------------------- |
116
- | 释放 / 创建镜像 | "操作已提交" | 轮询状态 |
117
- | 删除 | "删除已提交" | 返回 ListPage 并刷新 |
118
- | 编辑保存 | "保存成功" | 停留详情页 + 局部刷新 |
150
+ - 首次加载默认激活第一个 Tab
151
+ - Tab 切换懒加载,Loading 状态展示
152
+ - 无数据 Tab 展示 Empty
153
+ - URL hash 同步,支持刷新保持
154
+ - Tab DataTable 含独立 Pagination
119
155
 
120
- ---
156
+ ### 边界情况处理
121
157
 
122
- ## 6. Tab 切换交互
158
+ | 场景 | 处理方式 |
159
+ |------|----------|
160
+ | 无数据 | Empty + 返回列表引导 |
161
+ | 加载中 | Spinner 骨架屏 |
162
+ | 加载失败 | ErrorState + 重试 |
163
+ | 权限不足 | 操作按钮隐藏 |
164
+ | 资源不存在 | 404 ExceptionPage |
165
+ | 字段为空 | 展示 "-" 占位 |
166
+ | 字段过长 | 截断 + Tooltip |
123
167
 
124
- | 场景 | 行为 |
125
- | ---------- | ----------------------------- |
126
- | 首次加载 | 默认激活第一个 Tab |
127
- | Tab 切换 | 懒加载数据 + Loading |
128
- | 无数据 Tab | 展示 Empty |
129
- | Tab 内列表 | 含独立 Pagination |
130
- | URL 同步 | 切换同步 URL hash,刷新可保持 |
168
+ ### 返回约定
169
+
170
+ - 面包屑父级项可点击返回列表页
171
+ - PageHeader 右侧关闭按钮(×)
172
+ - 返回后列表页保持原筛选和分页
131
173
 
132
174
  ---
133
175
 
134
- ## 7. 信息分组
176
+ ## 7. 视觉规范同步(v7.5 间距 + v7.6 表面)【硬约束】
135
177
 
136
- - DescriptionList ListSection 分组(基本信息 / 配置信息 / 网络信息)
137
- - 每组可独立展开/收起(可选)
138
- - 分组间用 Divider 分隔
139
- - 每组内 DescriptionList 默认 `column: 2`,宽屏可至 4,移动端降为 1
178
+ > 与列表页 `patterns/list-page.md` §5.1 / §5.2 形成对称。规则总源以 `rules/design-tokens.css` 为准。
140
179
 
141
- ---
180
+ ### 7.1 间距规则(v7.5 分层 padding 模型)
142
181
 
143
- ## 8. 嵌套约束
182
+ | 层级 | Token | 值 | 含义 |
183
+ |------|-------|----|------|
184
+ | PageContainer 外层 | `--page-container-padding` | **16px** | 四周 padding |
185
+ | Card 白卡容器内 | `--card-padding-x` | **20px** | 唯一对齐源 |
186
+ | Card 内区块垂直间距 | `--card-gap` | 16px | 各区块纵向间距 |
187
+ | DescriptionList 内 | C26-DescriptionList | 见 component-specs.json | 行高与列宽 |
144
188
 
145
- | 父子关系 | 状态 |
146
- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
147
- | PageShell(background="muted", sidebar=OpSidebar) → OpPageContainer(header=PageHeader) → InfoCard / Tabs / DescriptionList | ALLOW |
148
- | OpPageContainer 内大白卡 → 再嵌一层 `<Card>` 包业务组件 | **FORBID**(已内置大白卡,嵌套违反白卡单例) |
149
- | InfoCard → DescriptionList / MonitorPanel | ALLOW(InfoCard 是局部信息卡 — 业务子区域级,非主区白卡) |
150
- | Tabs → TabPane → DescriptionList / DataTable | ALLOW(关联资源用 DataTable) |
151
- | Sidebar → DescriptionList | **FORBID** |
152
- | PageHeader → Tabs | WARN(Tab 应在 PageHeader 下方) |
189
+ **派生约束**:
190
+ - ContentCard 左右 padding 由 `--card-padding-x = 20px` 提供
191
+ - 子组件(DescriptionList / InfoCard / Tabs / PageHeader)**不再重复设置左右 padding**
153
192
 
154
- ---
193
+ ### 7.2 ContentCard 表面规则(v7.6)
194
+
195
+ | 属性 | **v7.6(当前)** |
196
+ |------|----------------|
197
+ | `border` | **`none`(去掉)** |
198
+ | `box-shadow` | **`var(--shadow-sm)` = `0 1px 2px rgba(0,0,0,0.05)`** |
199
+ | `border-radius` | `var(--radius-lg)` = 12px |
200
+ | `background` | `hsl(var(--card))` |
201
+
202
+ ### 7.3 InfoCard surface 决议(v7.6)
203
+
204
+ #### 模式 A:独立 Card 容器模式
205
+
206
+ 跟随主卡 ContentCard 应用 v7.6:`border: none` + `box-shadow: var(--shadow-sm)`
155
207
 
156
- ## 9. 禁止项
208
+ #### 模式 B:嵌入主卡内的分组区块模式
157
209
 
158
- | 禁项 | 原因 |
159
- | -------------------------- | ------------------------------------- |
160
- | Form 直接在主内容区 | 编辑应通过 Drawer/Dialog/FormPage |
161
- | DataTable 在主内容区 | 关联数据应用 Tabs 子面板 |
162
- | Chart 替代 DescriptionList | 图表属 Dashboard,监控用 MonitorPanel |
163
- | QueryFilter | 详情页无筛选需求 |
164
- | `hr` 分割线 | Divider |
210
+ 仅使用 `padding: 16px 0` + `border-bottom: 1px solid hsl(var(--gray-line))`(功能性分组分割线)
211
+
212
+ ### 7.4 功能性分割线保留清单
213
+
214
+ | 元素 | 边框用途 | 保留 |
215
+ |------|----------|------|
216
+ | `.page-header``border-bottom` | 标题区与内容区分割 | ✅ 保留 |
217
+ | `Tabs` 容器的 `border-bottom` | TabBar 与 TabContent 分割 | ✅ 保留 |
218
+ | `Separator` | 信息分组 | ✅ 保留 |
219
+ | ListSection 之间横线 | 描述列表分组 | ✅ 保留 |
220
+ | 浮层类(Dropdown/Popover/Tooltip) | 浮层与背景区分 | ✅ 保留 border + 阴影 |
221
+
222
+ ### 7.5 禁止项
223
+
224
+ - ❌ `.card / .info-card` 中残留 `border: 1px solid hsl(var(--gray-line))`
225
+ - ❌ 硬编码阴影 `0 1px 2px rgba(0,0,0,0.04)`;一律走 `var(--shadow-sm)`
226
+ - ❌ `--card-padding-x` 硬编码为 24px / 16px(v7.5 起统一 20px)
227
+ - ❌ 子组件重复设置左右 padding
165
228
 
166
229
  ---
167
230
 
168
- ## 10. 边界情况
231
+ ## 8. 共享规则引用
169
232
 
170
- | 场景 | 处理 |
171
- | ---------- | ----------------------- |
172
- | 无数据 | Empty + 返回列表引导 |
173
- | 加载中 | Loading 骨架屏 |
174
- | 加载失败 | ErrorState + 重试按钮 |
175
- | 权限不足 | 操作按钮隐藏,只读展示 |
176
- | 资源不存在 | 跳转 404 ExceptionPage |
177
- | 字段为空 | 展示 "-" 占位 |
178
- | 字段过长 | 截断 + Tooltip 完整内容 |
233
+ | 共享规则 | 路径 | 被引用子类型 |
234
+ |----------|------|-------------|
235
+ | PageHeader L1 标题 / L2 面包屑强约束 | `../rules/page-header-spec.md` | 全部 |
179
236
 
180
237
  ---
181
238
 
182
- ## 11. 详情 → 列表返回约定
239
+ ## 规范引用
240
+
241
+ - **读取路径**:见根技能 `../../SKILL.md` §4.5 三阶段读取决策树
242
+ - 阶段①:`page-types.json` + `business-mapping.json`
243
+ - 阶段②:`page-frame.json` + `layout-rules.json` + `page-flow.json`;匹配子类型后追加 `patterns/{子类型}.md`
244
+ - 阶段③(生成 HTML 时):`design-tokens.json` + `design-tokens.css` + `component-specs.json` + `styling.json` + `../boundaries.md` + `../foundations.md`
183
245
 
184
- - 面包屑父级项点击返回 ListPage
185
- - PageHeader 右侧可选 × 关闭按钮
186
- - 返回后 ListPage 保持原筛选 + 分页
187
- - 详情页编辑成功后,按业务决策:
188
- - 留在详情页(Toast「保存成功」+ 局部刷新)
189
- - 或返回 ListPage(Toast「保存成功」+ 列表刷新)
246
+ > `rules/design-tokens.css` 是设计 Token 唯一真相源:生成 HTML 原型时需将 :root 变量块嵌入 `<style>`;React/TSX 需确保已 `@import` 引入。
190
247
 
191
248
  ---
192
249
 
193
- ## 12. 详情页特有自检
194
-
195
- - [ ] PageHeader 用面包屑模式(L2 页面)
196
- - [ ] DescriptionList 列数:默认 2,宽屏可 4,移动端 1
197
- - [ ] 关联资源用 Tabs 子面板(不在主区直接放 DataTable)
198
- - [ ] Badge 用语义色(不用原色)
199
- - [ ] 空字段用 "-" 占位
200
- - [ ] 长字段(ID/Hash)`font-mono` + 提供复制按钮
201
- - [ ] 操作分级正确(删除 = 输入确认)
202
- - [ ] Tab 切换 URL hash 同步
203
- - [ ] 边界状态完整:Empty / Loading / ErrorState / 权限不足 / 404
250
+ ## 验证清单 (Validation Checklist)
251
+
252
+ > **通用检查项** `../../docs/validation-workflow.md`。此处仅列出详情页特有检查项。
253
+
254
+ | 检查项 | 检查点 | 目标 |
255
+ |--------|--------|------|
256
+ | 必需组件 | PageHeader、DescriptionList、DescriptionItem | 100% |
257
+ | 嵌套约束 | PageContainer → ContentWrapper → Card → PageHeader + 内容 | 无违规 |
258
+ | 禁止组件 | 无内联表单、DataTable 主内容区、QueryFilter | 0 个 |
259
+ | PageHeader | 面包屑模式合规(`../rules/page-header-spec.md` 15 项) | 全部通过 |
260
+ | ContentCard 表面 (v7.6) | 1px border + shadow = var(--shadow-sm) | 0 违规 |
261
+ | InfoCard 表面 (v7.6) | 模式 A 跟随主卡;模式 B 仅 padding + border-bottom | 0 违规 |
262
+ | Card 间距 (v7.5) | padding = 0 var(--card-padding-x) = 20px | 正确 |
263
+ | PageContainer 间距 | padding = var(--page-container-padding) = 16px | 正确 |
264
+ | 功能性分割线 | PageHeader / Tabs / Separator 的 border 保留 | 不被误删 |
265
+ | 操作按钮 | 前置条件、确认方式、异步处理 | 全部正确 |
266
+ | Tab 切换 | 懒加载、URL hash、Empty | 正确 |
267
+ | 返回约定 | 面包屑 + 关闭按钮(×) | 正确 |
268
+ | 边界情况 | 无数据/加载中/失败/权限/404/空值 | 正确 |