@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/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\u6C42\uFF1A
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\uFF1A
607
- ${session.context.devStandards.slice(0, 2e3)}` : ""}`
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\u4E0D\u8981\u6CDB\u6CDB\u800C\u8C08
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\u548C\u524D\u7AEF\u5F00\u53D1\u5DE5\u7A0B\u5E08\u3002\u8BF7\u6DF1\u5165\u5206\u6790\u4EE5\u4E0B\u53C2\u8003\u8D44\u6E90\uFF0C\u63D0\u53D6\u4E1A\u52A1\u529F\u80FD\u548C\u6280\u672F\u5B9E\u73B0\u7EC6\u8282\u3002
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\u8BE6\u7EC6\u5206\u6790\uFF1A
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
- - \u7528\u6237\u53EF\u4EE5\u505A\u4EC0\u4E48\u64CD\u4F5C\uFF1F
1434
- - \u4E1A\u52A1\u6D41\u7A0B\u662F\u4EC0\u4E48\uFF1F
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
- \u8BF7\u5C06\u529F\u80FD\u62C6\u5206\u4E3A\u53EF\u72EC\u7ACB\u5F00\u53D1\u7684\u4EFB\u52A1\uFF0C\u6BCF\u4E2A\u4EFB\u52A1\u5305\u542B\uFF1A
1450
- - \u4EFB\u52A1\u540D\u79F0
1451
- - \u4EFB\u52A1\u63CF\u8FF0
1452
- - \u6280\u672F\u8981\u70B9
1453
- - \u4F9D\u8D56\u5173\u7CFB
1454
-
1455
- ### 5. \u6280\u672F\u5B9E\u73B0\u5EFA\u8BAE
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();