@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.
- package/README.md +7 -3
- package/manifest.json +3 -2
- package/package.json +2 -2
- package/src/teamix-evo-code-opentrek/SKILL.md +12 -10
- package/src/teamix-evo-code-opentrek/api-layering.md +8 -5
- package/src/teamix-evo-code-opentrek/checklist.md +2 -0
- package/src/teamix-evo-code-opentrek/error-and-loading.md +38 -25
- package/src/teamix-evo-code-opentrek/file-structure.md +63 -54
- package/src/teamix-evo-code-opentrek/forms-and-validation.md +14 -12
- package/src/teamix-evo-code-opentrek/reuse-first.md +2 -0
- package/src/teamix-evo-code-opentrek/routing-and-codesplit.md +23 -21
- package/src/teamix-evo-code-opentrek/testing.md +32 -28
- package/src/teamix-evo-code-uni-manager/SKILL.md +12 -10
- package/src/teamix-evo-code-uni-manager/api-layering.md +2 -0
- package/src/teamix-evo-code-uni-manager/checklist.md +2 -0
- package/src/teamix-evo-code-uni-manager/error-and-loading.md +3 -1
- package/src/teamix-evo-code-uni-manager/file-structure.md +2 -0
- package/src/teamix-evo-code-uni-manager/forms-and-validation.md +2 -0
- package/src/teamix-evo-code-uni-manager/reuse-first.md +3 -1
- package/src/teamix-evo-code-uni-manager/routing-and-codesplit.md +3 -1
- package/src/teamix-evo-code-uni-manager/testing.md +2 -0
- package/src/teamix-evo-design-opentrek/SKILL.md +213 -52
- package/src/teamix-evo-design-opentrek/boundaries.md +25 -5
- package/src/teamix-evo-design-opentrek/brand.md +7 -7
- package/src/teamix-evo-design-opentrek/checklist.md +15 -13
- package/src/teamix-evo-design-opentrek/components.md +89 -39
- package/src/teamix-evo-design-opentrek/examples/detail-ai-gateway-1.html +1069 -0
- package/src/teamix-evo-design-opentrek/examples/detail-ai-gateway-instance.html +941 -0
- package/src/teamix-evo-design-opentrek/examples/detail-page-api-doc.html +906 -0
- package/src/teamix-evo-design-opentrek/examples/detail-page-config.html +993 -0
- package/src/teamix-evo-design-opentrek/examples/detail-page-monitor.html +1339 -0
- package/src/teamix-evo-design-opentrek/examples/detail-page.html +933 -0
- package/src/teamix-evo-design-opentrek/examples/settings-page.html +1119 -0
- package/src/teamix-evo-design-opentrek/examples/standard-card-list.html +1094 -0
- package/src/teamix-evo-design-opentrek/examples/standard-table-list.html +1361 -0
- package/src/teamix-evo-design-opentrek/examples/wizard-form-page.html +877 -0
- package/src/teamix-evo-design-opentrek/flows.md +85 -12
- package/src/teamix-evo-design-opentrek/foundations.md +12 -9
- package/src/teamix-evo-design-opentrek/generation-flow.md +84 -14
- package/src/teamix-evo-design-opentrek/pages/detail-page/SKILL.md +260 -0
- package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/api-doc-detail.md +163 -0
- package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/comparison-detail.md +100 -0
- package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/monitor-detail.md +190 -0
- package/src/teamix-evo-design-opentrek/pages/detail-page/patterns/resource-detail.md +148 -0
- package/src/teamix-evo-design-opentrek/pages/form-page/SKILL.md +362 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/SKILL.md +286 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/_shared/action-column-spec.md +60 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/_shared/column-meta-rules.md +117 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/_shared/search-combo-spec.md +194 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/_shared/state-action-pattern.md +51 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/advanced-filter-list.md +94 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/card-list.md +558 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/drawer-list.md +76 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/expandable-list.md +70 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/l2-sidebar-list.md +73 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/standard-list.md +198 -0
- package/src/teamix-evo-design-opentrek/patterns/color-mapping.md +96 -0
- package/src/teamix-evo-design-opentrek/patterns/dashboard.md +2 -0
- package/src/teamix-evo-design-opentrek/patterns/detail-page.md +218 -152
- package/src/teamix-evo-design-opentrek/patterns/form-page.md +437 -228
- package/src/teamix-evo-design-opentrek/patterns/list-page.md +221 -260
- package/src/teamix-evo-design-opentrek/patterns/page-types.md +40 -125
- package/src/teamix-evo-design-opentrek/philosophy.md +7 -5
- package/src/teamix-evo-design-opentrek/rules/_assets/OP_AGENT RUNTIME.svg +1 -0
- package/src/teamix-evo-design-opentrek/rules/_assets/OP_AI GATEWAY.svg +1 -0
- package/src/teamix-evo-design-opentrek/rules/_assets/OP_AI STUDIO.svg +1 -0
- package/src/teamix-evo-design-opentrek/rules/_assets/OP_DEV-2.svg +1 -0
- package/src/teamix-evo-design-opentrek/rules/_assets/OP_LOGO.svg +1 -0
- package/src/teamix-evo-design-opentrek/rules/_assets/OP_OPS.svg +1 -0
- package/src/teamix-evo-design-opentrek/rules/boundaries.rules.json +3 -3
- package/src/teamix-evo-design-opentrek/rules/business-mapping.json +124 -0
- package/src/teamix-evo-design-opentrek/rules/common-components.json +924 -0
- package/src/teamix-evo-design-opentrek/rules/component-specs.json +1083 -0
- package/src/teamix-evo-design-opentrek/rules/design-tokens.css +433 -0
- package/src/teamix-evo-design-opentrek/rules/design-tokens.json +2798 -0
- package/src/teamix-evo-design-opentrek/rules/layout-rules.json +218 -0
- package/src/teamix-evo-design-opentrek/rules/page-flow.json +351 -0
- package/src/teamix-evo-design-opentrek/rules/page-frame.json +241 -0
- package/src/teamix-evo-design-opentrek/rules/page-header-spec.md +123 -0
- package/src/teamix-evo-design-opentrek/rules/page-types.json +206 -0
- package/src/teamix-evo-design-opentrek/rules/sidebar-spec.md +217 -0
- package/src/teamix-evo-design-opentrek/rules/styling.json +188 -0
- package/src/teamix-evo-design-opentrek/rules/token-mapping.md +284 -0
- package/src/teamix-evo-design-uni-manager/SKILL.md +18 -27
- package/src/teamix-evo-design-uni-manager/boundaries.md +7 -4
- package/src/teamix-evo-design-uni-manager/brand.md +1 -1
- package/src/teamix-evo-design-uni-manager/components.md +33 -28
- package/src/teamix-evo-design-uni-manager/foundations.md +24 -21
- package/src/teamix-evo-design-uni-manager/generation-flow.md +46 -8
- package/src/teamix-evo-design-uni-manager/patterns/dashboard.md +3 -1
- package/src/teamix-evo-design-uni-manager/patterns/detail-page.md +42 -13
- package/src/teamix-evo-design-uni-manager/patterns/form-page.md +67 -30
- package/src/teamix-evo-design-uni-manager/patterns/list-page.md +73 -40
- package/src/teamix-evo-design-uni-manager/patterns/page-types.md +14 -12
- package/src/teamix-evo-design-uni-manager/philosophy.md +4 -2
- package/src/teamix-evo-design-uni-manager/rules/boundaries.rules.json +3 -3
- package/src/teamix-evo-manage/SKILL.md +74 -66
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
# Flows —
|
|
1
|
+
# Flows — 页间流转与用户旅程
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 本文件是"页面间如何跳转"的**唯一真值源**:用户旅程、主流转图、CRUD 速查、资源生命周期、流转设计规则均集中于此。
|
|
4
|
+
>
|
|
5
|
+
> 结构化机读数据(含 URL 模板、Toast 文案、确认级别、反馈矩阵、快捷键等执行细节)见 [`rules/page-flow.json`](./rules/page-flow.json)。本文档与 JSON 互补:本文档面向 AI / 设计师阅读,JSON 面向程序消费。
|
|
4
6
|
|
|
5
7
|
---
|
|
6
8
|
|
|
7
|
-
## 1.
|
|
9
|
+
## 1. 四条核心用户旅程
|
|
10
|
+
|
|
11
|
+
四条旅程是"编织视角"——把页面、组件、反馈串成完整的用户路径。
|
|
8
12
|
|
|
9
13
|
### A · 资源查找与操作
|
|
10
14
|
|
|
@@ -17,10 +21,10 @@
|
|
|
17
21
|
|
|
18
22
|
`ListPage → FormPage(分组 + 实时校验) → 提交 → 列表(顶部)`
|
|
19
23
|
|
|
20
|
-
- blur
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
+
- blur 校验单字段,submit 校验全部
|
|
25
|
+
- 失败**不清空表单**,错误定位到字段
|
|
26
|
+
- 长表单(> 10 字段)必须有"保存草稿"
|
|
27
|
+
- 创建成功落点优先返回列表,编辑成功优先停留原页
|
|
24
28
|
|
|
25
29
|
### C · 异常处理
|
|
26
30
|
|
|
@@ -36,16 +40,85 @@
|
|
|
36
40
|
|
|
37
41
|
- BulkActionBar 浮动在表格底部
|
|
38
42
|
- AlertDialog 必须列出至少前 5 条受影响资源
|
|
39
|
-
-
|
|
43
|
+
- 部分失败时,失败项显示"重试"按钮
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 2. 后台主流转图
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
┌─────────────────┐
|
|
51
|
+
│ 全局导航 / 首页 │
|
|
52
|
+
└────────┬────────┘
|
|
53
|
+
│ 选择模块
|
|
54
|
+
▼
|
|
55
|
+
┌──────────┐ 创建 ┌──────────┐ 查看 ┌────────────┐
|
|
56
|
+
│ FormPage │◄────│ ListPage │──────►│ DetailPage │
|
|
57
|
+
└────┬─────┘ └─────┬────┘ └─────┬──────┘
|
|
58
|
+
│ 成功 │ │
|
|
59
|
+
└────────────────►│◄──────────────────┘
|
|
60
|
+
│ 编辑 返回
|
|
61
|
+
▼
|
|
62
|
+
┌──────────────┐
|
|
63
|
+
│ FormPage │
|
|
64
|
+
└──────────────┘
|
|
65
|
+
|
|
66
|
+
Dashboard ──下钻──► ListPage(预筛选)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
> AI 副驾驶(命令面板 / 对话主面板 / 告警诊断 / 操作编排 / 知识问答 / 拓扑感知)属于**变体专属**流转,不在中性基线内。
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 3. CRUD 流转速查
|
|
74
|
+
|
|
75
|
+
| 意图 | 关键词 | 源页面 | 目标页 | 完成后落点 |
|
|
76
|
+
| -------- | ----------------- | ------------------- | ------------------------------------ | -------------------- |
|
|
77
|
+
| 查看列表 | 列表/查询/检索 | Sidebar | ListPage | — |
|
|
78
|
+
| 查看详情 | 详情/查看/信息 | ListPage | DetailPage | 可返回列表 |
|
|
79
|
+
| 新建 | 新建/创建/新增 | ListPage | FormPage(新建) | 保存后返回列表 |
|
|
80
|
+
| 编辑 | 编辑/修改 | ListPage/DetailPage | FormPage(编辑)或 Sheet(抽屉编辑) | 保存后返回原页 |
|
|
81
|
+
| 删除 | 删除/移除 | ListPage | Dialog(输入确认) | 确认后刷新列表 |
|
|
82
|
+
| 复制 | 复制/克隆 | ListPage | FormPage(复制新建) | 保存后返回列表 |
|
|
83
|
+
| 批量 | 批量启停/批量删除 | ListPage | AlertDialog → 进度 | Toast(成功 N/失败 M) |
|
|
84
|
+
|
|
85
|
+
> URL 模板、Toast 文案、navType 等机读字段见 [`rules/page-flow.json` § crudFlow / pageNavigation](./rules/page-flow.json)。
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 4. 资源生命周期
|
|
90
|
+
|
|
91
|
+
"资源" 泛指业务对象(订单 / 用户 / 商品 / 任务 / 工单 / 文档…)。
|
|
92
|
+
|
|
93
|
+
| 阶段 | 发现 | 创建 | 配置 | 监控 | 变更 | 删除 |
|
|
94
|
+
| ---- | -------- | -------- | ---------- | --------- | -------- | -------- |
|
|
95
|
+
| 页面 | ListPage | FormPage | DetailPage | Dashboard | FormPage | Dialog |
|
|
96
|
+
| 动作 | 搜索定位 | 填写表单 | 查看明细 | 处置异常 | 编辑提交 | 二次确认 |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 5. 流转设计规则
|
|
101
|
+
|
|
102
|
+
1. **导航深度 ≤ 4 层** — 超过即是信息架构问题
|
|
103
|
+
2. **每层都有返回路径** — 面包屑 / 返回按钮 / Esc 快捷键
|
|
104
|
+
3. **主导航始终可见** — 仅"全屏编辑 / 大屏展示"模式可隐藏
|
|
105
|
+
4. **状态保持** — 列表筛选条件、表单未提交内容必须保留
|
|
106
|
+
5. **快捷路径** — 高频操作建议提供 `Cmd+K` 入口
|
|
107
|
+
6. **不创建死胡同** — 任何成功 / 失败页面都必须有"下一步"按钮
|
|
108
|
+
7. **操作确认分三级**(详见 [`rules/page-flow.json` § operationConfirmationLevels](./rules/page-flow.json)):
|
|
109
|
+
- 一级(可逆,如查看 / 编辑跳转):无确认,直接执行
|
|
110
|
+
- 二级(有未保存内容 / 启停重启):Dialog 确认
|
|
111
|
+
- 三级(不可逆,如删除 / 资源释放):Dialog + 输入确认文本(如 `DELETE`)
|
|
40
112
|
|
|
41
113
|
---
|
|
42
114
|
|
|
43
|
-
##
|
|
115
|
+
## 6. 流转自检
|
|
44
116
|
|
|
45
117
|
- [ ] 任意页面都能通过面包屑 / Esc 返回上一级
|
|
46
|
-
- [ ] ListPage 的筛选条件持久化到 URL Params
|
|
118
|
+
- [ ] ListPage 的筛选条件持久化到 URL Params(刷新 / 分享 / 返回保留)
|
|
47
119
|
- [ ] FormPage 未保存离开有 Dialog 确认
|
|
48
120
|
- [ ] 危险操作的 Dialog 列出影响范围与资源清单
|
|
49
|
-
- [ ] 成功 / 失败页面都有"下一步"
|
|
121
|
+
- [ ] 成功 / 失败页面都有"下一步"按钮(无死胡同)
|
|
50
122
|
- [ ] 批量操作进度可见、部分失败可重试
|
|
51
|
-
- [ ]
|
|
123
|
+
- [ ] 异常数字是可点击的钻取入口(Dashboard → ListPage 预筛选)
|
|
124
|
+
- [ ] 删除等不可逆操作要求输入确认文本(三级确认)
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Foundations — Token 用法指南
|
|
2
2
|
|
|
3
|
+
> ⚠️ **何时读本文件**: [generation-flow.md](./generation-flow.md) Step 6(视觉填充)强制要求完整读取。
|
|
4
|
+
> 任何色彩、间距、字号、圆角、阴影、动效必须基于本文件的 Token 定义,不得凭记忆生成。
|
|
5
|
+
|
|
3
6
|
> **核心原则**:所有视觉值必须来自 `@teamix-evo/tokens` 暴露的 CSS 变量;禁止硬编码颜色、间距、圆角、阴影、时长。
|
|
4
7
|
|
|
5
8
|
---
|
|
@@ -106,7 +109,7 @@
|
|
|
106
109
|
| Standard | 20px | `gap-5` | 同分组内多个 FormItem 之间 |
|
|
107
110
|
| Section | 32px | `gap-8` | 表单分段(FormSection)之间 |
|
|
108
111
|
|
|
109
|
-
> 例外:
|
|
112
|
+
> 例外:Sheet(抽屉)内嵌简表单(≤ 5 字段)可整体收紧到 Tight + 16px section。**不要**自创 24px / 28px 等中间档。
|
|
110
113
|
|
|
111
114
|
### 3.6 Input 宽度五档(通用规范,反哺自 Teamix-UI 规范文档)
|
|
112
115
|
|
|
@@ -201,7 +204,7 @@
|
|
|
201
204
|
| `shadow-sm` | Card 静态 | 10 |
|
|
202
205
|
| `shadow` | Hover 提升、Dropdown | 20 |
|
|
203
206
|
| `shadow-md` | Popover、Tooltip | 30 |
|
|
204
|
-
| `shadow-lg` | Sheet
|
|
207
|
+
| `shadow-lg` | Sheet | 40 |
|
|
205
208
|
| `shadow-xl` | Dialog、Modal、CommandPalette | 50 |
|
|
206
209
|
|
|
207
210
|
### 6.2 规则
|
|
@@ -228,12 +231,12 @@
|
|
|
228
231
|
|
|
229
232
|
### 7.1 时长四档
|
|
230
233
|
|
|
231
|
-
| Token | ms | 用途
|
|
232
|
-
| -------------- | --- |
|
|
233
|
-
| `duration-75` | 75 | 微反馈(按钮按下、勾选)
|
|
234
|
-
| `duration-150` | 150 | 默认过渡(hover、focus)
|
|
235
|
-
| `duration-200` | 200 | 入场(Tooltip、Popover)
|
|
236
|
-
| `duration-300` | 300 | 大型容器(Dialog、Sheet
|
|
234
|
+
| Token | ms | 用途 |
|
|
235
|
+
| -------------- | --- | ------------------------- |
|
|
236
|
+
| `duration-75` | 75 | 微反馈(按钮按下、勾选) |
|
|
237
|
+
| `duration-150` | 150 | 默认过渡(hover、focus) |
|
|
238
|
+
| `duration-200` | 200 | 入场(Tooltip、Popover) |
|
|
239
|
+
| `duration-300` | 300 | 大型容器(Dialog、Sheet) |
|
|
237
240
|
|
|
238
241
|
### 7.2 缓动
|
|
239
242
|
|
|
@@ -255,7 +258,7 @@
|
|
|
255
258
|
|
|
256
259
|
- **L1 必备**:状态切换(hover / focus / active)— 全站统一 `duration-150`
|
|
257
260
|
- **L2 推荐**:内容入场(列表项渐入、Skeleton 替换)— `duration-200`
|
|
258
|
-
- **L3 增强**:场景转场(页面切换、
|
|
261
|
+
- **L3 增强**:场景转场(页面切换、Sheet 抽屉)— `duration-300`,可酌情增减
|
|
259
262
|
|
|
260
263
|
### 7.5 规则
|
|
261
264
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 生成 / 翻新 / 验证流程
|
|
2
2
|
|
|
3
|
-
> AI
|
|
3
|
+
> ⚠️ **本文件是页面级任务的唯一执行路径。每一步都有 GATE 门禁和 MUST READ 文件清单。** > **跳步 = 产出不合规。AI 不得凭"已有知识"省略任何文件读取。**
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -11,11 +11,13 @@
|
|
|
11
11
|
```
|
|
12
12
|
Step 1 需求确认 → Step 2 类型识别 → Step 3 子类型 + 布局
|
|
13
13
|
↓
|
|
14
|
-
Step
|
|
14
|
+
Step 7 自检 ← Step 6 视觉填充 ← Step 5 可用性校验 ← Step 4 组件挑选
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
### Step 1 · 最小 quorum + 默认值
|
|
18
18
|
|
|
19
|
+
📖 **MUST READ**: [philosophy.md](./philosophy.md)(理解"为什么这么做" — 四大原则优先级)+ [brand.md](./brand.md)(视觉调性 + 文案语气基调)
|
|
20
|
+
|
|
19
21
|
**只有两个信息缺一不可**(最小 quorum,缺则反问):
|
|
20
22
|
|
|
21
23
|
- [ ] **页面类型**:ListPage / DetailPage / FormPage / Dashboard / Dialog(缺则按 Step 2 决策树推断)
|
|
@@ -23,13 +25,13 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
23
25
|
|
|
24
26
|
**其他信息全部走默认值,先生成再细化**(避免连环反问让用户失去耐心):
|
|
25
27
|
|
|
26
|
-
| 维度
|
|
27
|
-
|
|
|
28
|
-
| 业务领域
|
|
29
|
-
| 用户角色
|
|
30
|
-
| 核心动作
|
|
31
|
-
| 入口路径
|
|
32
|
-
| 子类型
|
|
28
|
+
| 维度 | 默认 | 何时升级 |
|
|
29
|
+
| -------- | --------------------------------------------------- | ------------------------------------ |
|
|
30
|
+
| 业务领域 | 资源管理 | 用户明确说"工作流 / 报表"等 |
|
|
31
|
+
| 用户角色 | 业务管理员 | 涉及审计 / 审批 / 平台运维等敏感角色 |
|
|
32
|
+
| 核心动作 | CRUD(增 / 删 / 改 / 查 + 列表) | 明确出现"批量 / 审批 / 导出"等关键词 |
|
|
33
|
+
| 入口路径 | 从同名菜单进入,无外部跳转 | 明确说"从 X 跳到 Y" |
|
|
34
|
+
| 子类型 | ListPage→standard / FormPage→single-page / 其余各 1 | 用户提到 wizard / drawer / tabbed 等 |
|
|
33
35
|
|
|
34
36
|
**反问触发条件**(只有以下情况反问,否则直接出方案):
|
|
35
37
|
|
|
@@ -40,6 +42,10 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
40
42
|
|
|
41
43
|
### Step 2 · 页面类型识别
|
|
42
44
|
|
|
45
|
+
🚧 **GATE**: Step 1 必须已产出"页面类型 + 资源实体 + 场景假设"
|
|
46
|
+
|
|
47
|
+
📖 **MUST READ**: [patterns/page-types.md](./patterns/page-types.md) §决策树 + §Zone Map
|
|
48
|
+
|
|
43
49
|
根据 [patterns/page-types.md](./patterns/page-types.md) §决策树匹配类型:
|
|
44
50
|
|
|
45
51
|
```
|
|
@@ -55,26 +61,74 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
55
61
|
|
|
56
62
|
### Step 3 · 子类型识别 + 布局选择
|
|
57
63
|
|
|
58
|
-
|
|
64
|
+
🚧 **GATE**: Step 2 必须已产出"页面类型 ID"
|
|
65
|
+
|
|
66
|
+
📖 **MUST READ**(按顺序读取):
|
|
67
|
+
1. `./pages/{type}-page/SKILL.md` — 子技能入口(子类型列表 + 属性模型)
|
|
68
|
+
2. `./pages/{type}-page/patterns/{subtype}.md` — 对应子类型的**完整布局结构**(骨架、DOM 顺序、CSS 约束、间距硬值)
|
|
69
|
+
3. `./pages/{type}-page/_shared/search-combo-spec.md` — SearchCombo 硬约束(20px 间距、容器式 border、禁止嵌套规则)
|
|
70
|
+
4. `./pages/{type}-page/_shared/action-column-spec.md` — 操作列规范(≤3 直显、Dropdown 收纳)
|
|
71
|
+
5. `./rules/page-frame.json` — L0/L1/L2 框架级别
|
|
72
|
+
6. `./rules/layout-rules.json` — 布局模式
|
|
73
|
+
|
|
74
|
+
⚠️ **禁止**:不要仅读 `patterns/{type}-page.md` 就开始生成。该文件是高阶索引,不包含布局细节。
|
|
75
|
+
|
|
76
|
+
根据页面类型识别对应子类型:
|
|
59
77
|
|
|
60
78
|
- 列表页 6 种子类型:`standard / pure-card / standard-card / drawer / expandable / l2-sidebar / advanced-filter`
|
|
61
79
|
- 详情页 2 种子类型:`tabbed / single-section`
|
|
62
80
|
- 表单页 3 种子类型:`single-page / wizard / drawer-form`
|
|
63
81
|
|
|
82
|
+
> 涉及用户旅程时追加阅读 [flows.md](./flows.md)。
|
|
83
|
+
|
|
64
84
|
**输出**:子类型 ID + 区域骨架(参照 [patterns/page-types.md](./patterns/page-types.md) §Zone Map)。
|
|
65
85
|
|
|
66
86
|
### Step 4 · 组件挑选
|
|
67
87
|
|
|
88
|
+
🚧 **GATE**: Step 3 必须已产出"子类型 ID + 区域骨架"
|
|
89
|
+
|
|
90
|
+
📖 **MUST READ**: [components.md](./components.md) §0 兗底铁律 + §1 双层架构 + §3 决策树 + §5 拼装配方
|
|
91
|
+
|
|
68
92
|
读 [components.md](./components.md) §选型决策树确定组件集:
|
|
69
93
|
|
|
70
94
|
1. 优先使用 `@teamix-evo/ui` 注册表中的稳定组件
|
|
71
95
|
2. 通过 MCP `list_components(status: "stable")` 查可用列表
|
|
72
96
|
3. 通过 MCP `get_component_meta(id)` 查具体 Props/Examples
|
|
97
|
+
- **Props**:确定必传 / 可选 / 默认值,明确接口契约
|
|
98
|
+
- **Examples**:作为实现参考(含组合用法、常见模式、边界处理),优先复用示例中的写法而非自由发挥
|
|
73
99
|
4. 复合场景按 [components.md](./components.md) §组合规则装配
|
|
74
100
|
|
|
75
|
-
**输出**:组件清单 + 每个组件的关键 Props
|
|
101
|
+
**输出**:组件清单 + 每个组件的关键 Props + 参考的 Example 片段(若有启发性写法)。
|
|
102
|
+
|
|
103
|
+
### Step 5 · 组件可用性校验(新增 gate)
|
|
104
|
+
|
|
105
|
+
🚧 **GATE**: Step 4 必须已产出"组件清单 + 每个组件的关键 Props"
|
|
106
|
+
|
|
107
|
+
> ❗ **此步是 Step 4 → Step 6 的强制闸门**。跳过会导致生成代码引用未安装组件而报错。
|
|
108
|
+
|
|
109
|
+
对 Step 4 选定的每个组件,执行以下校验:
|
|
76
110
|
|
|
77
|
-
|
|
111
|
+
```text
|
|
112
|
+
① MCP find_components(id) 查询注册表
|
|
113
|
+
├─ 命中 entries(活跃) → ②
|
|
114
|
+
├─ 命中 deprecatedEntries 且有 replacedBy → 自动替换为 replacedBy 组件,回到 ①
|
|
115
|
+
├─ 命中 deprecatedEntries 且无 replacedBy → 走 components.md §0 兔底铁律
|
|
116
|
+
└─ 未命中 → 走 components.md §0 兔底铁律(原子件拼装)
|
|
117
|
+
|
|
118
|
+
② 检查目标项目是否已装机
|
|
119
|
+
├─ 已装(grep src/components/ui/<id> 或查 manifest.lock.json)→ ✅ 继续
|
|
120
|
+
└─ 未装 → 输出安装指令:
|
|
121
|
+
「teamix-evo ui add <id>」
|
|
122
|
+
等待装机完成后再进入 Step 6
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**输出**:校验后的最终组件清单(含替换记录)+ 待安装组件列表(若有)。
|
|
126
|
+
|
|
127
|
+
### Step 6 · 视觉填充(Token 绑定)
|
|
128
|
+
|
|
129
|
+
🚧 **GATE**: Step 5 必须已产出"校验后的最终组件清单"
|
|
130
|
+
|
|
131
|
+
📖 **MUST READ**: [foundations.md](./foundations.md) 全文 + [brand.md](./brand.md) §1 视觉五维(圆角/配色/密度/阴影/焦点风格对齐)+ [patterns/color-mapping.md](./patterns/color-mapping.md)(语义色映射表)
|
|
78
132
|
|
|
79
133
|
读 [foundations.md](./foundations.md),所有色彩、间距、字号、圆角、阴影、动效**必须**使用 Token:
|
|
80
134
|
|
|
@@ -91,7 +145,11 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
91
145
|
|
|
92
146
|
**输出**:含 Token 引用的可执行代码 / HTML。
|
|
93
147
|
|
|
94
|
-
### Step
|
|
148
|
+
### Step 7 · 自检
|
|
149
|
+
|
|
150
|
+
🚧 **GATE**: Step 6 必须已产出"含 Token 引用的可执行代码"
|
|
151
|
+
|
|
152
|
+
📖 **MUST READ**: [boundaries.md](./boundaries.md) 全文(38 条硬规则)+ [checklist.md](./checklist.md) 全文
|
|
95
153
|
|
|
96
154
|
对照 [checklist.md](./checklist.md) 10 项逐项验证:
|
|
97
155
|
|
|
@@ -106,6 +164,12 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
106
164
|
|
|
107
165
|
适用关键词:**"改造 / 升级 / 翻新 / 对齐规范 / 重新生成"**。
|
|
108
166
|
|
|
167
|
+
📖 **MUST READ** (全部必读,不得省略):
|
|
168
|
+
|
|
169
|
+
1. [boundaries.md](./boundaries.md) — 硬规则真值
|
|
170
|
+
2. [foundations.md](./foundations.md) — Token 真值
|
|
171
|
+
3. [components.md](./components.md) — 组件选型
|
|
172
|
+
|
|
109
173
|
```
|
|
110
174
|
1. 读取目标页面源码
|
|
111
175
|
2. 扫描违规项(按 boundaries.md F1-F10 + S1-S8)
|
|
@@ -126,6 +190,12 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
126
190
|
|
|
127
191
|
适用关键词:**"检查 / 验证 / 评估 / 是否符合规范"**。
|
|
128
192
|
|
|
193
|
+
📖 **MUST READ** (全部必读,不得省略):
|
|
194
|
+
|
|
195
|
+
1. [boundaries.md](./boundaries.md) — 38 条硬规则
|
|
196
|
+
2. [checklist.md](./checklist.md) — 10 项自检
|
|
197
|
+
3. [foundations.md](./foundations.md) — Token 真值(用于校验是否符合)
|
|
198
|
+
|
|
129
199
|
```
|
|
130
200
|
1. 读取目标页面源码
|
|
131
201
|
2. 逐条对照 boundaries.md
|
|
@@ -162,7 +232,7 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
162
232
|
|
|
163
233
|
| 任务类型 | 何时停止生成 |
|
|
164
234
|
| -------- | --------------------------------- |
|
|
165
|
-
| 生成 | Step
|
|
235
|
+
| 生成 | Step 7 自检全部通过 |
|
|
166
236
|
| 翻新 | 替换清单为空 + 重新对照无违规 |
|
|
167
237
|
| 验证 | 报告完整列出所有违规项 + 修复建议 |
|
|
168
238
|
|
|
@@ -0,0 +1,260 @@
|
|
|
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
|
+
# 详情页路由规则
|
|
13
|
+
|
|
14
|
+
## 1. 类型定义
|
|
15
|
+
|
|
16
|
+
**页面类型**: DetailPage
|
|
17
|
+
**核心特征**: 单条记录的只读展示 + DescriptionList + 操作按钮
|
|
18
|
+
**识别条件**: 页面展示单个实体的完整信息 + 描述列表(DescriptionList) + Tab分类 + 操作按钮
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 2. 子类型路由表
|
|
23
|
+
|
|
24
|
+
| 子类型ID | 识别关键词 | 路由到 | 核心组件 |
|
|
25
|
+
|----------|-----------|--------|----------|
|
|
26
|
+
| resource | "实例详情"/"资源"/"详情"/"查看"/"信息" | → `patterns/resource-detail.md` | InfoCard + DescriptionList + Tabs |
|
|
27
|
+
| monitor | "监控"/"指标"/"性能"/"告警"/"Metrics" | → `patterns/monitor-detail.md` | MetricCard + ChartPanel + AlertList + TimeRangeSelector |
|
|
28
|
+
| api-doc | "API"/"接口"/"端点"/"文档"/"接口文档"/"模型API" | → `patterns/api-doc-detail.md` | ApiEndpoint + ParameterTable + CodeBlock |
|
|
29
|
+
| comparison | "对比"/"比较"/"差异"/"版本对比" | → `patterns/comparison-detail.md` | 双栏 DescriptionList |
|
|
30
|
+
|
|
31
|
+
### 路由判定优先级
|
|
32
|
+
|
|
33
|
+
1. 含"监控"/"指标"/"性能"/"告警"/"Metrics" → monitor
|
|
34
|
+
2. 含"API"/"接口"/"端点"/"文档" → api-doc
|
|
35
|
+
3. 含"对比"/"比较"/"差异" → comparison
|
|
36
|
+
4. 其他详情场景 → resource(默认)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 3. 通用属性模型
|
|
41
|
+
|
|
42
|
+
| 属性 | 值 | 说明 |
|
|
43
|
+
|------|-----|------|
|
|
44
|
+
| layout.type | TWO_COL / SINGLE_COL | 见 `rules/page-frame.json` layoutSelectionRules |
|
|
45
|
+
| layout.frame | L2 | 详情页为 L2 级页面,自动继承 Sidebar + PageHeader 面包屑模式 |
|
|
46
|
+
| responsive | 768px 侧边栏折叠为抽屉,DescriptionList 列数从 4 降为 2 |
|
|
47
|
+
|
|
48
|
+
> **框架组件自动继承**:Sidebar、PageHeader 由 `rules/page-frame.json` 统一管理,L2 级页面自动继承。
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 4. 组件推荐
|
|
53
|
+
|
|
54
|
+
### 必需组件
|
|
55
|
+
|
|
56
|
+
| 组件 | 引用 | 层级 | 位置 | 说明 |
|
|
57
|
+
|------|------|------|------|------|
|
|
58
|
+
| PageHeader | — | ORGANISM | top | 面包屑模式 + 操作按钮组(详见 `../../rules/page-header-spec.md`) |
|
|
59
|
+
| DescriptionList | — | ORGANISM | center | 核心展示组件,支持 2/3/4 列布局 |
|
|
60
|
+
| DescriptionItem | — | ATOMIC | center | 单个键值对单元,6 种交互模式 |
|
|
61
|
+
|
|
62
|
+
### 可选组件(跨子类型通用)
|
|
63
|
+
|
|
64
|
+
| 组件 | 引用 | 条件 | 说明 |
|
|
65
|
+
|------|------|------|------|
|
|
66
|
+
| InfoCard | — | 需展示摘要信息 | 顶部摘要卡片 |
|
|
67
|
+
| CopyableText | — | ID/IP/资源名 | 可复制原子 |
|
|
68
|
+
| StatusBadge | — | 资源运行态 | 带前置圆点的状态徽章 |
|
|
69
|
+
| Tabs | — | 信息分多类展示 | Tab 分组 |
|
|
70
|
+
| Dialog | — | 需二次确认 | 删除/释放确认 |
|
|
71
|
+
| Sheet | — | 需编辑详情 | 侧滑编辑 |
|
|
72
|
+
| DropdownMenu | — | 操作多项 | "更多"下拉 |
|
|
73
|
+
| Tag | — | 状态/标签 | — |
|
|
74
|
+
| Badge | — | 运行状态 | — |
|
|
75
|
+
| Tooltip | — | 悬浮提示 | — |
|
|
76
|
+
| Separator | — | 信息分组 | — |
|
|
77
|
+
| Alert | — | 操作提示 | — |
|
|
78
|
+
| Empty | — | 无关联数据 | — |
|
|
79
|
+
| Spinner | — | 加载中 | — |
|
|
80
|
+
| Sonner | — | 操作反馈 | — |
|
|
81
|
+
|
|
82
|
+
### 禁止组件
|
|
83
|
+
|
|
84
|
+
| 组件 | 约束 | 原因 |
|
|
85
|
+
|------|------|------|
|
|
86
|
+
| Form (ORGANISM) | 禁止在主内容区 | 编辑应通过 Sheet/Dialog/FormPage |
|
|
87
|
+
| DataTable | 禁止在主内容区 | 关联数据通过 Tabs 子面板展示 |
|
|
88
|
+
| Chart (ORGANISM) | 禁止替代 DescriptionList | 监控通过 ChartPanel,详见 patterns/monitor-detail.md |
|
|
89
|
+
| PageContainer | 禁止嵌套 | 见 layout-rules.json |
|
|
90
|
+
| QueryFilter | 禁止出现 | 详情页无筛选需求 |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 5. 嵌套约束(通用)
|
|
95
|
+
|
|
96
|
+
| 父子关系 | 状态 | 说明 |
|
|
97
|
+
|----------|------|------|
|
|
98
|
+
| PageContainer → ContentWrapper | ALLOW | 右侧内容大容器(必需) |
|
|
99
|
+
| ContentWrapper → Card(白卡容器) | ALLOW | 白色卡片容器(必需) |
|
|
100
|
+
| Card(白卡容器) → PageHeader | ALLOW | 标准结构(面包屑模式) |
|
|
101
|
+
| Card(白卡容器) → InfoCard | ALLOW | 摘要卡片 |
|
|
102
|
+
| Card(白卡容器) → Tabs | ALLOW | 分类 Tab |
|
|
103
|
+
| Card(白卡容器) → DescriptionList | ALLOW | 核心展示 |
|
|
104
|
+
| ContentWrapper → PageHeader / DescriptionList / Tabs | FORBID | 必须经过白卡容器包裹 |
|
|
105
|
+
| Card(白卡容器) → Card(白卡容器) | FORBID | 白卡容器为单例 |
|
|
106
|
+
| DescriptionList → ListSection | ALLOW | 信息分组 |
|
|
107
|
+
| ListSection → DescriptionItem | ALLOW | 分组详情项 |
|
|
108
|
+
| Tabs → TabPane → DescriptionList | ALLOW | Tab 内展示详情 |
|
|
109
|
+
| Tabs → TabPane → DataTable | ALLOW | Tab 内展示关联资源 |
|
|
110
|
+
| PageHeader → ActionGroup | ALLOW | 操作按钮组 |
|
|
111
|
+
| Sidebar → DescriptionList | FORBID | 描述列表不应在侧边栏 |
|
|
112
|
+
|
|
113
|
+
> 子类型特有嵌套约束见对应 `patterns/*.md`。
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 6. 页面交互补充(跨子类型共享)
|
|
118
|
+
|
|
119
|
+
### DescriptionItem 字段交互
|
|
120
|
+
|
|
121
|
+
| 交互类型 | 触发 | 视觉反馈 |
|
|
122
|
+
|----------|------|----------|
|
|
123
|
+
| 默认展示 | — | 只读文本 |
|
|
124
|
+
| 可复制 | 点击复制图标 | Sonner "已复制" |
|
|
125
|
+
| 可编辑 | 点击编辑图标 | 行内切换为 Input |
|
|
126
|
+
| 链接跳转 | 点击字段值 | 蓝色链接 |
|
|
127
|
+
| 状态展示 | — | Badge 颜色 |
|
|
128
|
+
| 悬浮提示 | hover | Tooltip 完整内容 |
|
|
129
|
+
|
|
130
|
+
### 操作按钮行为
|
|
131
|
+
|
|
132
|
+
| 操作 | 前置条件 | 二次确认 | 返回行为 |
|
|
133
|
+
|------|---------|---------|----------|
|
|
134
|
+
| 编辑 | 无 | 否 | 保存后返回详情页 |
|
|
135
|
+
| 删除 | 实例已停止 | Dialog + 输入确认 | 返回列表页 |
|
|
136
|
+
| 释放/创建镜像 | 实例已停止 | Dialog 确认 | 异步操作,返回列表 |
|
|
137
|
+
| 续费/降配 | 运行中 | 否 | 完成后返回详情页 |
|
|
138
|
+
| 返回/关闭 | 无 | 否 | 返回 ListPage |
|
|
139
|
+
|
|
140
|
+
### Tab 切换交互
|
|
141
|
+
|
|
142
|
+
- 首次加载默认激活第一个 Tab
|
|
143
|
+
- Tab 切换懒加载,Loading 状态展示
|
|
144
|
+
- 无数据 Tab 展示 Empty
|
|
145
|
+
- URL hash 同步,支持刷新保持
|
|
146
|
+
- Tab 内 DataTable 含独立 Pagination
|
|
147
|
+
|
|
148
|
+
### 边界情况处理
|
|
149
|
+
|
|
150
|
+
| 场景 | 处理方式 |
|
|
151
|
+
|------|----------|
|
|
152
|
+
| 无数据 | Empty + 返回列表引导 |
|
|
153
|
+
| 加载中 | Loading 骨架屏 |
|
|
154
|
+
| 加载失败 | ErrorState + 重试 |
|
|
155
|
+
| 权限不足 | 操作按钮隐藏 |
|
|
156
|
+
| 资源不存在 | 404 ExceptionPage |
|
|
157
|
+
| 字段为空 | 展示 "-" 占位 |
|
|
158
|
+
| 字段过长 | 截断 + Tooltip |
|
|
159
|
+
|
|
160
|
+
### 返回约定
|
|
161
|
+
|
|
162
|
+
- 面包屑父级项可点击返回列表页
|
|
163
|
+
- PageHeader 右侧关闭按钮(×)
|
|
164
|
+
- 返回后列表页保持原筛选和分页
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 7. 视觉规范同步(v7.5 间距 + v7.6 表面)【硬约束】
|
|
169
|
+
|
|
170
|
+
> 与列表页 `pages/list-page/SKILL.md` §5.1 / §5.2 形成对称。规则总源以 `rules/design-tokens.css` 为准。
|
|
171
|
+
|
|
172
|
+
### 7.1 间距规则(v7.5 分层 padding 模型)
|
|
173
|
+
|
|
174
|
+
| 层级 | Token | 值 | 含义 |
|
|
175
|
+
|------|-------|----|------|
|
|
176
|
+
| PageContainer 外层 | `--page-container-padding` | **16px** | 四周 padding |
|
|
177
|
+
| Card 白卡容器内 | `--card-padding-x` | **20px** | 唯一对齐源 |
|
|
178
|
+
| Card 内区块垂直间距 | `--card-gap` | 16px | 各区块纵向间距 |
|
|
179
|
+
| DescriptionList 内 | C26-DescriptionList | 见 component-specs.json | 行高与列宽 |
|
|
180
|
+
|
|
181
|
+
**派生约束**:
|
|
182
|
+
- ContentCard 左右 padding 由 `--card-padding-x = 20px` 提供
|
|
183
|
+
- 子组件(DescriptionList / InfoCard / Tabs / PageHeader)**不再重复设置左右 padding**
|
|
184
|
+
|
|
185
|
+
### 7.2 ContentCard 表面规则(v7.6)
|
|
186
|
+
|
|
187
|
+
| 属性 | **v7.6(当前)** |
|
|
188
|
+
|------|----------------|
|
|
189
|
+
| `border` | **`none`(去掉)** |
|
|
190
|
+
| `box-shadow` | **`var(--shadow-sm)` = `0 1px 2px rgba(0,0,0,0.05)`** |
|
|
191
|
+
| `border-radius` | `var(--radius-lg)` = 12px |
|
|
192
|
+
| `background` | `hsl(var(--card))` |
|
|
193
|
+
|
|
194
|
+
### 7.3 InfoCard surface 决议(v7.6)
|
|
195
|
+
|
|
196
|
+
#### 模式 A:独立 Card 容器模式
|
|
197
|
+
|
|
198
|
+
跟随主卡 ContentCard 应用 v7.6:`border: none` + `box-shadow: var(--shadow-sm)`
|
|
199
|
+
|
|
200
|
+
#### 模式 B:嵌入主卡内的分组区块模式
|
|
201
|
+
|
|
202
|
+
仅使用 `padding: 16px 0` + `border-bottom: 1px solid hsl(var(--gray-line))`(功能性分组分割线)
|
|
203
|
+
|
|
204
|
+
### 7.4 功能性分割线保留清单
|
|
205
|
+
|
|
206
|
+
| 元素 | 边框用途 | 保留 |
|
|
207
|
+
|------|----------|------|
|
|
208
|
+
| `.page-header` 的 `border-bottom` | 标题区与内容区分割 | ✅ 保留 |
|
|
209
|
+
| `Tabs` 容器的 `border-bottom` | TabBar 与 TabContent 分割 | ✅ 保留 |
|
|
210
|
+
| `Separator` | 信息分组 | ✅ 保留 |
|
|
211
|
+
| ListSection 之间横线 | 描述列表分组 | ✅ 保留 |
|
|
212
|
+
| 浮层类(Dropdown/Popover/Tooltip) | 浮层与背景区分 | ✅ 保留 border + 阴影 |
|
|
213
|
+
|
|
214
|
+
### 7.5 禁止项
|
|
215
|
+
|
|
216
|
+
- ❌ `.card / .info-card` 中残留 `border: 1px solid hsl(var(--gray-line))`
|
|
217
|
+
- ❌ 硬编码阴影 `0 1px 2px rgba(0,0,0,0.04)`;一律走 `var(--shadow-sm)`
|
|
218
|
+
- ❌ `--card-padding-x` 硬编码为 24px / 16px(v7.5 起统一 20px)
|
|
219
|
+
- ❌ 子组件重复设置左右 padding
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## 8. 共享规则引用
|
|
224
|
+
|
|
225
|
+
| 共享规则 | 路径 | 被引用子类型 |
|
|
226
|
+
|----------|------|-------------|
|
|
227
|
+
| PageHeader L1 标题 / L2 面包屑强约束 | `../../rules/page-header-spec.md` | 全部 |
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 规范引用
|
|
232
|
+
|
|
233
|
+
- **读取路径**:见根技能 `../../SKILL.md` §4.5 三阶段读取决策树
|
|
234
|
+
- 阶段①:`page-types.json` + `business-mapping.json`
|
|
235
|
+
- 阶段②:`page-frame.json` + `layout-rules.json` + `page-flow.json`;匹配子类型后追加 `patterns/{子类型}.md`
|
|
236
|
+
- 阶段③(生成 HTML 时):`design-tokens.json` + `design-tokens.css` + `component-specs.json` + `styling.json` + `../../boundaries.md` + `../../foundations.md`
|
|
237
|
+
|
|
238
|
+
> `rules/design-tokens.css` 是设计 Token 唯一真相源:生成 HTML 原型时需将 :root 变量块嵌入 `<style>`;React/TSX 需确保已 `@import` 引入。
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 验证清单 (Validation Checklist)
|
|
243
|
+
|
|
244
|
+
> **通用检查项** 见 `../../docs/validation-workflow.md`。此处仅列出详情页特有检查项。
|
|
245
|
+
|
|
246
|
+
| 检查项 | 检查点 | 目标 |
|
|
247
|
+
|--------|--------|------|
|
|
248
|
+
| 必需组件 | PageHeader、DescriptionList、DescriptionItem | 100% |
|
|
249
|
+
| 嵌套约束 | PageContainer → ContentWrapper → Card → PageHeader + 内容 | 无违规 |
|
|
250
|
+
| 禁止组件 | 无内联表单、DataTable 主内容区、QueryFilter | 0 个 |
|
|
251
|
+
| PageHeader | 面包屑模式合规(`../../rules/page-header-spec.md` 15 项) | 全部通过 |
|
|
252
|
+
| ContentCard 表面 (v7.6) | 无 1px border + shadow = var(--shadow-sm) | 0 违规 |
|
|
253
|
+
| InfoCard 表面 (v7.6) | 模式 A 跟随主卡;模式 B 仅 padding + border-bottom | 0 违规 |
|
|
254
|
+
| Card 间距 (v7.5) | padding = 0 var(--card-padding-x) = 20px | 正确 |
|
|
255
|
+
| PageContainer 间距 | padding = var(--page-container-padding) = 16px | 正确 |
|
|
256
|
+
| 功能性分割线 | PageHeader / Tabs / Separator 的 border 保留 | 不被误删 |
|
|
257
|
+
| 操作按钮 | 前置条件、确认方式、异步处理 | 全部正确 |
|
|
258
|
+
| Tab 切换 | 懒加载、URL hash、Empty | 正确 |
|
|
259
|
+
| 返回约定 | 面包屑 + 关闭按钮(×) | 正确 |
|
|
260
|
+
| 边界情况 | 无数据/加载中/失败/权限/404/空值 | 正确 |
|