@agile-team/wl-skills-kit 2.3.1 → 2.3.2
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.3.2] - 2026-04-28
|
|
4
|
+
|
|
5
|
+
### 📝 输入规范文档体系 + README/目录结构优化
|
|
6
|
+
|
|
7
|
+
#### 新增 docs/ 输入规范文档(仅仓库可见,不随包分发)
|
|
8
|
+
- **`docs/input-spec-prototype.md`**: 原型输入规范——面向设计师/产品,含合格原型自检清单、按鈕颜色规范、Tab/视角切换标注要求、精度对比表
|
|
9
|
+
- **`docs/input-spec-detailed-design.md`**: 详设文档输入规范——面向业务分析师,含可直接复制的 Markdown 表格模板、字段英文名+字典 code 对精度的量化影响说明
|
|
10
|
+
- **`docs/input-spec-api.md`**: API 契约确认规范——面向后端开发者,含接口 URL 命名规范、api.md 两步确认工作流、常见问题答疑
|
|
11
|
+
- **`docs/input-spec-page-spec.md`**: page-spec JSON 参考手册——面向前端开发者,含每个字段详细注释、自检清单、手写 spec 场景指南
|
|
12
|
+
|
|
13
|
+
#### 结构和文档优化
|
|
14
|
+
- `README.md`: 版本读数更新为 v2.3,仓库结构图补充 `docs/` 目录说明,“进一步阅读”章节补充输入规范入口
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
3
18
|
## [2.3.1] - 2026-04-27
|
|
4
19
|
|
|
5
20
|
### 🔧 组件三文件分离规范补全 + 文档精准化
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @agile-team/wl-skills-kit
|
|
2
2
|
|
|
3
|
-
**AI Skill 模板包 v2.
|
|
3
|
+
**AI Skill 模板包 v2.3** — 一条命令将 13 条编码规范、6 个 AI Skill、组件文档、领域样例导入 Vue 3 项目。
|
|
4
4
|
|
|
5
5
|
让 AI 编辑器(Copilot / Cursor / Windsurf / Claude Code / Cline / Kiro / Trae / 通用 Agents)**真正理解项目规范**,从原型/详设到完整页面代码全流程自动化。
|
|
6
6
|
|
|
@@ -66,6 +66,13 @@ wl-skills-kit/ ← 你正看的这个仓库
|
|
|
66
66
|
│ ├── docs/ 组件 API 文档
|
|
67
67
|
│ └── demo/ 领域样例
|
|
68
68
|
│
|
|
69
|
+
├── docs/ ★★ 仅仓库可见,不会安装到业务项目 ★★
|
|
70
|
+
│ ├── mcp建议.md MCP 进化路线与三层架构建议
|
|
71
|
+
│ ├── input-spec-prototype.md 原型输入规范(面向设计师/产品)
|
|
72
|
+
│ ├── input-spec-detailed-design.md 详设文档输入规范(面向业务分析师)
|
|
73
|
+
│ ├── input-spec-api.md API 契约确认规范(面向后端开发者)
|
|
74
|
+
│ └── input-spec-page-spec.md page-spec JSON 参考手册(面向前端开发者)
|
|
75
|
+
│
|
|
69
76
|
├── kit-internal/ ★★ 仅仓库可见,不会安装到业务项目 ★★
|
|
70
77
|
│ ├── README.md 维护者首页
|
|
71
78
|
│ ├── architecture.md 架构总览
|
|
@@ -240,6 +247,7 @@ npx @agile-team/wl-skills-kit update
|
|
|
240
247
|
- 🔧 维护者文档:[kit-internal/README.md](kit-internal/README.md)(仅本仓库)
|
|
241
248
|
- 🤖 多编辑器适配机制:[files/.github/skills/_compat/README.md](files/.github/skills/_compat/README.md)
|
|
242
249
|
- 🛠️ Jenkins 流水线参考:[kit-internal/jenkins-pipeline.md](kit-internal/jenkins-pipeline.md)
|
|
250
|
+
- 📝 输入规范(如何提供高精度输入):[docs/](docs/)
|
|
243
251
|
|
|
244
252
|
---
|
|
245
253
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
| DETAIL_TABS | `templates/universal/TPL-DETAIL-TABS.md` | 详情 Tab 页(上方表单 + 下方 Tab 子表) |
|
|
16
16
|
| CHANGE_HISTORY | `templates/universal/TPL-CHANGE-HISTORY.md` | 变更历史比对页(时间线 + 字段差异) |
|
|
17
17
|
| RECORD_FORM | `templates/universal/TPL-RECORD-FORM.md` | 录入型实绩页(无分页,查询 + 内联表单) |
|
|
18
|
-
| TEMPLATE_DRIVEN | `templates/universal/TPL-DRIVEN.md` |
|
|
18
|
+
| TEMPLATE_DRIVEN | `templates/universal/TPL-DRIVEN.md` | 配置驱动页面(项目已有 Template 组件,data.ts 只需 config 对象,index.vue 3~5 行) |
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
@@ -1,27 +1,212 @@
|
|
|
1
|
-
# TEMPLATE_DRIVEN
|
|
1
|
+
# TPL-DRIVEN:配置驱动模板页(TEMPLATE_DRIVEN 模式代码生成模板)
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
3
|
+
> **本文件是 page-codegen 的正式代码生成模板。**
|
|
4
|
+
> 适用场景:项目中已有可复用的 Template 组件(如 `FinishingAchievementTemplate`),
|
|
5
|
+
> 当前页面的交互骨架与该组件完全一致时,`data.ts` 只需导出 config 对象,`index.vue` 极简到 3~5 行。
|
|
5
6
|
|
|
6
7
|
---
|
|
7
8
|
|
|
8
|
-
##
|
|
9
|
+
## 核心模式:config-only + 3 行 index.vue
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
这类页面的代码精简到极致:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
data.ts → 只导出一个 xxxConfig 常量(纯 TypeScript 对象,无任何业务逻辑)
|
|
15
|
+
index.vue → 只有 <XxxTemplate :config="config" />,总计 3~5 行
|
|
16
|
+
index.scss → 空文件或极少样式(模板组件内部已处理样式)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
所有业务逻辑(查询、表格列、API 调用、确认框、刷新等)全部在 Template 组件内部处理。
|
|
20
|
+
页面文件只是向模板传递"这个页面的具体配置"。
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 通用生成规范(适用于任意 Template 组件)
|
|
25
|
+
|
|
26
|
+
### 步骤 1:确认 Template 组件的 types.ts
|
|
27
|
+
|
|
28
|
+
生成 config 对象前,必须先读取该模板的类型定义文件:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
src/components/template/{XxxTemplate}/types.ts
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`data.ts` 的 config 对象结构必须完全遵循 `types.ts` 的 interface 定义,不得猜测字段。
|
|
35
|
+
|
|
36
|
+
### 步骤 2:生成 data.ts(纯 config 对象)
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
// src/views/[域]/[模块]/[子模块]/[kebab-页面名]/data.ts
|
|
40
|
+
import type { XxxTemplateConfig } from "@/components/template/XxxTemplate/types";
|
|
41
|
+
|
|
42
|
+
export const [camelPageName]Config: XxxTemplateConfig = {
|
|
43
|
+
// 按 types.ts 的 interface 逐字段填写
|
|
44
|
+
// 所有 API path 格式:"/[服务缩写]/[资源名]/[操作]"
|
|
45
|
+
api: {
|
|
46
|
+
list: "/[svc]/[resource]/list",
|
|
47
|
+
// ... 其余 API 按 types.ts 定义
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
// 其他配置字段按 types.ts 补全
|
|
51
|
+
};
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> **严格约束**:
|
|
55
|
+
> - ❌ 禁止在 data.ts 中写任何函数、class、ref、reactive
|
|
56
|
+
> - ❌ 禁止导入 `AbstractPageQueryHook` 或任何 hook 基类
|
|
57
|
+
> - ✅ 只有 import type + export const
|
|
58
|
+
|
|
59
|
+
### 步骤 3:生成 index.vue(3~5 行)
|
|
11
60
|
|
|
12
61
|
```vue
|
|
62
|
+
<!-- src/views/[域]/[模块]/[子模块]/[kebab-页面名]/index.vue -->
|
|
13
63
|
<template>
|
|
14
|
-
<
|
|
15
|
-
<XxxTemplate :config="xxxConfig" />
|
|
16
|
-
</div>
|
|
64
|
+
<XxxTemplate :config="[camelPageName]Config" />
|
|
17
65
|
</template>
|
|
18
66
|
|
|
19
67
|
<script setup lang="ts">
|
|
20
|
-
import
|
|
68
|
+
import XxxTemplate from "@/components/template/XxxTemplate/index.vue";
|
|
69
|
+
import { [camelPageName]Config } from "./data";
|
|
21
70
|
</script>
|
|
22
71
|
```
|
|
23
72
|
|
|
24
|
-
|
|
73
|
+
> ⚠️ 注意:模板组件自身已包含 `app-container app-page-container` 外层,
|
|
74
|
+
> index.vue **不要再套一层 div**,避免双层容器导致布局错位。
|
|
75
|
+
> 若不确定,读模板组件的 index.vue 确认其根元素结构。
|
|
76
|
+
|
|
77
|
+
### 步骤 4:生成 index.scss
|
|
78
|
+
|
|
79
|
+
通常为空文件或只有极少页面级样式覆盖:
|
|
80
|
+
|
|
81
|
+
```scss
|
|
82
|
+
// src/views/[域]/[模块]/[子模块]/[kebab-页面名]/index.scss
|
|
83
|
+
// 如无特殊覆盖样式,保留空文件即可
|
|
84
|
+
// 模板组件内部已处理所有通用样式
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 步骤 5:pages.ts 注册(与其他模式相同)
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// router/pages.ts 追加
|
|
91
|
+
["[kebab-页面名]", "[页面中文名]"],
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 何时使用 TEMPLATE_DRIVEN(识别规则)
|
|
97
|
+
|
|
98
|
+
**必须同时满足以下两个条件**:
|
|
99
|
+
|
|
100
|
+
1. 项目 `src/components/template/` 目录下已存在可复用的 Template 组件
|
|
101
|
+
2. 当前页面与该模板的交互骨架**完全一致**(查询/操作/表格结构均与模板期望的 config 结构匹配)
|
|
102
|
+
|
|
103
|
+
**不确定时的决策**:
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
✅ 交互完全一致,template/types.ts 字段全部能对应 → 使用 TEMPLATE_DRIVEN
|
|
107
|
+
⚠️ 交互相似但有额外自定义逻辑 → 使用 LIST(更安全,不要强套模板)
|
|
108
|
+
❌ 项目无 Template 组件 → 不适用,直接用 LIST/DETAIL_TABS 等标准模板
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 已知配置驱动模板一览(cx-ui-produce 项目特定)
|
|
114
|
+
|
|
115
|
+
> ⚠️ 以下是 cx-ui-produce 项目已有的 Template 组件,仅在该项目中适用。
|
|
116
|
+
> 其他项目需根据自己项目的 `src/components/template/` 目录确认。
|
|
117
|
+
|
|
118
|
+
### 1. ResultQueryTemplate(轧钢实绩查询类)
|
|
119
|
+
|
|
120
|
+
**适用范围**:`production-mmwr/sjtj/` 下的各工序实绩查询页(查询+表格+导出,无新增/编辑/删除)
|
|
121
|
+
|
|
122
|
+
**识别特征**:
|
|
123
|
+
- 原型中只有查询区 + 数据表格 + 导出按钮
|
|
124
|
+
- 无 CRUD 操作,纯查询
|
|
125
|
+
- 字段较多,表格列数 10+
|
|
126
|
+
|
|
127
|
+
**生成规则**:
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// data.ts — 只导出一个 config 对象
|
|
131
|
+
import type { ResultQueryConfig } from "@/components/template/ResultQueryTemplate/types";
|
|
132
|
+
import { BusLogicDataType } from "@/types/page";
|
|
133
|
+
|
|
134
|
+
export const [pageName]Config: ResultQueryConfig = {
|
|
135
|
+
api: {
|
|
136
|
+
list: "/[服务缩写]/[资源名]/list",
|
|
137
|
+
export: "/[服务缩写]/[资源名]/export" // 有导出时才加
|
|
138
|
+
},
|
|
139
|
+
queryItems: [
|
|
140
|
+
{ name: "[field]", label: "[中文名]", placeholder: "请输入" },
|
|
141
|
+
{
|
|
142
|
+
name: "[dateField]",
|
|
143
|
+
type: "range",
|
|
144
|
+
startName: "[startDate]",
|
|
145
|
+
endName: "[endDate]",
|
|
146
|
+
label: "[日期名]",
|
|
147
|
+
logicType: BusLogicDataType.date,
|
|
148
|
+
rangeSeparator: "至"
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
columns: [
|
|
152
|
+
{ label: "[列名]", name: "[fieldName]", minWidth: 120 }
|
|
153
|
+
]
|
|
154
|
+
};
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
```vue
|
|
158
|
+
<!-- index.vue -->
|
|
159
|
+
<template>
|
|
160
|
+
<ResultQueryTemplate :config="[pageName]Config" />
|
|
161
|
+
</template>
|
|
162
|
+
|
|
163
|
+
<script setup lang="ts">
|
|
164
|
+
import ResultQueryTemplate from "@/components/template/ResultQueryTemplate/index.vue";
|
|
165
|
+
import { [pageName]Config } from "./data";
|
|
166
|
+
</script>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
### 2. FinishingAchievementTemplate(精整实绩类)
|
|
172
|
+
|
|
173
|
+
**适用范围**:`production-mmwr/jzsj/` 下的各精整工序实绩管理页(喷砂、倒棱、矫直、剥皮、检验、酸洗、包装)
|
|
174
|
+
|
|
175
|
+
**识别特征**:
|
|
176
|
+
- 原型标题含"实绩"二字且在精整工序列表中
|
|
177
|
+
- 有固定的查询区 + 实绩录入 + 汇总数据结构
|
|
178
|
+
- 字段结构高度统一(同一套模板 7 个页面共用)
|
|
179
|
+
|
|
180
|
+
**生成规则**:读 `src/components/template/FinishingAchievementTemplate/types.ts`,按 `FinishingAchievementConfig` interface 生成 config 对象。
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
### 3. ApplicationDeterminationTemplate(申请判定类)
|
|
185
|
+
|
|
186
|
+
**适用范围**:`production-mmwr/` 下的申请判定类页面(如 mmwr-application-determination-jz)
|
|
187
|
+
|
|
188
|
+
**识别特征**:原型中有"申请"列表 + "判定"操作的双状态工作流页面
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
### 4. SamplingCommissionTemplate(取样委托类)
|
|
193
|
+
|
|
194
|
+
**适用范围**:`production-mmwr/jhgl/` 下的取样委托管理页
|
|
195
|
+
|
|
196
|
+
**识别特征**:原型中有"委托单"列表 + 取样记录结构
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## AI 操作规范
|
|
201
|
+
|
|
202
|
+
1. **识别阶段**:page-spec 前置检查时,若页面落入以上任一范围或项目有对应 Template 组件,将交互模式标记为 `TEMPLATE_DRIVEN` 并注明具体模板名
|
|
203
|
+
2. **生成阶段**:只生成 `data.ts`(config 对象)+ `index.vue`(3~5行)+ `index.scss`(空或极少样式)
|
|
204
|
+
3. **禁止行为**:
|
|
205
|
+
- ❌ 不得手写 `createPage()` + `AbstractPageQueryHook` 结构
|
|
206
|
+
- ❌ 不得添加独立的 `BaseQuery` / `BaseTable` / `jh-pagination`(模板内部已处理)
|
|
207
|
+
- ❌ 不得将其他业务场景的页面识别为 TEMPLATE_DRIVEN 并强套 config 格式
|
|
208
|
+
4. **不确定时**:使用 LIST 模板代替,更安全
|
|
209
|
+
|
|
25
210
|
|
|
26
211
|
---
|
|
27
212
|
|