intention-coding 0.3.0 → 0.3.2
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 +519 -542
- package/dist/services/bug-fix-agent/index.d.ts +44 -0
- package/dist/services/integrated-generator/index.d.ts +4 -4
- package/dist/services/project-template/index.d.ts +0 -14
- package/dist/services/project-template/prompt/project-rules.d.ts +1 -1
- package/dist/services/requirement-analyzer/index.d.ts +21 -0
- package/dist/services/requirement-analyzer/prompt/api-template.d.ts +1 -1
- package/dist/services/requirement-analyzer/prompt/app-template.d.ts +1 -1
- package/dist/services/requirement-analyzer/prompt/pc-page-template.d.ts +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1911,7 +1911,12 @@ flowchart TD
|
|
|
1911
1911
|
});
|
|
1912
1912
|
var config = __webpack_require__("./src/config.ts");
|
|
1913
1913
|
var external_path_ = __webpack_require__("path");
|
|
1914
|
-
|
|
1914
|
+
let logDir;
|
|
1915
|
+
try {
|
|
1916
|
+
logDir = (0, config.WR)() + '/logs';
|
|
1917
|
+
} catch (error) {
|
|
1918
|
+
logDir = './.aico/logs';
|
|
1919
|
+
}
|
|
1915
1920
|
const levels = {
|
|
1916
1921
|
error: 0,
|
|
1917
1922
|
warn: 1,
|
|
@@ -2127,7 +2132,7 @@ flowchart TD
|
|
|
2127
2132
|
Authorization: "Bearer sk-fp8wJSigZBEP3x8y6MAZWGPuVIHJ5PDZtX9lMQQk8hjP2R0u"
|
|
2128
2133
|
},
|
|
2129
2134
|
body: JSON.stringify({
|
|
2130
|
-
model: '
|
|
2135
|
+
model: 'kimi-latest',
|
|
2131
2136
|
messages: [
|
|
2132
2137
|
...system_prompt ? [
|
|
2133
2138
|
{
|
|
@@ -6227,7 +6232,6 @@ const projectRulesPromptTemplate = `
|
|
|
6227
6232
|
|
|
6228
6233
|
## \u{9879}\u{76EE}\u{4FE1}\u{606F}
|
|
6229
6234
|
- **\u{9879}\u{76EE}\u{540D}\u{79F0}**: {{projectName}}
|
|
6230
|
-
- **\u{5206}\u{6790}\u{6DF1}\u{5EA6}**: {{analysisDepth}}
|
|
6231
6235
|
- **\u{5305}\u{542B}\u{793A}\u{4F8B}**: {{includeExamples}}
|
|
6232
6236
|
|
|
6233
6237
|
## \u{9879}\u{76EE}\u{67B6}\u{6784}\u{5206}\u{6790}
|
|
@@ -6240,6 +6244,12 @@ const projectRulesPromptTemplate = `
|
|
|
6240
6244
|
## \u{4EFB}\u{52A1}\u{8981}\u{6C42}
|
|
6241
6245
|
\u{8BF7}\u{57FA}\u{4E8E}\u{9879}\u{76EE}\u{67B6}\u{6784}\u{5206}\u{6790}\u{FF0C}\u{667A}\u{80FD}\u{8BC6}\u{522B}\u{9879}\u{76EE}\u{7684}\u{6280}\u{672F}\u{6808}\u{548C}\u{8BED}\u{8A00}\u{7279}\u{5F81}\u{FF0C}\u{7136}\u{540E}\u{751F}\u{6210}\u{4E00}\u{4EFD}\u{5B8C}\u{6574}\u{7684}project_rules.md\u{6587}\u{4EF6}\u{5185}\u{5BB9}\u{3002}
|
|
6242
6246
|
|
|
6247
|
+
### \u{5904}\u{7406}\u{957F}\u{5185}\u{5BB9}\u{7684}\u{7279}\u{6B8A}\u{8BF4}\u{660E}
|
|
6248
|
+
\u{5F53}\u{9879}\u{76EE}\u{67B6}\u{6784}\u{5206}\u{6790}\u{5185}\u{5BB9}\u{8F83}\u{957F}\u{65F6}\u{FF0C}\u{8BF7}\u{91C7}\u{7528}\u{5206}\u{6BB5}\u{5904}\u{7406}\u{7684}\u{65B9}\u{5F0F}\u{FF1A}
|
|
6249
|
+
1. \u{9996}\u{5148}\u{901A}\u{8BFB}\u{5168}\u{90E8}\u{5185}\u{5BB9}\u{FF0C}\u{7406}\u{89E3}\u{6574}\u{4F53}\u{67B6}\u{6784}
|
|
6250
|
+
2. \u{7136}\u{540E}\u{9010}\u{6BB5}\u{5206}\u{6790}\u{FF0C}\u{6BCF}\u{6BB5}\u{5904}\u{7406}\u{5B8C}\u{6210}\u{540E}\u{8FDB}\u{884C}\u{603B}\u{7ED3}
|
|
6251
|
+
3. \u{6700}\u{7EC8}\u{6574}\u{5408}\u{6240}\u{6709}\u{5206}\u{6790}\u{7ED3}\u{679C}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}\u{89C4}\u{5219}\u{6587}\u{4EF6}
|
|
6252
|
+
|
|
6243
6253
|
### \u{6280}\u{672F}\u{6808}\u{8BC6}\u{522B}\u{548C}\u{5206}\u{6790}\u{89C4}\u{5219}
|
|
6244
6254
|
\u{8BF7}\u{5148}\u{4ED4}\u{7EC6}\u{5206}\u{6790}\u{9879}\u{76EE}\u{7ED3}\u{6784}\u{FF0C}\u{8BC6}\u{522B}\u{51FA}\u{9879}\u{76EE}\u{7684}\u{6280}\u{672F}\u{6808}\u{548C}\u{67B6}\u{6784}\u{6A21}\u{5F0F}\u{FF1A}
|
|
6245
6255
|
|
|
@@ -6291,8 +6301,10 @@ const projectRulesPromptTemplate = `
|
|
|
6291
6301
|
|
|
6292
6302
|
#### 6. \u{5F00}\u{53D1}\u{6700}\u{4F73}\u{5B9E}\u{8DF5}
|
|
6293
6303
|
\u{9488}\u{5BF9}\u{9879}\u{76EE}\u{6280}\u{672F}\u{6808}\u{7684}\u{5177}\u{4F53}\u{5B9E}\u{8DF5}\u{FF1A}
|
|
6294
|
-
- \u{
|
|
6304
|
+
- \u{7EC4}\u{4EF6}\u{5316}\u{8BBE}\u{8BA1}\u{89C4}\u{5219}
|
|
6305
|
+
- \u{5DE5}\u{5177}\u{548C}\u{5E93}\u{7684}\u{4F7F}\u{7528}\u{89C4}\u{8303}
|
|
6295
6306
|
- \u{7B2C}\u{4E09}\u{65B9}\u{5E93}\u{4F7F}\u{7528}\u{89C4}\u{8303}
|
|
6307
|
+
- \u{5355}\u{5143}\u{6D4B}\u{8BD5}\u{65B9}\u{6CD5}
|
|
6296
6308
|
|
|
6297
6309
|
#### 7. \u{4EE3}\u{7801}\u{793A}\u{4F8B}\u{548C}\u{6A21}\u{677F}
|
|
6298
6310
|
\u{5305}\u{542B}\u{9879}\u{76EE}\u{4E2D}\u{5E38}\u{7528}\u{7684}\u{4EE3}\u{7801}\u{6A21}\u{5F0F}\u{FF1A}
|
|
@@ -6313,12 +6325,6 @@ const projectRulesPromptTemplate = `
|
|
|
6313
6325
|
const ProjectTemplateParams = esm.z.object({
|
|
6314
6326
|
project_name: esm.z.string().optional().describe("\u9879\u76EE\u540D\u79F0\uFF0C\u7528\u4E8E\u751F\u6210\u6587\u4EF6\u540D"),
|
|
6315
6327
|
project_path: esm.z.string().optional().describe("\u9879\u76EE\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u7528\u4E8E\u6307\u5B9A\u8981\u5206\u6790\u7684\u9879\u76EE\u76EE\u5F55"),
|
|
6316
|
-
analysis_depth: esm.z["enum"]([
|
|
6317
|
-
'basic',
|
|
6318
|
-
'detailed',
|
|
6319
|
-
'comprehensive'
|
|
6320
|
-
]).optional().default('detailed').describe("\u5206\u6790\u6DF1\u5EA6"),
|
|
6321
|
-
include_examples: esm.z.boolean().optional().default(true).describe("\u662F\u5426\u5305\u542B\u4EE3\u7801\u793A\u4F8B"),
|
|
6322
6328
|
custom_rules: esm.z.string().optional().describe("\u81EA\u5B9A\u4E49\u89C4\u5219\u5185\u5BB9")
|
|
6323
6329
|
});
|
|
6324
6330
|
const initProjectStandard = {
|
|
@@ -6326,61 +6332,26 @@ const initProjectStandard = {
|
|
|
6326
6332
|
description: "\u5206\u6790\u9879\u76EE\u67B6\u6784\u5E76\u751F\u6210\u5F00\u53D1\u89C4\u8303",
|
|
6327
6333
|
parameters: ProjectTemplateParams,
|
|
6328
6334
|
execute: async (args)=>{
|
|
6329
|
-
const { project_name = 'current-project', project_path,
|
|
6335
|
+
const { project_name = 'current-project', project_path, custom_rules } = args;
|
|
6330
6336
|
try {
|
|
6331
6337
|
utils_logger.k.info("\u5F00\u59CB\u751F\u6210\u9879\u76EE\u67B6\u6784\u5206\u6790\u6587\u6863");
|
|
6332
6338
|
const projectAnalysisPath = await packProject(project_path);
|
|
6333
6339
|
const projectAnalysis = await promises_["default"].readFile(projectAnalysisPath, 'utf-8');
|
|
6334
|
-
|
|
6335
|
-
|
|
6336
|
-
|
|
6340
|
+
const projectRulesPromptData = generateProjectRulesPrompt(projectAnalysis, project_name, custom_rules);
|
|
6341
|
+
const aicoDir = (0, src_config.WR)();
|
|
6342
|
+
utils_logger.k.info("\u786E\u4FDD.aico\u76EE\u5F55\u5B58\u5728", {
|
|
6343
|
+
aicoDir
|
|
6337
6344
|
});
|
|
6338
|
-
|
|
6339
|
-
|
|
6340
|
-
|
|
6341
|
-
|
|
6342
|
-
project_info: {
|
|
6343
|
-
name: project_name,
|
|
6344
|
-
analysis_depth: analysis_depth,
|
|
6345
|
-
include_examples: include_examples,
|
|
6346
|
-
analysis_file: external_path_["default"].resolve(projectAnalysisPath)
|
|
6347
|
-
},
|
|
6348
|
-
generated_rules: {
|
|
6349
|
-
projectrules: {
|
|
6350
|
-
filename: 'project_rules.md',
|
|
6351
|
-
content: '',
|
|
6352
|
-
description: "\u9879\u76EE\u5F00\u53D1\u89C4\u5219\u6587\u4EF6",
|
|
6353
|
-
suggested_path: '.aico/project_rules.md',
|
|
6354
|
-
prompt_data: projectRulesPromptData
|
|
6355
|
-
}
|
|
6356
|
-
},
|
|
6357
|
-
instructions: {
|
|
6358
|
-
overview: "\u8BF7\u4F7F\u7528\u4EE5\u4E0B\u63D0\u793A\u8BCD\u8C03\u7528AI\u670D\u52A1\u751F\u6210\u9879\u76EE\u89C4\u5219\u5185\u5BB9\uFF1A",
|
|
6359
|
-
workflow: [
|
|
6360
|
-
"1. \u4F7F\u7528prompt_data\u4E2D\u7684\u63D0\u793A\u8BCD\u8C03\u7528AI\u670D\u52A1\u751F\u6210project_rules.md\u5185\u5BB9",
|
|
6361
|
-
"2. \u5C06\u751F\u6210\u7684\u5185\u5BB9\u4FDD\u5B58\u5230.aico/project_rules.md\u8DEF\u5F84",
|
|
6362
|
-
"3. \u6839\u636E\u9700\u8981\u8C03\u6574\u548C\u4F18\u5316\u751F\u6210\u7684\u5185\u5BB9"
|
|
6363
|
-
],
|
|
6364
|
-
actions: [
|
|
6365
|
-
{
|
|
6366
|
-
action: 'generate_and_create_file',
|
|
6367
|
-
file: '.aico/project_rules.md',
|
|
6368
|
-
description: "\u9879\u76EE\u5F00\u53D1\u89C4\u5219\u6587\u4EF6",
|
|
6369
|
-
has_prompt_data: true,
|
|
6370
|
-
prompt_task: 'generate_project_rules',
|
|
6371
|
-
generation_config: projectRulesPromptData.config
|
|
6372
|
-
}
|
|
6373
|
-
]
|
|
6374
|
-
}
|
|
6375
|
-
};
|
|
6376
|
-
return JSON.stringify(result, null, 2);
|
|
6345
|
+
await promises_["default"].mkdir(aicoDir, {
|
|
6346
|
+
recursive: true
|
|
6347
|
+
});
|
|
6348
|
+
return JSON.stringify(projectRulesPromptData, null, 2);
|
|
6377
6349
|
} catch (error) {
|
|
6378
6350
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
6379
6351
|
utils_logger.k.error(`\u{9879}\u{76EE}\u{89C4}\u{8303}\u{5185}\u{5BB9}\u{751F}\u{6210}\u{5931}\u{8D25}: ${errorMsg}`, {
|
|
6380
6352
|
tool: "initialize-project-standard",
|
|
6381
6353
|
project_name,
|
|
6382
6354
|
project_path,
|
|
6383
|
-
analysis_depth,
|
|
6384
6355
|
error: errorMsg
|
|
6385
6356
|
});
|
|
6386
6357
|
const errorResult = {
|
|
@@ -6388,31 +6359,23 @@ const initProjectStandard = {
|
|
|
6388
6359
|
message: "\u9879\u76EE\u89C4\u8303\u5185\u5BB9\u751F\u6210\u5931\u8D25",
|
|
6389
6360
|
error: errorMsg,
|
|
6390
6361
|
project_info: {
|
|
6391
|
-
name: project_name
|
|
6392
|
-
analysis_depth: analysis_depth
|
|
6362
|
+
name: project_name
|
|
6393
6363
|
}
|
|
6394
6364
|
};
|
|
6395
6365
|
return JSON.stringify(errorResult, null, 2);
|
|
6396
6366
|
}
|
|
6397
6367
|
}
|
|
6398
6368
|
};
|
|
6399
|
-
function generateProjectRulesPrompt(projectAnalysis, projectName,
|
|
6369
|
+
function generateProjectRulesPrompt(projectAnalysis, projectName, customRules) {
|
|
6400
6370
|
utils_logger.k.info("\u751F\u6210\u9879\u76EE\u89C4\u5219\u6587\u4EF6\u63D0\u793A\u8BCD\u6570\u636E", {
|
|
6401
|
-
projectName
|
|
6402
|
-
analysisDepth
|
|
6371
|
+
projectName
|
|
6403
6372
|
});
|
|
6404
6373
|
const customRulesSection = customRules ? `## \u{81EA}\u{5B9A}\u{4E49}\u{89C4}\u{5219}\u{8981}\u{6C42}
|
|
6405
6374
|
${customRules}` : '';
|
|
6406
|
-
let prompt = projectRulesPromptTemplate.replace('{{projectName}}', projectName).replace('{{
|
|
6375
|
+
let prompt = projectRulesPromptTemplate.replace('{{projectName}}', projectName).replace('{{projectAnalysis}}', projectAnalysis).replace('{{customRulesSection}}', customRulesSection);
|
|
6407
6376
|
return {
|
|
6408
6377
|
task: 'generate_project_rules',
|
|
6409
|
-
prompt: prompt
|
|
6410
|
-
systemPrompt: "",
|
|
6411
|
-
config: {
|
|
6412
|
-
model: "default",
|
|
6413
|
-
maxTokens: 4000,
|
|
6414
|
-
temperature: 0.7
|
|
6415
|
-
}
|
|
6378
|
+
prompt: prompt
|
|
6416
6379
|
};
|
|
6417
6380
|
}
|
|
6418
6381
|
var openai = __webpack_require__("./src/utils/openai.ts");
|
|
@@ -7478,7 +7441,7 @@ sequenceDiagram
|
|
|
7478
7441
|
\u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{7528}\u{6237}: \u{6E32}\u{67D3}\u{9875}\u{9762}\u{5185}\u{5BB9}
|
|
7479
7442
|
\`\`\`
|
|
7480
7443
|
|
|
7481
|
-
### 9.2 \u{66FF}\u{4EE3}\u{6D41}\u{7A0B}\u{FF08}\u{4E0D}\u{540C}\u{6709}\u{6548}\u{8DEF}\u{5F84}\u{FF09}
|
|
7444
|
+
### 9.2 \u{65B9}\u{6848}\u{4E8C}\u{FF1A}\u{66FF}\u{4EE3}\u{6D41}\u{7A0B}\u{FF08}\u{4E0D}\u{540C}\u{6709}\u{6548}\u{8DEF}\u{5F84}\u{FF09}
|
|
7482
7445
|
|
|
7483
7446
|
#### 9.2.1 \u{7EC4}\u{4EF6}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}\u{6D41}\u{7A0B}
|
|
7484
7447
|
\`\`\`mermaid
|
|
@@ -8029,26 +7992,6 @@ const appTemplatePrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{76
|
|
|
8029
7992
|
### 9.3 \u{7CFB}\u{7EDF}\u{6743}\u{9650}\u{8981}\u{6C42}
|
|
8030
7993
|
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}APP\u{9700}\u{8981}\u{7533}\u{8BF7}\u{7684}\u{7CFB}\u{7EDF}\u{6743}\u{9650}\u{53CA}\u{5176}\u{4F7F}\u{7528}\u{573A}\u{666F}]
|
|
8031
7994
|
|
|
8032
|
-
### 9.4 \u{8BBE}\u{5907}\u{7279}\u{6027}\u{9002}\u{914D}
|
|
8033
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5BF9}\u{4E0D}\u{540C}\u{8BBE}\u{5907}\u{7279}\u{6027}\u{FF08}\u{5982}\u{5218}\u{6D77}\u{5C4F}\u{3001}\u{5168}\u{9762}\u{5C4F}\u{7B49}\u{FF09}\u{7684}\u{9002}\u{914D}\u{8981}\u{6C42}]
|
|
8034
|
-
|
|
8035
|
-
## 10. \u{6027}\u{80FD}\u{4F18}\u{5316}\u{8981}\u{6C42}
|
|
8036
|
-
|
|
8037
|
-
### 10.1 \u{5185}\u{5B58}\u{4F18}\u{5316}
|
|
8038
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5185}\u{5B58}\u{4F7F}\u{7528}\u{4F18}\u{5316}\u{8981}\u{6C42}]
|
|
8039
|
-
|
|
8040
|
-
### 10.2 \u{7F51}\u{7EDC}\u{4F18}\u{5316}
|
|
8041
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{7F51}\u{7EDC}\u{8BF7}\u{6C42}\u{4F18}\u{5316}\u{8981}\u{6C42}]
|
|
8042
|
-
|
|
8043
|
-
### 10.3 \u{6E32}\u{67D3}\u{4F18}\u{5316}
|
|
8044
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{6E32}\u{67D3}\u{4F18}\u{5316}\u{8981}\u{6C42}]
|
|
8045
|
-
|
|
8046
|
-
### 10.4 \u{542F}\u{52A8}\u{4F18}\u{5316}
|
|
8047
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5E94}\u{7528}\u{542F}\u{52A8}\u{901F}\u{5EA6}\u{4F18}\u{5316}\u{8981}\u{6C42}]
|
|
8048
|
-
|
|
8049
|
-
### 10.5 \u{7535}\u{91CF}\u{4F18}\u{5316}
|
|
8050
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5E94}\u{7528}\u{7535}\u{91CF}\u{6D88}\u{8017}\u{4F18}\u{5316}\u{8981}\u{6C42}]
|
|
8051
|
-
|
|
8052
7995
|
## 11. \u{4E1A}\u{52A1}\u{5BF9}\u{8C61}\u{65F6}\u{5E8F}\u{56FE}
|
|
8053
7996
|
|
|
8054
7997
|
\`\`\`mermaid
|
|
@@ -8102,34 +8045,9 @@ sequenceDiagram
|
|
|
8102
8045
|
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{9875}\u{9762}\u{8BBF}\u{95EE}\u{65E5}\u{5FD7}
|
|
8103
8046
|
\`\`\`
|
|
8104
8047
|
|
|
8105
|
-
### 11.2 \u{66FF}\u{4EE3}\u{6D41}\u{7A0B}\u{FF08}\u{4E0D}\u{540C}\u{6709}\u{6548}\u{8DEF}\u{5F84}\u{FF09}
|
|
8106
|
-
|
|
8107
|
-
#### 11.2.1 \u{5E73}\u{53F0}\u{7279}\u{6027}\u{9002}\u{914D}\u{6D41}\u{7A0B}
|
|
8108
|
-
\`\`\`mermaid
|
|
8109
|
-
sequenceDiagram
|
|
8110
|
-
participant \u{7528}\u{6237}
|
|
8111
|
-
participant \u{79FB}\u{52A8}\u{7AEF}APP
|
|
8112
|
-
participant \u{8BBE}\u{5907}\u{4FE1}\u{606F}\u{68C0}\u{6D4B}\u{5668}
|
|
8113
|
-
participant \u{5E73}\u{53F0}\u{9002}\u{914D}\u{5668}
|
|
8114
|
-
participant UI\u{6E32}\u{67D3}\u{5F15}\u{64CE}
|
|
8115
|
-
|
|
8116
|
-
\u{7528}\u{6237}->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{542F}\u{52A8}\u{5E94}\u{7528}
|
|
8117
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{8BBE}\u{5907}\u{4FE1}\u{606F}\u{68C0}\u{6D4B}\u{5668}: \u{68C0}\u{6D4B}\u{8BBE}\u{5907}\u{4FE1}\u{606F}
|
|
8118
|
-
\u{8BBE}\u{5907}\u{4FE1}\u{606F}\u{68C0}\u{6D4B}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{8BBE}\u{5907}\u{4FE1}\u{606F}
|
|
8119
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{5E73}\u{53F0}\u{9002}\u{914D}\u{5668}: \u{8BF7}\u{6C42}\u{5E73}\u{53F0}\u{9002}\u{914D}
|
|
8120
|
-
alt iOS\u{8BBE}\u{5907}
|
|
8121
|
-
\u{5E73}\u{53F0}\u{9002}\u{914D}\u{5668}->>\u{5E73}\u{53F0}\u{9002}\u{914D}\u{5668}: \u{5E94}\u{7528}iOS\u{8BBE}\u{8BA1}\u{89C4}\u{8303}
|
|
8122
|
-
\u{5E73}\u{53F0}\u{9002}\u{914D}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}iOS\u{9002}\u{914D}\u{914D}\u{7F6E}
|
|
8123
|
-
else Android\u{8BBE}\u{5907}
|
|
8124
|
-
\u{5E73}\u{53F0}\u{9002}\u{914D}\u{5668}->>\u{5E73}\u{53F0}\u{9002}\u{914D}\u{5668}: \u{5E94}\u{7528}Android\u{8BBE}\u{8BA1}\u{89C4}\u{8303}
|
|
8125
|
-
\u{5E73}\u{53F0}\u{9002}\u{914D}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}Android\u{9002}\u{914D}\u{914D}\u{7F6E}
|
|
8126
|
-
end
|
|
8127
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>UI\u{6E32}\u{67D3}\u{5F15}\u{64CE}: \u{5E94}\u{7528}\u{9002}\u{914D}\u{914D}\u{7F6E}
|
|
8128
|
-
UI\u{6E32}\u{67D3}\u{5F15}\u{64CE}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{6E32}\u{67D3}\u{7ED3}\u{679C}
|
|
8129
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{663E}\u{793A}\u{9002}\u{914D}\u{540E}\u{7684}\u{754C}\u{9762}
|
|
8130
|
-
\`\`\`
|
|
8048
|
+
### 11.2 \u{65B9}\u{6848}\u{4E8C}\u{FF1A}\u{66FF}\u{4EE3}\u{6D41}\u{7A0B}\u{FF08}\u{4E0D}\u{540C}\u{6709}\u{6548}\u{8DEF}\u{5F84}\u{FF09}
|
|
8131
8049
|
|
|
8132
|
-
#### 11.2.
|
|
8050
|
+
#### 11.2.1 \u{624B}\u{52BF}\u{4EA4}\u{4E92}\u{8BBE}\u{8BA1}\u{6D41}\u{7A0B}
|
|
8133
8051
|
\`\`\`mermaid
|
|
8134
8052
|
sequenceDiagram
|
|
8135
8053
|
participant \u{7528}\u{6237}
|
|
@@ -8148,7 +8066,7 @@ sequenceDiagram
|
|
|
8148
8066
|
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{53CD}\u{9988}\u{624B}\u{52BF}\u{64CD}\u{4F5C}\u{7ED3}\u{679C}
|
|
8149
8067
|
\`\`\`
|
|
8150
8068
|
|
|
8151
|
-
#### 11.2.
|
|
8069
|
+
#### 11.2.2 \u{7EC4}\u{4EF6}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}\u{6D41}\u{7A0B}
|
|
8152
8070
|
\`\`\`mermaid
|
|
8153
8071
|
sequenceDiagram
|
|
8154
8072
|
participant \u{79FB}\u{52A8}\u{7AEF}APP
|
|
@@ -8210,25 +8128,6 @@ sequenceDiagram
|
|
|
8210
8128
|
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{663E}\u{793A}\u{6743}\u{9650}\u{8BF7}\u{6C42}\u{63D0}\u{793A}
|
|
8211
8129
|
\`\`\`
|
|
8212
8130
|
|
|
8213
|
-
#### 11.3.3 \u{65E0}\u{6548}UI\u{7EC4}\u{4EF6}\u{9519}\u{8BEF}
|
|
8214
|
-
\`\`\`mermaid
|
|
8215
|
-
sequenceDiagram
|
|
8216
|
-
participant \u{79FB}\u{52A8}\u{7AEF}APP
|
|
8217
|
-
participant \u{7EC4}\u{4EF6}\u{5E93}
|
|
8218
|
-
participant \u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}
|
|
8219
|
-
participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
|
|
8220
|
-
participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
|
|
8221
|
-
|
|
8222
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{7EC4}\u{4EF6}\u{5E93}: \u{8BF7}\u{6C42}\u{672A}\u{77E5}\u{7EC4}\u{4EF6}
|
|
8223
|
-
\u{7EC4}\u{4EF6}\u{5E93}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{7EC4}\u{4EF6}\u{4E0D}\u{5B58}\u{5728}\u{9519}\u{8BEF}
|
|
8224
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}: \u{83B7}\u{53D6}\u{9ED8}\u{8BA4}\u{7EC4}\u{4EF6}\u{89C4}\u{8303}
|
|
8225
|
-
\u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{9ED8}\u{8BA4}\u{7EC4}\u{4EF6}\u{5B9E}\u{73B0}
|
|
8226
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{4F7F}\u{7528}\u{9ED8}\u{8BA4}\u{7EC4}\u{4EF6}\u{66FF}\u{4EE3}
|
|
8227
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{7EC4}\u{4EF6}\u{9519}\u{8BEF}\u{65E5}\u{5FD7}
|
|
8228
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{9519}\u{8BEF}\u{6307}\u{6807}
|
|
8229
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{5C55}\u{793A}\u{9ED8}\u{8BA4}\u{7EC4}\u{4EF6}
|
|
8230
|
-
\`\`\`
|
|
8231
|
-
|
|
8232
8131
|
### 11.4 \u{8FB9}\u{7F18}\u{60C5}\u{51B5}\u{6D41}\u{7A0B}\u{FF08}\u{5E76}\u{53D1}\u{3001}\u{8D85}\u{65F6}\u{7B49}\u{FF09}
|
|
8233
8132
|
|
|
8234
8133
|
#### 11.4.1 \u{79BB}\u{7EBF}\u{529F}\u{80FD}\u{5904}\u{7406}
|
|
@@ -8250,30 +8149,7 @@ sequenceDiagram
|
|
|
8250
8149
|
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{663E}\u{793A}\u{79BB}\u{7EBF}\u{64CD}\u{4F5C}\u{6210}\u{529F}\u{63D0}\u{793A}
|
|
8251
8150
|
\`\`\`
|
|
8252
8151
|
|
|
8253
|
-
#### 11.4.2 \u{
|
|
8254
|
-
\`\`\`mermaid
|
|
8255
|
-
sequenceDiagram
|
|
8256
|
-
participant \u{7528}\u{6237}
|
|
8257
|
-
participant \u{79FB}\u{52A8}\u{7AEF}APP
|
|
8258
|
-
participant \u{7535}\u{6C60}\u{4F18}\u{5316}\u{68C0}\u{6D4B}\u{5668}
|
|
8259
|
-
participant \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}
|
|
8260
|
-
participant \u{540E}\u{53F0}\u{4EFB}\u{52A1}\u{7BA1}\u{7406}\u{5668}
|
|
8261
|
-
|
|
8262
|
-
\u{7528}\u{6237}->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{542F}\u{52A8}\u{5E94}\u{7528}
|
|
8263
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{7535}\u{6C60}\u{4F18}\u{5316}\u{68C0}\u{6D4B}\u{5668}: \u{68C0}\u{67E5}\u{7535}\u{6C60}\u{4F18}\u{5316}\u{8BBE}\u{7F6E}
|
|
8264
|
-
\u{7535}\u{6C60}\u{4F18}\u{5316}\u{68C0}\u{6D4B}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{7535}\u{6C60}\u{4F18}\u{5316}\u{72B6}\u{6001}
|
|
8265
|
-
alt \u{7535}\u{6C60}\u{4F18}\u{5316}\u{5DF2}\u{542F}\u{7528}
|
|
8266
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}: \u{5E94}\u{7528}\u{7535}\u{6C60}\u{4F18}\u{5316}\u{7B56}\u{7565}
|
|
8267
|
-
\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}->>\u{540E}\u{53F0}\u{4EFB}\u{52A1}\u{7BA1}\u{7406}\u{5668}: \u{9650}\u{5236}\u{540E}\u{53F0}\u{4EFB}\u{52A1}
|
|
8268
|
-
\u{540E}\u{53F0}\u{4EFB}\u{52A1}\u{7BA1}\u{7406}\u{5668}-->>\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}: \u{8FD4}\u{56DE}\u{9650}\u{5236}\u{7ED3}\u{679C}
|
|
8269
|
-
\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{4F18}\u{5316}\u{914D}\u{7F6E}
|
|
8270
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{5E94}\u{7528}\u{4F18}\u{5316}\u{914D}\u{7F6E}
|
|
8271
|
-
else \u{7535}\u{6C60}\u{4F18}\u{5316}\u{672A}\u{542F}\u{7528}
|
|
8272
|
-
\u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{6B63}\u{5E38}\u{8FD0}\u{884C}\u{5E94}\u{7528}
|
|
8273
|
-
end
|
|
8274
|
-
\`\`\`
|
|
8275
|
-
|
|
8276
|
-
#### 11.4.3 \u{590D}\u{6742}\u{5E03}\u{5C40}\u{5904}\u{7406}
|
|
8152
|
+
#### 11.4.2 \u{590D}\u{6742}\u{5E03}\u{5C40}\u{5904}\u{7406}
|
|
8277
8153
|
\`\`\`mermaid
|
|
8278
8154
|
sequenceDiagram
|
|
8279
8155
|
participant \u{79FB}\u{52A8}\u{7AEF}APP
|
|
@@ -9034,36 +8910,32 @@ const apiTemplatePrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{76
|
|
|
9034
8910
|
|**\u{529F}\u{80FD}\u{63CF}\u{8FF0}**|[\u{8BE6}\u{7EC6}\u{7684}\u{529F}\u{80FD}\u{63CF}\u{8FF0}]|
|
|
9035
8911
|
|**\u{8C03}\u{7528}\u{80FD}\u{529B}\u{57DF}/\u{4E2D}\u{5FC3}**|[\u{5982}\u{9002}\u{7528}\u{7684}\u{5176}\u{4ED6}\u{7CFB}\u{7EDF}\u{63A5}\u{53E3}]|
|
|
9036
8912
|
|
|
9037
|
-
## 3.
|
|
8913
|
+
## 3. \u{6570}\u{636E}\u{5EFA}\u{6A21}
|
|
8914
|
+
## 3.1 ER\u{903B}\u{8F91}\u{56FE}\u{8BBE}\u{8BA1}
|
|
9038
8915
|
|
|
9039
|
-
|
|
9040
|
-
|
|
8916
|
+
[\u{63CF}\u{8FF0}\u{6570}\u{636E}\u{5E93}\u{8868}\u{4E4B}\u{95F4}\u{7684}\u{5173}\u{7CFB}\u{548C}ER\u{56FE}\u{8BBE}\u{8BA1}]
|
|
8917
|
+
\`\`\`mermaid
|
|
8918
|
+
\`\`\`
|
|
9041
8919
|
|
|
9042
|
-
|
|
9043
|
-
[\u{5217}\u{51FA}\u{6240}\u{6709}\u{76F8}\u{5173}\u{7684}API\u{63A5}\u{53E3}]
|
|
8920
|
+
## 4. \u{6570}\u{636E}\u{8868}\u{5B9E}\u{4F53}\u{8BBE}\u{8BA1}
|
|
9044
8921
|
|
|
9045
|
-
|
|
9046
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{63A5}\u{53E3}\u{7684}\u{7248}\u{672C}\u{7BA1}\u{7406}\u{7B56}\u{7565}]
|
|
8922
|
+
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{6D89}\u{53CA}\u{7684}\u{6570}\u{636E}\u{8868}\u{5B9E}\u{4F53}\u{7ED3}\u{6784}\u{FF0C}\u{5305}\u{62EC}\u{5B57}\u{6BB5}\u{540D}\u{3001}\u{7C7B}\u{578B}\u{3001}\u{7EA6}\u{675F}\u{6761}\u{4EF6}\u{7B49}]
|
|
9047
8923
|
|
|
9048
|
-
|
|
9049
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{63A5}\u{53E3}\u{7684}\u{547D}\u{540D}\u{89C4}\u{8303}\u{548C}\u{8BBE}\u{8BA1}\u{539F}\u{5219}]
|
|
8924
|
+
## 5. API\u{63A5}\u{53E3}\u{8BBE}\u{8BA1}
|
|
9050
8925
|
|
|
9051
|
-
###
|
|
9052
|
-
[\u{
|
|
8926
|
+
### 5.1 \u{63A5}\u{53E3}\u{5217}\u{8868}
|
|
8927
|
+
[\u{5217}\u{51FA}\u{6240}\u{6709}\u{76F8}\u{5173}\u{7684}API\u{63A5}\u{53E3}]
|
|
9053
8928
|
|
|
9054
|
-
|
|
8929
|
+
### 5.2 \u{63A5}\u{53E3}\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}
|
|
9055
8930
|
|
|
9056
|
-
|
|
9057
|
-
####
|
|
8931
|
+
#### 5.2.1 \u{63A5}\u{53E3}1 - [\u{63A5}\u{53E3}\u{540D}\u{79F0}]
|
|
8932
|
+
#### 5.2.2 \u{57FA}\u{672C}\u{4FE1}\u{606F}
|
|
9058
8933
|
- **\u{63A5}\u{53E3}\u{5730}\u{5740}**: [URL\u{8DEF}\u{5F84}]
|
|
9059
|
-
- **\u{8BF7}\u{6C42}\u{65B9}\u{6CD5}**: [
|
|
9060
|
-
- **\u{534F}\u{8BAE}**: [
|
|
8934
|
+
- **\u{8BF7}\u{6C42}\u{65B9}\u{6CD5}**: [\u{53EA}\u{5141}\u{8BB8}\u{4F7F}\u{7528}POST\u{8BF7}\u{6C42}]
|
|
8935
|
+
- **\u{534F}\u{8BAE}**: [\u{53EA}\u{5141}\u{8BB8}\u{4F7F}\u{7528}HTTPS]
|
|
9061
8936
|
- **\u{5185}\u{5BB9}\u{7C7B}\u{578B}**: [application/json\u{7B49}]
|
|
9062
8937
|
|
|
9063
|
-
####
|
|
9064
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{8BE5}\u{63A5}\u{53E3}\u{7684}\u{529F}\u{80FD}]
|
|
9065
|
-
|
|
9066
|
-
#### 4.1.3 \u{8BF7}\u{6C42}\u{53C2}\u{6570}
|
|
8938
|
+
#### 5.2.3 \u{8BF7}\u{6C42}\u{53C2}\u{6570}
|
|
9067
8939
|
[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{8BF7}\u{6C42}\u{53C2}\u{6570}]
|
|
9068
8940
|
|
|
9069
8941
|
|\u{53C2}\u{6570}\u{540D}|\u{7C7B}\u{578B}|\u{662F}\u{5426}\u{5FC5}\u{586B}|\u{4F4D}\u{7F6E}|\u{8BF4}\u{660E}|
|
|
@@ -9071,12 +8943,7 @@ const apiTemplatePrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{76
|
|
|
9071
8943
|
|[\u{53C2}\u{6570}1]|[string/int\u{7B49}]|[\u{662F}/\u{5426}]|[query/body/path]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
|
|
9072
8944
|
|[\u{53C2}\u{6570}2]|[string/int\u{7B49}]|[\u{662F}/\u{5426}]|[query/body/path]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
|
|
9073
8945
|
|
|
9074
|
-
####
|
|
9075
|
-
\`\`\`json
|
|
9076
|
-
[\u{8BF7}\u{6C42}\u{793A}\u{4F8B}JSON]
|
|
9077
|
-
\`\`\`
|
|
9078
|
-
|
|
9079
|
-
#### 4.1.5 \u{54CD}\u{5E94}\u{53C2}\u{6570}
|
|
8946
|
+
#### 5.2.4 \u{54CD}\u{5E94}\u{53C2}\u{6570}
|
|
9080
8947
|
[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{54CD}\u{5E94}\u{53C2}\u{6570}]
|
|
9081
8948
|
|
|
9082
8949
|
|\u{53C2}\u{6570}\u{540D}|\u{7C7B}\u{578B}|\u{8BF4}\u{660E}|
|
|
@@ -9084,17 +8951,7 @@ const apiTemplatePrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{76
|
|
|
9084
8951
|
|[\u{53C2}\u{6570}1]|[string/object\u{7B49}]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
|
|
9085
8952
|
|[\u{53C2}\u{6570}2]|[string/object\u{7B49}]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
|
|
9086
8953
|
|
|
9087
|
-
####
|
|
9088
|
-
\`\`\`json
|
|
9089
|
-
[\u{6210}\u{529F}\u{54CD}\u{5E94}\u{793A}\u{4F8B}JSON]
|
|
9090
|
-
\`\`\`
|
|
9091
|
-
|
|
9092
|
-
#### 4.1.7 \u{9519}\u{8BEF}\u{54CD}\u{5E94}\u{793A}\u{4F8B}
|
|
9093
|
-
\`\`\`json
|
|
9094
|
-
[\u{9519}\u{8BEF}\u{54CD}\u{5E94}\u{793A}\u{4F8B}JSON]
|
|
9095
|
-
\`\`\`
|
|
9096
|
-
|
|
9097
|
-
#### 4.1.8 \u{9519}\u{8BEF}\u{7801}\u{8BF4}\u{660E}
|
|
8954
|
+
#### 5.2.5 \u{9519}\u{8BEF}\u{7801}\u{8BF4}\u{660E}
|
|
9098
8955
|
[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{8BE5}\u{63A5}\u{53E3}\u{7684}\u{9519}\u{8BEF}\u{7801}]
|
|
9099
8956
|
|
|
9100
8957
|
|\u{9519}\u{8BEF}\u{7801}|\u{8BF4}\u{660E}|
|
|
@@ -9102,133 +8959,12 @@ const apiTemplatePrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{76
|
|
|
9102
8959
|
|[\u{9519}\u{8BEF}\u{7801}1]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
|
|
9103
8960
|
|[\u{9519}\u{8BEF}\u{7801}2]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
|
|
9104
8961
|
|
|
9105
|
-
|
|
9106
|
-
[\u{
|
|
9107
|
-
|
|
9108
|
-
## 5. \u{6570}\u{636E}\u{7ED3}\u{6784}\u{5B9A}\u{4E49}
|
|
9109
|
-
|
|
9110
|
-
### 5.1 \u{8BF7}\u{6C42}\u{6570}\u{636E}\u{7ED3}\u{6784}
|
|
9111
|
-
[\u{8BE6}\u{7EC6}\u{5B9A}\u{4E49}\u{8BF7}\u{6C42}\u{6570}\u{636E}\u{7684}\u{7ED3}\u{6784}]
|
|
9112
|
-
|
|
9113
|
-
### 5.2 \u{54CD}\u{5E94}\u{6570}\u{636E}\u{7ED3}\u{6784}
|
|
9114
|
-
[\u{8BE6}\u{7EC6}\u{5B9A}\u{4E49}\u{54CD}\u{5E94}\u{6570}\u{636E}\u{7684}\u{7ED3}\u{6784}]
|
|
9115
|
-
|
|
9116
|
-
### 5.3 \u{6570}\u{636E}\u{6A21}\u{578B}\u{8BF4}\u{660E}
|
|
9117
|
-
[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{5404}\u{6570}\u{636E}\u{6A21}\u{578B}\u{7684}\u{5B57}\u{6BB5}\u{542B}\u{4E49}\u{548C}\u{7EA6}\u{675F}]
|
|
9118
|
-
|
|
9119
|
-
### 5.4 \u{6570}\u{636E}\u{9A8C}\u{8BC1}\u{89C4}\u{5219}
|
|
9120
|
-
[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{6570}\u{636E}\u{7684}\u{9A8C}\u{8BC1}\u{89C4}\u{5219}\u{548C}\u{7EA6}\u{675F}\u{6761}\u{4EF6}]
|
|
9121
|
-
|
|
9122
|
-
### 5.5 \u{6570}\u{636E}\u{8F6C}\u{6362}\u{89C4}\u{8303}
|
|
9123
|
-
[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{6570}\u{636E}\u{5728}\u{4E0D}\u{540C}\u{7CFB}\u{7EDF}\u{95F4}\u{7684}\u{8F6C}\u{6362}\u{89C4}\u{8303}]
|
|
8962
|
+
#### 5.2.6 \u{8BE6}\u{7EC6}\u{5B9E}\u{73B0}\u{903B}\u{8F91}
|
|
8963
|
+
[\u{5206}\u{6B65}\u{9AA4}\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{8BE5}\u{63A5}\u{53E3}\u{7684}\u{8BE6}\u{7EC6}\u{903B}\u{8F91}\u{FF0C}\u{5982}\u{679C}\u{5B58}\u{5728}sql\u{8BED}\u{53E5}\u{FF0C}\u{9700}\u{8981}\u{6DFB}\u{52A0}sql\u{8BED}\u{53E5}\u{5E76}\u{5728}sql\u{8BED}\u{53E5}\u{4E2D}\u{6DFB}\u{52A0}\u{6CE8}\u{91CA}\u{8BF4}\u{660E}]
|
|
9124
8964
|
|
|
9125
|
-
|
|
9126
|
-
[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{654F}\u{611F}\u{6570}\u{636E}\u{7684}\u{52A0}\u{5BC6}\u{548C}\u{5904}\u{7406}\u{8981}\u{6C42}]
|
|
9127
|
-
|
|
9128
|
-
## 6. \u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{8BF4}\u{660E}
|
|
9129
|
-
|
|
9130
|
-
### 6.1 \u{8C03}\u{7528}\u{65F6}\u{5E8F}
|
|
9131
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{8C03}\u{7528}\u{7684}\u{65F6}\u{5E8F}\u{903B}\u{8F91}]
|
|
9132
|
-
|
|
9133
|
-
### 6.2 \u{4E1A}\u{52A1}\u{6D41}\u{7A0B}
|
|
9134
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{6D89}\u{53CA}\u{7684}\u{4E1A}\u{52A1}\u{6D41}\u{7A0B}]
|
|
9135
|
-
|
|
9136
|
-
### 6.3 \u{5F02}\u{5E38}\u{5904}\u{7406}
|
|
9137
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{8C03}\u{7528}\u{5F02}\u{5E38}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
|
|
9138
|
-
|
|
9139
|
-
### 6.4 \u{91CD}\u{8BD5}\u{673A}\u{5236}
|
|
9140
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{8C03}\u{7528}\u{5931}\u{8D25}\u{65F6}\u{7684}\u{91CD}\u{8BD5}\u{673A}\u{5236}]
|
|
9141
|
-
|
|
9142
|
-
### 6.5 \u{72B6}\u{6001}\u{7BA1}\u{7406}
|
|
9143
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{8C03}\u{7528}\u{8FC7}\u{7A0B}\u{4E2D}\u{7684}\u{72B6}\u{6001}\u{7BA1}\u{7406}]
|
|
9144
|
-
|
|
9145
|
-
### 6.6 \u{8D85}\u{65F6}\u{5904}\u{7406}
|
|
9146
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{8C03}\u{7528}\u{7684}\u{8D85}\u{65F6}\u{5904}\u{7406}\u{673A}\u{5236}]
|
|
9147
|
-
|
|
9148
|
-
### 6.7 \u{5E76}\u{53D1}\u{5904}\u{7406}
|
|
9149
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{5E76}\u{53D1}\u{8C03}\u{7528}\u{5904}\u{7406}\u{673A}\u{5236}]
|
|
9150
|
-
|
|
9151
|
-
## 7. \u{8BA4}\u{8BC1}\u{4E0E}\u{6388}\u{6743}
|
|
9152
|
-
|
|
9153
|
-
### 7.1 \u{8BA4}\u{8BC1}\u{65B9}\u{5F0F}
|
|
9154
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{8BA4}\u{8BC1}\u{65B9}\u{5F0F}\u{FF0C}\u{5982}Token\u{3001}OAuth\u{7B49}]
|
|
9155
|
-
|
|
9156
|
-
### 7.2 \u{6388}\u{6743}\u{673A}\u{5236}
|
|
9157
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{6388}\u{6743}\u{673A}\u{5236}]
|
|
9158
|
-
|
|
9159
|
-
### 7.3 \u{5B89}\u{5168}\u{8981}\u{6C42}
|
|
9160
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{5B89}\u{5168}\u{8981}\u{6C42}]
|
|
9161
|
-
|
|
9162
|
-
### 7.4 \u{4F1A}\u{8BDD}\u{7BA1}\u{7406}
|
|
9163
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{4F1A}\u{8BDD}\u{7BA1}\u{7406}\u{673A}\u{5236}]
|
|
9164
|
-
|
|
9165
|
-
### 7.5 \u{8BBF}\u{95EE}\u{63A7}\u{5236}
|
|
9166
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{8BBF}\u{95EE}\u{63A7}\u{5236}\u{7B56}\u{7565}]
|
|
9167
|
-
|
|
9168
|
-
### 7.6 \u{5BA1}\u{8BA1}\u{65E5}\u{5FD7}
|
|
9169
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{5BA1}\u{8BA1}\u{65E5}\u{5FD7}\u{8981}\u{6C42}]
|
|
9170
|
-
|
|
9171
|
-
## 8. \u{6027}\u{80FD}\u{8981}\u{6C42}
|
|
9172
|
-
|
|
9173
|
-
### 8.1 \u{54CD}\u{5E94}\u{65F6}\u{95F4}
|
|
9174
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{54CD}\u{5E94}\u{65F6}\u{95F4}\u{8981}\u{6C42}]
|
|
9175
|
-
|
|
9176
|
-
### 8.2 \u{5E76}\u{53D1}\u{5904}\u{7406}
|
|
9177
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{5E76}\u{53D1}\u{5904}\u{7406}\u{80FD}\u{529B}\u{8981}\u{6C42}]
|
|
9178
|
-
|
|
9179
|
-
### 8.3 \u{9650}\u{6D41}\u{7B56}\u{7565}
|
|
9180
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{9650}\u{6D41}\u{7B56}\u{7565}]
|
|
9181
|
-
|
|
9182
|
-
### 8.4 \u{7F13}\u{5B58}\u{7B56}\u{7565}
|
|
9183
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{7F13}\u{5B58}\u{4F7F}\u{7528}\u{7B56}\u{7565}]
|
|
9184
|
-
|
|
9185
|
-
### 8.5 \u{8D1F}\u{8F7D}\u{5747}\u{8861}
|
|
9186
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{8D1F}\u{8F7D}\u{5747}\u{8861}\u{7B56}\u{7565}]
|
|
9187
|
-
|
|
9188
|
-
### 8.6 \u{76D1}\u{63A7}\u{6307}\u{6807}
|
|
9189
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{76D1}\u{63A7}\u{6307}\u{6807}\u{8981}\u{6C42}]
|
|
9190
|
-
|
|
9191
|
-
## 9. \u{4E1A}\u{52A1}\u{5BF9}\u{8C61}\u{65F6}\u{5E8F}\u{56FE}
|
|
9192
|
-
|
|
9193
|
-
\`\`\`mermaid
|
|
9194
|
-
sequenceDiagram
|
|
9195
|
-
participant \u{5BA2}\u{6237}\u{7AEF}
|
|
9196
|
-
participant API\u{7F51}\u{5173}
|
|
9197
|
-
participant \u{8BA4}\u{8BC1}\u{670D}\u{52A1}
|
|
9198
|
-
participant \u{6743}\u{9650}\u{670D}\u{52A1}
|
|
9199
|
-
participant \u{4E1A}\u{52A1}\u{670D}\u{52A1}
|
|
9200
|
-
participant \u{6570}\u{636E}\u{5E93}
|
|
9201
|
-
participant \u{7F13}\u{5B58}\u{670D}\u{52A1}
|
|
9202
|
-
participant \u{6D88}\u{606F}\u{961F}\u{5217}
|
|
9203
|
-
participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
|
|
9204
|
-
participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
|
|
9205
|
-
|
|
9206
|
-
\u{5BA2}\u{6237}\u{7AEF}->>API\u{7F51}\u{5173}: \u{53D1}\u{9001}API\u{8BF7}\u{6C42}
|
|
9207
|
-
API\u{7F51}\u{5173}->>\u{8BA4}\u{8BC1}\u{670D}\u{52A1}: \u{9A8C}\u{8BC1}\u{8BF7}\u{6C42}\u{4EE4}\u{724C}
|
|
9208
|
-
\u{8BA4}\u{8BC1}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{8BA4}\u{8BC1}\u{7ED3}\u{679C}
|
|
9209
|
-
API\u{7F51}\u{5173}->>\u{6743}\u{9650}\u{670D}\u{52A1}: \u{68C0}\u{67E5}\u{8BBF}\u{95EE}\u{6743}\u{9650}
|
|
9210
|
-
\u{6743}\u{9650}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{6743}\u{9650}\u{4FE1}\u{606F}
|
|
9211
|
-
API\u{7F51}\u{5173}->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
|
|
9212
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{67E5}\u{8BE2}\u{7F13}\u{5B58}\u{6570}\u{636E}
|
|
9213
|
-
alt \u{7F13}\u{5B58}\u{547D}\u{4E2D}
|
|
9214
|
-
\u{7F13}\u{5B58}\u{670D}\u{52A1}-->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8FD4}\u{56DE}\u{7F13}\u{5B58}\u{6570}\u{636E}
|
|
9215
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{7F13}\u{5B58}\u{547D}\u{4E2D}
|
|
9216
|
-
else \u{7F13}\u{5B58}\u{672A}\u{547D}\u{4E2D}
|
|
9217
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{6570}\u{636E}\u{5E93}: \u{67E5}\u{8BE2}\u{6570}\u{636E}
|
|
9218
|
-
\u{6570}\u{636E}\u{5E93}-->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8FD4}\u{56DE}\u{67E5}\u{8BE2}\u{7ED3}\u{679C}
|
|
9219
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{5B58}\u{50A8}\u{5230}\u{7F13}\u{5B58}
|
|
9220
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{6570}\u{636E}\u{5E93}\u{67E5}\u{8BE2}
|
|
9221
|
-
end
|
|
9222
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{6D88}\u{606F}\u{961F}\u{5217}: \u{53D1}\u{9001}\u{5F02}\u{6B65}\u{6D88}\u{606F}
|
|
9223
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}\u{6570}\u{636E}
|
|
9224
|
-
API\u{7F51}\u{5173}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{8BBF}\u{95EE}\u{65E5}\u{5FD7}
|
|
9225
|
-
API\u{7F51}\u{5173}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{6027}\u{80FD}\u{6307}\u{6807}
|
|
9226
|
-
API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
|
|
9227
|
-
\`\`\`
|
|
9228
|
-
|
|
9229
|
-
### 9.2 \u{66FF}\u{4EE3}\u{6D41}\u{7A0B}\u{FF08}\u{4E0D}\u{540C}\u{6709}\u{6548}\u{8DEF}\u{5F84}\u{FF09}
|
|
8965
|
+
## 6. \u{4E1A}\u{52A1}\u{5BF9}\u{8C61}\u{65F6}\u{5E8F}\u{56FE}
|
|
9230
8966
|
|
|
9231
|
-
####
|
|
8967
|
+
#### 6.2.1 \u{6B63}\u{5411}\u{6D41}\u{7A0B}
|
|
9232
8968
|
\`\`\`mermaid
|
|
9233
8969
|
sequenceDiagram
|
|
9234
8970
|
participant \u{5BA2}\u{6237}\u{7AEF}
|
|
@@ -9254,59 +8990,9 @@ sequenceDiagram
|
|
|
9254
8990
|
end
|
|
9255
8991
|
\`\`\`
|
|
9256
8992
|
|
|
9257
|
-
|
|
9258
|
-
\`\`\`mermaid
|
|
9259
|
-
sequenceDiagram
|
|
9260
|
-
participant \u{5BA2}\u{6237}\u{7AEF}
|
|
9261
|
-
participant API\u{7F51}\u{5173}
|
|
9262
|
-
participant \u{4E1A}\u{52A1}\u{670D}\u{52A1}
|
|
9263
|
-
participant \u{6570}\u{636E}\u{5E93}
|
|
9264
|
-
participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
|
|
9265
|
-
participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
|
|
9266
|
-
|
|
9267
|
-
\u{5BA2}\u{6237}\u{7AEF}->>API\u{7F51}\u{5173}: \u{53D1}\u{9001}API\u{8BF7}\u{6C42}
|
|
9268
|
-
API\u{7F51}\u{5173}->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
|
|
9269
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{6570}\u{636E}\u{5E93}: \u{67E5}\u{8BE2}\u{6570}\u{636E}
|
|
9270
|
-
\u{6570}\u{636E}\u{5E93}-->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8FD4}\u{56DE}\u{6570}\u{636E}\u{5E93}\u{9519}\u{8BEF}
|
|
9271
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{9519}\u{8BEF}\u{65E5}\u{5FD7}
|
|
9272
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{9519}\u{8BEF}\u{6307}\u{6807}
|
|
9273
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{6267}\u{884C}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{903B}\u{8F91}
|
|
9274
|
-
alt \u{9519}\u{8BEF}\u{53EF}\u{6062}\u{590D}
|
|
9275
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{6570}\u{636E}\u{5E93}: \u{91CD}\u{8BD5}\u{67E5}\u{8BE2}
|
|
9276
|
-
\u{6570}\u{636E}\u{5E93}-->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8FD4}\u{56DE}\u{67E5}\u{8BE2}\u{7ED3}\u{679C}
|
|
9277
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}\u{6570}\u{636E}
|
|
9278
|
-
API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
|
|
9279
|
-
else \u{9519}\u{8BEF}\u{4E0D}\u{53EF}\u{6062}\u{590D}
|
|
9280
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{9519}\u{8BEF}\u{54CD}\u{5E94}
|
|
9281
|
-
API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}500\u{9519}\u{8BEF}
|
|
9282
|
-
end
|
|
9283
|
-
\`\`\`
|
|
8993
|
+
### 6.3 \u{5F02}\u{5E38}\u{6D41}\u{7A0B}\u{FF08}\u{903B}\u{8F91}\u{4E2D}\u{51FA}\u{73B0}\u{5F02}\u{5E38}\u{60C5}\u{51B5}\u{7684}\u{4E0B}\u{7684}\u{5904}\u{7406}\u{FF09}
|
|
9284
8994
|
|
|
9285
|
-
####
|
|
9286
|
-
\`\`\`mermaid
|
|
9287
|
-
sequenceDiagram
|
|
9288
|
-
participant \u{5F00}\u{53D1}\u{8005}
|
|
9289
|
-
participant API\u{7F51}\u{5173}
|
|
9290
|
-
participant \u{6587}\u{6863}\u{751F}\u{6210}\u{5668}
|
|
9291
|
-
participant \u{7248}\u{672C}\u{7BA1}\u{7406}\u{5668}
|
|
9292
|
-
participant \u{5B58}\u{50A8}\u{670D}\u{52A1}
|
|
9293
|
-
participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
|
|
9294
|
-
|
|
9295
|
-
\u{5F00}\u{53D1}\u{8005}->>API\u{7F51}\u{5173}: \u{90E8}\u{7F72}\u{65B0}API\u{7248}\u{672C}
|
|
9296
|
-
API\u{7F51}\u{5173}->>\u{6587}\u{6863}\u{751F}\u{6210}\u{5668}: \u{89E6}\u{53D1}\u{6587}\u{6863}\u{751F}\u{6210}
|
|
9297
|
-
\u{6587}\u{6863}\u{751F}\u{6210}\u{5668}->>\u{7248}\u{672C}\u{7BA1}\u{7406}\u{5668}: \u{83B7}\u{53D6}API\u{89C4}\u{8303}
|
|
9298
|
-
\u{7248}\u{672C}\u{7BA1}\u{7406}\u{5668}-->>\u{6587}\u{6863}\u{751F}\u{6210}\u{5668}: \u{8FD4}\u{56DE}API\u{5B9A}\u{4E49}
|
|
9299
|
-
\u{6587}\u{6863}\u{751F}\u{6210}\u{5668}->>\u{6587}\u{6863}\u{751F}\u{6210}\u{5668}: \u{89E3}\u{6790}API\u{7ED3}\u{6784}
|
|
9300
|
-
\u{6587}\u{6863}\u{751F}\u{6210}\u{5668}->>\u{5B58}\u{50A8}\u{670D}\u{52A1}: \u{4FDD}\u{5B58}\u{6587}\u{6863}\u{7248}\u{672C}
|
|
9301
|
-
\u{5B58}\u{50A8}\u{670D}\u{52A1}-->>\u{6587}\u{6863}\u{751F}\u{6210}\u{5668}: \u{786E}\u{8BA4}\u{4FDD}\u{5B58}\u{6210}\u{529F}
|
|
9302
|
-
\u{6587}\u{6863}\u{751F}\u{6210}\u{5668}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{6587}\u{6863}\u{751F}\u{6210}\u{7ED3}\u{679C}
|
|
9303
|
-
API\u{7F51}\u{5173}->>\u{5F00}\u{53D1}\u{8005}: \u{901A}\u{77E5}\u{6587}\u{6863}\u{751F}\u{6210}\u{5B8C}\u{6210}
|
|
9304
|
-
API\u{7F51}\u{5173}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{6587}\u{6863}\u{751F}\u{6210}\u{65E5}\u{5FD7}
|
|
9305
|
-
\`\`\`
|
|
9306
|
-
|
|
9307
|
-
### 9.3 \u{5F02}\u{5E38}\u{6D41}\u{7A0B}\u{FF08}\u{9519}\u{8BEF}\u{5904}\u{7406}\u{FF09}
|
|
9308
|
-
|
|
9309
|
-
#### 9.3.1 \u{9650}\u{6D41}\u{5904}\u{7406}
|
|
8995
|
+
#### 6.3.1 xx\u{5F02}\u{5E38}\u{5904}\u{7406}\u{6D41}\u{7A0B}
|
|
9310
8996
|
\`\`\`mermaid
|
|
9311
8997
|
sequenceDiagram
|
|
9312
8998
|
participant \u{5BA2}\u{6237}\u{7AEF}
|
|
@@ -9325,7 +9011,7 @@ sequenceDiagram
|
|
|
9325
9011
|
end
|
|
9326
9012
|
\`\`\`
|
|
9327
9013
|
|
|
9328
|
-
####
|
|
9014
|
+
#### 6.3.2 xx\u{5F02}\u{5E38}\u{5904}\u{7406}\u{6D41}\u{7A0B}
|
|
9329
9015
|
\`\`\`mermaid
|
|
9330
9016
|
sequenceDiagram
|
|
9331
9017
|
participant \u{5BA2}\u{6237}\u{7AEF}
|
|
@@ -9343,193 +9029,68 @@ sequenceDiagram
|
|
|
9343
9029
|
API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}400\u{9519}\u{8BEF}\u{53CA}\u{9519}\u{8BEF}\u{8BE6}\u{60C5}
|
|
9344
9030
|
\`\`\`
|
|
9345
9031
|
|
|
9346
|
-
|
|
9347
|
-
\`\`\`mermaid
|
|
9348
|
-
sequenceDiagram
|
|
9349
|
-
participant \u{5F00}\u{53D1}\u{8005}
|
|
9350
|
-
participant API\u{7F51}\u{5173}
|
|
9351
|
-
participant Schema\u{9A8C}\u{8BC1}\u{5668}
|
|
9352
|
-
participant \u{7248}\u{672C}\u{7BA1}\u{7406}\u{5668}
|
|
9353
|
-
participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
|
|
9354
|
-
participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
|
|
9355
|
-
|
|
9356
|
-
\u{5F00}\u{53D1}\u{8005}->>API\u{7F51}\u{5173}: \u{90E8}\u{7F72}API\u{5B9A}\u{4E49}
|
|
9357
|
-
API\u{7F51}\u{5173}->>Schema\u{9A8C}\u{8BC1}\u{5668}: \u{9A8C}\u{8BC1}API Schema
|
|
9358
|
-
Schema\u{9A8C}\u{8BC1}\u{5668}->>\u{7248}\u{672C}\u{7BA1}\u{7406}\u{5668}: \u{83B7}\u{53D6}\u{5386}\u{53F2}\u{7248}\u{672C}
|
|
9359
|
-
\u{7248}\u{672C}\u{7BA1}\u{7406}\u{5668}-->>Schema\u{9A8C}\u{8BC1}\u{5668}: \u{8FD4}\u{56DE}\u{5386}\u{53F2}\u{5B9A}\u{4E49}
|
|
9360
|
-
Schema\u{9A8C}\u{8BC1}\u{5668}->>Schema\u{9A8C}\u{8BC1}\u{5668}: \u{6267}\u{884C}\u{517C}\u{5BB9}\u{6027}\u{68C0}\u{67E5}
|
|
9361
|
-
alt Schema\u{6709}\u{6548}
|
|
9362
|
-
Schema\u{9A8C}\u{8BC1}\u{5668}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{9A8C}\u{8BC1}\u{901A}\u{8FC7}
|
|
9363
|
-
API\u{7F51}\u{5173}->>\u{5F00}\u{53D1}\u{8005}: \u{901A}\u{77E5}\u{90E8}\u{7F72}\u{6210}\u{529F}
|
|
9364
|
-
else Schema\u{65E0}\u{6548}
|
|
9365
|
-
Schema\u{9A8C}\u{8BC1}\u{5668}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{9A8C}\u{8BC1}\u{5931}\u{8D25}
|
|
9366
|
-
API\u{7F51}\u{5173}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}Schema\u{9519}\u{8BEF}
|
|
9367
|
-
API\u{7F51}\u{5173}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{9A8C}\u{8BC1}\u{5931}\u{8D25}\u{6307}\u{6807}
|
|
9368
|
-
API\u{7F51}\u{5173}->>\u{5F00}\u{53D1}\u{8005}: \u{8FD4}\u{56DE}\u{9519}\u{8BEF}\u{8BE6}\u{60C5}\u{548C}\u{4FEE}\u{590D}\u{5EFA}\u{8BAE}
|
|
9369
|
-
end
|
|
9370
|
-
\`\`\`
|
|
9371
|
-
|
|
9372
|
-
### 9.4 \u{8FB9}\u{7F18}\u{60C5}\u{51B5}\u{6D41}\u{7A0B}\u{FF08}\u{5E76}\u{53D1}\u{3001}\u{8D85}\u{65F6}\u{7B49}\u{FF09}
|
|
9032
|
+
### 6.4 \u{8FB9}\u{7F18}\u{60C5}\u{51B5}\u{6D41}\u{7A0B}\u{FF08}\u{5E76}\u{53D1}\u{3001}\u{8D85}\u{65F6}\u{3001}\u{6570}\u{636E}\u{8FB9}\u{754C}\u{7B49}\u{FF09}
|
|
9373
9033
|
|
|
9374
|
-
####
|
|
9034
|
+
#### 6.4.1 \u{5E76}\u{53D1}\u{51B2}\u{7A81}\u{5904}\u{7406}
|
|
9375
9035
|
\`\`\`mermaid
|
|
9376
9036
|
sequenceDiagram
|
|
9377
9037
|
participant \u{5BA2}\u{6237}\u{7AEF}
|
|
9378
9038
|
participant API\u{7F51}\u{5173}
|
|
9379
|
-
participant \u{7248}\u{672C}\u{7BA1}\u{7406}\u{5668}
|
|
9380
|
-
participant \u{4E1A}\u{52A1}\u{670D}\u{52A1}v1
|
|
9381
|
-
participant \u{4E1A}\u{52A1}\u{670D}\u{52A1}v2
|
|
9382
|
-
|
|
9383
|
-
\u{5BA2}\u{6237}\u{7AEF}->>API\u{7F51}\u{5173}: \u{53D1}\u{9001}\u{5E26}\u{7248}\u{672C}\u{53F7}\u{7684}API\u{8BF7}\u{6C42}
|
|
9384
|
-
API\u{7F51}\u{5173}->>\u{7248}\u{672C}\u{7BA1}\u{7406}\u{5668}: \u{89E3}\u{6790}API\u{7248}\u{672C}
|
|
9385
|
-
\u{7248}\u{672C}\u{7BA1}\u{7406}\u{5668}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{7248}\u{672C}\u{4FE1}\u{606F}
|
|
9386
|
-
alt \u{8BF7}\u{6C42}v1\u{7248}\u{672C}
|
|
9387
|
-
API\u{7F51}\u{5173}->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}v1: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
|
|
9388
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}v1-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
|
|
9389
|
-
else \u{8BF7}\u{6C42}v2\u{7248}\u{672C}
|
|
9390
|
-
API\u{7F51}\u{5173}->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}v2: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
|
|
9391
|
-
\u{4E1A}\u{52A1}\u{670D}\u{52A1}v2-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
|
|
9392
|
-
end
|
|
9393
|
-
API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
|
|
9394
|
-
\`\`\`
|
|
9395
|
-
|
|
9396
|
-
#### 9.4.2 \u{6027}\u{80FD}/\u{53EF}\u{6269}\u{5C55}\u{6027}\u{8981}\u{6C42}
|
|
9397
|
-
\`\`\`mermaid
|
|
9398
|
-
sequenceDiagram
|
|
9399
|
-
participant \u{5BA2}\u{6237}\u{7AEF}
|
|
9400
|
-
participant \u{8D1F}\u{8F7D}\u{5747}\u{8861}\u{5668}
|
|
9401
|
-
participant API\u{7F51}\u{5173}1
|
|
9402
|
-
participant API\u{7F51}\u{5173}2
|
|
9403
|
-
participant \u{4E1A}\u{52A1}\u{670D}\u{52A1}
|
|
9404
9039
|
participant \u{6570}\u{636E}\u{5E93}
|
|
9040
|
+
participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
|
|
9405
9041
|
participant \u{7F13}\u{5B58}\u{670D}\u{52A1}
|
|
9406
|
-
participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
|
|
9407
9042
|
|
|
9408
|
-
\u{
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
9412
|
-
|
|
9413
|
-
\u{
|
|
9414
|
-
else \u{
|
|
9415
|
-
\u{
|
|
9416
|
-
\u{6570}\u{636E}\u{5E93}
|
|
9417
|
-
\u{
|
|
9043
|
+
alt \u{9AD8}\u{5E76}\u{53D1}\u{573A}\u{666F}
|
|
9044
|
+
\u{5BA2}\u{6237}\u{7AEF}->>API\u{7F51}\u{5173}: \u{5E76}\u{53D1}\u{8BF7}\u{6C42}
|
|
9045
|
+
API\u{7F51}\u{5173}->>\u{6570}\u{636E}\u{5E93}: \u{6267}\u{884C}\u{6570}\u{636E}\u{64CD}\u{4F5C}
|
|
9046
|
+
\u{6570}\u{636E}\u{5E93}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{7ED3}\u{679C}
|
|
9047
|
+
API\u{7F51}\u{5173}->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{7F13}\u{5B58}\u{54CD}\u{5E94}\u{6570}\u{636E}
|
|
9048
|
+
API\u{7F51}\u{5173}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{5E76}\u{53D1}\u{51B2}\u{7A81}
|
|
9049
|
+
else \u{975E}\u{9AD8}\u{5E76}\u{53D1}\u{573A}\u{666F}
|
|
9050
|
+
API\u{7F51}\u{5173}->>\u{6570}\u{636E}\u{5E93}: \u{6267}\u{884C}\u{6570}\u{636E}\u{64CD}\u{4F5C}
|
|
9051
|
+
\u{6570}\u{636E}\u{5E93}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{7ED3}\u{679C}
|
|
9052
|
+
API\u{7F51}\u{5173}->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{7F13}\u{5B58}\u{54CD}\u{5E94}\u{6570}\u{636E}
|
|
9418
9053
|
end
|
|
9419
|
-
\u{
|
|
9420
|
-
API\u{7F51}\u{5173}1->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{6027}\u{80FD}\u{6307}\u{6807}
|
|
9421
|
-
API\u{7F51}\u{5173}1->>\u{8D1F}\u{8F7D}\u{5747}\u{8861}\u{5668}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
|
|
9422
|
-
\u{8D1F}\u{8F7D}\u{5747}\u{8861}\u{5668}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
|
|
9054
|
+
API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
|
|
9423
9055
|
\`\`\`
|
|
9424
|
-
|
|
9425
|
-
#### 9.4.3 API\u{6027}\u{80FD}\u{964D}\u{7EA7}\u{5904}\u{7406}
|
|
9056
|
+
#### 6.4.2 \u{8D85}\u{65F6}\u{5904}\u{7406}
|
|
9426
9057
|
\`\`\`mermaid
|
|
9427
9058
|
sequenceDiagram
|
|
9428
9059
|
participant \u{5BA2}\u{6237}\u{7AEF}
|
|
9429
9060
|
participant API\u{7F51}\u{5173}
|
|
9430
|
-
participant \u{
|
|
9431
|
-
participant \u{964D}\u{7EA7}\u{7B56}\u{7565}\u{5668}
|
|
9432
|
-
participant \u{7F13}\u{5B58}\u{670D}\u{52A1}
|
|
9061
|
+
participant \u{4E1A}\u{52A1}\u{670D}\u{52A1}
|
|
9433
9062
|
participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
|
|
9063
|
+
participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
|
|
9064
|
+
participant \u{5907}\u{7528}\u{670D}\u{52A1}
|
|
9434
9065
|
|
|
9435
|
-
\u{5BA2}\u{6237}\u{7AEF}->>API\u{7F51}\u{5173}: \u{53D1}\u{9001}
|
|
9436
|
-
API\u{7F51}\u{5173}->>\u{
|
|
9437
|
-
\u{
|
|
9438
|
-
|
|
9439
|
-
|
|
9440
|
-
|
|
9441
|
-
|
|
9442
|
-
|
|
9443
|
-
|
|
9444
|
-
|
|
9445
|
-
|
|
9446
|
-
API\u{7F51}\u{5173}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{964D}\u{7EA7}\u{4E8B}\u{4EF6}
|
|
9447
|
-
end
|
|
9448
|
-
API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
|
|
9066
|
+
\u{5BA2}\u{6237}\u{7AEF}->>API\u{7F51}\u{5173}: \u{53D1}\u{9001}\u{5305}\u{542B}\u{65E0}\u{6548}\u{6570}\u{636E}\u{7684}\u{8BF7}\u{6C42}
|
|
9067
|
+
API\u{7F51}\u{5173}->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
|
|
9068
|
+
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{8D85}\u{65F6}\u{4E8B}\u{4EF6}
|
|
9069
|
+
\u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{4E0A}\u{62A5}\u{8D85}\u{65F6}\u{6307}\u{6807}
|
|
9070
|
+
\u{4E1A}\u{52A1}\u{670D}\u{52A1}-->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{91CD}\u{8BD5}\u{8BF7}\u{6C42}
|
|
9071
|
+
\u{4E1A}\u{52A1}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}408\u{9519}\u{8BEF}(\u{8BF7}\u{6C42}\u{8D85}\u{65F6})
|
|
9072
|
+
API\u{7F51}\u{5173}->>\u{5907}\u{7528}\u{670D}\u{52A1}: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
|
|
9073
|
+
\u{5907}\u{7528}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{9519}\u{8BEF}\u{54CD}\u{5E94}
|
|
9074
|
+
API\u{7F51}\u{5173}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{65E5}\u{5FD7}\u{8BB0}\u{5F55}\u{5907}\u{7528}\u{670D}\u{52A1}\u{54CD}\u{5E94}
|
|
9075
|
+
API\u{7F51}\u{5173}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{5907}\u{7528}\u{670D}\u{52A1}\u{5931}\u{8D25}
|
|
9076
|
+
API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{5907}\u{7528}\u{670D}\u{52A1}\u{54CD}\u{5E94}
|
|
9449
9077
|
\`\`\`
|
|
9450
9078
|
|
|
9451
|
-
##
|
|
9079
|
+
## 7. \u{4E1A}\u{52A1}\u{72B6}\u{6001}\u{63CF}\u{8FF0}
|
|
9452
9080
|
|
|
9453
9081
|
| | | |
|
|
9454
9082
|
|---|---|---|
|
|
9455
9083
|
|**\u{72B6}\u{6001}\u{7F16}\u{53F7}**|**\u{72B6}\u{6001}\u{540D}\u{79F0}**|**\u{63CF}\u{8FF0}**|
|
|
9456
|
-
|01|\u{
|
|
9457
|
-
|02|\u{
|
|
9458
|
-
|03|\u{4E1A}\u{52A1}\u{5904}\u{7406}|\u{6B63}\u{5728}\u{5904}\u{7406}\u{4E1A}\u{52A1}\u{903B}\u{8F91}|
|
|
9459
|
-
|04|\u{6570}\u{636E}\u{64CD}\u{4F5C}|\u{6B63}\u{5728}\u{6267}\u{884C}\u{6570}\u{636E}\u{64CD}\u{4F5C}|
|
|
9460
|
-
|05|\u{54CD}\u{5E94}\u{8FD4}\u{56DE}|\u{6B63}\u{5728}\u{8FD4}\u{56DE}\u{54CD}\u{5E94}|
|
|
9461
|
-
|06|\u{5904}\u{7406}\u{5B8C}\u{6210}|\u{8BF7}\u{6C42}\u{5904}\u{7406}\u{5B8C}\u{6210}|
|
|
9084
|
+
|01|\u{6536}\u{5230}\u{5BA1}\u{6838}\u{7533}\u{8BF7}|\u{5F53}\u{63A5}\u{6536}\u{5230}\u{5BA1}\u{6838}\u{7533}\u{8BF7}\u{65F6}\u{FF0C}\u{7CFB}\u{7EDF}\u{4F1A}\u{8BB0}\u{5F55}\u{7533}\u{8BF7}\u{4FE1}\u{606F}\u{5E76}\u{8FD4}\u{56DE}\u{5BA1}\u{6838}\u{4E2D}\u{72B6}\u{6001}|
|
|
9085
|
+
|02|\u{5BA1}\u{6279}\u{5BA1}\u{6838}\u{72B6}\u{6001}|\u{5F53}\u{5BA1}\u{6279}\u{4EBA}\u{5BF9}\u{7533}\u{8BF7}\u{8FDB}\u{884C}\u{5BA1}\u{6279}\u{540E}\u{FF0C}\u{7CFB}\u{7EDF}\u{4F1A}\u{66F4}\u{65B0}\u{5BA1}\u{6838}\u{72B6}\u{6001}\u{5E76}\u{8FD4}\u{56DE}\u{5BA1}\u{6279}\u{7ED3}\u{679C}|
|
|
9462
9086
|
|[\u{6DFB}\u{52A0}\u{66F4}\u{591A}\u{72B6}\u{6001}...]||
|
|
9463
9087
|
|
|
9464
|
-
##
|
|
9465
|
-
|
|
9466
|
-
### 11.1 \u{8BF7}\u{6C42}\u{5904}\u{7406}\u{903B}\u{8F91}
|
|
9467
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{8BF7}\u{6C42}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
|
|
9468
|
-
|
|
9469
|
-
### 11.2 \u{53C2}\u{6570}\u{9A8C}\u{8BC1}\u{903B}\u{8F91}
|
|
9470
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{8BF7}\u{6C42}\u{53C2}\u{6570}\u{7684}\u{9A8C}\u{8BC1}\u{903B}\u{8F91}]
|
|
9471
|
-
|
|
9472
|
-
### 11.3 \u{4E1A}\u{52A1}\u{5904}\u{7406}\u{903B}\u{8F91}
|
|
9473
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{4E1A}\u{52A1}\u{903B}\u{8F91}\u{7684}\u{5904}\u{7406}\u{8FC7}\u{7A0B}]
|
|
9474
|
-
|
|
9475
|
-
### 11.4 \u{6570}\u{636E}\u{64CD}\u{4F5C}\u{903B}\u{8F91}
|
|
9476
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{6570}\u{636E}\u{64CD}\u{4F5C}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
|
|
9477
|
-
|
|
9478
|
-
### 11.5 \u{54CD}\u{5E94}\u{751F}\u{6210}\u{903B}\u{8F91}
|
|
9479
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{54CD}\u{5E94}\u{6570}\u{636E}\u{7684}\u{751F}\u{6210}\u{903B}\u{8F91}]
|
|
9480
|
-
|
|
9481
|
-
### 11.6 \u{9519}\u{8BEF}\u{5904}\u{7406}\u{903B}\u{8F91}
|
|
9482
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9519}\u{8BEF}\u{60C5}\u{51B5}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
|
|
9483
|
-
|
|
9484
|
-
### 11.7 \u{4E8B}\u{52A1}\u{7BA1}\u{7406}\u{903B}\u{8F91}
|
|
9485
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{8C03}\u{7528}\u{4E2D}\u{7684}\u{4E8B}\u{52A1}\u{7BA1}\u{7406}\u{903B}\u{8F91}]
|
|
9486
|
-
|
|
9487
|
-
## 12. \u{76D1}\u{63A7}\u{4E0E}\u{65E5}\u{5FD7}
|
|
9488
|
-
|
|
9489
|
-
### 12.1 \u{76D1}\u{63A7}\u{6307}\u{6807}
|
|
9490
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{76D1}\u{63A7}\u{6307}\u{6807}]
|
|
9491
|
-
|
|
9492
|
-
### 12.2 \u{65E5}\u{5FD7}\u{8BB0}\u{5F55}
|
|
9493
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{65E5}\u{5FD7}\u{8BB0}\u{5F55}\u{8981}\u{6C42}]
|
|
9494
|
-
|
|
9495
|
-
### 12.3 \u{544A}\u{8B66}\u{673A}\u{5236}
|
|
9496
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{544A}\u{8B66}\u{673A}\u{5236}]
|
|
9497
|
-
|
|
9498
|
-
### 12.4 \u{6027}\u{80FD}\u{5206}\u{6790}
|
|
9499
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{6027}\u{80FD}\u{5206}\u{6790}\u{8981}\u{6C42}]
|
|
9500
|
-
|
|
9501
|
-
### 12.5 \u{9519}\u{8BEF}\u{8FFD}\u{8E2A}
|
|
9502
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{9519}\u{8BEF}\u{8FFD}\u{8E2A}\u{8981}\u{6C42}]
|
|
9503
|
-
|
|
9504
|
-
### 12.6 \u{8BBF}\u{95EE}\u{7EDF}\u{8BA1}
|
|
9505
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{7684}\u{8BBF}\u{95EE}\u{7EDF}\u{8BA1}\u{8981}\u{6C42}]
|
|
9506
|
-
|
|
9507
|
-
## 13. \u{6D4B}\u{8BD5}\u{8981}\u{6C42}
|
|
9508
|
-
|
|
9509
|
-
### 13.1 \u{529F}\u{80FD}\u{6D4B}\u{8BD5}
|
|
9510
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{529F}\u{80FD}\u{7684}\u{6D4B}\u{8BD5}\u{8981}\u{6C42}]
|
|
9511
|
-
|
|
9512
|
-
### 13.2 \u{6027}\u{80FD}\u{6D4B}\u{8BD5}
|
|
9513
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{6027}\u{80FD}\u{7684}\u{6D4B}\u{8BD5}\u{8981}\u{6C42}]
|
|
9514
|
-
|
|
9515
|
-
### 13.3 \u{5B89}\u{5168}\u{6D4B}\u{8BD5}
|
|
9516
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{5B89}\u{5168}\u{6027}\u{7684}\u{6D4B}\u{8BD5}\u{8981}\u{6C42}]
|
|
9517
|
-
|
|
9518
|
-
### 13.4 \u{517C}\u{5BB9}\u{6027}\u{6D4B}\u{8BD5}
|
|
9519
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{517C}\u{5BB9}\u{6027}\u{7684}\u{6D4B}\u{8BD5}\u{8981}\u{6C42}]
|
|
9520
|
-
|
|
9521
|
-
### 13.5 \u{538B}\u{529B}\u{6D4B}\u{8BD5}
|
|
9522
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{538B}\u{529B}\u{6D4B}\u{8BD5}\u{7684}\u{8981}\u{6C42}]
|
|
9523
|
-
|
|
9524
|
-
### 13.6 \u{56DE}\u{5F52}\u{6D4B}\u{8BD5}
|
|
9525
|
-
[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}API\u{56DE}\u{5F52}\u{6D4B}\u{8BD5}\u{7684}\u{8981}\u{6C42}]
|
|
9526
|
-
|
|
9527
|
-
## 14. \u{4F2A}\u{4EE3}\u{7801}\u{793A}\u{4F8B}
|
|
9088
|
+
## 8. \u{4F2A}\u{4EE3}\u{7801}\u{793A}\u{4F8B}
|
|
9528
9089
|
|
|
9529
9090
|
\`\`\`gherkin
|
|
9530
9091
|
Scenario Outline: \u{7528}\u{6237}\u{901A}\u{8FC7}API\u{67E5}\u{8BE2}\u{8BA2}\u{5355}\u{4FE1}\u{606F}
|
|
9531
9092
|
Given \u{7528}\u{6237}\u{5DF2}\u{901A}\u{8FC7}\u{8BA4}\u{8BC1}\u{5E76}\u{62E5}\u{6709}\u{67E5}\u{8BE2}\u{6743}\u{9650}
|
|
9532
|
-
When \u{7528}\u{6237}\u{5411}/orders/<order_id>\u{63A5}\u{53E3}\u{53D1}\u{9001}
|
|
9093
|
+
When \u{7528}\u{6237}\u{5411}/orders/<order_id>\u{63A5}\u{53E3}\u{53D1}\u{9001}POST\u{8BF7}\u{6C42}
|
|
9533
9094
|
Then \u{7CFB}\u{7EDF}\u{5E94}\u{8FD4}\u{56DE}\u{8BA2}\u{5355}\u{4FE1}\u{606F}\u{6216} <error_message>
|
|
9534
9095
|
|
|
9535
9096
|
Examples:
|
|
@@ -9566,8 +9127,8 @@ Scenario Outline: API\u{8C03}\u{7528}\u{4E0E}\u{6570}\u{636E}\u{5904}\u{7406}\u{
|
|
|
9566
9127
|
| /users | POST | \u{7F3A}\u{5931}\u{5FC5}\u{586B}\u{9879} | \u{8FD4}\u{56DE}400\u{9519}\u{8BEF}\u{FF0C}\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{7F3A}\u{5931}\u{5B57}\u{6BB5} |
|
|
9567
9128
|
| /users/123 | PUT | \u{66F4}\u{65B0}\u{6570}\u{636E} | \u{66F4}\u{65B0}\u{7528}\u{6237}\u{4FE1}\u{606F}\u{FF0C}\u{8FD4}\u{56DE}\u{66F4}\u{65B0}\u{540E}\u{7684}\u{5B8C}\u{6574}\u{7528}\u{6237}\u{4FE1}\u{606F} |
|
|
9568
9129
|
| /users/123 | DELETE | \u{5B58}\u{5728}\u{8D44}\u{6E90} | \u{5220}\u{9664}\u{7528}\u{6237}\u{FF0C}\u{8FD4}\u{56DE}204\u{72B6}\u{6001}\u{7801} |
|
|
9569
|
-
| /users/999 |
|
|
9570
|
-
| /users |
|
|
9130
|
+
| /users/999 | POST | \u{4E0D}\u{5B58}\u{5728}\u{8D44}\u{6E90} | \u{8FD4}\u{56DE}404\u{9519}\u{8BEF}\u{FF0C}\u{8BF4}\u{660E}\u{8D44}\u{6E90}\u{672A}\u{627E}\u{5230} |
|
|
9131
|
+
| /users | POST | \u{5927}\u{91CF}\u{6570}\u{636E} | \u{5206}\u{9875}\u{8FD4}\u{56DE}\u{7528}\u{6237}\u{5217}\u{8868}\u{FF0C}\u{5305}\u{542B}\u{603B}\u{6570}\u{548C}\u{5206}\u{9875}\u{4FE1}\u{606F} |
|
|
9571
9132
|
|
|
9572
9133
|
Scenario Outline: API\u{9650}\u{6D41}\u{4E0E}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{5904}\u{7406}
|
|
9573
9134
|
Given \u{5BA2}\u{6237}\u{7AEF}\u{5728}<time_window>\u{5185}\u{53D1}\u{9001}<request_count>\u{4E2A}\u{8BF7}\u{6C42}
|
|
@@ -9642,6 +9203,37 @@ const requirementAnalyzerTool = {
|
|
|
9642
9203
|
const { input_type, content, md_file_path, feature_name, options = {}, auto_trigger = {} } = args;
|
|
9643
9204
|
const { custom_prompt, use_streaming, chunk_size } = options;
|
|
9644
9205
|
const analysis_depth = 'detailed';
|
|
9206
|
+
utils_logger.k.info("\u5F00\u59CB\u83B7\u53D6\u9879\u76EE\u4FE1\u606F");
|
|
9207
|
+
let projectInfo = null;
|
|
9208
|
+
try {
|
|
9209
|
+
const projectTemplatePromise = (async ()=>{
|
|
9210
|
+
const projectTemplateArgs = {
|
|
9211
|
+
project_name: feature_name,
|
|
9212
|
+
project_path: void 0
|
|
9213
|
+
};
|
|
9214
|
+
const projectAnalysisResult = await initProjectStandard.execute(projectTemplateArgs);
|
|
9215
|
+
if (projectAnalysisResult) {
|
|
9216
|
+
const projectAnalysis = JSON.parse(projectAnalysisResult);
|
|
9217
|
+
if (projectAnalysis.prompt && projectAnalysis.prompt.includes('{{projectAnalysis}}')) {
|
|
9218
|
+
const projectAnalysisContent = projectAnalysis.prompt.match(/## 项目架构分析\n([\s\S]*)/);
|
|
9219
|
+
if (projectAnalysisContent && projectAnalysisContent[1]) projectInfo = extractProjectInfo(projectAnalysisContent[1]);
|
|
9220
|
+
}
|
|
9221
|
+
}
|
|
9222
|
+
return projectInfo;
|
|
9223
|
+
})();
|
|
9224
|
+
projectInfo = await Promise.race([
|
|
9225
|
+
projectTemplatePromise,
|
|
9226
|
+
new Promise((resolve)=>setTimeout(()=>resolve(null), 5000))
|
|
9227
|
+
]);
|
|
9228
|
+
if (null === projectInfo) utils_logger.k.warn("\u83B7\u53D6\u9879\u76EE\u4FE1\u606F\u8D85\u65F6\uFF0C\u5C06\u4F7F\u7528\u901A\u7528\u6280\u672F\u6587\u6863\u751F\u6210");
|
|
9229
|
+
else utils_logger.k.info("\u9879\u76EE\u4FE1\u606F\u83B7\u53D6\u6210\u529F", {
|
|
9230
|
+
projectInfo
|
|
9231
|
+
});
|
|
9232
|
+
} catch (projectError) {
|
|
9233
|
+
utils_logger.k.warn("\u83B7\u53D6\u9879\u76EE\u4FE1\u606F\u5931\u8D25\uFF0C\u5C06\u4F7F\u7528\u901A\u7528\u6280\u672F\u6587\u6863\u751F\u6210", {
|
|
9234
|
+
error: projectError instanceof Error ? projectError.message : String(projectError)
|
|
9235
|
+
});
|
|
9236
|
+
}
|
|
9645
9237
|
try {
|
|
9646
9238
|
let inputContent = '';
|
|
9647
9239
|
let sourceInfo = '';
|
|
@@ -9649,6 +9241,14 @@ const requirementAnalyzerTool = {
|
|
|
9649
9241
|
inputContent = content;
|
|
9650
9242
|
sourceInfo = "\u7528\u6237\u76F4\u63A5\u8F93\u5165";
|
|
9651
9243
|
} else if ('md_file' === input_type) {
|
|
9244
|
+
if (!md_file_path) {
|
|
9245
|
+
utils_logger.k.error("md_file_path\u53C2\u6570\u4E3A\u7A7A", {
|
|
9246
|
+
input_type,
|
|
9247
|
+
md_file_path,
|
|
9248
|
+
feature_name
|
|
9249
|
+
});
|
|
9250
|
+
throw new Error("md_file_path\u53C2\u6570\u4E0D\u80FD\u4E3A\u7A7A");
|
|
9251
|
+
}
|
|
9652
9252
|
const resolvedPath = await (0, common.kK)(md_file_path);
|
|
9653
9253
|
const stats = await promises_.stat(resolvedPath);
|
|
9654
9254
|
const fileSizeInMB = stats.size / 1048576;
|
|
@@ -9708,7 +9308,7 @@ const requirementAnalyzerTool = {
|
|
|
9708
9308
|
priority: 'priority' in feature ? feature.priority : 'medium',
|
|
9709
9309
|
complexity: 'complexity' in feature ? feature.complexity : feature.estimatedComplexity
|
|
9710
9310
|
});
|
|
9711
|
-
const featureDoc = await generateRequirementWithDFS(featureContent, featureTitle, custom_prompt, featureType);
|
|
9311
|
+
const featureDoc = await generateRequirementWithDFS(featureContent, featureTitle, custom_prompt, featureType, projectInfo);
|
|
9712
9312
|
await promises_.writeFile(featureOutputPath, featureDoc, 'utf8');
|
|
9713
9313
|
generatedFiles.push(external_path_["default"].resolve(featureOutputPath));
|
|
9714
9314
|
utils_logger.k.info(`\u{529F}\u{80FD}\u{70B9}\u{5206}\u{6790}\u{5B8C}\u{6210} ${i + 1}/${featuresToProcess.length}`, {
|
|
@@ -9745,7 +9345,7 @@ ${generatedFiles.map((f)=>`- \`${f}\``).join('\n')}
|
|
|
9745
9345
|
analysisDepth: analysis_depth,
|
|
9746
9346
|
sourceInfo
|
|
9747
9347
|
});
|
|
9748
|
-
const requirementDoc = await generateRequirementWithDFS((null == (_requirementAnalysis_requirements_ = requirementAnalysis.requirements[0]) ? void 0 : _requirementAnalysis_requirements_.fullContent) || inputContent, feature_name, custom_prompt, (null == (_requirementAnalysis_requirements_1 = requirementAnalysis.requirements[0]) ? void 0 : _requirementAnalysis_requirements_1.type) || "\u7CFB\u7EDF");
|
|
9348
|
+
const requirementDoc = await generateRequirementWithDFS((null == (_requirementAnalysis_requirements_ = requirementAnalysis.requirements[0]) ? void 0 : _requirementAnalysis_requirements_.fullContent) || inputContent, feature_name, custom_prompt, (null == (_requirementAnalysis_requirements_1 = requirementAnalysis.requirements[0]) ? void 0 : _requirementAnalysis_requirements_1.type) || "\u7CFB\u7EDF", projectInfo);
|
|
9749
9349
|
await promises_.writeFile(outputPath, requirementDoc, 'utf8');
|
|
9750
9350
|
generatedFiles.push(external_path_["default"].resolve(outputPath));
|
|
9751
9351
|
const stats = {
|
|
@@ -9989,7 +9589,7 @@ function analyzeRequirementsFallback(inputContent) {
|
|
|
9989
9589
|
]
|
|
9990
9590
|
};
|
|
9991
9591
|
}
|
|
9992
|
-
async function generateRequirementWithDFS(requirementContent, requirementTitle, customPrompt, requirementType = "\u7CFB\u7EDF") {
|
|
9592
|
+
async function generateRequirementWithDFS(requirementContent, requirementTitle, customPrompt, requirementType = "\u7CFB\u7EDF", projectInfo) {
|
|
9993
9593
|
utils_logger.k.info("\u5F00\u59CB\u4F7F\u7528\u6DF1\u5EA6\u641C\u7D22\u7B97\u6CD5\u751F\u6210\u9700\u6C42\u6587\u6863", {
|
|
9994
9594
|
requirementTitle,
|
|
9995
9595
|
requirementType,
|
|
@@ -10000,7 +9600,16 @@ async function generateRequirementWithDFS(requirementContent, requirementTitle,
|
|
|
10000
9600
|
else if (requirementType.includes("\u79FB\u52A8") || requirementType.includes('app') || requirementType.includes('App')) selectedPrompt = appTemplatePrompt;
|
|
10001
9601
|
else if (requirementType.includes('SDK') || requirementType.includes('sdk') || requirementType.includes("\u7B2C\u4E09\u65B9")) selectedPrompt = sdkTemplatePrompt;
|
|
10002
9602
|
else if (requirementType.includes("\u63A5\u53E3") || requirementType.includes('API') || requirementType.includes('api')) selectedPrompt = apiTemplatePrompt;
|
|
10003
|
-
|
|
9603
|
+
let projectContext = '';
|
|
9604
|
+
if (projectInfo) projectContext = `
|
|
9605
|
+
## \u{9879}\u{76EE}\u{4E0A}\u{4E0B}\u{6587}\u{4FE1}\u{606F}
|
|
9606
|
+
\u{5F53}\u{524D}\u{9879}\u{76EE}\u{662F}\u{4E00}\u{4E2A}${projectInfo.projectType}\u{FF0C}\u{4F7F}\u{7528}\u{7684}\u{4E3B}\u{8981}\u{6280}\u{672F}\u{6808}\u{5305}\u{62EC}\u{FF1A}${projectInfo.techStack.join(', ')}\u{3002}
|
|
9607
|
+
\u{9879}\u{76EE}\u{4F7F}\u{7528}\u{7684}\u{7F16}\u{7A0B}\u{8BED}\u{8A00}\u{662F}${projectInfo.language}\u{FF0C}\u{6846}\u{67B6}\u{5305}\u{62EC}\u{FF1A}${projectInfo.frameworks.join(', ')}\u{3002}
|
|
9608
|
+
\u{9879}\u{76EE}\u{4F9D}\u{8D56}\u{FF1A}${projectInfo.dependencies.join(', ')}\u{3002}
|
|
9609
|
+
|
|
9610
|
+
\u{8BF7}\u{6839}\u{636E}\u{4EE5}\u{4E0A}\u{9879}\u{76EE}\u{6280}\u{672F}\u{6808}\u{548C}\u{67B6}\u{6784}\u{4FE1}\u{606F}\u{FF0C}\u{751F}\u{6210}\u{4E0E}\u{9879}\u{76EE}\u{5339}\u{914D}\u{7684}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{3002}
|
|
9611
|
+
`;
|
|
9612
|
+
const prompt = selectedPrompt.replace('{featureName}', requirementTitle).replace('{businessDomain}', projectContext).replace('{generateSequenceDiagram}', "\u662F").replace('{inputContent}', requirementContent).replace('{currentTime}', new Date().toLocaleString('zh-CN'));
|
|
10004
9613
|
try {
|
|
10005
9614
|
const result = await callAIServiceWithProgress(`\u{9700}\u{6C42}\u{6587}\u{6863}\u{751F}\u{6210}(${requirementTitle})`, ()=>openai.r.generateText({
|
|
10006
9615
|
prompt: prompt,
|
|
@@ -10070,9 +9679,10 @@ function categorizeError(error) {
|
|
|
10070
9679
|
if (errorMsg.includes('validation') || errorMsg.includes("\u65E0\u6548") || errorMsg.includes('required')) return "INVALID_INPUT";
|
|
10071
9680
|
if (errorMsg.includes('openai') || errorMsg.includes('kimi') || errorMsg.includes('api')) return "AI_SERVICE_ERROR";
|
|
10072
9681
|
if (errorMsg.includes('json') || errorMsg.includes('parse')) return "JSON_PARSE_ERROR";
|
|
10073
|
-
if (errorMsg.includes('network') || errorMsg.includes(
|
|
9682
|
+
if (errorMsg.includes('network') || errorMsg.includes("\u8FDE\u63A5")) return "NETWORK_ERROR";
|
|
10074
9683
|
if (errorMsg.includes('memory') || errorMsg.includes('heap')) return "MEMORY_ERROR";
|
|
10075
9684
|
if (errorMsg.includes('timeout') || errorMsg.includes("\u8D85\u65F6")) return "TIMEOUT_ERROR";
|
|
9685
|
+
if (errorMsg.includes('network') || errorMsg.includes("\u8FDE\u63A5")) return "NETWORK_ERROR";
|
|
10076
9686
|
return "UNKNOWN_ERROR";
|
|
10077
9687
|
}
|
|
10078
9688
|
function generateUserFriendlyErrorMessage(errorType, originalMessage) {
|
|
@@ -10134,6 +9744,76 @@ async function callAIServiceWithProgress(description, apiCall, maxRetries = 3, b
|
|
|
10134
9744
|
throw error;
|
|
10135
9745
|
}
|
|
10136
9746
|
}
|
|
9747
|
+
function extractProjectInfo(projectAnalysis) {
|
|
9748
|
+
const projectInfo = {
|
|
9749
|
+
techStack: [],
|
|
9750
|
+
frameworks: [],
|
|
9751
|
+
language: '',
|
|
9752
|
+
projectType: '',
|
|
9753
|
+
dependencies: []
|
|
9754
|
+
};
|
|
9755
|
+
const techStackKeywords = [
|
|
9756
|
+
'React',
|
|
9757
|
+
'Vue',
|
|
9758
|
+
'Angular',
|
|
9759
|
+
'Svelte',
|
|
9760
|
+
'Node.js',
|
|
9761
|
+
'Express',
|
|
9762
|
+
'Koa',
|
|
9763
|
+
'Fastify',
|
|
9764
|
+
'Python',
|
|
9765
|
+
'Django',
|
|
9766
|
+
'Flask',
|
|
9767
|
+
'Java',
|
|
9768
|
+
'Spring',
|
|
9769
|
+
'Spring Boot',
|
|
9770
|
+
'TypeScript',
|
|
9771
|
+
'JavaScript',
|
|
9772
|
+
'PostgreSQL',
|
|
9773
|
+
'MySQL',
|
|
9774
|
+
'MongoDB',
|
|
9775
|
+
'Redis',
|
|
9776
|
+
'Docker',
|
|
9777
|
+
'Kubernetes'
|
|
9778
|
+
];
|
|
9779
|
+
const frameworkKeywords = [
|
|
9780
|
+
'React',
|
|
9781
|
+
'Vue',
|
|
9782
|
+
'Angular',
|
|
9783
|
+
'Svelte',
|
|
9784
|
+
'Express',
|
|
9785
|
+
'Koa',
|
|
9786
|
+
'Fastify',
|
|
9787
|
+
'Django',
|
|
9788
|
+
'Flask',
|
|
9789
|
+
'Spring',
|
|
9790
|
+
'Spring Boot',
|
|
9791
|
+
'Next.js',
|
|
9792
|
+
'Nuxt.js'
|
|
9793
|
+
];
|
|
9794
|
+
const languageKeywords = [
|
|
9795
|
+
'TypeScript',
|
|
9796
|
+
'JavaScript',
|
|
9797
|
+
'Python',
|
|
9798
|
+
'Java',
|
|
9799
|
+
'Go',
|
|
9800
|
+
'Rust',
|
|
9801
|
+
'C#'
|
|
9802
|
+
];
|
|
9803
|
+
for (const keyword of techStackKeywords)if (projectAnalysis.includes(keyword)) projectInfo.techStack.push(keyword);
|
|
9804
|
+
for (const keyword of frameworkKeywords)if (projectAnalysis.includes(keyword)) projectInfo.frameworks.push(keyword);
|
|
9805
|
+
for (const keyword of languageKeywords)if (projectAnalysis.includes(keyword)) {
|
|
9806
|
+
projectInfo.language = keyword;
|
|
9807
|
+
break;
|
|
9808
|
+
}
|
|
9809
|
+
if (projectAnalysis.includes('package.json')) projectInfo.projectType = "Node.js\u9879\u76EE";
|
|
9810
|
+
else if (projectAnalysis.includes('requirements.txt') || projectAnalysis.includes('pyproject.toml')) projectInfo.projectType = "Python\u9879\u76EE";
|
|
9811
|
+
else if (projectAnalysis.includes('pom.xml') || projectAnalysis.includes('build.gradle')) projectInfo.projectType = "Java\u9879\u76EE";
|
|
9812
|
+
else projectInfo.projectType = "\u901A\u7528\u9879\u76EE";
|
|
9813
|
+
const dependencyMatch = projectAnalysis.match(/## 依赖.*?```.*?\n([\s\S]*?)\n```/);
|
|
9814
|
+
if (dependencyMatch && dependencyMatch[1]) projectInfo.dependencies = dependencyMatch[1].split('\n').filter((line)=>'' !== line.trim()).map((line)=>line.trim());
|
|
9815
|
+
return projectInfo;
|
|
9816
|
+
}
|
|
10137
9817
|
async function extractFeaturesWithNLP(inputContent) {
|
|
10138
9818
|
try {
|
|
10139
9819
|
utils_logger.k.info("\u5F00\u59CB\u4F7F\u7528\u589E\u5F3A\u578BNLP\u6280\u672F\u63D0\u53D6\u529F\u80FD\u70B9", {
|
|
@@ -10148,10 +9828,18 @@ async function extractFeaturesWithNLP(inputContent) {
|
|
|
10148
9828
|
const jsonMatch = result.match(/\{[\s\S]*\}/);
|
|
10149
9829
|
if (jsonMatch) {
|
|
10150
9830
|
const features = JSON.parse(jsonMatch[0]);
|
|
9831
|
+
if (Array.isArray(features)) {
|
|
9832
|
+
utils_logger.k.info("\u589E\u5F3A\u578B\u529F\u80FD\u70B9\u63D0\u53D6\u6210\u529F", {
|
|
9833
|
+
featureCount: features.length
|
|
9834
|
+
});
|
|
9835
|
+
return features;
|
|
9836
|
+
}
|
|
10151
9837
|
utils_logger.k.info("\u589E\u5F3A\u578B\u529F\u80FD\u70B9\u63D0\u53D6\u6210\u529F", {
|
|
10152
|
-
featureCount:
|
|
9838
|
+
featureCount: 1
|
|
10153
9839
|
});
|
|
10154
|
-
return
|
|
9840
|
+
return [
|
|
9841
|
+
features
|
|
9842
|
+
];
|
|
10155
9843
|
}
|
|
10156
9844
|
} catch (parseError) {
|
|
10157
9845
|
utils_logger.k.warn("JSON\u89E3\u6790\u5931\u8D25", {
|
|
@@ -12665,6 +12353,294 @@ const listSupportedFormatsTool = {
|
|
|
12665
12353
|
\u{8F93}\u{51FA}\u{683C}\u{5F0F}\u{FF1A}${formats.output.join(', ')}`;
|
|
12666
12354
|
}
|
|
12667
12355
|
};
|
|
12356
|
+
const BugFixAgentParams = esm.z.object({
|
|
12357
|
+
bug_description: esm.z.string().describe("Bug\u63CF\u8FF0\u4FE1\u606F\u6216\u95EE\u9898\u8BF4\u660E"),
|
|
12358
|
+
project_path: esm.z.string().optional().describe("\u9879\u76EE\u7EDD\u5BF9\u8DEF\u5F84\uFF0C\u7528\u4E8E\u6307\u5B9A\u8981\u5206\u6790\u7684\u9879\u76EE\u76EE\u5F55"),
|
|
12359
|
+
project_name: esm.z.string().optional().default('current-project').describe("\u9879\u76EE\u540D\u79F0"),
|
|
12360
|
+
output_format: esm.z["enum"]([
|
|
12361
|
+
'markdown',
|
|
12362
|
+
'json'
|
|
12363
|
+
]).optional().default('markdown').describe("\u8F93\u51FA\u683C\u5F0F")
|
|
12364
|
+
});
|
|
12365
|
+
const bugFixAgentTool = {
|
|
12366
|
+
name: "bug\u4FEE\u590D\u667A\u80FD\u4F53",
|
|
12367
|
+
description: "\u6839\u636E\u7528\u6237\u63D0\u4F9B\u7684bug\u63CF\u8FF0\u4FE1\u606F\uFF0C\u667A\u80FD\u5206\u6790\u9879\u76EE\u7ED3\u6784\u5E76\u751F\u6210\u4FEE\u590D\u65B9\u6848",
|
|
12368
|
+
parameters: BugFixAgentParams,
|
|
12369
|
+
execute: async (args)=>{
|
|
12370
|
+
const { bug_description, project_path, project_name = 'current-project', output_format = 'markdown' } = args;
|
|
12371
|
+
try {
|
|
12372
|
+
utils_logger.k.info("\u5F00\u59CBBug\u4FEE\u590D\u667A\u80FD\u4F53\u6D41\u7A0B", {
|
|
12373
|
+
project_name,
|
|
12374
|
+
project_path
|
|
12375
|
+
});
|
|
12376
|
+
utils_logger.k.info("1. \u9879\u76EE\u7406\u89E3\u9636\u6BB5\uFF1A\u8C03\u7528project-template\u670D\u52A1\u5206\u6790\u9879\u76EE\u7ED3\u6784");
|
|
12377
|
+
const projectTemplateArgs = {
|
|
12378
|
+
project_name,
|
|
12379
|
+
project_path,
|
|
12380
|
+
custom_rules: void 0
|
|
12381
|
+
};
|
|
12382
|
+
const projectAnalysisResult = await initProjectStandard.execute(projectTemplateArgs);
|
|
12383
|
+
let projectRulesPromptData = null;
|
|
12384
|
+
if (projectAnalysisResult) try {
|
|
12385
|
+
projectRulesPromptData = JSON.parse(projectAnalysisResult);
|
|
12386
|
+
} catch (parseError) {
|
|
12387
|
+
utils_logger.k.warn("\u9879\u76EE\u5206\u6790\u7ED3\u679C\u89E3\u6790\u5931\u8D25", {
|
|
12388
|
+
parseError
|
|
12389
|
+
});
|
|
12390
|
+
}
|
|
12391
|
+
utils_logger.k.info("2. \u89C4\u5219\u5339\u914D\u9636\u6BB5\uFF1A\u6839\u636Eproject_rules.md\u5B9A\u4F4D\u76F8\u5173\u5185\u5BB9");
|
|
12392
|
+
const projectRules = await getProjectRules(project_name);
|
|
12393
|
+
utils_logger.k.info("3. \u4EFB\u52A1\u89C4\u5212\u9636\u6BB5\uFF1A\u521B\u5EFA\u8BE6\u7EC6\u7684\u6267\u884C\u6E05\u5355");
|
|
12394
|
+
const taskPlan = await createTaskExecutionPlan(bug_description, projectRulesPromptData, projectRules);
|
|
12395
|
+
utils_logger.k.info("4. \u5B9E\u65BD\u9636\u6BB5\uFF1A\u6267\u884C\u4FEE\u590D\u4EFB\u52A1\u5E76\u751F\u6210\u7ED3\u679C");
|
|
12396
|
+
const fixResult = await executeBugFixTask(bug_description, projectRules, taskPlan);
|
|
12397
|
+
const outputPath = await saveBugFixResult(fixResult, project_name, output_format);
|
|
12398
|
+
utils_logger.k.info("Bug\u4FEE\u590D\u667A\u80FD\u4F53\u6D41\u7A0B\u5B8C\u6210", {
|
|
12399
|
+
outputPath
|
|
12400
|
+
});
|
|
12401
|
+
return JSON.stringify({
|
|
12402
|
+
success: true,
|
|
12403
|
+
message: "Bug\u4FEE\u590D\u5206\u6790\u5B8C\u6210",
|
|
12404
|
+
data: {
|
|
12405
|
+
project_name,
|
|
12406
|
+
task_plan: taskPlan,
|
|
12407
|
+
fix_result: fixResult,
|
|
12408
|
+
output_path: outputPath
|
|
12409
|
+
}
|
|
12410
|
+
});
|
|
12411
|
+
} catch (error) {
|
|
12412
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
12413
|
+
utils_logger.k.error("Bug\u4FEE\u590D\u667A\u80FD\u4F53\u6267\u884C\u5931\u8D25", {
|
|
12414
|
+
project_name,
|
|
12415
|
+
error: errorMsg
|
|
12416
|
+
});
|
|
12417
|
+
throw new Error(`Bug\u{4FEE}\u{590D}\u{667A}\u{80FD}\u{4F53}\u{6267}\u{884C}\u{5931}\u{8D25}: ${errorMsg}`);
|
|
12418
|
+
}
|
|
12419
|
+
}
|
|
12420
|
+
};
|
|
12421
|
+
async function getProjectRules(projectName) {
|
|
12422
|
+
try {
|
|
12423
|
+
const storageDir = (0, src_config.WR)();
|
|
12424
|
+
const projectRulesPath = external_path_["default"].join(storageDir, 'project_rules.md');
|
|
12425
|
+
try {
|
|
12426
|
+
await promises_["default"].access(projectRulesPath);
|
|
12427
|
+
const projectRules = await promises_["default"].readFile(projectRulesPath, 'utf-8');
|
|
12428
|
+
utils_logger.k.info("\u6210\u529F\u8BFB\u53D6\u9879\u76EE\u89C4\u5219\u6587\u4EF6", {
|
|
12429
|
+
projectRulesPath
|
|
12430
|
+
});
|
|
12431
|
+
return projectRules;
|
|
12432
|
+
} catch (fileError) {
|
|
12433
|
+
utils_logger.k.warn("\u9879\u76EE\u89C4\u5219\u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u5C06\u4F7F\u7528\u9ED8\u8BA4\u89C4\u5219", {
|
|
12434
|
+
projectRulesPath
|
|
12435
|
+
});
|
|
12436
|
+
return getDefaultProjectRules(projectName);
|
|
12437
|
+
}
|
|
12438
|
+
} catch (error) {
|
|
12439
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
12440
|
+
utils_logger.k.error("\u83B7\u53D6\u9879\u76EE\u89C4\u5219\u5931\u8D25", {
|
|
12441
|
+
error: errorMsg
|
|
12442
|
+
});
|
|
12443
|
+
return getDefaultProjectRules(projectName);
|
|
12444
|
+
}
|
|
12445
|
+
}
|
|
12446
|
+
function getDefaultProjectRules(projectName) {
|
|
12447
|
+
return `# ${projectName} - \u{9879}\u{76EE}\u{5F00}\u{53D1}\u{89C4}\u{8303}
|
|
12448
|
+
|
|
12449
|
+
## 1. \u{9879}\u{76EE}\u{6982}\u{8FF0}
|
|
12450
|
+
- \u{9879}\u{76EE}\u{540D}\u{79F0}: ${projectName}
|
|
12451
|
+
- \u{6280}\u{672F}\u{6808}: \u{901A}\u{7528}Web\u{9879}\u{76EE}
|
|
12452
|
+
- \u{67B6}\u{6784}\u{6A21}\u{5F0F}: \u{5206}\u{5C42}\u{67B6}\u{6784}
|
|
12453
|
+
|
|
12454
|
+
## 2. \u{76EE}\u{5F55}\u{7ED3}\u{6784}\u{89C4}\u{8303}
|
|
12455
|
+
\`\`\`
|
|
12456
|
+
src/
|
|
12457
|
+
\u{251C}\u{2500}\u{2500} controllers/ # \u{63A7}\u{5236}\u{5668}\u{5C42}
|
|
12458
|
+
\u{251C}\u{2500}\u{2500} services/ # \u{4E1A}\u{52A1}\u{903B}\u{8F91}\u{5C42}
|
|
12459
|
+
\u{251C}\u{2500}\u{2500} repositories/ # \u{6570}\u{636E}\u{8BBF}\u{95EE}\u{5C42}
|
|
12460
|
+
\u{251C}\u{2500}\u{2500} models/ # \u{6570}\u{636E}\u{6A21}\u{578B}
|
|
12461
|
+
\u{251C}\u{2500}\u{2500} middleware/ # \u{4E2D}\u{95F4}\u{4EF6}
|
|
12462
|
+
\u{251C}\u{2500}\u{2500} utils/ # \u{5DE5}\u{5177}\u{51FD}\u{6570}
|
|
12463
|
+
\u{2514}\u{2500}\u{2500} config/ # \u{914D}\u{7F6E}\u{6587}\u{4EF6}
|
|
12464
|
+
\`\`\`
|
|
12465
|
+
|
|
12466
|
+
## 3. \u{4EE3}\u{7801}\u{89C4}\u{8303}
|
|
12467
|
+
- \u{547D}\u{540D}\u{89C4}\u{8303}: \u{4F7F}\u{7528}camelCase\u{547D}\u{540D}\u{53D8}\u{91CF}\u{548C}\u{51FD}\u{6570}
|
|
12468
|
+
- \u{4EE3}\u{7801}\u{98CE}\u{683C}: \u{4F7F}\u{7528}4\u{7A7A}\u{683C}\u{7F29}\u{8FDB}
|
|
12469
|
+
- \u{6CE8}\u{91CA}\u{8981}\u{6C42}: \u{51FD}\u{6570}\u{9700}\u{6DFB}\u{52A0}JSDoc\u{6CE8}\u{91CA}
|
|
12470
|
+
- \u{5BFC}\u{5165}\u{89C4}\u{5219}: \u{6309}\u{6A21}\u{5757}\u{5206}\u{7C7B}\u{5BFC}\u{5165}
|
|
12471
|
+
|
|
12472
|
+
## 4. \u{9519}\u{8BEF}\u{5904}\u{7406}\u{89C4}\u{8303}
|
|
12473
|
+
- \u{4F7F}\u{7528}try-catch\u{5904}\u{7406}\u{5F02}\u{5E38}
|
|
12474
|
+
- \u{63D0}\u{4F9B}\u{6709}\u{610F}\u{4E49}\u{7684}\u{9519}\u{8BEF}\u{4FE1}\u{606F}
|
|
12475
|
+
- \u{8BB0}\u{5F55}\u{9519}\u{8BEF}\u{65E5}\u{5FD7}
|
|
12476
|
+
`;
|
|
12477
|
+
}
|
|
12478
|
+
async function createTaskExecutionPlan(bugDescription, projectAnalysis, projectRules) {
|
|
12479
|
+
try {
|
|
12480
|
+
const prompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{7684}\u{8F6F}\u{4EF6}Bug\u{4FEE}\u{590D}\u{4E13}\u{5BB6}\u{3002}\u{8BF7}\u{57FA}\u{4E8E}\u{4EE5}\u{4E0B}\u{4FE1}\u{606F}\u{521B}\u{5EFA}\u{8BE6}\u{7EC6}\u{7684}Bug\u{4FEE}\u{590D}\u{4EFB}\u{52A1}\u{6267}\u{884C}\u{6E05}\u{5355}\u{FF1A}
|
|
12481
|
+
|
|
12482
|
+
## Bug\u{63CF}\u{8FF0}
|
|
12483
|
+
${bugDescription}
|
|
12484
|
+
|
|
12485
|
+
## \u{9879}\u{76EE}\u{5206}\u{6790}
|
|
12486
|
+
${(null == projectAnalysis ? void 0 : projectAnalysis.prompt) || "\u65E0\u9879\u76EE\u5206\u6790\u4FE1\u606F"}
|
|
12487
|
+
|
|
12488
|
+
## \u{9879}\u{76EE}\u{89C4}\u{5219}
|
|
12489
|
+
${projectRules}
|
|
12490
|
+
|
|
12491
|
+
## \u{4EFB}\u{52A1}\u{8981}\u{6C42}
|
|
12492
|
+
\u{8BF7}\u{6309}\u{7167}\u{4EE5}\u{4E0B}\u{7ED3}\u{6784}\u{521B}\u{5EFA}\u{4EFB}\u{52A1}\u{6267}\u{884C}\u{6E05}\u{5355}\u{FF1A}
|
|
12493
|
+
1. \u{63CF}\u{8FF0}\u{4FE1}\u{606F}\u{4E0E}\u{5DE5}\u{7A0B}\u{5185}\u{5BB9}\u{5339}\u{914D}\u{7684}\u{5BF9}\u{5E94}\u{5173}\u{7CFB}
|
|
12494
|
+
- \u{5206}\u{6790}Bug\u{63CF}\u{8FF0}\u{4FE1}\u{606F}
|
|
12495
|
+
- \u{89E3}\u{6790}\u{9879}\u{76EE}\u{89C4}\u{5219}\u{6587}\u{4EF6}
|
|
12496
|
+
- \u{5EFA}\u{7ACB}\u{63CF}\u{8FF0}\u{4FE1}\u{606F}\u{4E0E}\u{9879}\u{76EE}\u{6587}\u{4EF6}/\u{6A21}\u{5757}\u{7684}\u{6620}\u{5C04}\u{5173}\u{7CFB}
|
|
12497
|
+
- \u{786E}\u{5B9A}\u{53D7}\u{5F71}\u{54CD}\u{7684}\u{4EE3}\u{7801}\u{8303}\u{56F4}
|
|
12498
|
+
2. \u{5B8C}\u{6210}\u{672C}\u{6B21}\u{63CF}\u{8FF0}\u{4EFB}\u{52A1}\u{7684}\u{65B9}\u{6CD5}\u{548C}\u{4EA4}\u{4ED8}\u{7ED3}\u{679C}
|
|
12499
|
+
- \u{5236}\u{5B9A}\u{4FEE}\u{590D}\u{65B9}\u{6848}\u{548C}\u{5B9E}\u{65BD}\u{6B65}\u{9AA4}
|
|
12500
|
+
- \u{751F}\u{6210}\u{4FEE}\u{590D}\u{4EE3}\u{7801}\u{6216}\u{4FEE}\u{6539}\u{5EFA}\u{8BAE}
|
|
12501
|
+
- \u{63D0}\u{4F9B}\u{9A8C}\u{8BC1}\u{65B9}\u{6CD5}\u{548C}\u{6D4B}\u{8BD5}\u{7528}\u{4F8B}
|
|
12502
|
+
- \u{8F93}\u{51FA}\u{4FEE}\u{590D}\u{62A5}\u{544A}\u{548C}\u{76F8}\u{5173}\u{6587}\u{6863}
|
|
12503
|
+
|
|
12504
|
+
\u{8BF7}\u{8F93}\u{51FA}JSON\u{683C}\u{5F0F}\u{7684}\u{7ED3}\u{679C}\u{FF0C}\u{5305}\u{542B}\u{4EE5}\u{4E0A}\u{4E24}\u{4E2A}\u{4E3B}\u{8981}\u{90E8}\u{5206}\u{7684}\u{8BE6}\u{7EC6}\u{5185}\u{5BB9}\u{3002}`;
|
|
12505
|
+
const result = await openai.r.generateText({
|
|
12506
|
+
prompt,
|
|
12507
|
+
system_prompt: "\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u8F6F\u4EF6Bug\u4FEE\u590D\u4E13\u5BB6\uFF0C\u5584\u4E8E\u5206\u6790Bug\u5E76\u5236\u5B9A\u4FEE\u590D\u65B9\u6848\u3002",
|
|
12508
|
+
temperature: 0.3
|
|
12509
|
+
});
|
|
12510
|
+
try {
|
|
12511
|
+
const jsonMatch = result.match(/\{[\s\S]*\}/);
|
|
12512
|
+
if (jsonMatch) return JSON.parse(jsonMatch[0]);
|
|
12513
|
+
} catch (parseError) {
|
|
12514
|
+
utils_logger.k.warn("\u4EFB\u52A1\u6267\u884C\u6E05\u5355JSON\u89E3\u6790\u5931\u8D25\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u7ED3\u6784", {
|
|
12515
|
+
parseError
|
|
12516
|
+
});
|
|
12517
|
+
}
|
|
12518
|
+
return {
|
|
12519
|
+
description_mapping: {
|
|
12520
|
+
analysis: "\u57FA\u4E8EBug\u63CF\u8FF0\u8FDB\u884C\u5206\u6790",
|
|
12521
|
+
project_rules_analysis: "\u89E3\u6790\u9879\u76EE\u89C4\u5219\u6587\u4EF6",
|
|
12522
|
+
mapping_relationship: "\u5EFA\u7ACB\u6620\u5C04\u5173\u7CFB",
|
|
12523
|
+
affected_scope: "\u786E\u5B9A\u53D7\u5F71\u54CD\u4EE3\u7801\u8303\u56F4"
|
|
12524
|
+
},
|
|
12525
|
+
task_completion: {
|
|
12526
|
+
fix_plan: "\u5236\u5B9A\u4FEE\u590D\u65B9\u6848",
|
|
12527
|
+
implementation_steps: "\u5B9E\u65BD\u6B65\u9AA4",
|
|
12528
|
+
code_changes: "\u4EE3\u7801\u4FEE\u6539\u5EFA\u8BAE",
|
|
12529
|
+
validation_methods: "\u9A8C\u8BC1\u65B9\u6CD5",
|
|
12530
|
+
test_cases: "\u6D4B\u8BD5\u7528\u4F8B",
|
|
12531
|
+
deliverables: "\u4EA4\u4ED8\u6587\u6863"
|
|
12532
|
+
}
|
|
12533
|
+
};
|
|
12534
|
+
} catch (error) {
|
|
12535
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
12536
|
+
utils_logger.k.error("\u521B\u5EFA\u4EFB\u52A1\u6267\u884C\u6E05\u5355\u5931\u8D25", {
|
|
12537
|
+
error: errorMsg
|
|
12538
|
+
});
|
|
12539
|
+
return {
|
|
12540
|
+
description_mapping: {
|
|
12541
|
+
analysis: "\u57FA\u4E8EBug\u63CF\u8FF0\u8FDB\u884C\u5206\u6790",
|
|
12542
|
+
project_rules_analysis: "\u89E3\u6790\u9879\u76EE\u89C4\u5219\u6587\u4EF6",
|
|
12543
|
+
mapping_relationship: "\u5EFA\u7ACB\u6620\u5C04\u5173\u7CFB",
|
|
12544
|
+
affected_scope: "\u786E\u5B9A\u53D7\u5F71\u54CD\u4EE3\u7801\u8303\u56F4"
|
|
12545
|
+
},
|
|
12546
|
+
task_completion: {
|
|
12547
|
+
fix_plan: "\u5236\u5B9A\u4FEE\u590D\u65B9\u6848",
|
|
12548
|
+
implementation_steps: "\u5B9E\u65BD\u6B65\u9AA4",
|
|
12549
|
+
code_changes: "\u4EE3\u7801\u4FEE\u6539\u5EFA\u8BAE",
|
|
12550
|
+
validation_methods: "\u9A8C\u8BC1\u65B9\u6CD5",
|
|
12551
|
+
test_cases: "\u6D4B\u8BD5\u7528\u4F8B",
|
|
12552
|
+
deliverables: "\u4EA4\u4ED8\u6587\u6863"
|
|
12553
|
+
}
|
|
12554
|
+
};
|
|
12555
|
+
}
|
|
12556
|
+
}
|
|
12557
|
+
async function executeBugFixTask(bugDescription, projectRules, taskPlan) {
|
|
12558
|
+
try {
|
|
12559
|
+
const prompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{7684}\u{8F6F}\u{4EF6}Bug\u{4FEE}\u{590D}\u{4E13}\u{5BB6}\u{3002}\u{8BF7}\u{57FA}\u{4E8E}\u{4EE5}\u{4E0B}\u{4FE1}\u{606F}\u{6267}\u{884C}Bug\u{4FEE}\u{590D}\u{4EFB}\u{52A1}\u{FF1A}
|
|
12560
|
+
|
|
12561
|
+
## Bug\u{63CF}\u{8FF0}
|
|
12562
|
+
${bugDescription}
|
|
12563
|
+
|
|
12564
|
+
## \u{9879}\u{76EE}\u{89C4}\u{5219}
|
|
12565
|
+
${projectRules}
|
|
12566
|
+
|
|
12567
|
+
## \u{4EFB}\u{52A1}\u{6267}\u{884C}\u{8BA1}\u{5212}
|
|
12568
|
+
${JSON.stringify(taskPlan, null, 2)}
|
|
12569
|
+
|
|
12570
|
+
## \u{4EFB}\u{52A1}\u{8981}\u{6C42}
|
|
12571
|
+
\u{8BF7}\u{5B8C}\u{6210}\u{4EE5}\u{4E0B}\u{4EFB}\u{52A1}\u{FF1A}
|
|
12572
|
+
1. \u{5206}\u{6790}Bug\u{7684}\u{6839}\u{672C}\u{539F}\u{56E0}
|
|
12573
|
+
2. \u{5236}\u{5B9A}\u{8BE6}\u{7EC6}\u{7684}\u{4FEE}\u{590D}\u{65B9}\u{6848}
|
|
12574
|
+
3. \u{63D0}\u{4F9B}\u{5177}\u{4F53}\u{7684}\u{4EE3}\u{7801}\u{4FEE}\u{6539}\u{5EFA}\u{8BAE}
|
|
12575
|
+
4. \u{7F16}\u{5199}\u{9A8C}\u{8BC1}\u{65B9}\u{6CD5}\u{548C}\u{6D4B}\u{8BD5}\u{7528}\u{4F8B}
|
|
12576
|
+
5. \u{751F}\u{6210}\u{4FEE}\u{590D}\u{62A5}\u{544A}
|
|
12577
|
+
|
|
12578
|
+
\u{8BF7}\u{8F93}\u{51FA}\u{8BE6}\u{7EC6}\u{7684}\u{4FEE}\u{590D}\u{65B9}\u{6848}\u{FF0C}\u{5305}\u{62EC}\u{4EE3}\u{7801}\u{793A}\u{4F8B}\u{548C}\u{5B9E}\u{65BD}\u{6B65}\u{9AA4}\u{3002}`;
|
|
12579
|
+
const result = await openai.r.generateText({
|
|
12580
|
+
prompt,
|
|
12581
|
+
system_prompt: "\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u8F6F\u4EF6Bug\u4FEE\u590D\u4E13\u5BB6\uFF0C\u5584\u4E8E\u5206\u6790Bug\u5E76\u63D0\u4F9B\u8BE6\u7EC6\u7684\u4FEE\u590D\u65B9\u6848\u3002",
|
|
12582
|
+
temperature: 0.3,
|
|
12583
|
+
max_tokens: 4000
|
|
12584
|
+
});
|
|
12585
|
+
return {
|
|
12586
|
+
bug_analysis: "\u5DF2\u5B8C\u6210Bug\u5206\u6790",
|
|
12587
|
+
fix_solution: result,
|
|
12588
|
+
implementation_guide: "\u8BF7\u6309\u7167\u4E0A\u8FF0\u65B9\u6848\u5B9E\u65BD\u4FEE\u590D",
|
|
12589
|
+
validation_method: "\u901A\u8FC7\u5355\u5143\u6D4B\u8BD5\u548C\u96C6\u6210\u6D4B\u8BD5\u9A8C\u8BC1\u4FEE\u590D\u6548\u679C"
|
|
12590
|
+
};
|
|
12591
|
+
} catch (error) {
|
|
12592
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
12593
|
+
utils_logger.k.error("\u6267\u884CBug\u4FEE\u590D\u4EFB\u52A1\u5931\u8D25", {
|
|
12594
|
+
error: errorMsg
|
|
12595
|
+
});
|
|
12596
|
+
return {
|
|
12597
|
+
bug_analysis: "Bug\u5206\u6790\u5931\u8D25",
|
|
12598
|
+
fix_solution: `\u{4FEE}\u{590D}\u{65B9}\u{6848}\u{751F}\u{6210}\u{5931}\u{8D25}: ${errorMsg}`,
|
|
12599
|
+
implementation_guide: "\u8BF7\u624B\u52A8\u5206\u6790\u5E76\u4FEE\u590DBug",
|
|
12600
|
+
validation_method: "\u624B\u52A8\u9A8C\u8BC1\u4FEE\u590D\u6548\u679C"
|
|
12601
|
+
};
|
|
12602
|
+
}
|
|
12603
|
+
}
|
|
12604
|
+
async function saveBugFixResult(fixResult, projectName, outputFormat) {
|
|
12605
|
+
try {
|
|
12606
|
+
const storageDir = (0, src_config.WR)();
|
|
12607
|
+
const bugFixDir = external_path_["default"].join(storageDir, 'bug-fix-results');
|
|
12608
|
+
await promises_["default"].mkdir(bugFixDir, {
|
|
12609
|
+
recursive: true
|
|
12610
|
+
});
|
|
12611
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
12612
|
+
const fileName = `bug-fix-${projectName}-${timestamp}.${outputFormat}`;
|
|
12613
|
+
const outputPath = external_path_["default"].join(bugFixDir, fileName);
|
|
12614
|
+
if ('json' === outputFormat) await promises_["default"].writeFile(outputPath, JSON.stringify(fixResult, null, 2), 'utf-8');
|
|
12615
|
+
else {
|
|
12616
|
+
const markdownContent = `# Bug\u{4FEE}\u{590D}\u{62A5}\u{544A}
|
|
12617
|
+
|
|
12618
|
+
## \u{9879}\u{76EE}\u{540D}\u{79F0}
|
|
12619
|
+
${projectName}
|
|
12620
|
+
|
|
12621
|
+
## \u{4FEE}\u{590D}\u{7ED3}\u{679C}
|
|
12622
|
+
${fixResult.fix_solution}
|
|
12623
|
+
|
|
12624
|
+
## \u{5B9E}\u{65BD}\u{6307}\u{5357}
|
|
12625
|
+
${fixResult.implementation_guide}
|
|
12626
|
+
|
|
12627
|
+
## \u{9A8C}\u{8BC1}\u{65B9}\u{6CD5}
|
|
12628
|
+
${fixResult.validation_method}
|
|
12629
|
+
|
|
12630
|
+
## \u{751F}\u{6210}\u{65F6}\u{95F4}
|
|
12631
|
+
${new Date().toISOString()}
|
|
12632
|
+
`;
|
|
12633
|
+
await promises_["default"].writeFile(outputPath, markdownContent, 'utf-8');
|
|
12634
|
+
}
|
|
12635
|
+
return outputPath;
|
|
12636
|
+
} catch (error) {
|
|
12637
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
12638
|
+
utils_logger.k.error("\u4FDD\u5B58Bug\u4FEE\u590D\u7ED3\u679C\u5931\u8D25", {
|
|
12639
|
+
error: errorMsg
|
|
12640
|
+
});
|
|
12641
|
+
throw new Error(`\u{4FDD}\u{5B58}Bug\u{4FEE}\u{590D}\u{7ED3}\u{679C}\u{5931}\u{8D25}: ${errorMsg}`);
|
|
12642
|
+
}
|
|
12643
|
+
}
|
|
12668
12644
|
(0, src_config.NL)();
|
|
12669
12645
|
const server = new FastMCP({
|
|
12670
12646
|
name: src_config.Gp.name,
|
|
@@ -12685,6 +12661,7 @@ server.addTool(convertImageTool);
|
|
|
12685
12661
|
server.addTool(batchConvertImagesTool);
|
|
12686
12662
|
server.addTool(getImageInfoTool);
|
|
12687
12663
|
server.addTool(listSupportedFormatsTool);
|
|
12664
|
+
server.addTool(bugFixAgentTool);
|
|
12688
12665
|
server.addTool(addTaskToQueueTool);
|
|
12689
12666
|
server.addTool(createIterationTool);
|
|
12690
12667
|
server.addTool(enhanced_tools_updateTaskTool);
|