@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/index.js
CHANGED
|
@@ -180,7 +180,7 @@ async function executeWorkflow(ctx) {
|
|
|
180
180
|
for (const url of urls) {
|
|
181
181
|
lines.push(chalk9__default.default.gray(` \u{1F4CE} ${url}`));
|
|
182
182
|
try {
|
|
183
|
-
const resource = await fetchAndAnalyzeReference(url, ctx);
|
|
183
|
+
const resource = await fetchAndAnalyzeReference(url, ctx, activeSession.context || void 0);
|
|
184
184
|
activeSession.referenceResources.push(resource);
|
|
185
185
|
lines.push(chalk9__default.default.green(` \u2713 \u5DF2\u5206\u6790`));
|
|
186
186
|
activeSession.refinedRequirement += `
|
|
@@ -591,7 +591,12 @@ async function executeDevelopment(ctx, session) {
|
|
|
591
591
|
role: "system",
|
|
592
592
|
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
|
|
593
593
|
|
|
594
|
-
\u8981\
|
|
594
|
+
\u26A0\uFE0F \u91CD\u8981\u89C4\u5219\uFF1A
|
|
595
|
+
1. \u6280\u672F\u5B9E\u73B0\u5FC5\u987B\u4E25\u683C\u9075\u5FAA\u9879\u76EE\u73B0\u6709\u7684\u5F00\u53D1\u89C4\u8303
|
|
596
|
+
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
|
|
597
|
+
3. \u4F7F\u7528\u9879\u76EE\u6307\u5B9A\u7684\u6280\u672F\u6808\u548C\u6846\u67B6
|
|
598
|
+
|
|
599
|
+
\u4EE3\u7801\u8981\u6C42\uFF1A
|
|
595
600
|
1. \u751F\u6210\u5B8C\u6574\u3001\u53EF\u8FD0\u884C\u7684\u4EE3\u7801
|
|
596
601
|
2. \u9075\u5FAA\u9879\u76EE\u73B0\u6709\u7684\u4EE3\u7801\u98CE\u683C\u548C\u89C4\u8303
|
|
597
602
|
3. \u4F7F\u7528\u9879\u76EE\u6307\u5B9A\u7684\u6280\u672F\u6808
|
|
@@ -603,8 +608,8 @@ async function executeDevelopment(ctx, session) {
|
|
|
603
608
|
- \u6846\u67B6: ${session.context?.framework || "\u672A\u6307\u5B9A"}
|
|
604
609
|
- \u6280\u672F\u6808: ${session.context?.techStack.join(", ") || "\u672A\u6307\u5B9A"}
|
|
605
610
|
|
|
606
|
-
${session.context?.devStandards ? `\u5F00\u53D1\u89C4\u8303\
|
|
607
|
-
${session.context.devStandards.slice(0,
|
|
611
|
+
${session.context?.devStandards ? `\u3010\u5FC5\u987B\u9075\u5FAA\u7684\u5F00\u53D1\u89C4\u8303\u3011
|
|
612
|
+
${session.context.devStandards.slice(0, 2500)}` : ""}`
|
|
608
613
|
},
|
|
609
614
|
{
|
|
610
615
|
role: "user",
|
|
@@ -944,21 +949,26 @@ ${requirement}
|
|
|
944
949
|
## \u9879\u76EE\u4E0A\u4E0B\u6587
|
|
945
950
|
- \u6280\u672F\u6808: ${context.techStack?.join(", ") || "\u672A\u6307\u5B9A"}
|
|
946
951
|
- \u6846\u67B6: ${context.framework || "\u672A\u6307\u5B9A"}
|
|
952
|
+
${context.devStandards ? `
|
|
953
|
+
## \u9879\u76EE\u5F00\u53D1\u89C4\u8303\uFF08\u5FC5\u987B\u9075\u5FAA\uFF09
|
|
954
|
+
${context.devStandards.slice(0, 2e3)}
|
|
955
|
+
` : ""}
|
|
947
956
|
|
|
948
957
|
## \u6F84\u6E05\u95EE\u7B54
|
|
949
958
|
${questions.filter((q) => q.answered).map((q) => `- Q: ${q.question}
|
|
950
959
|
A: ${q.answer}`).join("\n")}
|
|
951
960
|
|
|
952
|
-
## \u53C2\u8003\u8D44\u6E90\u5206\u6790
|
|
953
|
-
${references.map((r) => `### ${r.url}
|
|
954
|
-
${r.analysis}`).join("\n\n")}
|
|
961
|
+
## \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
|
|
962
|
+
${references.length > 0 ? references.map((r) => `### ${r.url}
|
|
963
|
+
${r.analysis}`).join("\n\n") : "\u65E0"}
|
|
955
964
|
|
|
956
965
|
## \u8981\u6C42
|
|
957
966
|
1. \u6BCF\u4E2A\u529F\u80FD\u6A21\u5757\u751F\u6210\u4E00\u4E2A\u72EC\u7ACB\u7684 Feature
|
|
958
967
|
2. \u6BCF\u4E2A Feature \u5305\u542B\u591A\u4E2A\u5177\u4F53\u7684 Scenario
|
|
959
968
|
3. \u4F7F\u7528 Given-When-Then \u683C\u5F0F
|
|
960
969
|
4. \u573A\u666F\u8981\u8986\u76D6: \u6B63\u5E38\u6D41\u7A0B\u3001\u8FB9\u754C\u60C5\u51B5\u3001\u5F02\u5E38\u5904\u7406
|
|
961
|
-
5. \u573A\u666F\u8981\u5177\u4F53\u53EF\u6D4B\u8BD5\uFF0C\
|
|
970
|
+
5. \u573A\u666F\u8981\u5177\u4F53\u53EF\u6D4B\u8BD5\uFF0C\u805A\u7126\u4E1A\u52A1\u903B\u8F91
|
|
971
|
+
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
|
|
962
972
|
|
|
963
973
|
## \u8F93\u51FA\u683C\u5F0F (JSON)
|
|
964
974
|
\`\`\`json
|
|
@@ -1375,7 +1385,7 @@ function extractUrls(text) {
|
|
|
1375
1385
|
const matches = text.match(urlRegex);
|
|
1376
1386
|
return matches ? [...new Set(matches)] : [];
|
|
1377
1387
|
}
|
|
1378
|
-
async function fetchAndAnalyzeReference(url, ctx) {
|
|
1388
|
+
async function fetchAndAnalyzeReference(url, ctx, projectContext) {
|
|
1379
1389
|
const type = detectResourceType(url);
|
|
1380
1390
|
let content = "";
|
|
1381
1391
|
let analysis = "";
|
|
@@ -1390,7 +1400,7 @@ async function fetchAndAnalyzeReference(url, ctx) {
|
|
|
1390
1400
|
}
|
|
1391
1401
|
content = await response.text();
|
|
1392
1402
|
if (ctx.modelService.getCurrentModel()) {
|
|
1393
|
-
analysis = await analyzeReferenceContent(url, content, type, ctx);
|
|
1403
|
+
analysis = await analyzeReferenceContent(url, content, type, ctx, projectContext);
|
|
1394
1404
|
} else {
|
|
1395
1405
|
analysis = extractBasicInfo(content, type);
|
|
1396
1406
|
}
|
|
@@ -1411,9 +1421,20 @@ function detectResourceType(url) {
|
|
|
1411
1421
|
}
|
|
1412
1422
|
return "webpage";
|
|
1413
1423
|
}
|
|
1414
|
-
async function analyzeReferenceContent(url, content, type, ctx) {
|
|
1424
|
+
async function analyzeReferenceContent(url, content, type, ctx, projectContext) {
|
|
1415
1425
|
const prompt2 = `
|
|
1416
|
-
\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u4EA7\u54C1\u7ECF\u7406\
|
|
1426
|
+
\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
|
|
1427
|
+
|
|
1428
|
+
## \u91CD\u8981\u8BF4\u660E
|
|
1429
|
+
\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
|
|
1430
|
+
\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
|
|
1431
|
+
|
|
1432
|
+
${projectContext ? `## \u5F53\u524D\u9879\u76EE\u89C4\u8303
|
|
1433
|
+
- \u9879\u76EE\u540D\u79F0: ${projectContext.name}
|
|
1434
|
+
- \u6280\u672F\u6808: ${projectContext.techStack.join(", ") || "\u672A\u6307\u5B9A"}
|
|
1435
|
+
- \u6846\u67B6: ${projectContext.framework || "\u672A\u6307\u5B9A"}
|
|
1436
|
+
- \u5F00\u53D1\u89C4\u8303\u6458\u8981: ${projectContext.devStandards?.slice(0, 1500) || "\u672A\u6307\u5B9A"}
|
|
1437
|
+
` : ""}
|
|
1417
1438
|
|
|
1418
1439
|
## \u53C2\u8003\u8D44\u6E90\u4FE1\u606F
|
|
1419
1440
|
- URL: ${url}
|
|
@@ -1426,38 +1447,31 @@ ${content.slice(0, 8e3)}
|
|
|
1426
1447
|
|
|
1427
1448
|
## \u5206\u6790\u8981\u6C42
|
|
1428
1449
|
|
|
1429
|
-
\u8BF7\u6309\u7167\u4EE5\u4E0B\u7ED3\u6784\u8FDB\u884C\
|
|
1450
|
+
\u8BF7\u6309\u7167\u4EE5\u4E0B\u7ED3\u6784\u8FDB\u884C\u5206\u6790\uFF1A
|
|
1430
1451
|
|
|
1431
|
-
### 1. \u4E1A\u52A1\u529F\u80FD\u5206\u6790
|
|
1432
|
-
- \u6838\u5FC3\u4E1A\u52A1\u529F\u80FD\u662F\u4EC0\u4E48\uFF1F\uFF08\u8BE6\u7EC6\u63CF\u8FF0\uFF09
|
|
1433
|
-
- \
|
|
1434
|
-
- \u4E1A\u52A1\
|
|
1435
|
-
- \u6570\u636E\u8F93\u5165\u8F93\u51FA\u662F\u4EC0\u4E48\uFF1F
|
|
1452
|
+
### 1. \u4E1A\u52A1\u529F\u80FD\u5206\u6790\uFF08\u91CD\u70B9\uFF09
|
|
1453
|
+
- \u6838\u5FC3\u4E1A\u52A1\u529F\u80FD\u662F\u4EC0\u4E48\uFF1F\uFF08\u8BE6\u7EC6\u63CF\u8FF0\u7528\u6237\u80FD\u505A\u4EC0\u4E48\uFF09
|
|
1454
|
+
- \u4E1A\u52A1\u6D41\u7A0B\u662F\u4EC0\u4E48\uFF1F\uFF08\u7528\u6237\u64CD\u4F5C\u6B65\u9AA4\uFF09
|
|
1455
|
+
- \u4E1A\u52A1\u89C4\u5219\u662F\u4EC0\u4E48\uFF1F\uFF08\u8F93\u5165\u9650\u5236\u3001\u8BA1\u7B97\u89C4\u5219\u7B49\uFF09
|
|
1436
1456
|
|
|
1437
1457
|
### 2. UI/UX \u7ED3\u6784\u5206\u6790
|
|
1438
|
-
- \u9875\u9762\u5E03\u5C40\u7ED3\u6784
|
|
1439
|
-
- \u4E3B\u8981\u7EC4\u4EF6\u6709\u54EA\u4E9B\uFF1F
|
|
1440
|
-
- \u7EC4\u4EF6\u4E4B\u95F4\u7684\u5173\u7CFB
|
|
1458
|
+
- \u9875\u9762\u5E03\u5C40\u7ED3\u6784\uFF08\u4E0D\u6D89\u53CA\u5177\u4F53\u6280\u672F\u5B9E\u73B0\uFF09
|
|
1459
|
+
- \u4E3B\u8981\u7EC4\u4EF6/\u6A21\u5757\u6709\u54EA\u4E9B\uFF1F
|
|
1441
1460
|
- \u4EA4\u4E92\u65B9\u5F0F\uFF08\u70B9\u51FB\u3001\u8F93\u5165\u3001\u62D6\u62FD\u7B49\uFF09
|
|
1442
1461
|
|
|
1443
1462
|
### 3. \u6570\u636E\u6A21\u578B\u5206\u6790
|
|
1444
|
-
- \u9700\u8981\u54EA\u4E9B\u6570\u636E\uFF1F
|
|
1463
|
+
- \u9700\u8981\u54EA\u4E9B\u6570\u636E\u5B57\u6BB5\uFF1F
|
|
1445
1464
|
- \u6570\u636E\u4E4B\u95F4\u7684\u5173\u7CFB
|
|
1446
1465
|
- \u6570\u636E\u6765\u6E90\uFF08\u7528\u6237\u8F93\u5165/\u8BA1\u7B97/API\uFF09
|
|
1447
1466
|
|
|
1448
1467
|
### 4. \u529F\u80FD\u62C6\u5206\u5EFA\u8BAE
|
|
1449
|
-
\
|
|
1450
|
-
- \u4EFB\u52A1\u540D\u79F0
|
|
1451
|
-
- \u4EFB\u52A1\u63CF\u8FF0
|
|
1452
|
-
- \
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
- \u63A8\u8350\u7684\u6280\u672F\u65B9\u6848
|
|
1457
|
-
- \u9700\u8981\u6CE8\u610F\u7684\u6280\u672F\u96BE\u70B9
|
|
1458
|
-
- \u6027\u80FD\u4F18\u5316\u5EFA\u8BAE
|
|
1459
|
-
|
|
1460
|
-
\u8BF7\u4EE5 Markdown \u683C\u5F0F\u8F93\u51FA\uFF0C\u91CD\u70B9\u7A81\u51FA\u4E1A\u52A1\u903B\u8F91\u548C\u529F\u80FD\u5B9E\u73B0\u7EC6\u8282\u3002
|
|
1468
|
+
\u5C06\u529F\u80FD\u62C6\u5206\u4E3A\u53EF\u72EC\u7ACB\u5F00\u53D1\u7684\u4EFB\u52A1\uFF1A
|
|
1469
|
+
- \u4EFB\u52A1\u540D\u79F0\uFF08\u7B80\u77ED\u660E\u786E\uFF09
|
|
1470
|
+
- \u4EFB\u52A1\u63CF\u8FF0\uFF08\u4E1A\u52A1\u89D2\u5EA6\uFF09
|
|
1471
|
+
- \u9A8C\u6536\u6807\u51C6
|
|
1472
|
+
|
|
1473
|
+
\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
|
|
1474
|
+
\u6280\u672F\u5B9E\u73B0\u65B9\u6848\u7531\u9879\u76EE\u89C4\u8303\u51B3\u5B9A\uFF0C\u6B64\u5904\u4E0D\u6D89\u53CA\u3002
|
|
1461
1475
|
`;
|
|
1462
1476
|
const loader = new LoadingIndicator("AI \u6B63\u5728\u5206\u6790\u53C2\u8003\u8D44\u6E90");
|
|
1463
1477
|
loader.start();
|