@teamix-evo/skills 0.4.0 → 0.5.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 +34 -41
- package/src/teamix-evo-design-opentrek/boundaries.md +22 -2
- 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 +60 -11
- package/src/teamix-evo-design-opentrek/foundations.md +3 -0
- package/src/teamix-evo-design-opentrek/generation-flow.md +70 -12
- 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 +10 -9
- package/src/teamix-evo-design-opentrek/patterns/form-page.md +35 -32
- package/src/teamix-evo-design-opentrek/patterns/list-page.md +80 -47
- package/src/teamix-evo-design-opentrek/patterns/page-types.md +17 -12
- package/src/teamix-evo-design-opentrek/patterns/sidebar.md +122 -0
- package/src/teamix-evo-design-opentrek/philosophy.md +7 -5
- package/src/teamix-evo-design-uni-manager/SKILL.md +17 -26
- package/src/teamix-evo-design-uni-manager/boundaries.md +4 -1
- package/src/teamix-evo-design-uni-manager/components.md +3 -0
- package/src/teamix-evo-design-uni-manager/foundations.md +3 -0
- package/src/teamix-evo-design-uni-manager/generation-flow.md +43 -7
- package/src/teamix-evo-design-uni-manager/patterns/dashboard.md +3 -1
- package/src/teamix-evo-design-uni-manager/patterns/detail-page.md +41 -12
- package/src/teamix-evo-design-uni-manager/patterns/form-page.md +49 -12
- package/src/teamix-evo-design-uni-manager/patterns/list-page.md +44 -11
- package/src/teamix-evo-design-uni-manager/patterns/page-types.md +3 -1
- package/src/teamix-evo-design-uni-manager/philosophy.md +3 -1
- package/src/teamix-evo-manage/SKILL.md +74 -66
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Page Types — 5 种标准页面类型
|
|
2
2
|
|
|
3
|
+
> ⚠️ **Prerequisites**: 你必须由 [generation-flow.md](../generation-flow.md) Step 2 引导到这里。若未完成 Step 1(需求确认),请先返回。
|
|
4
|
+
|
|
3
5
|
> AI 生成页面前**必须先识别页面类型**,再选择对应模式。本文档是 generation-flow.md Step 2 的核心输入。
|
|
4
6
|
|
|
5
7
|
---
|
|
@@ -66,7 +68,7 @@
|
|
|
66
68
|
|
|
67
69
|
## 5. Dashboard
|
|
68
70
|
|
|
69
|
-
> **完整规范见 [`dashboard.md`](./dashboard.md)** — 标准结构 + 设计要点(关键指标字号、StatCard 数量、chart
|
|
71
|
+
> **完整规范见 [`dashboard.md`](./dashboard.md)** — 标准结构 + 设计要点(关键指标字号、StatCard 数量、chart-\* 色彩消费顺序)。
|
|
70
72
|
|
|
71
73
|
---
|
|
72
74
|
|
|
@@ -118,22 +120,25 @@
|
|
|
118
120
|
|
|
119
121
|
### 6.4 CRUD 流转速查
|
|
120
122
|
|
|
121
|
-
| 意图 | 关键词 | 目标页
|
|
122
|
-
| -------- | -------------- |
|
|
123
|
-
| 查看列表 | 列表/查询/检索 | ListPage
|
|
124
|
-
| 查看详情 | 详情/查看/信息 | DetailPage
|
|
125
|
-
| 新建 | 新建/创建/新增 | FormPage(新建)
|
|
126
|
-
| 编辑 | 编辑/修改 | FormPage(编辑)或 Drawer
|
|
127
|
-
| 删除 | 删除/移除 | Dialog(输入确认)
|
|
128
|
-
| 复制 | 复制/克隆 | FormPage(复制新建)
|
|
123
|
+
| 意图 | 关键词 | 目标页 | 完成后 |
|
|
124
|
+
| -------- | -------------- | ----------------------- | -------------- |
|
|
125
|
+
| 查看列表 | 列表/查询/检索 | ListPage | — |
|
|
126
|
+
| 查看详情 | 详情/查看/信息 | DetailPage | 可返回列表 |
|
|
127
|
+
| 新建 | 新建/创建/新增 | FormPage(新建) | 保存后返回列表 |
|
|
128
|
+
| 编辑 | 编辑/修改 | FormPage(编辑)或 Drawer | 保存后返回原页 |
|
|
129
|
+
| 删除 | 删除/移除 | Dialog(输入确认) | 确认后刷新列表 |
|
|
130
|
+
| 复制 | 复制/克隆 | FormPage(复制新建) | 保存后返回列表 |
|
|
129
131
|
|
|
130
132
|
---
|
|
131
133
|
|
|
132
134
|
## 7. 通用结构铁律(所有页面类型共享)
|
|
133
135
|
|
|
134
|
-
1.
|
|
135
|
-
-
|
|
136
|
-
|
|
136
|
+
1. **`<PageShell background="muted" sidebar={<OpSidebar/>}> → <OpPageContainer header={<PageHeader/>}> → 业务组件`**
|
|
137
|
+
- PageShell 来自 `@/components/ui/page-shell`(三明治壳;opentrek 主区背景用 `muted` 灰底,无 header slot)
|
|
138
|
+
- OpPageContainer 来自 `@/components/business/op-page-container`(padding `py-5 pr-5`,**内置无边框大白卡** `bg-card rounded-2xl`)
|
|
139
|
+
- PageHeader 来自 `@/components/ui/page-header`(本身无 padding,由 OpPageContainer 内白卡统一管)
|
|
140
|
+
- 业务组件(ListCard 网格 / DataTable / Form 等)直接作为 OpPageContainer children,**不要再手动包 `<Card>`** — 容器已经是白卡
|
|
141
|
+
2. **主区白卡单例** — OpPageContainer 已内置 `bg-card rounded-2xl` 大白卡,主区内**不要再手写 `<Card>`** 包整个 PageHeader / DataTable / Form / FieldGroup(嵌套违反白卡单例)。卡片网格内的 ItemCard / 表单分区的子 Card 是局部容器,不算"嵌套主区白卡"
|
|
137
142
|
3. **页头不可重复** — 子页面禁止自建 header,PageHeader 由框架管控
|
|
138
143
|
4. **不在内容区直接放 Form 整体** — 必须用 FieldGroup + Field(详见 boundaries.md C7)
|
|
139
144
|
5. **不在 ListPage / DetailPage 内嵌 Chart 整体** — 图表归属 Dashboard
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Sidebar Pattern — OpenTrek 侧边栏统一规范
|
|
2
|
+
|
|
3
|
+
> ⚠️ **Prerequisites**: 你必须已在 [generation-flow.md](../generation-flow.md) Step 3 确认布局包含侧边栏,或由翻新/验证路径引导到这里。
|
|
4
|
+
|
|
5
|
+
> AI 生成或翻新页面时必须引用本规则。所有色值与尺寸通过 token 引用,禁止硬编码。Token 真值见 `tokens/tokens.theme.css`。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. 宽度与定位
|
|
10
|
+
|
|
11
|
+
| 状态 | Token | 业务含义 |
|
|
12
|
+
| ------ | --------------------------- | ------------------------------- |
|
|
13
|
+
| 展开态 | `--layout-sidebar-width` | 侧边栏展开宽度 |
|
|
14
|
+
| 收起态 | `--sidebar-collapsed-width` | 仅图标,居中对齐于中轴线 |
|
|
15
|
+
| 顶部条 | `--topbar-height` | 与 Sidebar 顶部对齐,区分品牌区 |
|
|
16
|
+
|
|
17
|
+
**布局规则**:
|
|
18
|
+
|
|
19
|
+
- Sidebar 走 `position: fixed; top: 0; left: 0; bottom: 0; z-index: 100`
|
|
20
|
+
- 主内容区通过 `margin-left: var(--layout-sidebar-width)` 补偿
|
|
21
|
+
- **禁止**:把 Sidebar + 主内容区放进一个 flex 容器(不可预期的滚动行为)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. 结构变体(2 选 1,按信息架构层级)
|
|
26
|
+
|
|
27
|
+
### 2.1 三级结构(默认)
|
|
28
|
+
|
|
29
|
+
适用:信息架构需要 3 层归类(顶层业务域 / 中层主导航 / 底层细分)。
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
aside.sidebar
|
|
33
|
+
├─ div.sidebar-header ← 品牌区
|
|
34
|
+
├─ div.sidebar-content ← 滚动容器
|
|
35
|
+
│ ├─ div.sidebar-group-label ← 分组标题(可重复)
|
|
36
|
+
│ ├─ ul.sidebar-menu
|
|
37
|
+
│ │ └─ li > a.sidebar-menu-item
|
|
38
|
+
│ └─ ul.sidebar-sub-menu ← 主菜单展开后显示
|
|
39
|
+
│ └─ li > a.sidebar-menu-item
|
|
40
|
+
├─ div.sidebar-divider
|
|
41
|
+
└─ div.sidebar-footer
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2.2 二级结构(v4.1 新增)
|
|
45
|
+
|
|
46
|
+
适用:主菜单项语义对等,无需分组标题归类。
|
|
47
|
+
|
|
48
|
+
- **禁止** `div.sidebar-group-label`
|
|
49
|
+
- 所有主菜单项放进同一个 `ul.sidebar-menu`
|
|
50
|
+
- 子菜单项与主菜单项**文字 x 坐标对齐**(同列),层级关系由展开箭头 + 字号 + 背景色表现,**不**通过左缩进
|
|
51
|
+
- 子菜单项不带 `.item-icon`,只有文字
|
|
52
|
+
|
|
53
|
+
### 2.3 选型决策
|
|
54
|
+
|
|
55
|
+
| 信息架构层级深度 | 选用 |
|
|
56
|
+
| ---------------- | ---------- |
|
|
57
|
+
| 3 层归类 | threeLevel |
|
|
58
|
+
| 2 层归类 | twoLevel |
|
|
59
|
+
|
|
60
|
+
> 与菜单项**个数无关**,只看信息架构。
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 3. 颜色映射(v4.1 品牌化)
|
|
65
|
+
|
|
66
|
+
| 槽位 | 用途 |
|
|
67
|
+
| ----------------------------------- | ------------------------------------------- |
|
|
68
|
+
| `--color-sidebar` | 侧边栏背景 |
|
|
69
|
+
| `--color-sidebar-foreground` | 默认文字 |
|
|
70
|
+
| `--color-sidebar-active` | 选中项背景(v4.1 走灰色,区别 hover) |
|
|
71
|
+
| `--color-sidebar-active-foreground` | 选中项文字(OpenTrek 蓝) |
|
|
72
|
+
| `--color-sidebar-hover` | hover 态背景 |
|
|
73
|
+
| `--color-sidebar-title` | sidebar-group-label 文字 |
|
|
74
|
+
| `--color-sidebar-item-muted` | 二级文字 / 次要项 |
|
|
75
|
+
| `--color-sidebar-primary` | 品牌强调(`#0055EE`)— 高亮 logo / 选中态等 |
|
|
76
|
+
| `--color-sidebar-border` | 分隔线 |
|
|
77
|
+
| `--color-sidebar-ring` | 焦点圈 |
|
|
78
|
+
|
|
79
|
+
**禁止**:
|
|
80
|
+
|
|
81
|
+
- 直接用 `bg-blue-600` / `text-gray-500` 这类原始 Tailwind 色
|
|
82
|
+
- 在 sidebar 内消费 `--color-primary` / `--color-foreground`(应走 sidebar 命名空间)
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 4. 收起态行为
|
|
87
|
+
|
|
88
|
+
- 宽度 `--sidebar-collapsed-width`,`overflow: visible`(支持 flyout 浮层溢出)
|
|
89
|
+
- 滚动能力下移到 `.sidebar-content`(`overflow-y: auto; overflow-x: hidden`)
|
|
90
|
+
- 仅显示图标,隐藏所有文字(label / group title / count / expand-icon)
|
|
91
|
+
- 选中态用 `--color-sidebar-active` 灰色背景,**不**显示左侧高亮条
|
|
92
|
+
- 过渡走 `width var(--duration-normal) var(--easing-ease)`
|
|
93
|
+
- 菜单项 40×40px,`border-radius: var(--radius-md)`,`li { display: flex; justify-content: center }` 保证居中于中轴线
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 5. Footer / Header 槽位
|
|
98
|
+
|
|
99
|
+
| 槽位 | 内容 |
|
|
100
|
+
| ---------------- | ----------------------------------------------------- |
|
|
101
|
+
| sidebar-header | 展开态:品牌 logo;收起态:方形 logo +hover 展开 icon |
|
|
102
|
+
| sidebar-avatar | 用户头像 |
|
|
103
|
+
| sidebar-username | 用户名(收起态隐藏) |
|
|
104
|
+
| sidebar-more | 更多操作触发器 |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 6. 禁止清单(硬约束)
|
|
109
|
+
|
|
110
|
+
- [ERROR] 扁平化结构(直接 `<a>` 挂在 `nav`/`div` 下,无 `ul > li` 包裹)
|
|
111
|
+
- [ERROR] Sidebar 整体使用 flex 布局(必须 `fixed` 定位)
|
|
112
|
+
- [ERROR] 省略 `sidebar-content` 滚动容器
|
|
113
|
+
- [ERROR] twoLevel 变体出现 `sidebar-group-label`
|
|
114
|
+
- [ERROR] 无子菜单的菜单项出现 expand-icon 或 `data-toggle`(expand-icon 仅出现在有 `sidebar-sub-menu` 的主菜单项)
|
|
115
|
+
- [WARN] 在 sidebar 里直接消费 `--color-primary`(应走 `--color-sidebar-primary`)
|
|
116
|
+
- [WARN] 二级结构子菜单文字起点低于主菜单文字 x(隐藏层级关系)
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 7. 引用关系
|
|
121
|
+
|
|
122
|
+
本规则是 OpenTrek sidebar 的 **single source of truth**。其他 skill 文件(page-frame / common-components / 子技能)须 `$ref` 本文件,禁止重复定义或冲突覆写。
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# 设计哲学 · OpenTrek
|
|
2
2
|
|
|
3
|
+
> ⚠️ **何时读本文件**: [generation-flow.md](./generation-flow.md) Step 1 强制要求读取。本文件建立"为什么这么做"的认知基础,是后续所有决策的裁判依据。
|
|
4
|
+
|
|
3
5
|
> 回答**"为什么这么做"**。具体规则见 [boundaries.md](./boundaries.md) / [foundations.md](./foundations.md)。
|
|
4
6
|
|
|
5
7
|
---
|
|
@@ -70,11 +72,11 @@ OpenTrek 是面向**云资源管理 / 企业级控制台**的设计语言。用
|
|
|
70
72
|
|
|
71
73
|
## 3. 原则冲突示例
|
|
72
74
|
|
|
73
|
-
| 场景 | 候选
|
|
74
|
-
| ------------------------ |
|
|
75
|
-
| 删除按钮要不要二次确认? | A. 直接删除(效率)<br>B. AlertDialog 确认(安全)
|
|
76
|
-
| 创建按钮浮动还是固定? | A. 跟随滚动浮动(醒目)<br>B. 固定右下角(一致)
|
|
77
|
-
| 状态用什么表达? | A. 仅颜色(简洁)<br>B. 颜色 + 图标 + 文字
|
|
75
|
+
| 场景 | 候选 | 选 | 理由 |
|
|
76
|
+
| ------------------------ | -------------------------------------------------- | --- | -------------------------------- |
|
|
77
|
+
| 删除按钮要不要二次确认? | A. 直接删除(效率)<br>B. AlertDialog 确认(安全) | B | Safety > Efficiency |
|
|
78
|
+
| 创建按钮浮动还是固定? | A. 跟随滚动浮动(醒目)<br>B. 固定右下角(一致) | B | Predictability > Clarity |
|
|
79
|
+
| 状态用什么表达? | A. 仅颜色(简洁)<br>B. 颜色 + 图标 + 文字 | B | Clarity > Efficiency(视觉简洁) |
|
|
78
80
|
|
|
79
81
|
---
|
|
80
82
|
|
|
@@ -17,38 +17,29 @@ description: |
|
|
|
17
17
|
|
|
18
18
|
<!-- teamix-evo:managed:start id="core" -->
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## ⚠️ 执行协议(MANDATORY — 跳步即失败)
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
收到页面相关请求时,**必须先识别意图,再进入对应的唯一执行路径**。不允许跳过路径中的任何步骤。
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
| -------- | ----------------------------------------------------------------- | ------------------------------------------- |
|
|
26
|
-
| **生成** | "生成" / "创建" / "新建" / "设计一个" / "做一个" / "起一个控制台" | → generation-flow.md 六步流程 |
|
|
27
|
-
| **翻新** | "改造" / "升级" / "翻新" / "对齐规范" / "重新生成" | → generation-flow.md §翻新路径 |
|
|
28
|
-
| **验证** | "检查" / "验证" / "评估" / "是否符合规范" | → checklist.md 逐项对照 |
|
|
29
|
-
| **查询** | "token" / "色值" / "间距" / "组件尺寸" / "圆角" | → foundations.md(MCP `tokens_*` 工具规划中) |
|
|
24
|
+
### 意图路由
|
|
30
25
|
|
|
31
|
-
|
|
26
|
+
| 意图 | 识别关键词 | 唯一执行路径 |
|
|
27
|
+
| -------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
28
|
+
| **生成** | "生成" / "创建" / "新建" / "设计一个" / "做一个" / "起一个控制台" | **必须完整执行** [generation-flow.md](./generation-flow.md) §1 六步门控 |
|
|
29
|
+
| **翻新** | "改造" / "升级" / "翻新" / "对齐规范" / "重新生成" | **必须完整执行** [generation-flow.md](./generation-flow.md) §2 翻新路径 |
|
|
30
|
+
| **验证** | "检查" / "验证" / "评估" / "是否符合规范" | **必须完整执行** [generation-flow.md](./generation-flow.md) §3 验证路径 |
|
|
31
|
+
| **查询** | "token" / "色值" / "间距" / "组件尺寸" / "圆角" | → [foundations.md](./foundations.md)(MCP `tokens_*` 工具规划中) |
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
阶段 ① 确定页面类型
|
|
35
|
-
→ 读 patterns/page-types.md 决策树(含 Console Home / 一致性三件套)
|
|
36
|
-
→ 读 components.md 确认组件集(含 um-topbar 实物归属)
|
|
33
|
+
### 不可跳过的前置读取
|
|
37
34
|
|
|
38
|
-
|
|
39
|
-
- List / Detail / Form → patterns/{list|detail|form}-page.md
|
|
40
|
-
- Dashboard / Console → patterns/dashboard.md
|
|
41
|
-
- Dialog/Sheet/Drawer → 视为复合组件(非页面);走 components.md §3.1 选型
|
|
42
|
-
+ boundaries.md F8 / F9 / S7 / C2 / FF1-FF4 + UM1-UM3
|
|
43
|
-
→ 读 patterns/page-types.md §6 确认页间流转
|
|
44
|
-
→ 涉及租户/项目/区域切换、跨云资源旅程时读 flows.md(A 资源查找 / B 创建 / C 异常 / D 批量 / E 上下文切换)
|
|
35
|
+
无论哪种意图,进入 generation-flow.md 后**每个 Step 都有明确的 MUST READ 文件清单**。AI 不得凭"已有知识"跳过任何文件读取 — 每次任务必须重新读取,因为文件内容可能已更新。
|
|
45
36
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
37
|
+
### 禁止行为
|
|
38
|
+
|
|
39
|
+
- ❌ 跳过 generation-flow.md 直接写代码
|
|
40
|
+
- ❌ 只读 patterns/\*.md 不读 philosophy.md / boundaries.md / foundations.md
|
|
41
|
+
- ❌ 选择性读取("这个文件我已经知道内容了")
|
|
42
|
+
- ❌ 把 SKILL.md 文件索引当作"我可以只挑一个读"的菜单
|
|
52
43
|
|
|
53
44
|
## 文件索引
|
|
54
45
|
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# 硬约束 · Boundaries
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> ⚠️ **何时读本文件**: [generation-flow.md](./generation-flow.md) Step 6(自检)、翻新路径、验证路径均强制要求完整读取本文件。
|
|
4
|
+
> 本文件是硬规则的**唯一真值**,不得跳过。
|
|
5
|
+
|
|
6
|
+
> 本文件列出所有“AI 生成页面 / 组件代码时**不能做什么**”的硬规则。共 41 条规则分 6 组:
|
|
4
7
|
>
|
|
5
8
|
> - **F1-F10**:禁止项(视觉与 token 层面)
|
|
6
9
|
> - **FF1-FF4**:表单专属硬约束(错误信息、必填、状态色块、Card 嵌套)
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Components — 选型决策与组合规则
|
|
2
2
|
|
|
3
|
+
> ⚠️ **Prerequisites**: 你必须已完成 [generation-flow.md](./generation-flow.md) Step 1–3(已确定页面类型 + 子类型 + 区域骨架)后才能读本文件。
|
|
4
|
+
> 若未完成前置步骤,请先返回 [generation-flow.md](./generation-flow.md) 从 Step 1 开始。
|
|
5
|
+
|
|
3
6
|
> **本文档只回答"用什么组件、怎么搭配",不写具体 Props / Examples / import 路径。**
|
|
4
7
|
> 组件 API、Props、示例代码通过 MCP `get_component_meta` 实时查询;可用列表通过 `list_components` / `find_components` 查询。
|
|
5
8
|
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Foundations — Uni-Manager 视觉地基
|
|
2
2
|
|
|
3
|
+
> ⚠️ **何时读本文件**: [generation-flow.md](./generation-flow.md) Step 5(视觉填充)强制要求完整读取。
|
|
4
|
+
> 任何色彩、间距、字号、圆角、阴影、动效必须基于本文件的 Token 定义,不得凭记忆生成。
|
|
5
|
+
|
|
3
6
|
> 排版 / 色彩 / 间距 / 圆角 / 阴影 / 动效 在 Uni-Manager 下的系统化使用规范。
|
|
4
7
|
> 价值锚:**hybridcloud 锐利风 · 高密度信息可读性 · token-first**。
|
|
5
8
|
> 真值源:`@teamix-evo/tokens/variants/uni-manager/theme.css`(Tailwind v4 `@theme` + `[data-theme='uni-manager']` scoped CSS)。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 生成 / 翻新 / 验证流程
|
|
2
2
|
|
|
3
|
-
> AI
|
|
3
|
+
> ⚠️ **本文件是页面级任务的唯一执行路径。每一步都有 GATE 门禁和 MUST READ 文件清单。** > **跳步 = 产出不合规。AI 不得凭"已有知识"省略任何文件读取。**
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -14,7 +14,11 @@ Step 1 需求确认 → Step 2 类型识别 → Step 3 子类型 + 布局
|
|
|
14
14
|
Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
> **每步必须产出明确输出后才能进入下一步(GATE 条件)。**
|
|
18
|
+
|
|
19
|
+
## Step 1 · 最小 quorum + 默认值
|
|
20
|
+
|
|
21
|
+
📖 **MUST READ**: [philosophy.md](./philosophy.md)(理解"为什么这么做" — 四大原则优先级)+ [brand.md](./brand.md)(视觉调性 + 文案语气基调)
|
|
18
22
|
|
|
19
23
|
**只有两个信息缺一不可**(最小 quorum,缺则反问):
|
|
20
24
|
|
|
@@ -39,7 +43,11 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
39
43
|
|
|
40
44
|
**输出**:页面类型 + 资源实体 + 一句话场景假设("假设是平台管理员的实例 CRUD 列表,多云资源默认显示 cloud Badge,如有偏差请指正")。
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
## Step 2 · 页面类型识别
|
|
47
|
+
|
|
48
|
+
🚧 **GATE**: Step 1 必须已产出"页面类型 + 资源实体 + 场景假设"
|
|
49
|
+
|
|
50
|
+
📖 **MUST READ**: [patterns/page-types.md](./patterns/page-types.md) §决策树 + §Zone Map
|
|
43
51
|
|
|
44
52
|
根据 [patterns/page-types.md](./patterns/page-types.md) §决策树匹配类型:
|
|
45
53
|
|
|
@@ -55,7 +63,11 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
55
63
|
|
|
56
64
|
**输出**:页面类型 ID(`ListPage` / `DetailPage` / `Console` / ...)。
|
|
57
65
|
|
|
58
|
-
|
|
66
|
+
## Step 3 · 子类型识别 + 布局选择
|
|
67
|
+
|
|
68
|
+
🚧 **GATE**: Step 2 必须已产出"页面类型 ID"
|
|
69
|
+
|
|
70
|
+
📖 **MUST READ**: 对应的 `patterns/{type}-page.md` + [flows.md](./flows.md)(涉及租户/区域切换时)
|
|
59
71
|
|
|
60
72
|
读对应 `patterns/{type}-page.md`:
|
|
61
73
|
|
|
@@ -66,7 +78,11 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
66
78
|
|
|
67
79
|
**输出**:子类型 ID + 区域骨架(参照 [patterns/page-types.md](./patterns/page-types.md) §Zone Map)。
|
|
68
80
|
|
|
69
|
-
|
|
81
|
+
## Step 4 · 组件挑选
|
|
82
|
+
|
|
83
|
+
🚧 **GATE**: Step 3 必须已产出"子类型 ID + 区域骨架"
|
|
84
|
+
|
|
85
|
+
📖 **MUST READ**: [components.md](./components.md) §0 兜底铁律 + §1 双层架构 + §3 决策树 + §5 拼装配方
|
|
70
86
|
|
|
71
87
|
读 [components.md](./components.md) §选型决策树:
|
|
72
88
|
|
|
@@ -78,7 +94,11 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
78
94
|
|
|
79
95
|
**输出**:组件清单 + 每个组件的关键 Props。
|
|
80
96
|
|
|
81
|
-
|
|
97
|
+
## Step 5 · 视觉填充(Token 绑定)
|
|
98
|
+
|
|
99
|
+
🚧 **GATE**: Step 4 必须已产出"组件清单 + 每个组件的关键 Props"
|
|
100
|
+
|
|
101
|
+
📖 **MUST READ**: [foundations.md](./foundations.md) 全文(§1 Token 优先级 + §4 色彩 + §5 圆角 + §6 阴影 + §7 动效)+ [brand.md](./brand.md) §1 视觉五维(圆角/配色/密度/阴影/焦点风格对齐)
|
|
82
102
|
|
|
83
103
|
读 [foundations.md](./foundations.md),所有色彩、间距、字号、圆角、阴影、动效**必须**使用 Token:
|
|
84
104
|
|
|
@@ -95,7 +115,11 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
95
115
|
|
|
96
116
|
**输出**:含 Token 引用的可执行代码 / HTML。
|
|
97
117
|
|
|
98
|
-
|
|
118
|
+
## Step 6 · 自检
|
|
119
|
+
|
|
120
|
+
🚧 **GATE**: Step 5 必须已产出"含 Token 引用的可执行代码"
|
|
121
|
+
|
|
122
|
+
📖 **MUST READ**: [boundaries.md](./boundaries.md) 全文(41+ 条硬规则)+ [checklist.md](./checklist.md) 全文
|
|
99
123
|
|
|
100
124
|
对照 [checklist.md](./checklist.md) 12+ 项逐项验证:
|
|
101
125
|
|
|
@@ -110,6 +134,12 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
110
134
|
|
|
111
135
|
适用关键词:**"改造 / 升级 / 翻新 / 对齐规范 / 重新生成"**。
|
|
112
136
|
|
|
137
|
+
📖 **MUST READ** (全部必读,不得省略):
|
|
138
|
+
|
|
139
|
+
1. [boundaries.md](./boundaries.md) — 硬规则真值
|
|
140
|
+
2. [foundations.md](./foundations.md) — Token 真值
|
|
141
|
+
3. [components.md](./components.md) — 组件选型
|
|
142
|
+
|
|
113
143
|
```
|
|
114
144
|
1. 读取目标页面源码
|
|
115
145
|
2. 扫描违规项(按 boundaries.md F1-F10 + S1-S8 + UM1-UM3)
|
|
@@ -132,6 +162,12 @@ Step 6 自检 ← Step 5 视觉填充 ← Step 4 组件挑选
|
|
|
132
162
|
|
|
133
163
|
适用关键词:**"检查 / 验证 / 评估 / 是否符合规范"**。
|
|
134
164
|
|
|
165
|
+
📖 **MUST READ** (全部必读,不得省略):
|
|
166
|
+
|
|
167
|
+
1. [boundaries.md](./boundaries.md) — 41+ 条硬规则
|
|
168
|
+
2. [checklist.md](./checklist.md) — 13 强制项 + 5 一致性 + 7 建议项
|
|
169
|
+
3. [foundations.md](./foundations.md) — Token 真值(用于校验是否符合)
|
|
170
|
+
|
|
135
171
|
```
|
|
136
172
|
1. 读取目标页面源码
|
|
137
173
|
2. 逐条对照 boundaries.md
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# Dashboard — 控制台首页 / 数据概览页
|
|
2
2
|
|
|
3
|
+
> ⚠️ **Prerequisites**: 你必须已在 [generation-flow.md](../generation-flow.md) Step 2 确认页面类型为 **Dashboard**,并由 Step 3 引导到这里。
|
|
4
|
+
|
|
3
5
|
> AI 实操路径:Step 2(页面类型识别)判定为 Dashboard 后,本文档接管。
|
|
4
6
|
>
|
|
5
|
-
> uni-manager 中 Dashboard
|
|
7
|
+
> uni-manager 中 Dashboard **同时承担“控制台 Home”** 角色(资源总览 / 待办 / 跨云态势),是用户登录后第一屏。
|
|
6
8
|
|
|
7
9
|
---
|
|
8
10
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Detail Page — 详情页模式(uni-manager)
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> ⚠️ **Prerequisites**: 你必须已在 [generation-flow.md](../generation-flow.md) Step 2 确认页面类型为 **DetailPage**,并由 Step 3 引导到这里。
|
|
4
|
+
|
|
5
|
+
> **触发**:用户描述含“详情/查看/信息/概览(单资源)”。
|
|
4
6
|
> **核心特征**:单条记录的只读展示 + DescriptionList + 操作按钮。
|
|
5
7
|
> **页面级别**:L2(面包屑模式 PageHeader,自动继承 um-topbar + Sidebar)。
|
|
6
8
|
|
|
@@ -20,7 +22,34 @@
|
|
|
20
22
|
|
|
21
23
|
---
|
|
22
24
|
|
|
23
|
-
## 2.
|
|
25
|
+
## 2. Template 组件拼装
|
|
26
|
+
|
|
27
|
+
> 源自 `packages/create/variants/uni-manager/src/templates/detail-page.tsx`
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
<PageShell header={<UmTopbar />} sidebar={<Sidebar />}>
|
|
31
|
+
<UmPageContainer header={<PageHeader breadcrumb={...} title="XX 详情" actions={...} />}>
|
|
32
|
+
{children} {/* InfoCard / Tabs / DescriptionList / Timeline */}
|
|
33
|
+
</UmPageContainer>
|
|
34
|
+
</PageShell>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
| Slot | 注入内容 | 说明 |
|
|
38
|
+
| ------------ | ---------------------------------------------------- | ---------- |
|
|
39
|
+
| `topbar` | UmTopbar | 框架级吃顶 |
|
|
40
|
+
| `sidebar` | Sidebar + 业务菜单 | 左导 |
|
|
41
|
+
| `pageHeader` | PageHeader(面包屑 + 标题 + actions + 可选数据概览) | L2 页面 |
|
|
42
|
+
| `children` | InfoCard / Tabs / DescriptionList / Timeline 等 | 详情主区 |
|
|
43
|
+
|
|
44
|
+
**壳层特征**:
|
|
45
|
+
|
|
46
|
+
- 结构最简洁 — 只有 4 个 slot,业务组件全部走 children
|
|
47
|
+
- InfoCard 是局部信息卡(业务子区域级),不算“主区白卡”
|
|
48
|
+
- Tabs 用于多维度信息分类(基本信息 / 监控 / 关联资源 / 操作日志)
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 3. 标准结构(资源详情 — uni-manager 跨云增强)
|
|
24
53
|
|
|
25
54
|
```
|
|
26
55
|
┌─────────────────────────────────────────────┐
|
|
@@ -65,7 +94,7 @@
|
|
|
65
94
|
|
|
66
95
|
---
|
|
67
96
|
|
|
68
|
-
##
|
|
97
|
+
## 4. 必需组件
|
|
69
98
|
|
|
70
99
|
| 组件 | 位置 | 说明 |
|
|
71
100
|
| ------------------- | ---- | ------------------------------- |
|
|
@@ -87,7 +116,7 @@
|
|
|
87
116
|
|
|
88
117
|
---
|
|
89
118
|
|
|
90
|
-
##
|
|
119
|
+
## 5. DescriptionItem 字段交互
|
|
91
120
|
|
|
92
121
|
| 类型 | 触发 | 反馈 |
|
|
93
122
|
| -------------- | ---------- | --------------------------------- |
|
|
@@ -102,7 +131,7 @@
|
|
|
102
131
|
|
|
103
132
|
---
|
|
104
133
|
|
|
105
|
-
##
|
|
134
|
+
## 6. 操作按钮规则
|
|
106
135
|
|
|
107
136
|
### 5.1 位置
|
|
108
137
|
|
|
@@ -129,7 +158,7 @@
|
|
|
129
158
|
|
|
130
159
|
---
|
|
131
160
|
|
|
132
|
-
##
|
|
161
|
+
## 7. Tab 切换交互
|
|
133
162
|
|
|
134
163
|
| 场景 | 行为 |
|
|
135
164
|
| ---------- | ----------------------------- |
|
|
@@ -143,7 +172,7 @@
|
|
|
143
172
|
|
|
144
173
|
---
|
|
145
174
|
|
|
146
|
-
##
|
|
175
|
+
## 8. 信息分组
|
|
147
176
|
|
|
148
177
|
- DescriptionList 按 ListSection 分组(基本信息 / 配置信息 / 网络信息)
|
|
149
178
|
- 每组可独立展开/收起(可选)
|
|
@@ -153,7 +182,7 @@
|
|
|
153
182
|
|
|
154
183
|
---
|
|
155
184
|
|
|
156
|
-
##
|
|
185
|
+
## 9. 嵌套约束
|
|
157
186
|
|
|
158
187
|
| 父子关系 | 状态 |
|
|
159
188
|
| -------------------------------------------------------------------------------------------------------- | ----------------------------------- |
|
|
@@ -168,7 +197,7 @@
|
|
|
168
197
|
|
|
169
198
|
---
|
|
170
199
|
|
|
171
|
-
##
|
|
200
|
+
## 10. 禁止项
|
|
172
201
|
|
|
173
202
|
| 禁项 | 原因 |
|
|
174
203
|
| -------------------------- | ------------------------------------- |
|
|
@@ -182,7 +211,7 @@
|
|
|
182
211
|
|
|
183
212
|
---
|
|
184
213
|
|
|
185
|
-
##
|
|
214
|
+
## 11. 边界情况
|
|
186
215
|
|
|
187
216
|
| 场景 | 处理 |
|
|
188
217
|
| ---------- | ----------------------- |
|
|
@@ -197,7 +226,7 @@
|
|
|
197
226
|
|
|
198
227
|
---
|
|
199
228
|
|
|
200
|
-
##
|
|
229
|
+
## 12. 详情 → 列表返回约定
|
|
201
230
|
|
|
202
231
|
- 面包屑父级项点击返回 ListPage
|
|
203
232
|
- PageHeader 右侧可选 × 关闭按钮
|
|
@@ -208,7 +237,7 @@
|
|
|
208
237
|
|
|
209
238
|
---
|
|
210
239
|
|
|
211
|
-
##
|
|
240
|
+
## 13. 详情页特有自检
|
|
212
241
|
|
|
213
242
|
- [ ] PageHeader 用面包屑模式(L2 页面)
|
|
214
243
|
- [ ] um-topbar 在框架层就位(UM1)
|