@deppon/deppon-skills 2.4.15 → 2.4.18
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/dist/deppon-npm-skills/SKILL.md +7 -5
- package/dist/deppon-prd-generator/SKILL.md +210 -0
- package/dist/deppon-prd-generator/quick-reference.md +153 -0
- package/dist/deppon-prd-generator/template/backend-form-edit-prd-template.md +112 -0
- package/dist/deppon-prd-generator/template/backend-form-preview-prd-template.md +108 -0
- package/dist/deppon-prd-generator/template/backend-list-prd-template.md +106 -0
- package/dist/deppon-prd-generator/template/data-prd-template.md +190 -0
- package/dist/deppon-prd-generator/template/user-frontend-prd-template.md +55 -0
- package/dist/deppon-prd-generator/user-management/prd.md +146 -0
- package/dist/deppon-prd-generator/user-management/prototype.html +1187 -0
- package/dist/deppon-prd-generator/workflow.md +251 -0
- package/dist/deppon-pro-form/SKILL.md +1 -1
- package/dist/deppon-pro-page-insert-detail-workflow/SKILL.md +94 -0
- package/dist/{deppon-pro-page-crud → deppon-pro-page-query-table-form}/SKILL.md +20 -7
- package/dist/deppon-pro-table/SKILL.md +5 -0
- package/package.json +1 -1
- package/dist/deppon-npm-prd/SKILL.md +0 -70
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# deppon-prd-generator 工作流程
|
|
2
|
+
|
|
3
|
+
## 完整工作流程图
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
用户请求生成PRD(及可选 HTML+Tailwind 原型)
|
|
7
|
+
↓
|
|
8
|
+
Step 1: 页面分析
|
|
9
|
+
├─ 读取 index.tsx
|
|
10
|
+
├─ 读取 spec.md
|
|
11
|
+
├─ 读取 content.md
|
|
12
|
+
└─ 查看 screenshot.png
|
|
13
|
+
↓
|
|
14
|
+
Step 2: 类型识别
|
|
15
|
+
├─ 数据看板类? ──是──→ 使用 data-prd-template.md
|
|
16
|
+
├─ 后台列表类? ──是──→ 使用 backend-list-prd-template.md
|
|
17
|
+
├─ 表单编辑类? ──是──→ 使用 backend-form-edit-prd-template.md
|
|
18
|
+
├─ 表单预览类? ──是──→ 使用 backend-form-preview-prd-template.md
|
|
19
|
+
└─ 用户前台类? ──是──→ 使用 user-frontend-prd-template.md
|
|
20
|
+
↓
|
|
21
|
+
Step 3: 需求确认 (按需)
|
|
22
|
+
├─ 仅类型/范围不明时确认
|
|
23
|
+
└─ 禁止:仅要 PRD 时追问是否要原型
|
|
24
|
+
↓
|
|
25
|
+
Step 4: PRD生成
|
|
26
|
+
├─ 应用对应模板
|
|
27
|
+
├─ 提取页面信息
|
|
28
|
+
├─ 填充模板内容
|
|
29
|
+
└─ 保存到 src/prototypes/<page-name>/prd.md
|
|
30
|
+
↓
|
|
31
|
+
Step 4b: 原型生成 (仅用户指令含原型/HTML/Tailwind 等关键词时)
|
|
32
|
+
├─ 单文件 prototype.html + Tailwind CDN + PRD 标注弹框
|
|
33
|
+
├─ 单文件 prototype.html + Tailwind CDN
|
|
34
|
+
├─ 布局/视觉对齐截图或实现
|
|
35
|
+
├─ 原生 JS 实现 Tab/弹层等演示交互
|
|
36
|
+
└─ 保存到 src/prototypes/<page-name>/prototype.html
|
|
37
|
+
↓
|
|
38
|
+
Step 5: 一致性核对
|
|
39
|
+
├─ 核对功能点与页面实现
|
|
40
|
+
├─ 核对技术约定与spec.md
|
|
41
|
+
├─ 核对范围与用户要求
|
|
42
|
+
├─ 核对是否遗漏核心内容
|
|
43
|
+
└─ (若有原型) 核对原型与 prd.md、spec 一致
|
|
44
|
+
↓
|
|
45
|
+
一致性检查通过?
|
|
46
|
+
├─ 是 → 完成!交付 PRD(若用户要求原型则含 prototype.html)
|
|
47
|
+
└─ 否 → 返回 Step 4 / 4b 重新生成
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## 详细步骤说明
|
|
51
|
+
|
|
52
|
+
### Step 1: 页面分析
|
|
53
|
+
|
|
54
|
+
**目标**:全面了解页面的功能、结构和技术实现。
|
|
55
|
+
|
|
56
|
+
**操作清单**:
|
|
57
|
+
|
|
58
|
+
- [ ] 读取 `index.tsx`(或主要实现文件)
|
|
59
|
+
- [ ] 读取 `spec.md` 规格文档(如果存在)
|
|
60
|
+
- [ ] 读取 `content.md` 或其他相关文档
|
|
61
|
+
- [ ] 查看 `screenshot.png` 了解页面视觉
|
|
62
|
+
- [ ] 识别页面的主要功能模块
|
|
63
|
+
- [ ] 记录关键技术实现细节
|
|
64
|
+
|
|
65
|
+
**关键关注点**:
|
|
66
|
+
|
|
67
|
+
- 页面包含哪些组件
|
|
68
|
+
- 有哪些交互逻辑
|
|
69
|
+
- 使用了哪些第三方库
|
|
70
|
+
- 数据结构是怎样的
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
### Step 2: 类型识别
|
|
75
|
+
|
|
76
|
+
**目标**:自动识别页面类型,选择最合适的模板。
|
|
77
|
+
|
|
78
|
+
**识别规则**:
|
|
79
|
+
|
|
80
|
+
| 判断条件 | 页面类型 | 模板文件 |
|
|
81
|
+
| ------------------------------------ | -------------- | ------------------------------------ |
|
|
82
|
+
| 包含大量图表、指标卡片、数据看板 | 数据看板类 | data-prd-template.md |
|
|
83
|
+
| 包含数据列表、筛选器、分页、批量操作 | 后台列表类 | backend-list-prd-template.md |
|
|
84
|
+
| 包含表单输入、提交按钮、字段校验 | 后台表单编辑类 | backend-form-edit-prd-template.md |
|
|
85
|
+
| 只有数据展示、无输入操作 | 后台表单预览类 | backend-form-preview-prd-template.md |
|
|
86
|
+
| C 端用户界面、营销活动、产品展示 | 用户前台类 | user-frontend-prd-template.md |
|
|
87
|
+
|
|
88
|
+
**如果无法自动识别**:
|
|
89
|
+
|
|
90
|
+
- 向用户询问页面类型
|
|
91
|
+
- 提供 5 种类型供用户选择
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### Step 3: 需求确认 (按需)
|
|
96
|
+
|
|
97
|
+
**目标**:仅在信息不足时做最小确认;**不因原型缺失而打断用户**。
|
|
98
|
+
|
|
99
|
+
**确认清单**(按需勾选,非默认全问):
|
|
100
|
+
|
|
101
|
+
- [ ] 页面类型无法识别时,请用户确认类型或指定模板
|
|
102
|
+
- [ ] 功能范围严重不明时,请用户收窄范围
|
|
103
|
+
- [ ] 用户指令矛盾时,请用户二选一
|
|
104
|
+
|
|
105
|
+
**禁止**:用户仅要 PRD 时,追问「要不要带 prototype / HTML / Tailwind」;未在指令中出现原型相关关键词则**不执行 Step 4b**。
|
|
106
|
+
|
|
107
|
+
**向用户确认的问题示例**(仅在识别失败等场景使用,勿套话四条全发):
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
我已分析了页面内容,但无法判断应以「后台列表」还是「表单编辑」为主模板。
|
|
111
|
+
请指定其一,或说明页面以哪块为主功能。
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### Step 4: PRD 生成
|
|
117
|
+
|
|
118
|
+
**目标**:根据模板生成结构化的 PRD 文档。
|
|
119
|
+
|
|
120
|
+
**生成流程**:
|
|
121
|
+
|
|
122
|
+
1. **读取模板**
|
|
123
|
+
- 根据页面类型加载对应模板
|
|
124
|
+
- 理解模板的结构和要求
|
|
125
|
+
2. **信息提取**
|
|
126
|
+
- 从 `index.tsx` 提取功能点
|
|
127
|
+
- 从 `spec.md` 提取技术约定
|
|
128
|
+
- 从 `content.md` 提取文案内容
|
|
129
|
+
- 从 `screenshot.png` 提取布局信息
|
|
130
|
+
3. **填充模板**
|
|
131
|
+
- 替换模板中的占位符
|
|
132
|
+
- 按照模板结构组织内容
|
|
133
|
+
- 确保术语统一、逻辑清晰
|
|
134
|
+
4. **保存文件**
|
|
135
|
+
- 路径:`src/prototypes/<page-name>/prd.md`
|
|
136
|
+
- 文件名:`prd.md`(小写)
|
|
137
|
+
- 确保路径和文件名正确
|
|
138
|
+
|
|
139
|
+
**关键原则**:
|
|
140
|
+
|
|
141
|
+
- 内容必须基于实际页面实现
|
|
142
|
+
- 使用研发/测试通用术语
|
|
143
|
+
- 避免冗余表述
|
|
144
|
+
- 结构清晰、层次分明
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
### Step 4b: 高保真可交互原型生成(可选)
|
|
149
|
+
|
|
150
|
+
**目标**:产出可本地直接用浏览器打开的演示页,支撑评审与需求走查。
|
|
151
|
+
|
|
152
|
+
**操作清单**:
|
|
153
|
+
|
|
154
|
+
- [ ] 使用 Tailwind CSS(优先 Play CDN),单文件 `prototype.html` 为主
|
|
155
|
+
- [ ] 布局与关键样式对齐截图或现有页面
|
|
156
|
+
- [ ] 用原生 JS 实现需演示的交互(Tab、折叠、弹层、表单状态等);数据 mock
|
|
157
|
+
- [ ] **PRD 标注弹框**:主要区块设触发器,独立弹层展示章节号 + 需求要点;z-index 高于业务弹层;ESC/遮罩/按钮可关
|
|
158
|
+
- [ ] 文件内注释或页脚注明与 `prd.md` 的对应关系
|
|
159
|
+
- [ ] 保存路径:`src/prototypes/<page-name>/prototype.html`
|
|
160
|
+
|
|
161
|
+
**关键原则**:
|
|
162
|
+
|
|
163
|
+
- 不引入未约定的构建依赖(默认无 npm 构建)
|
|
164
|
+
- 不写死密钥、Cookie、内网 URL
|
|
165
|
+
- 交互仅用于演示路径,复杂业务逻辑以 PRD 文字为准
|
|
166
|
+
- **标注弹框**仅承载需求走查信息,与业务弹层视觉区分(如琥珀顶栏);`z-index` 高于业务弹层
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### Step 5: 一致性核对
|
|
171
|
+
|
|
172
|
+
**目标**:确保生成的 PRD 准确无误。
|
|
173
|
+
|
|
174
|
+
**核对维度**:
|
|
175
|
+
|
|
176
|
+
#### 维度 1: 功能点与页面实现一致
|
|
177
|
+
|
|
178
|
+
- [ ] PRD 中描述的功能点在页面中都存在
|
|
179
|
+
- [ ] 没有描述页面中不存在的功能
|
|
180
|
+
- [ ] 交互逻辑描述与实现一致
|
|
181
|
+
- [ ] 展示规则描述与实现一致
|
|
182
|
+
|
|
183
|
+
#### 维度 2: 技术约定与 spec.md 一致
|
|
184
|
+
|
|
185
|
+
- [ ] 数据口径定义与 spec.md 一致
|
|
186
|
+
- [ ] 字段格式定义与 spec.md 一致
|
|
187
|
+
- [ ] 接口规则定义与 spec.md 一致
|
|
188
|
+
- [ ] 没有与 spec.md 冲突的内容
|
|
189
|
+
|
|
190
|
+
#### 维度 3: 范围与用户要求一致
|
|
191
|
+
|
|
192
|
+
- [ ] 如果用户指定了范围,只包含范围内的内容
|
|
193
|
+
- [ ] 没有超出用户指定的范围
|
|
194
|
+
- [ ] 没有遗漏用户指定范围内的核心内容
|
|
195
|
+
|
|
196
|
+
#### 维度 4: 无遗漏核心内容
|
|
197
|
+
|
|
198
|
+
- [ ] 所有主要功能模块都已描述
|
|
199
|
+
- [ ] 所有关键字段都已定义
|
|
200
|
+
- [ ] 所有重要交互都已说明
|
|
201
|
+
- [ ] 模板的所有必填部分都已填充
|
|
202
|
+
|
|
203
|
+
#### 维度 5: 原型与文档一致(若交付了 prototype.html)
|
|
204
|
+
|
|
205
|
+
- [ ] 原型展示的模块、字段、主流程与 `prd.md` 无矛盾
|
|
206
|
+
- [ ] 承诺可点的交互在原型中可用;未承诺的不宜过度「假实现」以免误导
|
|
207
|
+
- [ ] 与 spec.md 中的文案、枚举、状态一致(若有 spec)
|
|
208
|
+
- [ ] **标注弹框**内容与 `prd.md` 章节对应正确,且与业务弹窗在视觉上可区分
|
|
209
|
+
|
|
210
|
+
**核对结果处理**:
|
|
211
|
+
|
|
212
|
+
- ✅ 全部通过:完成!交付 PRD(及 `prototype.html`,若已生成)
|
|
213
|
+
- ❌ 发现问题:返回 Step 4 / Step 4b 重新生成,修正问题后再次核对
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 常见问题处理
|
|
218
|
+
|
|
219
|
+
### Q: 页面同时包含多种类型的功能怎么办?
|
|
220
|
+
|
|
221
|
+
A: 选择最主要的功能类型作为主模板,其他类型的功能可以在对应模块中详细描述。
|
|
222
|
+
|
|
223
|
+
### Q: spec.md 不存在怎么办?
|
|
224
|
+
|
|
225
|
+
A: 只基于页面实现生成 PRD,在 PRD 中注明"规格文档待补充"。
|
|
226
|
+
|
|
227
|
+
### Q: 没有 index.tsx、content.md、screenshot 等页面产物怎么办?
|
|
228
|
+
|
|
229
|
+
A: 无法执行「从实现提取信息」;应先与用户对齐范围,**新建或补全 `spec.md`** 作为技术约定权威,再生成 PRD,并在 PRD 文首说明「无页面实现,需求与 spec 对齐」;Step 5 中「与页面实现一致」改为核对 **PRD 与 spec、与已确认范围** 一致。
|
|
230
|
+
|
|
231
|
+
### Q: 用户要求修改已生成的 PRD 怎么办?
|
|
232
|
+
|
|
233
|
+
A: 了解用户的具体修改需求,重新执行 Step 4 和 Step 5。
|
|
234
|
+
|
|
235
|
+
### Q: 原型与 PRD 应该以哪个为准?
|
|
236
|
+
|
|
237
|
+
A: **PRD 与 spec 为需求权威**;`prototype.html` 用于走查与对齐视觉/动线。若不一致,以 PRD/spec 为准并回改原型。
|
|
238
|
+
|
|
239
|
+
### Q: 页面非常复杂,一个模板不够用怎么办?
|
|
240
|
+
|
|
241
|
+
A: 可以将页面拆分为多个模块,每个模块使用合适的子模板结构。
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## 最佳实践
|
|
246
|
+
|
|
247
|
+
1. **先分析再生成**:充分理解页面后再开始生成
|
|
248
|
+
2. **保持客观**:只描述实际存在的功能,不添加主观臆测
|
|
249
|
+
3. **注重细节**:字段定义、校验规则等细节要准确
|
|
250
|
+
4. **核对再交付**:一定要经过一致性核对后再交付
|
|
251
|
+
5. **持续改进**:根据用户反馈不断优化生成质量
|
|
@@ -64,7 +64,7 @@ description: >-
|
|
|
64
64
|
- `warningTooltip`:必填警示提示(可选)。
|
|
65
65
|
- 自定义组件:`component: 'el-input-number'` + `componentProps: { ... }`(以包内可注册组件名为准)。
|
|
66
66
|
|
|
67
|
-
内联查询表单:给 `pro-form` 增加 `:inline="true"`,并缩小 `label-width`(模式对齐 **`deppon-pro-page-
|
|
67
|
+
内联查询表单:给 `pro-form` 增加 `:inline="true"`,并缩小 `label-width`(模式对齐 **`deppon-pro-page-query-table-form`** 顶部查询条)。
|
|
68
68
|
|
|
69
69
|
## 脚本状态约定
|
|
70
70
|
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deppon-pro-page-insert-detail-workflow
|
|
3
|
+
description: >-
|
|
4
|
+
单页承载「新建 insert / 详情 detail / 工作流 workflow」三态:路由 query、顶栏与底栏分支、ProForm 只读切换、
|
|
5
|
+
子表 ProTable 单实例 row-edit 与只读列切换、保存前整表校验。在用户要新建+详情+工作流合一页、
|
|
6
|
+
sourceType、审批页、与列表详情同构页时应用。
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# deppon-pro-page-insert-detail-workflow:通用新建 / 详情 / 工作流模板页
|
|
10
|
+
|
|
11
|
+
## 与其它 skill 的区别(避免重叠)
|
|
12
|
+
|
|
13
|
+
| 场景 | 使用本 skill | 改用其它 skill |
|
|
14
|
+
| ---- | ------------ | -------------- |
|
|
15
|
+
| **同一 URL** 用 `query`(如 `sourceType`)切换新建、详情、工作流;**一套** `el-scrollbar + el-card` 表单区 + **多套底栏**(保存 / 关闭下载打印 / 审批) | ✅ 本 skill | — |
|
|
16
|
+
| 上查下表 + 底部整块实体表单(**非** insert/detail/workflow 三态) | ❌ | **`deppon-pro-page-query-table-form`** |
|
|
17
|
+
| 多段锚点、多段 `ProForm` 统一提交 | ❌ | **`deppon-pro-form-group`** |
|
|
18
|
+
| 列表内 **单元格** 编辑 `:editable="true"` | ❌ | **`deppon-pro-table-cell-editable`** |
|
|
19
|
+
| 子表 **行编辑** `row-edit`、`v-model:editing-row-index`、操作列插槽(本页子表用法) | 与本 skill **组合** | **`deppon-pro-table-row-edit`** |
|
|
20
|
+
|
|
21
|
+
## 依据来源(私有 npm)
|
|
22
|
+
|
|
23
|
+
- **`deppon-npm-private-registry`**。
|
|
24
|
+
- **`@deppon/deppon-template`**:`ProForm`、`ProTable`(`row-edit`、`readonly`、`validate`、`getEditingRowData`、`clearEditingRowData`)— 以包内 README / `*.d.ts` 为准。
|
|
25
|
+
- **`@deppon/deppon-ui`**:`ElCard`、`ElScrollbar`、`ElBreadcrumb`、`ElButton`、`ElMessage` 等。
|
|
26
|
+
- **`@deppon/deppon-router`**:`useRoute` / `useRouter` 读 `query`、返回。
|
|
27
|
+
- **`deppon-npm-skills`**。外仓实现时**不依赖** `deppon-npm` 的 `site/`。
|
|
28
|
+
|
|
29
|
+
## 没有 `ContractDetailExample.vue` 时怎么落地?
|
|
30
|
+
|
|
31
|
+
- **不要把整页 `.vue` 全文写进本 SKILL**。原因:体积大、易与真实业务分叉、skill 更新不同步;外仓也**本来就没有**该路径。
|
|
32
|
+
- **做法**:以本文件的 **模式约定 + 生成清单** 为准,结合 **`deppon-npm-private-registry`** 里包的 README / `*.d.ts` 写你项目自己的页面;子表 **`row-edit`** 的列与事件细节配合 **`deppon-pro-table-row-edit`**。
|
|
33
|
+
- **仅当工作区就是 `deppon-npm` monorepo** 且需要「对一下交互」时,再在仓库内打开 `site/src/views/examples/ContractDetailExample.vue` 对照,**不**要求把该文件拷进业务仓或拷进 skill。
|
|
34
|
+
- 下面 **骨架** 只表达结构(非可运行完整页),Agent 按业务字段补全即可。
|
|
35
|
+
|
|
36
|
+
### 最小结构骨架(示意)
|
|
37
|
+
|
|
38
|
+
```vue
|
|
39
|
+
<!-- 顶栏:v-if="isWorkflow" / v-else -->
|
|
40
|
+
<!-- 中部:el-scrollbar + el-card + pro-form;子表单个 pro-table -->
|
|
41
|
+
<pro-table
|
|
42
|
+
ref="subTableRef"
|
|
43
|
+
v-model:editing-row-index="subEditingIndex"
|
|
44
|
+
:data-source="detail.subRows"
|
|
45
|
+
:columns="isInsert ? subEditColumns : subReadColumns"
|
|
46
|
+
:row-edit="isInsert"
|
|
47
|
+
:readonly="isReadonly"
|
|
48
|
+
:show-header="false"
|
|
49
|
+
:show-pagination="false"
|
|
50
|
+
:show-toolbar="false"
|
|
51
|
+
:fixed-table="false"
|
|
52
|
+
row-key="id"
|
|
53
|
+
>
|
|
54
|
+
<template #action="{ row, index }">…保存/取消/修改/删除…</template>
|
|
55
|
+
</pro-table>
|
|
56
|
+
<el-button v-if="isInsert" type="primary" class="add-row-btn" @click="addSubRow">…</el-button>
|
|
57
|
+
<!-- 底栏:v-if="isInsert" / v-else-if="isDetail" / v-else-if="isWorkflow" 三套按钮 -->
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 模式约定(与常见业务页一致)
|
|
61
|
+
|
|
62
|
+
- **路由参数**:例如 `?sourceType=insert | detail | workflow`(可与 `mode` 等别名兼容,在 `watch(route.query)` 内归一化)。
|
|
63
|
+
- **派生布尔**:`isInsert` / `isDetail` / `isWorkflow`;**只读总开关**:`isReadonly = isDetail || isWorkflow`(新建可编)。
|
|
64
|
+
- **顶栏**:`workflow` 单独一套(面包屑 + 工作流号等);`insert`/`detail` 共用另一套(面包屑 + 标题 + 返回)。
|
|
65
|
+
- **主表单 `ProForm`**:`columns` 在只读时加 `mode: 'read'`(或项目内既有 `applyModeToColumns`);**`rules` 仅在 `isInsert` 传入**。
|
|
66
|
+
- **子表 `ProTable`(单表双列配置,避免两个 `pro-table`)**:
|
|
67
|
+
- `:data-source` 同一数组;`:columns="computed(() => isInsert ? editCols : readCols)"`。
|
|
68
|
+
- **新建**:`:row-edit="true"`,`:readonly="false"`,`v-model:editing-row-index`,列含 `valueType`、`rules`、**操作列**(`prop: 'action'`,`slots: { default: 'action' }`),`#action` 内「保存 / 取消 / 修改 / 删除」。
|
|
69
|
+
- **详情 / 工作流**:`:row-edit="false"`,`:readonly="true"`,只读列无操作列。
|
|
70
|
+
- **底部添加行**:表格外 `el-button`,`v-if="isInsert"`,`class="add-row-btn"`;样式对齐业务 `ContractAddFrom.vue`(全宽虚线底、`add-icon` 字号等)。
|
|
71
|
+
- **切离 insert**:`watch(isInsert, …)` 将各子表 `editingRowIndex` 置 `-1`,必要时 `clearEditingRowData`。
|
|
72
|
+
- **页级保存**:各子表无编辑行后,对仍有数据的子表依次 `await tableRef.validate()`(`try/catch`);与其它表编辑态互斥时在「添加行」入口提示先保存。
|
|
73
|
+
|
|
74
|
+
## 底栏(三套互斥)
|
|
75
|
+
|
|
76
|
+
- **insert**:取消、保存(主表单 + 子表校验通过后调接口)。
|
|
77
|
+
- **detail**:关闭、业务按钮(如下载、打印)。
|
|
78
|
+
- **workflow**:审批意见(勾选 + textarea)+ 关闭 + 审批提交。
|
|
79
|
+
|
|
80
|
+
## 导入约定
|
|
81
|
+
|
|
82
|
+
```js
|
|
83
|
+
import { ProForm, ProTable } from '@deppon/deppon-template';
|
|
84
|
+
import { ElCard, ElScrollbar, ElButton, ElMessage, ElBreadcrumb, ElBreadcrumbItem } from '@deppon/deppon-ui';
|
|
85
|
+
import { useRoute, useRouter } from '@deppon/deppon-router';
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 生成清单
|
|
89
|
+
|
|
90
|
+
- [ ] `sourceType`(或项目约定字段)与 `isInsert`/`isDetail`/`isWorkflow` 一致,路由变化时同步。
|
|
91
|
+
- [ ] 工作流与详情顶栏不串用;`v-if` / `v-else` 分支清晰。
|
|
92
|
+
- [ ] 子表 **一个** `pro-table`,列与 `row-edit`/`readonly` 随模式切换;操作列仅在可编辑模式出现。
|
|
93
|
+
- [ ] 保存前处理「正在编辑的行」与 `validate`;多子表时顺序与提示语明确。
|
|
94
|
+
- [ ] 业务文案(模块名、按钮文案)按产品替换;本 skill 只固定 **结构** 与 **交互模式**。
|
|
@@ -1,24 +1,37 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: deppon-pro-page-
|
|
2
|
+
name: deppon-pro-page-query-table-form
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
整页骨架:独立内联查询 ProForm + ProTable +(可选)底部或弹窗「实体」ProForm。
|
|
5
|
+
不是表格内单元格编辑。在用户要「查询条与表格分离」「上查下表下表单」或「查询条 + 表格 + 编辑区(整块表单)」时应用。
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# deppon-pro-page-
|
|
8
|
+
# deppon-pro-page-query-table-form:独立查询 + 列表 + 实体表单
|
|
9
|
+
|
|
10
|
+
> **曾用标识**:`deppon-pro-page-crud`(名称易与「表格内编辑」混淆,已改为现名。)
|
|
11
|
+
|
|
12
|
+
## 与其它 skill 的区别(避免重叠)
|
|
13
|
+
|
|
14
|
+
| 场景 | 使用本 skill | 改用其它 skill |
|
|
15
|
+
| ---- | ------------ | -------------- |
|
|
16
|
+
| 顶部 **独立一条** `ProForm`(`inline`)专门做查询,中间 `ProTable` 只展示,底部/弹窗再用 **整块 `ProForm`** 编辑一条业务实体 | ✅ **`deppon-pro-page-query-table-form`** | — |
|
|
17
|
+
| 查询条件做在 **ProTable 自带搜索区**(`hideInSearch`、`@search` 等),表+搜一体 | ❌ 不用本 skill | **`deppon-pro-table`** |
|
|
18
|
+
| 在表格 **单元格内** 编辑、增删行、`:editable="true"`、`@validation-change` | ❌ 不是本 skill | **`deppon-pro-table-cell-editable`**(示例可参考 monorepo `site/.../ProTableEditable.vue`,**本 skill 不默认读 site**) |
|
|
19
|
+
| 只要表单页、不要上中下整页布局 | ❌ | **`deppon-pro-form`** |
|
|
20
|
+
|
|
21
|
+
**结论**:与 **`deppon-pro-table`** 的重叠只在「都有列表」——布局不同;本 skill 强调 **三块分离**(查询 Form / Table / 编辑 Form),**不是** ProTable 的「表头搜索一体化」。
|
|
9
22
|
|
|
10
23
|
## 依据来源(私有 npm)
|
|
11
24
|
|
|
12
25
|
- **`deppon-npm-private-registry`**。
|
|
13
|
-
- **`@deppon/deppon-template`**:同一页组合 `ProForm`(`inline` 查询)、`ProTable
|
|
26
|
+
- **`@deppon/deppon-template`**:同一页组合 `ProForm`(`inline` 查询)、`ProTable`、底部或弹窗 `ProForm` — 以类型与文档为准。
|
|
14
27
|
- **`@deppon/deppon-ui`**。
|
|
15
|
-
- **`deppon-npm-skills
|
|
28
|
+
- **`deppon-npm-skills`**。不默认读取 `deppon-npm` 的 `site/`。
|
|
16
29
|
|
|
17
30
|
## 布局结构
|
|
18
31
|
|
|
19
32
|
1. **顶部**:`<pro-form ref="queryFormRef" :inline="true" :columns="queryColumns" :initial-values="queryForm" @submit="handleQuery">`,`#actions` 内「查询 / 重置」。
|
|
20
33
|
2. **中部**:`<pro-table ...>`,`#paginationBefore` 可放摘要或按钮。
|
|
21
|
-
3.
|
|
34
|
+
3. **底部(可选)或弹窗**:`<pro-form ref="editFormRef" :columns="editColumns" :initial-values="editForm" :rules="editFormRules" :cols="2" @submit="handleSubmit">` — 编辑的是 **一条记录的表单字段**,不是表格单元格内嵌控件。
|
|
22
35
|
|
|
23
36
|
## 导入约定
|
|
24
37
|
|
|
@@ -15,6 +15,11 @@ description: >-
|
|
|
15
15
|
- **`@deppon/deppon-ui`**:表格区按钮、`ElTag` 等。
|
|
16
16
|
- **`deppon-npm-skills`**:多级表头、展开行等见其它专项 skill。不默认读取 `deppon-npm` 的 `site/`。
|
|
17
17
|
|
|
18
|
+
## 与本仓库其它列表类 skill 的边界
|
|
19
|
+
|
|
20
|
+
- 若需要 **顶部独立一条内联 `ProForm` 做查询**、中间 `ProTable`、**底部或弹窗整块 `ProForm` 编辑实体**(三块分离),用 **`deppon-pro-page-query-table-form`**,而不是把本 skill 的「内置搜索」硬拆成两套 UI。
|
|
21
|
+
- 若要在表格 **单元格内** 编辑(`editable`、增删行等),用 **`deppon-pro-table-cell-editable`**,不是「整页查询+表+表单」skill。
|
|
22
|
+
|
|
18
23
|
## 必须遵守的栈与风格
|
|
19
24
|
|
|
20
25
|
- `import { ProTable } from '@deppon/deppon-template'`。
|
package/package.json
CHANGED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: deppon-npm-prd
|
|
3
|
-
description: >-
|
|
4
|
-
根据业务描述输出可评审的产品 PRD(背景、范围、用户与场景、功能需求、非功能、验收标准、风险),
|
|
5
|
-
并给出与私有 npm 包 @deppon/* 及 Cursor skills 对齐的「原型实现蓝图」(页面类型、专项 skill、
|
|
6
|
-
主要依赖包)。在用户要 PRD、deppon-npm-prd、产品需求文档、需求说明书、产品原型、功能规格、
|
|
7
|
-
BRD/PRD、评审材料 或 从想法到可开发说明 时应用。
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# deppon-npm-prd:PRD + 可落地原型蓝图
|
|
11
|
-
|
|
12
|
-
## 与其它 skill 的配合
|
|
13
|
-
|
|
14
|
-
- **选型总索引**:实现侧对照用 **`deppon-npm-skills`**(场景 → skill → `@deppon/*`),外仓先读 **`deppon-npm-private-registry`**。
|
|
15
|
-
- **落地编码**:PRD 定稿后按专项 skill 生成或修改 Vue 页面;本 skill **不负责直接写大量业务代码**,负责 **结构化需求 + 对齐 npm 包与技能体系**。
|
|
16
|
-
|
|
17
|
-
## 信息不足时的处理
|
|
18
|
-
|
|
19
|
-
先用简短追问补齐(可列表形式),缺失则标注「待产品确认」:
|
|
20
|
-
|
|
21
|
-
- 目标用户 / 角色、核心使用场景、成功指标(可选)
|
|
22
|
-
- 必须做 / 不做(范围边界)、里程碑或上线时间约束(可选)
|
|
23
|
-
- 关键名词、状态机、与现有系统的关系(登录态、权限、数据来源)
|
|
24
|
-
|
|
25
|
-
用户明确要求「先出一版草稿」时,可用合理假设并在文中用 **「假设:…」** 标出。
|
|
26
|
-
|
|
27
|
-
## PRD 输出结构(按顺序输出)
|
|
28
|
-
|
|
29
|
-
使用 Markdown 标题,保持可粘贴到飞书/Confluence/Notion:
|
|
30
|
-
|
|
31
|
-
1. **文档信息**:产品/模块名称、版本或草案日期、作者占位、关联需求单号(若有)
|
|
32
|
-
2. **背景与目标**:要解决什么问题、不做会怎样、可衡量的目标(如有数据再说)
|
|
33
|
-
3. **范围**:In Scope / Out of Scope(列表)
|
|
34
|
-
4. **用户与场景**:角色表;每个场景 触发条件 → 主流程 → 异常分支(表格或编号步骤)
|
|
35
|
-
5. **功能需求**:按模块编号 **FR-001…**,每条含:描述、输入输出、业务规则、与其它模块边界、错误与空态
|
|
36
|
-
6. **界面与交互(原型级)**:页面/弹窗清单;每页:布局要点、主操作、校验提示、权限/只读(若有)
|
|
37
|
-
7. **数据与接口(初稿)**:核心实体字段表(字段名、类型、含义、必填、备注);接口 **若未知** 写「待接口文档」并列举需提供的 API 能力
|
|
38
|
-
8. **非功能需求**(可选):性能、兼容性、埋点、审计、国际化
|
|
39
|
-
9. **验收标准**:每条 FR 或每场景对应 **可测试** 的 Given-When-Then 或检查清单
|
|
40
|
-
10. **依赖与风险**:跨团队依赖、技术风险、开放问题(Open Questions)
|
|
41
|
-
|
|
42
|
-
## 「原型实现蓝图」小节(必含)
|
|
43
|
-
|
|
44
|
-
在 PRD 末尾增加固定小节 **`## 原型实现蓝图(deppon-npm)`**,与 **`deppon-npm-skills`** 中的场景表一致:
|
|
45
|
-
|
|
46
|
-
| 建议页面/能力 | 推荐专项 skill | 主要 npm 包(以项目实际安装为准) |
|
|
47
|
-
| ------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
48
|
-
| 由 Agent 根据 FR 表**逐行填写** | 从 `deppon-npm-skills` 选取 | `@deppon/deppon-template` / `@deppon/deppon-ui` / `@deppon/deppon-router` / `@deppon/deppon-request` |
|
|
49
|
-
|
|
50
|
-
补充说明(skill 名速查,细节见各专项 skill 与包内 `.d.ts`):
|
|
51
|
-
|
|
52
|
-
- 多表单分块 / 锚点 / 统一提交 → `deppon-pro-form-group`
|
|
53
|
-
- 列表 + 内置搜索 + 工具栏 → `deppon-pro-table`;tab 内多表组合 → `deppon-pro-table-advanced-tabs`
|
|
54
|
-
- 上查询条 + 下表格 + 底部编辑区 → `deppon-pro-page-crud`
|
|
55
|
-
- 弹窗表单 → `deppon-pro-dialog` + `deppon-pro-form`
|
|
56
|
-
- 多产品 × 线路多表单 → `deppon-product-route-multi-form` / `deppon-pro-form-performance`
|
|
57
|
-
- 行编辑 / 单元格编辑表 → `deppon-pro-table-row-edit` / `deppon-pro-table-cell-editable`
|
|
58
|
-
- 路由与页签 → `deppon-router-push-viewtab`;请求封装 → `deppon-request-package-demo`
|
|
59
|
-
|
|
60
|
-
## 写作原则
|
|
61
|
-
|
|
62
|
-
- **可开发**:研发能据 FR 与蓝图拆任务;避免纯形容词需求。
|
|
63
|
-
- **可追溯**:需求编号在验收标准中可回指。
|
|
64
|
-
- **包名真实**:只使用团队已发布的 `@deppon/*` 名称;具体 API 以消费者 **`node_modules`** 内文档与类型为准。
|
|
65
|
-
|
|
66
|
-
## 交付自检
|
|
67
|
-
|
|
68
|
-
- [ ] 范围边界清晰,开放问题已列出
|
|
69
|
-
- [ ] 每条核心 FR 有对应验收项
|
|
70
|
-
- [ ] 「原型实现蓝图」表覆盖主要页面,且 skill/npm 映射能在 `deppon-npm-skills` 中找到对应行
|