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 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,CA4KD"}
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
- debugLog(`需求文档已处理完成`);
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
- debugLog(`设计稿已处理完成`);
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
- debugLog(`后端文档已处理完成`);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmall-mcp",
3
- "version": "1.10.2",
3
+ "version": "1.10.3",
4
4
  "description": "MCP Server for bmall development rules and tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -127,14 +127,32 @@ export async function generateRequirements(
127
127
  needsAction: requirementResult.needsAction
128
128
  };
129
129
  }
130
- debugLog(`需求文档已处理完成`);
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
- debugLog(`设计稿已处理完成`);
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
- debugLog(`后端文档已处理完成`);
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 的内容合并