@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.mjs
CHANGED
|
@@ -155,7 +155,7 @@ async function executeWorkflow(ctx) {
|
|
|
155
155
|
for (const url of urls) {
|
|
156
156
|
lines.push(chalk9.gray(` \u{1F4CE} ${url}`));
|
|
157
157
|
try {
|
|
158
|
-
const resource = await fetchAndAnalyzeReference(url, ctx);
|
|
158
|
+
const resource = await fetchAndAnalyzeReference(url, ctx, activeSession.context || void 0);
|
|
159
159
|
activeSession.referenceResources.push(resource);
|
|
160
160
|
lines.push(chalk9.green(` \u2713 \u5DF2\u5206\u6790`));
|
|
161
161
|
activeSession.refinedRequirement += `
|
|
@@ -566,7 +566,12 @@ async function executeDevelopment(ctx, session) {
|
|
|
566
566
|
role: "system",
|
|
567
567
|
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
|
|
568
568
|
|
|
569
|
-
\u8981\
|
|
569
|
+
\u26A0\uFE0F \u91CD\u8981\u89C4\u5219\uFF1A
|
|
570
|
+
1. \u6280\u672F\u5B9E\u73B0\u5FC5\u987B\u4E25\u683C\u9075\u5FAA\u9879\u76EE\u73B0\u6709\u7684\u5F00\u53D1\u89C4\u8303
|
|
571
|
+
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
|
|
572
|
+
3. \u4F7F\u7528\u9879\u76EE\u6307\u5B9A\u7684\u6280\u672F\u6808\u548C\u6846\u67B6
|
|
573
|
+
|
|
574
|
+
\u4EE3\u7801\u8981\u6C42\uFF1A
|
|
570
575
|
1. \u751F\u6210\u5B8C\u6574\u3001\u53EF\u8FD0\u884C\u7684\u4EE3\u7801
|
|
571
576
|
2. \u9075\u5FAA\u9879\u76EE\u73B0\u6709\u7684\u4EE3\u7801\u98CE\u683C\u548C\u89C4\u8303
|
|
572
577
|
3. \u4F7F\u7528\u9879\u76EE\u6307\u5B9A\u7684\u6280\u672F\u6808
|
|
@@ -578,8 +583,8 @@ async function executeDevelopment(ctx, session) {
|
|
|
578
583
|
- \u6846\u67B6: ${session.context?.framework || "\u672A\u6307\u5B9A"}
|
|
579
584
|
- \u6280\u672F\u6808: ${session.context?.techStack.join(", ") || "\u672A\u6307\u5B9A"}
|
|
580
585
|
|
|
581
|
-
${session.context?.devStandards ? `\u5F00\u53D1\u89C4\u8303\
|
|
582
|
-
${session.context.devStandards.slice(0,
|
|
586
|
+
${session.context?.devStandards ? `\u3010\u5FC5\u987B\u9075\u5FAA\u7684\u5F00\u53D1\u89C4\u8303\u3011
|
|
587
|
+
${session.context.devStandards.slice(0, 2500)}` : ""}`
|
|
583
588
|
},
|
|
584
589
|
{
|
|
585
590
|
role: "user",
|
|
@@ -919,21 +924,26 @@ ${requirement}
|
|
|
919
924
|
## \u9879\u76EE\u4E0A\u4E0B\u6587
|
|
920
925
|
- \u6280\u672F\u6808: ${context.techStack?.join(", ") || "\u672A\u6307\u5B9A"}
|
|
921
926
|
- \u6846\u67B6: ${context.framework || "\u672A\u6307\u5B9A"}
|
|
927
|
+
${context.devStandards ? `
|
|
928
|
+
## \u9879\u76EE\u5F00\u53D1\u89C4\u8303\uFF08\u5FC5\u987B\u9075\u5FAA\uFF09
|
|
929
|
+
${context.devStandards.slice(0, 2e3)}
|
|
930
|
+
` : ""}
|
|
922
931
|
|
|
923
932
|
## \u6F84\u6E05\u95EE\u7B54
|
|
924
933
|
${questions.filter((q) => q.answered).map((q) => `- Q: ${q.question}
|
|
925
934
|
A: ${q.answer}`).join("\n")}
|
|
926
935
|
|
|
927
|
-
## \u53C2\u8003\u8D44\u6E90\u5206\u6790
|
|
928
|
-
${references.map((r) => `### ${r.url}
|
|
929
|
-
${r.analysis}`).join("\n\n")}
|
|
936
|
+
## \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
|
|
937
|
+
${references.length > 0 ? references.map((r) => `### ${r.url}
|
|
938
|
+
${r.analysis}`).join("\n\n") : "\u65E0"}
|
|
930
939
|
|
|
931
940
|
## \u8981\u6C42
|
|
932
941
|
1. \u6BCF\u4E2A\u529F\u80FD\u6A21\u5757\u751F\u6210\u4E00\u4E2A\u72EC\u7ACB\u7684 Feature
|
|
933
942
|
2. \u6BCF\u4E2A Feature \u5305\u542B\u591A\u4E2A\u5177\u4F53\u7684 Scenario
|
|
934
943
|
3. \u4F7F\u7528 Given-When-Then \u683C\u5F0F
|
|
935
944
|
4. \u573A\u666F\u8981\u8986\u76D6: \u6B63\u5E38\u6D41\u7A0B\u3001\u8FB9\u754C\u60C5\u51B5\u3001\u5F02\u5E38\u5904\u7406
|
|
936
|
-
5. \u573A\u666F\u8981\u5177\u4F53\u53EF\u6D4B\u8BD5\uFF0C\
|
|
945
|
+
5. \u573A\u666F\u8981\u5177\u4F53\u53EF\u6D4B\u8BD5\uFF0C\u805A\u7126\u4E1A\u52A1\u903B\u8F91
|
|
946
|
+
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
|
|
937
947
|
|
|
938
948
|
## \u8F93\u51FA\u683C\u5F0F (JSON)
|
|
939
949
|
\`\`\`json
|
|
@@ -1350,7 +1360,7 @@ function extractUrls(text) {
|
|
|
1350
1360
|
const matches = text.match(urlRegex);
|
|
1351
1361
|
return matches ? [...new Set(matches)] : [];
|
|
1352
1362
|
}
|
|
1353
|
-
async function fetchAndAnalyzeReference(url, ctx) {
|
|
1363
|
+
async function fetchAndAnalyzeReference(url, ctx, projectContext) {
|
|
1354
1364
|
const type = detectResourceType(url);
|
|
1355
1365
|
let content = "";
|
|
1356
1366
|
let analysis = "";
|
|
@@ -1365,7 +1375,7 @@ async function fetchAndAnalyzeReference(url, ctx) {
|
|
|
1365
1375
|
}
|
|
1366
1376
|
content = await response.text();
|
|
1367
1377
|
if (ctx.modelService.getCurrentModel()) {
|
|
1368
|
-
analysis = await analyzeReferenceContent(url, content, type, ctx);
|
|
1378
|
+
analysis = await analyzeReferenceContent(url, content, type, ctx, projectContext);
|
|
1369
1379
|
} else {
|
|
1370
1380
|
analysis = extractBasicInfo(content, type);
|
|
1371
1381
|
}
|
|
@@ -1386,9 +1396,20 @@ function detectResourceType(url) {
|
|
|
1386
1396
|
}
|
|
1387
1397
|
return "webpage";
|
|
1388
1398
|
}
|
|
1389
|
-
async function analyzeReferenceContent(url, content, type, ctx) {
|
|
1399
|
+
async function analyzeReferenceContent(url, content, type, ctx, projectContext) {
|
|
1390
1400
|
const prompt2 = `
|
|
1391
|
-
\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u4EA7\u54C1\u7ECF\u7406\
|
|
1401
|
+
\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
|
|
1402
|
+
|
|
1403
|
+
## \u91CD\u8981\u8BF4\u660E
|
|
1404
|
+
\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
|
|
1405
|
+
\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
|
|
1406
|
+
|
|
1407
|
+
${projectContext ? `## \u5F53\u524D\u9879\u76EE\u89C4\u8303
|
|
1408
|
+
- \u9879\u76EE\u540D\u79F0: ${projectContext.name}
|
|
1409
|
+
- \u6280\u672F\u6808: ${projectContext.techStack.join(", ") || "\u672A\u6307\u5B9A"}
|
|
1410
|
+
- \u6846\u67B6: ${projectContext.framework || "\u672A\u6307\u5B9A"}
|
|
1411
|
+
- \u5F00\u53D1\u89C4\u8303\u6458\u8981: ${projectContext.devStandards?.slice(0, 1500) || "\u672A\u6307\u5B9A"}
|
|
1412
|
+
` : ""}
|
|
1392
1413
|
|
|
1393
1414
|
## \u53C2\u8003\u8D44\u6E90\u4FE1\u606F
|
|
1394
1415
|
- URL: ${url}
|
|
@@ -1401,38 +1422,31 @@ ${content.slice(0, 8e3)}
|
|
|
1401
1422
|
|
|
1402
1423
|
## \u5206\u6790\u8981\u6C42
|
|
1403
1424
|
|
|
1404
|
-
\u8BF7\u6309\u7167\u4EE5\u4E0B\u7ED3\u6784\u8FDB\u884C\
|
|
1425
|
+
\u8BF7\u6309\u7167\u4EE5\u4E0B\u7ED3\u6784\u8FDB\u884C\u5206\u6790\uFF1A
|
|
1405
1426
|
|
|
1406
|
-
### 1. \u4E1A\u52A1\u529F\u80FD\u5206\u6790
|
|
1407
|
-
- \u6838\u5FC3\u4E1A\u52A1\u529F\u80FD\u662F\u4EC0\u4E48\uFF1F\uFF08\u8BE6\u7EC6\u63CF\u8FF0\uFF09
|
|
1408
|
-
- \
|
|
1409
|
-
- \u4E1A\u52A1\
|
|
1410
|
-
- \u6570\u636E\u8F93\u5165\u8F93\u51FA\u662F\u4EC0\u4E48\uFF1F
|
|
1427
|
+
### 1. \u4E1A\u52A1\u529F\u80FD\u5206\u6790\uFF08\u91CD\u70B9\uFF09
|
|
1428
|
+
- \u6838\u5FC3\u4E1A\u52A1\u529F\u80FD\u662F\u4EC0\u4E48\uFF1F\uFF08\u8BE6\u7EC6\u63CF\u8FF0\u7528\u6237\u80FD\u505A\u4EC0\u4E48\uFF09
|
|
1429
|
+
- \u4E1A\u52A1\u6D41\u7A0B\u662F\u4EC0\u4E48\uFF1F\uFF08\u7528\u6237\u64CD\u4F5C\u6B65\u9AA4\uFF09
|
|
1430
|
+
- \u4E1A\u52A1\u89C4\u5219\u662F\u4EC0\u4E48\uFF1F\uFF08\u8F93\u5165\u9650\u5236\u3001\u8BA1\u7B97\u89C4\u5219\u7B49\uFF09
|
|
1411
1431
|
|
|
1412
1432
|
### 2. UI/UX \u7ED3\u6784\u5206\u6790
|
|
1413
|
-
- \u9875\u9762\u5E03\u5C40\u7ED3\u6784
|
|
1414
|
-
- \u4E3B\u8981\u7EC4\u4EF6\u6709\u54EA\u4E9B\uFF1F
|
|
1415
|
-
- \u7EC4\u4EF6\u4E4B\u95F4\u7684\u5173\u7CFB
|
|
1433
|
+
- \u9875\u9762\u5E03\u5C40\u7ED3\u6784\uFF08\u4E0D\u6D89\u53CA\u5177\u4F53\u6280\u672F\u5B9E\u73B0\uFF09
|
|
1434
|
+
- \u4E3B\u8981\u7EC4\u4EF6/\u6A21\u5757\u6709\u54EA\u4E9B\uFF1F
|
|
1416
1435
|
- \u4EA4\u4E92\u65B9\u5F0F\uFF08\u70B9\u51FB\u3001\u8F93\u5165\u3001\u62D6\u62FD\u7B49\uFF09
|
|
1417
1436
|
|
|
1418
1437
|
### 3. \u6570\u636E\u6A21\u578B\u5206\u6790
|
|
1419
|
-
- \u9700\u8981\u54EA\u4E9B\u6570\u636E\uFF1F
|
|
1438
|
+
- \u9700\u8981\u54EA\u4E9B\u6570\u636E\u5B57\u6BB5\uFF1F
|
|
1420
1439
|
- \u6570\u636E\u4E4B\u95F4\u7684\u5173\u7CFB
|
|
1421
1440
|
- \u6570\u636E\u6765\u6E90\uFF08\u7528\u6237\u8F93\u5165/\u8BA1\u7B97/API\uFF09
|
|
1422
1441
|
|
|
1423
1442
|
### 4. \u529F\u80FD\u62C6\u5206\u5EFA\u8BAE
|
|
1424
|
-
\
|
|
1425
|
-
- \u4EFB\u52A1\u540D\u79F0
|
|
1426
|
-
- \u4EFB\u52A1\u63CF\u8FF0
|
|
1427
|
-
- \
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
- \u63A8\u8350\u7684\u6280\u672F\u65B9\u6848
|
|
1432
|
-
- \u9700\u8981\u6CE8\u610F\u7684\u6280\u672F\u96BE\u70B9
|
|
1433
|
-
- \u6027\u80FD\u4F18\u5316\u5EFA\u8BAE
|
|
1434
|
-
|
|
1435
|
-
\u8BF7\u4EE5 Markdown \u683C\u5F0F\u8F93\u51FA\uFF0C\u91CD\u70B9\u7A81\u51FA\u4E1A\u52A1\u903B\u8F91\u548C\u529F\u80FD\u5B9E\u73B0\u7EC6\u8282\u3002
|
|
1443
|
+
\u5C06\u529F\u80FD\u62C6\u5206\u4E3A\u53EF\u72EC\u7ACB\u5F00\u53D1\u7684\u4EFB\u52A1\uFF1A
|
|
1444
|
+
- \u4EFB\u52A1\u540D\u79F0\uFF08\u7B80\u77ED\u660E\u786E\uFF09
|
|
1445
|
+
- \u4EFB\u52A1\u63CF\u8FF0\uFF08\u4E1A\u52A1\u89D2\u5EA6\uFF09
|
|
1446
|
+
- \u9A8C\u6536\u6807\u51C6
|
|
1447
|
+
|
|
1448
|
+
\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
|
|
1449
|
+
\u6280\u672F\u5B9E\u73B0\u65B9\u6848\u7531\u9879\u76EE\u89C4\u8303\u51B3\u5B9A\uFF0C\u6B64\u5904\u4E0D\u6D89\u53CA\u3002
|
|
1436
1450
|
`;
|
|
1437
1451
|
const loader = new LoadingIndicator("AI \u6B63\u5728\u5206\u6790\u53C2\u8003\u8D44\u6E90");
|
|
1438
1452
|
loader.start();
|