bmall-mcp 1.10.2 → 1.10.3
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 +6 -0
- package/dist/tools/requirements/index.d.ts.map +1 -1
- package/dist/tools/requirements/index.js +52 -4
- package/dist/tools/requirements/index.js.map +1 -1
- package/dist/tools/requirements/requirement-processor.js +2 -2
- package/package.json +1 -1
- package/src/tools/requirements/index.ts +55 -4
- package/src/tools/requirements/requirement-processor.ts +2 -2
package/README.md
CHANGED
|
@@ -204,6 +204,12 @@ src/
|
|
|
204
204
|
|
|
205
205
|
## Changelog
|
|
206
206
|
|
|
207
|
+
### v1.10.3 (2026-03-17)
|
|
208
|
+
- ✅ 修复 generate_requirements 流程问题:每处理完一个文档后返回并提示重新调用
|
|
209
|
+
- ✅ 优化 PDF 读取提示词:使用通用描述让 AI 自己查找正确的工具名称
|
|
210
|
+
- ✅ 添加详细调试日志:帮助定位问题(步骤 3.2、3.3、步骤 4)
|
|
211
|
+
- ✅ 确保按顺序处理:PRD → 设计稿 → 后端文档 → 最终分析
|
|
212
|
+
|
|
207
213
|
### v1.10.2 (2026-03-16)
|
|
208
214
|
- ✅ 修复 PDF OCR 调用问题:明确说明需要分别调用两个工具(文本读取 + OCR)
|
|
209
215
|
- ✅ 优化提示词:分 5 个步骤说明(读取文本层 → OCR 识别 → 合并 → 保存 → 重新调用)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/requirements/index.ts"],"names":[],"mappings":"AAoBA,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,0BAA0B;IAClC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;QACvB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,aAAa,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAmCD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,iBAAiB,CAAC;QAClD,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/requirements/index.ts"],"names":[],"mappings":"AAoBA,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,0BAA0B;IAClC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;QACvB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,aAAa,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAmCD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,iBAAiB,CAAC;QAClD,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC,CA+ND"}
|
|
@@ -64,14 +64,31 @@ export async function generateRequirements(params) {
|
|
|
64
64
|
needsAction: requirementResult.needsAction
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
// 需求文档刚刚处理完成,返回并提示重新调用
|
|
68
|
+
debugLog(`需求文档已处理完成,提示重新调用`);
|
|
69
|
+
return {
|
|
70
|
+
success: false,
|
|
71
|
+
message: `✅ 需求文档已保存到:${originDocPath}\n\n请重新调用 \`generate_requirements\` 工具继续处理${params.designSource ? '设计稿' : ''}${params.backendSource ? (params.designSource ? '和后端文档' : '后端文档') : ''}`,
|
|
72
|
+
needsAction: {
|
|
73
|
+
type: "analyze_content",
|
|
74
|
+
instruction: `重新调用 generate_requirements 工具,使用相同的参数`
|
|
75
|
+
}
|
|
76
|
+
};
|
|
68
77
|
}
|
|
69
78
|
else {
|
|
70
79
|
debugLog(`需求文档已存在,跳过处理`);
|
|
71
80
|
}
|
|
72
81
|
// 3.2 处理设计稿
|
|
82
|
+
debugLog(`步骤 3.2:检查设计稿`, {
|
|
83
|
+
hasDesignSource: !!params.designSource,
|
|
84
|
+
designSourceType: params.designSource?.type
|
|
85
|
+
});
|
|
73
86
|
if (params.designSource) {
|
|
74
87
|
const savedDesign = await tryReadSavedDesign(params.featureName, projectRoot);
|
|
88
|
+
debugLog(`设计稿检查结果`, {
|
|
89
|
+
savedDesignExists: !!savedDesign,
|
|
90
|
+
savedDesignLength: savedDesign?.length
|
|
91
|
+
});
|
|
75
92
|
if (!savedDesign) {
|
|
76
93
|
debugLog(`设计稿未找到,开始处理`);
|
|
77
94
|
if (params.designSource.type === "figma") {
|
|
@@ -111,7 +128,16 @@ export async function generateRequirements(params) {
|
|
|
111
128
|
needsAction: designResult.needsAction
|
|
112
129
|
};
|
|
113
130
|
}
|
|
114
|
-
|
|
131
|
+
// 设计稿刚刚处理完成,返回并提示重新调用
|
|
132
|
+
debugLog(`设计稿已处理完成,提示重新调用`);
|
|
133
|
+
return {
|
|
134
|
+
success: false,
|
|
135
|
+
message: `✅ 设计稿已保存到:${designDocPath}\n\n请重新调用 \`generate_requirements\` 工具继续处理${params.backendSource ? '后端文档' : ''}`,
|
|
136
|
+
needsAction: {
|
|
137
|
+
type: "analyze_content",
|
|
138
|
+
instruction: `重新调用 generate_requirements 工具,使用相同的参数`
|
|
139
|
+
}
|
|
140
|
+
};
|
|
115
141
|
}
|
|
116
142
|
}
|
|
117
143
|
else {
|
|
@@ -119,8 +145,16 @@ export async function generateRequirements(params) {
|
|
|
119
145
|
}
|
|
120
146
|
}
|
|
121
147
|
// 3.3 处理后端文档
|
|
148
|
+
debugLog(`步骤 3.3:检查后端文档`, {
|
|
149
|
+
hasBackendSource: !!params.backendSource,
|
|
150
|
+
backendSourceType: params.backendSource?.type
|
|
151
|
+
});
|
|
122
152
|
if (params.backendSource) {
|
|
123
153
|
const savedBackend = await tryReadSavedBackend(params.featureName, projectRoot);
|
|
154
|
+
debugLog(`后端文档检查结果`, {
|
|
155
|
+
savedBackendExists: !!savedBackend,
|
|
156
|
+
savedBackendLength: savedBackend?.length
|
|
157
|
+
});
|
|
124
158
|
if (!savedBackend) {
|
|
125
159
|
debugLog(`后端文档未找到,开始处理`);
|
|
126
160
|
const backendResult = await processRequirementDocument(params.backendSource, params.featureName, "backend-doc.md");
|
|
@@ -132,14 +166,28 @@ export async function generateRequirements(params) {
|
|
|
132
166
|
needsAction: backendResult.needsAction
|
|
133
167
|
};
|
|
134
168
|
}
|
|
135
|
-
|
|
169
|
+
// 后端文档刚刚处理完成,返回并提示重新调用
|
|
170
|
+
debugLog(`后端文档已处理完成,提示重新调用`);
|
|
171
|
+
return {
|
|
172
|
+
success: false,
|
|
173
|
+
message: `✅ 后端文档已保存到:${backendDocPath}\n\n请重新调用 \`generate_requirements\` 工具进行最终分析`,
|
|
174
|
+
needsAction: {
|
|
175
|
+
type: "analyze_content",
|
|
176
|
+
instruction: `重新调用 generate_requirements 工具,使用相同的参数`
|
|
177
|
+
}
|
|
178
|
+
};
|
|
136
179
|
}
|
|
137
180
|
else {
|
|
138
181
|
debugLog(`后端文档已存在,跳过处理`);
|
|
139
182
|
}
|
|
140
183
|
}
|
|
141
184
|
// 步骤 4:所有文档已准备完毕,生成分析提示词
|
|
142
|
-
debugLog(
|
|
185
|
+
debugLog(`所有文档已准备完毕,生成分析提示词`, {
|
|
186
|
+
hasDesignSource: !!params.designSource,
|
|
187
|
+
hasBackendSource: !!params.backendSource,
|
|
188
|
+
designDocPath,
|
|
189
|
+
backendDocPath
|
|
190
|
+
});
|
|
143
191
|
const outputPath = buildOutputPath(params.featureName, "requirements.md", projectRoot);
|
|
144
192
|
let message = "📝 需求文档已准备完毕\n\n";
|
|
145
193
|
message += `**原始文档位置**:${originDocPath}\n`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/requirements/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/requirements/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,SAAS,QAAQ,CAAC,OAAe,EAAE,IAAU;IAC3C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,UAAU,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACxG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAuBD;;GAEG;AACH,SAAS,sBAAsB,CAC7B,MAAkC;IAYlC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,yLAAyL;gBAClM,WAAW,EAAE;oBACX,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,4EAA4E;iBAC1F;aACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAkC;IASlC,QAAQ,CAAC,yBAAyB,EAAE;QAClC,MAAM;QACN,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;KACtB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,cAAc;QACd,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,UAAU,CAAC,KAAM,CAAC;QAC3B,CAAC;QAED,eAAe;QACf,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC9E,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;QACD,QAAQ,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEzD,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,uBAAuB,EAAE,WAAW,CAAC,CAAC;QAChG,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrH,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAExH,kBAAkB;QAElB,kBAAkB;QAClB,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,QAAQ,CAAC,cAAc,CAAC,CAAC;YACzB,MAAM,iBAAiB,GAAG,MAAM,0BAA0B,CACxD,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,WAAW,EAClB,uBAAuB,CACxB,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBAC/B,QAAQ,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBAC/C,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,iBAAiB,CAAC,OAAQ;oBACnC,WAAW,EAAE,iBAAiB,CAAC,WAAW;iBAC3C,CAAC;YACJ,CAAC;YAED,uBAAuB;YACvB,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,cAAc,aAAa,6CAA6C,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1L,WAAW,EAAE;oBACX,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,uCAAuC;iBACrD;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC3B,CAAC;QAED,YAAY;QACZ,QAAQ,CAAC,cAAc,EAAE;YACvB,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY;YACtC,gBAAgB,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI;SAC5C,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC9E,QAAQ,CAAC,SAAS,EAAE;gBAClB,iBAAiB,EAAE,CAAC,CAAC,WAAW;gBAChC,iBAAiB,EAAE,WAAW,EAAE,MAAM;aACvC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAExB,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACzC,YAAY;oBACZ,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,EAAE,CAAC;oBAE/C,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE;;;oBAGD,QAAQ;;;cAGd,aAAa;;;wCAGa;wBAC5B,WAAW,EAAE;4BACX,IAAI,EAAE,UAAU;4BAChB,WAAW,EAAE,sBAAsB,QAAQ;cAC3C,aAAa;8BACG;yBACjB;qBACF,CAAC;gBACJ,CAAC;qBAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC/C,UAAU;oBACV,MAAM,YAAY,GAAG,MAAM,0BAA0B,CACnD;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;qBAC/B,EACD,MAAM,CAAC,WAAW,EAClB,eAAe,CAChB,CAAC;oBAEF,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;wBAC1B,QAAQ,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;wBACzC,OAAO;4BACL,OAAO,EAAE,KAAK;4BACd,OAAO,EAAE,YAAY,CAAC,OAAQ;4BAC9B,WAAW,EAAE,YAAY,CAAC,WAAW;yBACtC,CAAC;oBACJ,CAAC;oBAED,sBAAsB;oBACtB,QAAQ,CAAC,iBAAiB,CAAC,CAAC;oBAC5B,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,aAAa,aAAa,6CAA6C,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;wBACpH,WAAW,EAAE;4BACX,IAAI,EAAE,iBAAiB;4BACvB,WAAW,EAAE,uCAAuC;yBACrD;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,aAAa;QACb,QAAQ,CAAC,eAAe,EAAE;YACxB,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa;YACxC,iBAAiB,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI;SAC9C,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAChF,QAAQ,CAAC,UAAU,EAAE;gBACnB,kBAAkB,EAAE,CAAC,CAAC,YAAY;gBAClC,kBAAkB,EAAE,YAAY,EAAE,MAAM;aACzC,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,0BAA0B,CACpD,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,WAAW,EAClB,gBAAgB,CACjB,CAAC;gBAEF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC3B,QAAQ,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;oBAC3C,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,aAAa,CAAC,OAAQ;wBAC/B,WAAW,EAAE,aAAa,CAAC,WAAW;qBACvC,CAAC;gBACJ,CAAC;gBAED,uBAAuB;gBACvB,QAAQ,CAAC,kBAAkB,CAAC,CAAC;gBAC7B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,cAAc,cAAc,8CAA8C;oBACnF,WAAW,EAAE;wBACX,IAAI,EAAE,iBAAiB;wBACvB,WAAW,EAAE,uCAAuC;qBACrD;iBACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,cAAc,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,QAAQ,CAAC,mBAAmB,EAAE;YAC5B,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY;YACtC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa;YACxC,aAAa;YACb,cAAc;SACf,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAEvF,IAAI,OAAO,GAAG,kBAAkB,CAAC;QACjC,OAAO,IAAI,cAAc,aAAa,IAAI,CAAC;QAC3C,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,IAAI,aAAa,aAAa,IAAI,CAAC;QAC5C,CAAC;QACD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,IAAI,cAAc,cAAc,IAAI,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,cAAc,UAAU,MAAM,CAAC;QAC1C,OAAO,IAAI,mBAAmB,CAAC,aAAa,EAAE,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QAErG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO;YACP,WAAW,EAAE;gBACX,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,UAAU,EAAE;aAClJ;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,MAAM,EAAE;YACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAClB,CAAC,CAAC;QACH,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,QAAQ,CAChB,CAAC,KAAK,EACN,aAAa,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,UAAkB,EAClB,YAAsE,EACtE,aAAqE;IAErE,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C,IAAI,MAAM,GAAG;;;UAGL,aAAa;EACrB,YAAY,CAAC,CAAC,CAAC,+BAA+B,WAAW,kBAAkB,CAAC,CAAC,CAAC,EAAE;EAChF,aAAa,CAAC,CAAC,CAAC,gCAAgC,WAAW,mBAAmB,CAAC,CAAC,CAAC,EAAE;;aAExE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;uBA0BA,CAAC;IAEtB,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -103,12 +103,12 @@ export async function processRequirementDocument(requirementSource, featureName,
|
|
|
103
103
|
**步骤 1:读取文本层**
|
|
104
104
|
使用 PDF Reader MCP 的**文本读取工具**(如 \`read_pdf_text\` 或类似名称)读取:
|
|
105
105
|
- 文件路径:${filePath}
|
|
106
|
-
- 获取文本层内容
|
|
106
|
+
- 获取文本层内容
|
|
107
107
|
|
|
108
108
|
**步骤 2:OCR 识别图片和表格**
|
|
109
109
|
使用 PDF Reader MCP 的 **OCR 工具**(如 \`read_by_ocr\` 或类似名称)读取:
|
|
110
110
|
- 文件路径:${filePath}
|
|
111
|
-
- 识别图片和表格中的文字
|
|
111
|
+
- 识别图片和表格中的文字
|
|
112
112
|
|
|
113
113
|
**步骤 3:合并内容**
|
|
114
114
|
将步骤 1 和步骤 2 的内容合并
|
package/package.json
CHANGED
|
@@ -127,14 +127,32 @@ export async function generateRequirements(
|
|
|
127
127
|
needsAction: requirementResult.needsAction
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
|
-
|
|
130
|
+
|
|
131
|
+
// 需求文档刚刚处理完成,返回并提示重新调用
|
|
132
|
+
debugLog(`需求文档已处理完成,提示重新调用`);
|
|
133
|
+
return {
|
|
134
|
+
success: false,
|
|
135
|
+
message: `✅ 需求文档已保存到:${originDocPath}\n\n请重新调用 \`generate_requirements\` 工具继续处理${params.designSource ? '设计稿' : ''}${params.backendSource ? (params.designSource ? '和后端文档' : '后端文档') : ''}`,
|
|
136
|
+
needsAction: {
|
|
137
|
+
type: "analyze_content",
|
|
138
|
+
instruction: `重新调用 generate_requirements 工具,使用相同的参数`
|
|
139
|
+
}
|
|
140
|
+
};
|
|
131
141
|
} else {
|
|
132
142
|
debugLog(`需求文档已存在,跳过处理`);
|
|
133
143
|
}
|
|
134
144
|
|
|
135
145
|
// 3.2 处理设计稿
|
|
146
|
+
debugLog(`步骤 3.2:检查设计稿`, {
|
|
147
|
+
hasDesignSource: !!params.designSource,
|
|
148
|
+
designSourceType: params.designSource?.type
|
|
149
|
+
});
|
|
136
150
|
if (params.designSource) {
|
|
137
151
|
const savedDesign = await tryReadSavedDesign(params.featureName, projectRoot);
|
|
152
|
+
debugLog(`设计稿检查结果`, {
|
|
153
|
+
savedDesignExists: !!savedDesign,
|
|
154
|
+
savedDesignLength: savedDesign?.length
|
|
155
|
+
});
|
|
138
156
|
if (!savedDesign) {
|
|
139
157
|
debugLog(`设计稿未找到,开始处理`);
|
|
140
158
|
|
|
@@ -180,7 +198,17 @@ export async function generateRequirements(
|
|
|
180
198
|
needsAction: designResult.needsAction
|
|
181
199
|
};
|
|
182
200
|
}
|
|
183
|
-
|
|
201
|
+
|
|
202
|
+
// 设计稿刚刚处理完成,返回并提示重新调用
|
|
203
|
+
debugLog(`设计稿已处理完成,提示重新调用`);
|
|
204
|
+
return {
|
|
205
|
+
success: false,
|
|
206
|
+
message: `✅ 设计稿已保存到:${designDocPath}\n\n请重新调用 \`generate_requirements\` 工具继续处理${params.backendSource ? '后端文档' : ''}`,
|
|
207
|
+
needsAction: {
|
|
208
|
+
type: "analyze_content",
|
|
209
|
+
instruction: `重新调用 generate_requirements 工具,使用相同的参数`
|
|
210
|
+
}
|
|
211
|
+
};
|
|
184
212
|
}
|
|
185
213
|
} else {
|
|
186
214
|
debugLog(`设计稿已存在,跳过处理`);
|
|
@@ -188,8 +216,16 @@ export async function generateRequirements(
|
|
|
188
216
|
}
|
|
189
217
|
|
|
190
218
|
// 3.3 处理后端文档
|
|
219
|
+
debugLog(`步骤 3.3:检查后端文档`, {
|
|
220
|
+
hasBackendSource: !!params.backendSource,
|
|
221
|
+
backendSourceType: params.backendSource?.type
|
|
222
|
+
});
|
|
191
223
|
if (params.backendSource) {
|
|
192
224
|
const savedBackend = await tryReadSavedBackend(params.featureName, projectRoot);
|
|
225
|
+
debugLog(`后端文档检查结果`, {
|
|
226
|
+
savedBackendExists: !!savedBackend,
|
|
227
|
+
savedBackendLength: savedBackend?.length
|
|
228
|
+
});
|
|
193
229
|
if (!savedBackend) {
|
|
194
230
|
debugLog(`后端文档未找到,开始处理`);
|
|
195
231
|
const backendResult = await processRequirementDocument(
|
|
@@ -206,14 +242,29 @@ export async function generateRequirements(
|
|
|
206
242
|
needsAction: backendResult.needsAction
|
|
207
243
|
};
|
|
208
244
|
}
|
|
209
|
-
|
|
245
|
+
|
|
246
|
+
// 后端文档刚刚处理完成,返回并提示重新调用
|
|
247
|
+
debugLog(`后端文档已处理完成,提示重新调用`);
|
|
248
|
+
return {
|
|
249
|
+
success: false,
|
|
250
|
+
message: `✅ 后端文档已保存到:${backendDocPath}\n\n请重新调用 \`generate_requirements\` 工具进行最终分析`,
|
|
251
|
+
needsAction: {
|
|
252
|
+
type: "analyze_content",
|
|
253
|
+
instruction: `重新调用 generate_requirements 工具,使用相同的参数`
|
|
254
|
+
}
|
|
255
|
+
};
|
|
210
256
|
} else {
|
|
211
257
|
debugLog(`后端文档已存在,跳过处理`);
|
|
212
258
|
}
|
|
213
259
|
}
|
|
214
260
|
|
|
215
261
|
// 步骤 4:所有文档已准备完毕,生成分析提示词
|
|
216
|
-
debugLog(
|
|
262
|
+
debugLog(`所有文档已准备完毕,生成分析提示词`, {
|
|
263
|
+
hasDesignSource: !!params.designSource,
|
|
264
|
+
hasBackendSource: !!params.backendSource,
|
|
265
|
+
designDocPath,
|
|
266
|
+
backendDocPath
|
|
267
|
+
});
|
|
217
268
|
|
|
218
269
|
const outputPath = buildOutputPath(params.featureName, "requirements.md", projectRoot);
|
|
219
270
|
|
|
@@ -132,12 +132,12 @@ export async function processRequirementDocument(
|
|
|
132
132
|
**步骤 1:读取文本层**
|
|
133
133
|
使用 PDF Reader MCP 的**文本读取工具**(如 \`read_pdf_text\` 或类似名称)读取:
|
|
134
134
|
- 文件路径:${filePath}
|
|
135
|
-
- 获取文本层内容
|
|
135
|
+
- 获取文本层内容
|
|
136
136
|
|
|
137
137
|
**步骤 2:OCR 识别图片和表格**
|
|
138
138
|
使用 PDF Reader MCP 的 **OCR 工具**(如 \`read_by_ocr\` 或类似名称)读取:
|
|
139
139
|
- 文件路径:${filePath}
|
|
140
|
-
- 识别图片和表格中的文字
|
|
140
|
+
- 识别图片和表格中的文字
|
|
141
141
|
|
|
142
142
|
**步骤 3:合并内容**
|
|
143
143
|
将步骤 1 和步骤 2 的内容合并
|