mcp-feature-doc-generator 1.0.3 → 1.0.4
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.
|
@@ -58,9 +58,10 @@ export function collectFeatureDocContext(rawFeaturePath, promptText, workspaceRo
|
|
|
58
58
|
const apiImports = unique(insights.flatMap((item) => item.apiImports));
|
|
59
59
|
const dictImports = unique(insights.flatMap((item) => item.dictImports));
|
|
60
60
|
const permissionTokens = unique(insights.flatMap((item) => item.permissionTokens));
|
|
61
|
+
const outputPath = `开发规范/views/${featurePath}-README.md`;
|
|
61
62
|
const renderedText = renderContextBundle({
|
|
62
63
|
featurePath,
|
|
63
|
-
outputPath
|
|
64
|
+
outputPath,
|
|
64
65
|
promptText,
|
|
65
66
|
insights,
|
|
66
67
|
componentNames,
|
|
@@ -72,7 +73,7 @@ export function collectFeatureDocContext(rawFeaturePath, promptText, workspaceRo
|
|
|
72
73
|
return {
|
|
73
74
|
featurePath,
|
|
74
75
|
featureDir,
|
|
75
|
-
outputPath
|
|
76
|
+
outputPath,
|
|
76
77
|
promptText,
|
|
77
78
|
featureFiles: featureFiles.map((filePath) => toRepoPath(filePath, workspaceRoot)),
|
|
78
79
|
dependencyFiles: dependencyFiles.map((filePath) => toRepoPath(filePath, workspaceRoot)),
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { z } from "zod";
|
|
|
5
5
|
import { collectFeatureDocContext } from "./analysis/feature-context.js";
|
|
6
6
|
import { PROMPT_DESCRIPTION, PROMPT_NAME, buildPromptMessages, } from "./prompts/generate-feature-doc.js";
|
|
7
7
|
import { getTemplateContent } from "./resources/template.js";
|
|
8
|
-
const SERVER_VERSION = "1.0.
|
|
8
|
+
const SERVER_VERSION = "1.0.4";
|
|
9
9
|
const FEATURE_PATH_DESCRIPTION = "功能路径,如 project/pmbasupplierevaluation 或 pm/ba/PmBaRentcontractSettle";
|
|
10
10
|
const server = new McpServer({
|
|
11
11
|
name: "feature-doc-generator",
|
|
@@ -3,23 +3,25 @@ export const PROMPT_NAME = "generate_feature_doc";
|
|
|
3
3
|
export const PROMPT_DESCRIPTION = "为指定的 Vue 3 业务功能路径生成功能说明文档";
|
|
4
4
|
export function buildPromptMessages(featurePath) {
|
|
5
5
|
const templateContent = getTemplateContent();
|
|
6
|
+
const bt = "`";
|
|
7
|
+
const fence = "```";
|
|
6
8
|
const promptText = `# 任务说明
|
|
7
9
|
|
|
8
10
|
## 任务
|
|
9
|
-
根据**我指定的功能路径**,为
|
|
11
|
+
根据**我指定的功能路径**,为 ${bt}src/views/${featurePath}${bt} 下对应业务功能生成功能说明文档。
|
|
10
12
|
|
|
11
|
-
**仅处理我明确提供的功能路径**,不自动扫描整个
|
|
13
|
+
**仅处理我明确提供的功能路径**,不自动扫描整个 ${bt}src/views/${bt},不按目录逐个遍历。
|
|
12
14
|
|
|
13
|
-
如果指定功能的
|
|
15
|
+
如果指定功能的 ${bt}index.vue${bt}、${bt}form.vue${bt} 或其他核心业务页面中引入了其他**业务功能页面/业务模块**,需将这些**直接引用的相关业务功能**一并纳入分析范围。
|
|
14
16
|
|
|
15
17
|
---
|
|
16
18
|
|
|
17
19
|
## 模板要求
|
|
18
|
-
严格按照
|
|
20
|
+
严格按照 ${bt}开发规范/功能说明模板.md${bt} 的 8 个章节结构输出:
|
|
19
21
|
|
|
20
22
|
1. 功能概述(核心作用 + 业务场景)
|
|
21
23
|
2. 前置数据(数据来源表格 + 前置条件)
|
|
22
|
-
3.
|
|
24
|
+
3. 业务流程(${bt}mermaid graph LR${bt})
|
|
23
25
|
4. 核心业务逻辑(数据联动、计算规则、状态流转等,按需分节)
|
|
24
26
|
5. 后续数据使用(生成的数据表格 + 使用场景)
|
|
25
27
|
6. 引用组件说明(关键公共/私有组件及配置)
|
|
@@ -30,10 +32,10 @@ export function buildPromptMessages(featurePath) {
|
|
|
30
32
|
|
|
31
33
|
## 功能路径输入规则
|
|
32
34
|
- 以**我指定的路径**为准
|
|
33
|
-
- 路径必须是
|
|
35
|
+
- 路径必须是 ${bt}src/views/${bt} 下的具体功能目录
|
|
34
36
|
- 一次可输入一个或多个功能路径
|
|
35
37
|
- **优先分析指定路径本身**
|
|
36
|
-
- **不自动扫描整个
|
|
38
|
+
- **不自动扫描整个 ${bt}src/views/${bt}**
|
|
37
39
|
- **不按叶子目录批量遍历**
|
|
38
40
|
- 如果指定路径无效,需明确说明原因,例如:
|
|
39
41
|
- 路径不存在
|
|
@@ -46,8 +48,8 @@ export function buildPromptMessages(featurePath) {
|
|
|
46
48
|
## 功能依赖扩展规则
|
|
47
49
|
若指定功能目录下以下文件中:
|
|
48
50
|
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
+
- ${bt}index.vue${bt}
|
|
52
|
+
- ${bt}form.vue${bt}
|
|
51
53
|
- 其他核心业务页面文件
|
|
52
54
|
|
|
53
55
|
存在对其他**业务功能页面/业务模块**的引入、嵌套、弹窗承载、抽屉承载、tab 承载、步骤流承载或局部业务集成,则需将这些**直接引用的业务功能**纳入说明范围。
|
|
@@ -70,7 +72,7 @@ export function buildPromptMessages(featurePath) {
|
|
|
70
72
|
- 通用 hooks / utils / constants
|
|
71
73
|
- 无独立业务语义的局部片段组件
|
|
72
74
|
- 以下组件**强制忽略**,不分析、不说明、最终文档中不得出现:
|
|
73
|
-
|
|
75
|
+
${bt}microme-operator${bt}、${bt}upload-file${bt}、${bt}pdf-upload${bt}、${bt}process${bt}、${bt}CustomQuery${bt}、${bt}TableColumnDrawer${bt}、${bt}ExportExcel${bt}、${bt}CirculationForm${bt}
|
|
74
76
|
|
|
75
77
|
### 处理原则
|
|
76
78
|
- 对被当前功能引用的相关业务功能,需说明其作用、触发方式、数据关系、交互关系
|
|
@@ -86,26 +88,26 @@ export function buildPromptMessages(featurePath) {
|
|
|
86
88
|
## 非业务目录过滤规则
|
|
87
89
|
若指定路径属于以下目录,则跳过并说明原因:
|
|
88
90
|
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
91
|
+
- ${bt}error/${bt}
|
|
92
|
+
- ${bt}login/${bt}
|
|
93
|
+
- ${bt}demo/${bt}
|
|
94
|
+
- ${bt}i18n/${bt}
|
|
95
|
+
- ${bt}components/${bt}
|
|
94
96
|
|
|
95
97
|
---
|
|
96
98
|
|
|
97
99
|
## 分析要求
|
|
98
100
|
读取**指定功能目录及其直接引用的相关业务功能文件**,包括但不限于:
|
|
99
101
|
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
- 其他相关
|
|
102
|
+
- ${bt}index.vue${bt}
|
|
103
|
+
- ${bt}form.vue${bt}
|
|
104
|
+
- ${bt}options.ts${bt}
|
|
105
|
+
- 其他相关 ${bt}ts${bt}、${bt}vue${bt}、${bt}js${bt} 文件
|
|
104
106
|
|
|
105
107
|
重点分析:
|
|
106
108
|
|
|
107
109
|
- API 接口调用
|
|
108
|
-
-
|
|
110
|
+
- ${bt}defineProps${bt} / ${bt}defineEmits${bt}
|
|
109
111
|
- 计算逻辑
|
|
110
112
|
- 字典引用
|
|
111
113
|
- 组件引用
|
|
@@ -135,7 +137,7 @@ export function buildPromptMessages(featurePath) {
|
|
|
135
137
|
### 默认视为公共能力的情况
|
|
136
138
|
- 状态值仅为通用枚举,如“编辑中、已完成、已提交”等
|
|
137
139
|
- 状态变化仅表现为通用提交或流程驱动
|
|
138
|
-
- 权限控制仅表现为
|
|
140
|
+
- 权限控制仅表现为 ${bt}v-hasPermi${bt}、权限码、通用按钮显隐
|
|
139
141
|
- 按钮禁用条件仅表现为:
|
|
140
142
|
- 选中 0 条 / 多条
|
|
141
143
|
- 非创建人
|
|
@@ -155,11 +157,18 @@ export function buildPromptMessages(featurePath) {
|
|
|
155
157
|
|
|
156
158
|
---
|
|
157
159
|
|
|
160
|
+
## 前置数据输出约束
|
|
161
|
+
- “前置数据-数据来源”仅说明当前功能实际依赖的业务输入数据来源
|
|
162
|
+
- 不写入通用状态类字段,如“单据状态”“流程状态”“审批状态”等
|
|
163
|
+
- 若某状态字段仅用于通用流程控制、页面显隐或按钮控制,而不构成当前功能特有业务输入,则直接忽略
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
158
167
|
## 必填校验说明过滤规则
|
|
159
168
|
“必填校验”只说明**具有明确业务语义的特殊必填规则**,不说明纯表单层面的通用必填校验。
|
|
160
169
|
|
|
161
170
|
### 默认不写入文档的情况
|
|
162
|
-
- 基础
|
|
171
|
+
- 基础 ${bt}required: true${bt}、普通必填校验
|
|
163
172
|
- 页面全部字段的静态必填约束
|
|
164
173
|
- 无业务条件、无联动、无特殊触发场景的必填项
|
|
165
174
|
- 仅用于防止空值提交的通用表单校验
|
|
@@ -216,14 +225,27 @@ export function buildPromptMessages(featurePath) {
|
|
|
216
225
|
|
|
217
226
|
---
|
|
218
227
|
|
|
228
|
+
## 核心业务逻辑输出约束
|
|
229
|
+
- “核心业务逻辑”章节中,不写入表单字段分组、单据编号规则等框架通用内容
|
|
230
|
+
- 仅保留体现当前功能特有业务语义的内容,如:
|
|
231
|
+
- 数据联动
|
|
232
|
+
- 业务计算
|
|
233
|
+
- 状态影响
|
|
234
|
+
- 条件判断
|
|
235
|
+
- 关键校验
|
|
236
|
+
- 业务动作逻辑
|
|
237
|
+
- 若某内容仅属于表单渲染结构、页面布局组织、通用编码生成机制或框架层封装能力,则直接忽略,不进行说明
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
219
241
|
## 输出规则
|
|
220
|
-
- 输出到
|
|
242
|
+
- 输出到 ${bt}开发规范/views/${bt} 目录下
|
|
221
243
|
- 保持与源码相同的模块子目录结构
|
|
222
|
-
-
|
|
244
|
+
- 文件命名规则:${bt}{功能目录名}-README.md${bt}
|
|
223
245
|
|
|
224
246
|
示例:
|
|
225
|
-
-
|
|
226
|
-
-
|
|
247
|
+
- 源码目录:${bt}src/views/pm/ba/PmBaRentcontractSettle/${bt}
|
|
248
|
+
- 输出文件:${bt}开发规范/views/pm/ba/PmBaRentcontractSettle-README.md${bt}
|
|
227
249
|
|
|
228
250
|
### 关于被引用功能的输出规则
|
|
229
251
|
- 若被引用功能仅作为当前功能一部分存在,则合并写入当前文档,不单独输出
|
|
@@ -248,7 +270,7 @@ export function buildPromptMessages(featurePath) {
|
|
|
248
270
|
|
|
249
271
|
## 额外要求
|
|
250
272
|
- 若指定路径下存在多个页面文件或子场景文件,需一并分析并合并到同一份文档中
|
|
251
|
-
- 若
|
|
273
|
+
- 若 ${bt}index.vue${bt} 引入其他业务功能,必须说明:
|
|
252
274
|
- 引入了什么功能
|
|
253
275
|
- 在什么场景下触发
|
|
254
276
|
- 与当前主功能的数据关系
|
|
@@ -261,17 +283,43 @@ export function buildPromptMessages(featurePath) {
|
|
|
261
283
|
|
|
262
284
|
---
|
|
263
285
|
|
|
286
|
+
## 注意事项输出约束
|
|
287
|
+
- “注意事项”章节中,不写入常规字段必填、框架通用内容限制、字段长度限制等通用校验或通用约束
|
|
288
|
+
- 不写入纯前端层面的格式限制、输入长度限制、基础必填提示、通用提交流程限制
|
|
289
|
+
- 不写入通用单据状态控制,例如“编辑中可编辑、非编辑中不可编辑/删除”这类通用规则
|
|
290
|
+
- 不写入通用提交与流程机制,例如“直接提交后变已完成”“流程模式下进入审批流”这类项目级公共流程说明
|
|
291
|
+
- 不写入通用按钮可用条件、创建人限制、状态限制、流程中限制等公共控制规则
|
|
292
|
+
|
|
293
|
+
### 仅在以下情况才允许写入
|
|
294
|
+
只有当相关内容体现当前功能特有业务语义时,才允许写入“注意事项”,例如:
|
|
295
|
+
|
|
296
|
+
- 某状态限制并非项目通用规则,而是当前功能独有业务约束
|
|
297
|
+
- 某提交限制会影响当前功能核心业务结果
|
|
298
|
+
- 某流程分支由当前功能特有字段、业务类型、业务身份决定
|
|
299
|
+
- 某操作限制对应明确的业务风险或业务后果
|
|
300
|
+
|
|
301
|
+
### 保留内容范围
|
|
302
|
+
“注意事项”仅保留与当前功能强相关的内容,例如:
|
|
303
|
+
- 业务风险点
|
|
304
|
+
- 使用边界
|
|
305
|
+
- 特殊前置条件
|
|
306
|
+
- 异常处理场景
|
|
307
|
+
- 易错业务规则
|
|
308
|
+
- 待确认事项
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
264
312
|
## 输出前自检
|
|
265
313
|
最终输出前,必须检查结果中是否包含以下关键词:
|
|
266
314
|
|
|
267
|
-
-
|
|
268
|
-
-
|
|
269
|
-
-
|
|
270
|
-
-
|
|
271
|
-
-
|
|
272
|
-
-
|
|
273
|
-
-
|
|
274
|
-
-
|
|
315
|
+
- ${bt}microme-operator${bt}
|
|
316
|
+
- ${bt}upload-file${bt}
|
|
317
|
+
- ${bt}pdf-upload${bt}
|
|
318
|
+
- ${bt}process${bt}
|
|
319
|
+
- ${bt}CustomQuery${bt}
|
|
320
|
+
- ${bt}TableColumnDrawer${bt}
|
|
321
|
+
- ${bt}ExportExcel${bt}
|
|
322
|
+
- ${bt}CirculationForm${bt}
|
|
275
323
|
|
|
276
324
|
如果包含,必须删除相关描述后再输出。
|
|
277
325
|
**最终文档中,上述关键词出现次数必须为 0。**
|
|
@@ -281,10 +329,9 @@ export function buildPromptMessages(featurePath) {
|
|
|
281
329
|
# 功能说明模板
|
|
282
330
|
|
|
283
331
|
以下是功能说明文档的标准模板结构,请严格遵循:
|
|
284
|
-
|
|
285
|
-
\`\`\`markdown
|
|
332
|
+
${fence}markdown
|
|
286
333
|
${templateContent}
|
|
287
|
-
|
|
334
|
+
${fence}
|
|
288
335
|
`;
|
|
289
336
|
return [
|
|
290
337
|
{
|