@nick848/sf-cli 1.0.18 → 1.0.19
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/cli/index.js +48 -34
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +48 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +48 -34
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1510,7 +1510,7 @@ async function executeWorkflow(ctx) {
|
|
|
1510
1510
|
for (const url of urls) {
|
|
1511
1511
|
lines.push(chalk9__default.default.gray(` \u{1F4CE} ${url}`));
|
|
1512
1512
|
try {
|
|
1513
|
-
const resource = await fetchAndAnalyzeReference(url, ctx);
|
|
1513
|
+
const resource = await fetchAndAnalyzeReference(url, ctx, activeSession.context || void 0);
|
|
1514
1514
|
activeSession.referenceResources.push(resource);
|
|
1515
1515
|
lines.push(chalk9__default.default.green(` \u2713 \u5DF2\u5206\u6790`));
|
|
1516
1516
|
activeSession.refinedRequirement += `
|
|
@@ -1921,7 +1921,12 @@ async function executeDevelopment(ctx, session) {
|
|
|
1921
1921
|
role: "system",
|
|
1922
1922
|
content: `\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u524D\u7AEF\u5F00\u53D1\u5DE5\u7A0B\u5E08\u3002\u8BF7\u6839\u636E\u9700\u6C42\u89C4\u683C\u751F\u6210\u4EE3\u7801\u5B9E\u73B0\u3002
|
|
1923
1923
|
|
|
1924
|
-
\u8981\
|
|
1924
|
+
\u26A0\uFE0F \u91CD\u8981\u89C4\u5219\uFF1A
|
|
1925
|
+
1. \u6280\u672F\u5B9E\u73B0\u5FC5\u987B\u4E25\u683C\u9075\u5FAA\u9879\u76EE\u73B0\u6709\u7684\u5F00\u53D1\u89C4\u8303
|
|
1926
|
+
2. \u53C2\u8003\u8D44\u6E90\uFF08\u5982\u679C\u6709\uFF09\u4EC5\u7528\u4E8E\u7406\u89E3\u4E1A\u52A1\u529F\u80FD\uFF0C\u4E0D\u8981\u590D\u5236\u5176\u6280\u672F\u5B9E\u73B0
|
|
1927
|
+
3. \u4F7F\u7528\u9879\u76EE\u6307\u5B9A\u7684\u6280\u672F\u6808\u548C\u6846\u67B6
|
|
1928
|
+
|
|
1929
|
+
\u4EE3\u7801\u8981\u6C42\uFF1A
|
|
1925
1930
|
1. \u751F\u6210\u5B8C\u6574\u3001\u53EF\u8FD0\u884C\u7684\u4EE3\u7801
|
|
1926
1931
|
2. \u9075\u5FAA\u9879\u76EE\u73B0\u6709\u7684\u4EE3\u7801\u98CE\u683C\u548C\u89C4\u8303
|
|
1927
1932
|
3. \u4F7F\u7528\u9879\u76EE\u6307\u5B9A\u7684\u6280\u672F\u6808
|
|
@@ -1933,8 +1938,8 @@ async function executeDevelopment(ctx, session) {
|
|
|
1933
1938
|
- \u6846\u67B6: ${session.context?.framework || "\u672A\u6307\u5B9A"}
|
|
1934
1939
|
- \u6280\u672F\u6808: ${session.context?.techStack.join(", ") || "\u672A\u6307\u5B9A"}
|
|
1935
1940
|
|
|
1936
|
-
${session.context?.devStandards ? `\u5F00\u53D1\u89C4\u8303\
|
|
1937
|
-
${session.context.devStandards.slice(0,
|
|
1941
|
+
${session.context?.devStandards ? `\u3010\u5FC5\u987B\u9075\u5FAA\u7684\u5F00\u53D1\u89C4\u8303\u3011
|
|
1942
|
+
${session.context.devStandards.slice(0, 2500)}` : ""}`
|
|
1938
1943
|
},
|
|
1939
1944
|
{
|
|
1940
1945
|
role: "user",
|
|
@@ -2274,21 +2279,26 @@ ${requirement}
|
|
|
2274
2279
|
## \u9879\u76EE\u4E0A\u4E0B\u6587
|
|
2275
2280
|
- \u6280\u672F\u6808: ${context.techStack?.join(", ") || "\u672A\u6307\u5B9A"}
|
|
2276
2281
|
- \u6846\u67B6: ${context.framework || "\u672A\u6307\u5B9A"}
|
|
2282
|
+
${context.devStandards ? `
|
|
2283
|
+
## \u9879\u76EE\u5F00\u53D1\u89C4\u8303\uFF08\u5FC5\u987B\u9075\u5FAA\uFF09
|
|
2284
|
+
${context.devStandards.slice(0, 2e3)}
|
|
2285
|
+
` : ""}
|
|
2277
2286
|
|
|
2278
2287
|
## \u6F84\u6E05\u95EE\u7B54
|
|
2279
2288
|
${questions.filter((q) => q.answered).map((q) => `- Q: ${q.question}
|
|
2280
2289
|
A: ${q.answer}`).join("\n")}
|
|
2281
2290
|
|
|
2282
|
-
## \u53C2\u8003\u8D44\u6E90\u5206\u6790
|
|
2283
|
-
${references.map((r) => `### ${r.url}
|
|
2284
|
-
${r.analysis}`).join("\n\n")}
|
|
2291
|
+
## \u53C2\u8003\u8D44\u6E90\u5206\u6790\uFF08\u4EC5\u4F5C\u4E1A\u52A1\u53C2\u8003\uFF0C\u6280\u672F\u5B9E\u73B0\u9075\u5FAA\u9879\u76EE\u89C4\u8303\uFF09
|
|
2292
|
+
${references.length > 0 ? references.map((r) => `### ${r.url}
|
|
2293
|
+
${r.analysis}`).join("\n\n") : "\u65E0"}
|
|
2285
2294
|
|
|
2286
2295
|
## \u8981\u6C42
|
|
2287
2296
|
1. \u6BCF\u4E2A\u529F\u80FD\u6A21\u5757\u751F\u6210\u4E00\u4E2A\u72EC\u7ACB\u7684 Feature
|
|
2288
2297
|
2. \u6BCF\u4E2A Feature \u5305\u542B\u591A\u4E2A\u5177\u4F53\u7684 Scenario
|
|
2289
2298
|
3. \u4F7F\u7528 Given-When-Then \u683C\u5F0F
|
|
2290
2299
|
4. \u573A\u666F\u8981\u8986\u76D6: \u6B63\u5E38\u6D41\u7A0B\u3001\u8FB9\u754C\u60C5\u51B5\u3001\u5F02\u5E38\u5904\u7406
|
|
2291
|
-
5. \u573A\u666F\u8981\u5177\u4F53\u53EF\u6D4B\u8BD5\uFF0C\
|
|
2300
|
+
5. \u573A\u666F\u8981\u5177\u4F53\u53EF\u6D4B\u8BD5\uFF0C\u805A\u7126\u4E1A\u52A1\u903B\u8F91
|
|
2301
|
+
6. \u26A0\uFE0F \u53C2\u8003\u8D44\u6E90\u4EC5\u7528\u4E8E\u7406\u89E3\u4E1A\u52A1\u529F\u80FD\uFF0C\u6280\u672F\u5B9E\u73B0\u5FC5\u987B\u9075\u5FAA\u9879\u76EE\u89C4\u8303
|
|
2292
2302
|
|
|
2293
2303
|
## \u8F93\u51FA\u683C\u5F0F (JSON)
|
|
2294
2304
|
\`\`\`json
|
|
@@ -2705,7 +2715,7 @@ function extractUrls(text) {
|
|
|
2705
2715
|
const matches = text.match(urlRegex);
|
|
2706
2716
|
return matches ? [...new Set(matches)] : [];
|
|
2707
2717
|
}
|
|
2708
|
-
async function fetchAndAnalyzeReference(url, ctx) {
|
|
2718
|
+
async function fetchAndAnalyzeReference(url, ctx, projectContext) {
|
|
2709
2719
|
const type = detectResourceType(url);
|
|
2710
2720
|
let content = "";
|
|
2711
2721
|
let analysis = "";
|
|
@@ -2720,7 +2730,7 @@ async function fetchAndAnalyzeReference(url, ctx) {
|
|
|
2720
2730
|
}
|
|
2721
2731
|
content = await response.text();
|
|
2722
2732
|
if (ctx.modelService.getCurrentModel()) {
|
|
2723
|
-
analysis = await analyzeReferenceContent(url, content, type, ctx);
|
|
2733
|
+
analysis = await analyzeReferenceContent(url, content, type, ctx, projectContext);
|
|
2724
2734
|
} else {
|
|
2725
2735
|
analysis = extractBasicInfo(content, type);
|
|
2726
2736
|
}
|
|
@@ -2741,9 +2751,20 @@ function detectResourceType(url) {
|
|
|
2741
2751
|
}
|
|
2742
2752
|
return "webpage";
|
|
2743
2753
|
}
|
|
2744
|
-
async function analyzeReferenceContent(url, content, type, ctx) {
|
|
2754
|
+
async function analyzeReferenceContent(url, content, type, ctx, projectContext) {
|
|
2745
2755
|
const prompt2 = `
|
|
2746
|
-
\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u4EA7\u54C1\u7ECF\u7406\
|
|
2756
|
+
\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u4EA7\u54C1\u7ECF\u7406\u3002\u8BF7\u5206\u6790\u4EE5\u4E0B\u53C2\u8003\u8D44\u6E90\uFF0C\u63D0\u53D6\u4E1A\u52A1\u529F\u80FD\u548C\u754C\u9762\u7ED3\u6784\u3002
|
|
2757
|
+
|
|
2758
|
+
## \u91CD\u8981\u8BF4\u660E
|
|
2759
|
+
\u26A0\uFE0F \u6B64\u5206\u6790\u4EC5\u7528\u4E8E\u7406\u89E3\u4E1A\u52A1\u529F\u80FD\uFF0C**\u6280\u672F\u5B9E\u73B0\u65B9\u6848\u5FC5\u987B\u9075\u5FAA\u5F53\u524D\u9879\u76EE\u7684\u5F00\u53D1\u89C4\u8303**\u3002
|
|
2760
|
+
\u53C2\u8003\u8D44\u6E90\u4E2D\u7684\u6280\u672F\u6808\u3001\u6846\u67B6\u3001\u4EE3\u7801\u98CE\u683C\u4EC5\u4F9B\u53C2\u8003\uFF0C\u5B9E\u9645\u5F00\u53D1\u5E94\u4F7F\u7528\u9879\u76EE\u73B0\u6709\u89C4\u8303\u3002
|
|
2761
|
+
|
|
2762
|
+
${projectContext ? `## \u5F53\u524D\u9879\u76EE\u89C4\u8303
|
|
2763
|
+
- \u9879\u76EE\u540D\u79F0: ${projectContext.name}
|
|
2764
|
+
- \u6280\u672F\u6808: ${projectContext.techStack.join(", ") || "\u672A\u6307\u5B9A"}
|
|
2765
|
+
- \u6846\u67B6: ${projectContext.framework || "\u672A\u6307\u5B9A"}
|
|
2766
|
+
- \u5F00\u53D1\u89C4\u8303\u6458\u8981: ${projectContext.devStandards?.slice(0, 1500) || "\u672A\u6307\u5B9A"}
|
|
2767
|
+
` : ""}
|
|
2747
2768
|
|
|
2748
2769
|
## \u53C2\u8003\u8D44\u6E90\u4FE1\u606F
|
|
2749
2770
|
- URL: ${url}
|
|
@@ -2756,38 +2777,31 @@ ${content.slice(0, 8e3)}
|
|
|
2756
2777
|
|
|
2757
2778
|
## \u5206\u6790\u8981\u6C42
|
|
2758
2779
|
|
|
2759
|
-
\u8BF7\u6309\u7167\u4EE5\u4E0B\u7ED3\u6784\u8FDB\u884C\
|
|
2780
|
+
\u8BF7\u6309\u7167\u4EE5\u4E0B\u7ED3\u6784\u8FDB\u884C\u5206\u6790\uFF1A
|
|
2760
2781
|
|
|
2761
|
-
### 1. \u4E1A\u52A1\u529F\u80FD\u5206\u6790
|
|
2762
|
-
- \u6838\u5FC3\u4E1A\u52A1\u529F\u80FD\u662F\u4EC0\u4E48\uFF1F\uFF08\u8BE6\u7EC6\u63CF\u8FF0\uFF09
|
|
2763
|
-
- \
|
|
2764
|
-
- \u4E1A\u52A1\
|
|
2765
|
-
- \u6570\u636E\u8F93\u5165\u8F93\u51FA\u662F\u4EC0\u4E48\uFF1F
|
|
2782
|
+
### 1. \u4E1A\u52A1\u529F\u80FD\u5206\u6790\uFF08\u91CD\u70B9\uFF09
|
|
2783
|
+
- \u6838\u5FC3\u4E1A\u52A1\u529F\u80FD\u662F\u4EC0\u4E48\uFF1F\uFF08\u8BE6\u7EC6\u63CF\u8FF0\u7528\u6237\u80FD\u505A\u4EC0\u4E48\uFF09
|
|
2784
|
+
- \u4E1A\u52A1\u6D41\u7A0B\u662F\u4EC0\u4E48\uFF1F\uFF08\u7528\u6237\u64CD\u4F5C\u6B65\u9AA4\uFF09
|
|
2785
|
+
- \u4E1A\u52A1\u89C4\u5219\u662F\u4EC0\u4E48\uFF1F\uFF08\u8F93\u5165\u9650\u5236\u3001\u8BA1\u7B97\u89C4\u5219\u7B49\uFF09
|
|
2766
2786
|
|
|
2767
2787
|
### 2. UI/UX \u7ED3\u6784\u5206\u6790
|
|
2768
|
-
- \u9875\u9762\u5E03\u5C40\u7ED3\u6784
|
|
2769
|
-
- \u4E3B\u8981\u7EC4\u4EF6\u6709\u54EA\u4E9B\uFF1F
|
|
2770
|
-
- \u7EC4\u4EF6\u4E4B\u95F4\u7684\u5173\u7CFB
|
|
2788
|
+
- \u9875\u9762\u5E03\u5C40\u7ED3\u6784\uFF08\u4E0D\u6D89\u53CA\u5177\u4F53\u6280\u672F\u5B9E\u73B0\uFF09
|
|
2789
|
+
- \u4E3B\u8981\u7EC4\u4EF6/\u6A21\u5757\u6709\u54EA\u4E9B\uFF1F
|
|
2771
2790
|
- \u4EA4\u4E92\u65B9\u5F0F\uFF08\u70B9\u51FB\u3001\u8F93\u5165\u3001\u62D6\u62FD\u7B49\uFF09
|
|
2772
2791
|
|
|
2773
2792
|
### 3. \u6570\u636E\u6A21\u578B\u5206\u6790
|
|
2774
|
-
- \u9700\u8981\u54EA\u4E9B\u6570\u636E\uFF1F
|
|
2793
|
+
- \u9700\u8981\u54EA\u4E9B\u6570\u636E\u5B57\u6BB5\uFF1F
|
|
2775
2794
|
- \u6570\u636E\u4E4B\u95F4\u7684\u5173\u7CFB
|
|
2776
2795
|
- \u6570\u636E\u6765\u6E90\uFF08\u7528\u6237\u8F93\u5165/\u8BA1\u7B97/API\uFF09
|
|
2777
2796
|
|
|
2778
2797
|
### 4. \u529F\u80FD\u62C6\u5206\u5EFA\u8BAE
|
|
2779
|
-
\
|
|
2780
|
-
- \u4EFB\u52A1\u540D\u79F0
|
|
2781
|
-
- \u4EFB\u52A1\u63CF\u8FF0
|
|
2782
|
-
- \
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
- \u63A8\u8350\u7684\u6280\u672F\u65B9\u6848
|
|
2787
|
-
- \u9700\u8981\u6CE8\u610F\u7684\u6280\u672F\u96BE\u70B9
|
|
2788
|
-
- \u6027\u80FD\u4F18\u5316\u5EFA\u8BAE
|
|
2789
|
-
|
|
2790
|
-
\u8BF7\u4EE5 Markdown \u683C\u5F0F\u8F93\u51FA\uFF0C\u91CD\u70B9\u7A81\u51FA\u4E1A\u52A1\u903B\u8F91\u548C\u529F\u80FD\u5B9E\u73B0\u7EC6\u8282\u3002
|
|
2798
|
+
\u5C06\u529F\u80FD\u62C6\u5206\u4E3A\u53EF\u72EC\u7ACB\u5F00\u53D1\u7684\u4EFB\u52A1\uFF1A
|
|
2799
|
+
- \u4EFB\u52A1\u540D\u79F0\uFF08\u7B80\u77ED\u660E\u786E\uFF09
|
|
2800
|
+
- \u4EFB\u52A1\u63CF\u8FF0\uFF08\u4E1A\u52A1\u89D2\u5EA6\uFF09
|
|
2801
|
+
- \u9A8C\u6536\u6807\u51C6
|
|
2802
|
+
|
|
2803
|
+
\u6CE8\u610F\uFF1A\u8BF7\u4EE5 Markdown \u683C\u5F0F\u8F93\u51FA\uFF0C\u91CD\u70B9\u7A81\u51FA**\u4E1A\u52A1\u903B\u8F91**\u548C**\u529F\u80FD\u7279\u6027**\u3002
|
|
2804
|
+
\u6280\u672F\u5B9E\u73B0\u65B9\u6848\u7531\u9879\u76EE\u89C4\u8303\u51B3\u5B9A\uFF0C\u6B64\u5904\u4E0D\u6D89\u53CA\u3002
|
|
2791
2805
|
`;
|
|
2792
2806
|
const loader = new LoadingIndicator("AI \u6B63\u5728\u5206\u6790\u53C2\u8003\u8D44\u6E90");
|
|
2793
2807
|
loader.start();
|