intention-coding 0.5.7 → 0.5.9

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.
Files changed (22) hide show
  1. package/dist/index.cjs +995 -1753
  2. package/dist/services/requirement/index.d.ts.map +1 -1
  3. package/dist/services/requirement-analyzer/core/document-generator.d.ts +54 -4
  4. package/dist/services/requirement-analyzer/core/document-generator.d.ts.map +1 -1
  5. package/dist/services/requirement-analyzer/core/template-selector.d.ts.map +1 -1
  6. package/dist/services/requirement-analyzer/core/types.d.ts +18 -0
  7. package/dist/services/requirement-analyzer/core/types.d.ts.map +1 -1
  8. package/dist/services/requirement-analyzer/index.d.ts.map +1 -1
  9. package/dist/services/requirement-analyzer/prompt/api-template.d.ts +1 -1
  10. package/dist/services/requirement-analyzer/prompt/api-template.d.ts.map +1 -1
  11. package/dist/services/requirement-analyzer/prompt/app-template.d.ts +1 -1
  12. package/dist/services/requirement-analyzer/prompt/app-template.d.ts.map +1 -1
  13. package/dist/services/requirement-analyzer/prompt/intelligent-requirement-analysis.d.ts +1 -1
  14. package/dist/services/requirement-analyzer/prompt/intelligent-requirement-analysis.d.ts.map +1 -1
  15. package/dist/services/requirement-analyzer/prompt/pc-page-template.d.ts +1 -1
  16. package/dist/services/requirement-analyzer/prompt/pc-page-template.d.ts.map +1 -1
  17. package/dist/services/requirement-analyzer/prompt/requirement-analysis.d.ts +1 -1
  18. package/dist/services/requirement-analyzer/prompt/requirement-analysis.d.ts.map +1 -1
  19. package/dist/services/requirement-analyzer/prompt/sdk-template.d.ts +1 -1
  20. package/dist/services/requirement-analyzer/prompt/sdk-template.d.ts.map +1 -1
  21. package/dist/utils/openai.d.ts.map +1 -1
  22. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -4201,82 +4201,80 @@ var __webpack_exports__ = {};
4201
4201
  }({});
4202
4202
  class OpenAIService {
4203
4203
  qwenConfig = {
4204
- apiKey: 'sk-95b0bc60b7464bbbafd64edc2f5bab14',
4205
- baseUrl: 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions',
4206
- model: 'qwen3-coder-plus'
4204
+ apiKey: "sk-95b0bc60b7464bbbafd64edc2f5bab14",
4205
+ baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",
4206
+ model: "qwen3-coder-plus"
4207
4207
  };
4208
4208
  kimiConfig = {
4209
- apiKey: 'sk-fp8wJSigZBEP3x8y6MAZWGPuVIHJ5PDZtX9lMQQk8hjP2R0u',
4210
- baseUrl: 'https://api.moonshot.cn/v1/chat/completions',
4211
- model: 'kimi-latest'
4209
+ apiKey: "sk-fp8wJSigZBEP3x8y6MAZWGPuVIHJ5PDZtX9lMQQk8hjP2R0u",
4210
+ baseUrl: "https://api.moonshot.cn/v1/chat/completions",
4211
+ model: "kimi-k2-0905-preview"
4212
4212
  };
4213
4213
  glm4vConfig = {
4214
- apiKey: 'fb26a7ff758c3974e43bfff49a684dd3.apcuRq6v6RvwuJDu',
4215
- baseUrl: 'https://open.bigmodel.cn/api/paas/v4/chat/completions',
4216
- model: 'glm-4v-flash'
4214
+ apiKey: "fb26a7ff758c3974e43bfff49a684dd3.apcuRq6v6RvwuJDu",
4215
+ baseUrl: "https://open.bigmodel.cn/api/paas/v4/chat/completions",
4216
+ model: "glm-4v-flash"
4217
4217
  };
4218
4218
  deepseekConfig = {
4219
- apiKey: 'sk-d7g4er7QBGrGQ51Cvep2438xVic6aiXXPCR7ZfrYh34kxXzG',
4220
- baseUrl: 'https://api.lkeap.cloud.tencent.com/v1/chat/completions',
4221
- model: 'deepseek-v3.1'
4219
+ apiKey: "sk-d7g4er7QBGrGQ51Cvep2438xVic6aiXXPCR7ZfrYh34kxXzG",
4220
+ baseUrl: "https://api.lkeap.cloud.tencent.com/v1/chat/completions",
4221
+ model: "deepseek-v3.1-terminus"
4222
4222
  };
4223
4223
  constructor(){}
4224
4224
  async generateText(params) {
4225
4225
  const { prompt, temperature, system_prompt } = params;
4226
4226
  let lastError = null;
4227
4227
  try {
4228
- const response = await fetch(this.deepseekConfig.baseUrl, {
4229
- method: 'POST',
4228
+ const response = await fetch(this.kimiConfig.baseUrl, {
4229
+ method: "POST",
4230
4230
  headers: {
4231
- 'Content-Type': 'application/json',
4232
- Authorization: `Bearer ${this.deepseekConfig.apiKey}`
4231
+ "Content-Type": "application/json",
4232
+ Authorization: `Bearer ${this.kimiConfig.apiKey}`
4233
4233
  },
4234
4234
  body: JSON.stringify({
4235
- model: this.deepseekConfig.model,
4235
+ model: this.kimiConfig.model,
4236
4236
  messages: [
4237
4237
  ...system_prompt ? [
4238
4238
  {
4239
- role: 'system',
4239
+ role: "system",
4240
4240
  content: system_prompt
4241
4241
  }
4242
4242
  ] : [],
4243
4243
  {
4244
- role: 'user',
4244
+ role: "user",
4245
4245
  content: prompt
4246
4246
  }
4247
4247
  ],
4248
- max_tokens: 4096,
4249
- temperature: temperature || 0.7,
4250
- stream: false
4248
+ temperature: temperature || 0.7
4251
4249
  })
4252
4250
  });
4253
4251
  if (!response.ok) {
4254
4252
  const errorText = await response.text();
4255
- throw new Error(`DeepSeek API error: ${response.status} ${response.statusText} - ${errorText}`);
4253
+ throw new Error(`Kimi API error: ${response.status} ${response.statusText} - ${errorText}`);
4256
4254
  }
4257
4255
  const data = await response.json();
4258
- if (!data.choices || 0 === data.choices.length) throw new Error('No choices returned from DeepSeek API');
4256
+ if (!data.choices || 0 === data.choices.length) throw new Error("No choices returned from Kimi API");
4259
4257
  return data.choices[0].message.content;
4260
4258
  } catch (error) {
4261
4259
  lastError = error;
4262
4260
  try {
4263
- const response = await fetch(this.qwenConfig.baseUrl, {
4264
- method: 'POST',
4261
+ const response = await fetch(this.deepseekConfig.baseUrl, {
4262
+ method: "POST",
4265
4263
  headers: {
4266
- 'Content-Type': 'application/json',
4267
- Authorization: `Bearer ${this.qwenConfig.apiKey}`
4264
+ "Content-Type": "application/json",
4265
+ Authorization: `Bearer ${this.deepseekConfig.apiKey}`
4268
4266
  },
4269
4267
  body: JSON.stringify({
4270
- model: this.qwenConfig.model,
4268
+ model: this.deepseekConfig.model,
4271
4269
  messages: [
4272
4270
  ...system_prompt ? [
4273
4271
  {
4274
- role: 'system',
4272
+ role: "system",
4275
4273
  content: system_prompt
4276
4274
  }
4277
4275
  ] : [],
4278
4276
  {
4279
- role: 'user',
4277
+ role: "user",
4280
4278
  content: prompt
4281
4279
  }
4282
4280
  ],
@@ -4287,13 +4285,48 @@ var __webpack_exports__ = {};
4287
4285
  });
4288
4286
  if (!response.ok) {
4289
4287
  const errorText = await response.text();
4290
- throw new Error(`Qwen API error: ${response.status} ${response.statusText} - ${errorText}`);
4288
+ throw new Error(`DeepSeek API error: ${response.status} ${response.statusText} - ${errorText}`);
4291
4289
  }
4292
4290
  const data = await response.json();
4293
- if (!data.choices || 0 === data.choices.length) throw new Error('No choices returned from Qwen API');
4291
+ if (!data.choices || 0 === data.choices.length) throw new Error("No choices returned from DeepSeek API");
4294
4292
  return data.choices[0].message.content;
4295
- } catch (qwenError) {
4296
- throw lastError;
4293
+ } catch (deepseekError) {
4294
+ try {
4295
+ const response = await fetch(this.qwenConfig.baseUrl, {
4296
+ method: "POST",
4297
+ headers: {
4298
+ "Content-Type": "application/json",
4299
+ Authorization: `Bearer ${this.qwenConfig.apiKey}`
4300
+ },
4301
+ body: JSON.stringify({
4302
+ model: this.qwenConfig.model,
4303
+ messages: [
4304
+ ...system_prompt ? [
4305
+ {
4306
+ role: "system",
4307
+ content: system_prompt
4308
+ }
4309
+ ] : [],
4310
+ {
4311
+ role: "user",
4312
+ content: prompt
4313
+ }
4314
+ ],
4315
+ max_tokens: 4096,
4316
+ temperature: temperature || 0.7,
4317
+ stream: false
4318
+ })
4319
+ });
4320
+ if (!response.ok) {
4321
+ const errorText = await response.text();
4322
+ throw new Error(`Qwen API error: ${response.status} ${response.statusText} - ${errorText}`);
4323
+ }
4324
+ const data = await response.json();
4325
+ if (!data.choices || 0 === data.choices.length) throw new Error("No choices returned from Qwen API");
4326
+ return data.choices[0].message.content;
4327
+ } catch (qwenError) {
4328
+ throw lastError;
4329
+ }
4297
4330
  }
4298
4331
  }
4299
4332
  }
@@ -4301,49 +4334,67 @@ var __webpack_exports__ = {};
4301
4334
  const { prompt, temperature, system_prompt } = params;
4302
4335
  let lastError = null;
4303
4336
  try {
4304
- const response = await fetch(this.deepseekConfig.baseUrl, {
4305
- method: 'POST',
4337
+ const controller = new AbortController();
4338
+ const timeoutId = setTimeout(()=>controller.abort(), 300000);
4339
+ const response = await fetch(this.kimiConfig.baseUrl, {
4340
+ method: "POST",
4306
4341
  headers: {
4307
- 'Content-Type': 'application/json',
4308
- Authorization: `Bearer ${this.deepseekConfig.apiKey}`
4342
+ "Content-Type": "application/json",
4343
+ Authorization: `Bearer ${this.kimiConfig.apiKey}`
4309
4344
  },
4310
4345
  body: JSON.stringify({
4311
- model: this.deepseekConfig.model,
4346
+ model: this.kimiConfig.model,
4312
4347
  messages: [
4313
4348
  ...system_prompt ? [
4314
4349
  {
4315
- role: 'system',
4350
+ role: "system",
4316
4351
  content: system_prompt
4317
4352
  }
4318
4353
  ] : [],
4319
4354
  {
4320
- role: 'user',
4355
+ role: "user",
4321
4356
  content: prompt
4322
4357
  }
4323
4358
  ],
4324
4359
  max_tokens: 4096,
4325
4360
  temperature: temperature || 0.7,
4326
4361
  stream: true
4327
- })
4362
+ }),
4363
+ signal: controller.signal
4328
4364
  });
4365
+ clearTimeout(timeoutId);
4329
4366
  if (!response.ok) {
4330
4367
  const errorText = await response.text();
4331
- throw new Error(`DeepSeek API error: ${response.status} ${response.statusText} - ${errorText}`);
4368
+ throw new Error(`Kimi API error: ${response.status} ${response.statusText} - ${errorText}`);
4332
4369
  }
4333
- if (!response.body) throw new Error('Response body is null');
4370
+ if (!response.body) throw new Error("Response body is null");
4334
4371
  const reader = response.body.getReader();
4335
4372
  const decoder = new TextDecoder();
4336
4373
  return {
4337
4374
  async *[Symbol.asyncIterator] () {
4375
+ let chunkTimeout = null;
4338
4376
  try {
4339
4377
  while(true){
4340
- const { done, value } = await reader.read();
4378
+ const readPromise = reader.read();
4379
+ const timeoutPromise = new Promise((_, reject)=>{
4380
+ chunkTimeout = setTimeout(()=>{
4381
+ reject(new Error("Chunk read timeout"));
4382
+ }, 30000);
4383
+ });
4384
+ const { done, value } = await Promise.race([
4385
+ readPromise,
4386
+ timeoutPromise
4387
+ ]);
4388
+ if (chunkTimeout) {
4389
+ clearTimeout(chunkTimeout);
4390
+ chunkTimeout = null;
4391
+ }
4341
4392
  if (done) break;
4342
4393
  const chunk = decoder.decode(value);
4343
- const lines = chunk.split('\n').filter((line)=>'' !== line.trim());
4344
- for (const line of lines)if (line.startsWith('data: ')) {
4394
+ const lines = chunk.split("\n").filter((line)=>"" !== line.trim());
4395
+ for (const line of lines)if (line.startsWith("data: ")) {
4345
4396
  const data = line.slice(6);
4346
- if ('[DONE]' === data) return;
4397
+ if ("[DONE]" === data) return;
4347
4398
  try {
4348
4399
  const parsed = JSON.parse(data);
4349
4400
  const content = parsed.choices?.[0]?.delta?.content;
@@ -4351,7 +4402,11 @@ var __webpack_exports__ = {};
4351
4402
  } catch (e) {}
4352
4403
  }
4353
4404
  }
4405
+ } catch (error) {
4406
+ if (chunkTimeout) clearTimeout(chunkTimeout);
4407
+ return;
4354
4408
  } finally{
4409
+ if (chunkTimeout) clearTimeout(chunkTimeout);
4355
4410
  reader.releaseLock();
4356
4411
  }
4357
4412
  }
@@ -4359,49 +4414,67 @@ var __webpack_exports__ = {};
4359
4414
  } catch (error) {
4360
4415
  lastError = error;
4361
4416
  try {
4362
- const response = await fetch(this.qwenConfig.baseUrl, {
4363
- method: 'POST',
4417
+ const controller = new AbortController();
4418
+ const timeoutId = setTimeout(()=>controller.abort(), 300000);
4419
+ const response = await fetch(this.deepseekConfig.baseUrl, {
4420
+ method: "POST",
4364
4421
  headers: {
4365
- 'Content-Type': 'application/json',
4366
- Authorization: `Bearer ${this.qwenConfig.apiKey}`
4422
+ "Content-Type": "application/json",
4423
+ Authorization: `Bearer ${this.deepseekConfig.apiKey}`
4367
4424
  },
4368
4425
  body: JSON.stringify({
4369
- model: this.qwenConfig.model,
4426
+ model: this.deepseekConfig.model,
4370
4427
  messages: [
4371
4428
  ...system_prompt ? [
4372
4429
  {
4373
- role: 'system',
4430
+ role: "system",
4374
4431
  content: system_prompt
4375
4432
  }
4376
4433
  ] : [],
4377
4434
  {
4378
- role: 'user',
4435
+ role: "user",
4379
4436
  content: prompt
4380
4437
  }
4381
4438
  ],
4382
4439
  max_tokens: 4096,
4383
4440
  temperature: temperature || 0.7,
4384
4441
  stream: true
4385
- })
4442
+ }),
4443
+ signal: controller.signal
4386
4444
  });
4445
+ clearTimeout(timeoutId);
4387
4446
  if (!response.ok) {
4388
4447
  const errorText = await response.text();
4389
- throw new Error(`Qwen API error: ${response.status} ${response.statusText} - ${errorText}`);
4448
+ throw new Error(`DeepSeek API error: ${response.status} ${response.statusText} - ${errorText}`);
4390
4449
  }
4391
- if (!response.body) throw new Error('Response body is null');
4450
+ if (!response.body) throw new Error("Response body is null");
4392
4451
  const reader = response.body.getReader();
4393
4452
  const decoder = new TextDecoder();
4394
4453
  return {
4395
4454
  async *[Symbol.asyncIterator] () {
4455
+ let chunkTimeout = null;
4396
4456
  try {
4397
4457
  while(true){
4398
- const { done, value } = await reader.read();
4458
+ const readPromise = reader.read();
4459
+ const timeoutPromise = new Promise((_, reject)=>{
4460
+ chunkTimeout = setTimeout(()=>{
4461
+ reject(new Error("Chunk read timeout"));
4462
+ }, 30000);
4463
+ });
4464
+ const { done, value } = await Promise.race([
4465
+ readPromise,
4466
+ timeoutPromise
4467
+ ]);
4468
+ if (chunkTimeout) {
4469
+ clearTimeout(chunkTimeout);
4470
+ chunkTimeout = null;
4471
+ }
4399
4472
  if (done) break;
4400
4473
  const chunk = decoder.decode(value);
4401
- const lines = chunk.split('\n').filter((line)=>'' !== line.trim());
4402
- for (const line of lines)if (line.startsWith('data: ')) {
4474
+ const lines = chunk.split("\n").filter((line)=>"" !== line.trim());
4475
+ for (const line of lines)if (line.startsWith("data: ")) {
4403
4476
  const data = line.slice(6);
4404
- if ('[DONE]' === data) return;
4477
+ if ("[DONE]" === data) return;
4405
4478
  try {
4406
4479
  const parsed = JSON.parse(data);
4407
4480
  const content = parsed.choices?.[0]?.delta?.content;
@@ -4409,13 +4482,97 @@ var __webpack_exports__ = {};
4409
4482
  } catch (e) {}
4410
4483
  }
4411
4484
  }
4485
+ } catch (error) {
4486
+ if (chunkTimeout) clearTimeout(chunkTimeout);
4487
+ return;
4412
4488
  } finally{
4489
+ if (chunkTimeout) clearTimeout(chunkTimeout);
4413
4490
  reader.releaseLock();
4414
4491
  }
4415
4492
  }
4416
4493
  };
4417
- } catch (qwenError) {
4418
- throw lastError;
4494
+ } catch (deepseekError) {
4495
+ try {
4496
+ const controller = new AbortController();
4497
+ const timeoutId = setTimeout(()=>controller.abort(), 300000);
4498
+ const response = await fetch(this.qwenConfig.baseUrl, {
4499
+ method: "POST",
4500
+ headers: {
4501
+ "Content-Type": "application/json",
4502
+ Authorization: `Bearer ${this.qwenConfig.apiKey}`
4503
+ },
4504
+ body: JSON.stringify({
4505
+ model: this.qwenConfig.model,
4506
+ messages: [
4507
+ ...system_prompt ? [
4508
+ {
4509
+ role: "system",
4510
+ content: system_prompt
4511
+ }
4512
+ ] : [],
4513
+ {
4514
+ role: "user",
4515
+ content: prompt
4516
+ }
4517
+ ],
4518
+ max_tokens: 4096,
4519
+ temperature: temperature || 0.7,
4520
+ stream: true
4521
+ }),
4522
+ signal: controller.signal
4523
+ });
4524
+ clearTimeout(timeoutId);
4525
+ if (!response.ok) {
4526
+ const errorText = await response.text();
4527
+ throw new Error(`Qwen API error: ${response.status} ${response.statusText} - ${errorText}`);
4528
+ }
4529
+ if (!response.body) throw new Error("Response body is null");
4530
+ const reader = response.body.getReader();
4531
+ const decoder = new TextDecoder();
4532
+ return {
4533
+ async *[Symbol.asyncIterator] () {
4534
+ let chunkTimeout = null;
4535
+ try {
4536
+ while(true){
4537
+ const readPromise = reader.read();
4538
+ const timeoutPromise = new Promise((_, reject)=>{
4539
+ chunkTimeout = setTimeout(()=>{
4540
+ reject(new Error("Chunk read timeout"));
4541
+ }, 30000);
4542
+ });
4543
+ const { done, value } = await Promise.race([
4544
+ readPromise,
4545
+ timeoutPromise
4546
+ ]);
4547
+ if (chunkTimeout) {
4548
+ clearTimeout(chunkTimeout);
4549
+ chunkTimeout = null;
4550
+ }
4551
+ if (done) break;
4552
+ const chunk = decoder.decode(value);
4553
+ const lines = chunk.split("\n").filter((line)=>"" !== line.trim());
4554
+ for (const line of lines)if (line.startsWith("data: ")) {
4555
+ const data = line.slice(6);
4556
+ if ("[DONE]" === data) return;
4557
+ try {
4558
+ const parsed = JSON.parse(data);
4559
+ const content = parsed.choices?.[0]?.delta?.content;
4560
+ if (content) yield content;
4561
+ } catch (e) {}
4562
+ }
4563
+ }
4564
+ } catch (error) {
4565
+ if (chunkTimeout) clearTimeout(chunkTimeout);
4566
+ return;
4567
+ } finally{
4568
+ if (chunkTimeout) clearTimeout(chunkTimeout);
4569
+ reader.releaseLock();
4570
+ }
4571
+ }
4572
+ };
4573
+ } catch (qwenError) {
4574
+ throw lastError;
4575
+ }
4419
4576
  }
4420
4577
  }
4421
4578
  }
@@ -4424,9 +4581,9 @@ var __webpack_exports__ = {};
4424
4581
  let lastError = null;
4425
4582
  try {
4426
4583
  const response = await fetch(this.glm4vConfig.baseUrl, {
4427
- method: 'POST',
4584
+ method: "POST",
4428
4585
  headers: {
4429
- 'Content-Type': 'application/json',
4586
+ "Content-Type": "application/json",
4430
4587
  Authorization: `Bearer ${this.glm4vConfig.apiKey}`
4431
4588
  },
4432
4589
  body: JSON.stringify({
@@ -4434,21 +4591,21 @@ var __webpack_exports__ = {};
4434
4591
  messages: [
4435
4592
  ...system_prompt ? [
4436
4593
  {
4437
- role: 'system',
4594
+ role: "system",
4438
4595
  content: system_prompt
4439
4596
  }
4440
4597
  ] : [],
4441
4598
  {
4442
- role: 'user',
4599
+ role: "user",
4443
4600
  content: [
4444
4601
  {
4445
- type: 'image_url',
4602
+ type: "image_url",
4446
4603
  image_url: {
4447
4604
  url: image_base64
4448
4605
  }
4449
4606
  },
4450
4607
  {
4451
- type: 'text',
4608
+ type: "text",
4452
4609
  text: prompt
4453
4610
  }
4454
4611
  ]
@@ -4462,15 +4619,15 @@ var __webpack_exports__ = {};
4462
4619
  throw new Error(`GLM-4V API error: ${response.status} ${response.statusText} - ${errorText}`);
4463
4620
  }
4464
4621
  const data = await response.json();
4465
- if (!data.choices || 0 === data.choices.length) throw new Error('No choices returned from GLM-4V API');
4622
+ if (!data.choices || 0 === data.choices.length) throw new Error("No choices returned from GLM-4V API");
4466
4623
  return data.choices[0].message.content;
4467
4624
  } catch (error) {
4468
4625
  lastError = error;
4469
4626
  try {
4470
4627
  const response = await fetch(this.kimiConfig.baseUrl, {
4471
- method: 'POST',
4628
+ method: "POST",
4472
4629
  headers: {
4473
- 'Content-Type': 'application/json',
4630
+ "Content-Type": "application/json",
4474
4631
  Authorization: `Bearer ${this.kimiConfig.apiKey}`
4475
4632
  },
4476
4633
  body: JSON.stringify({
@@ -4478,26 +4635,26 @@ var __webpack_exports__ = {};
4478
4635
  messages: [
4479
4636
  ...system_prompt ? [
4480
4637
  {
4481
- role: 'system',
4638
+ role: "system",
4482
4639
  content: [
4483
4640
  {
4484
- type: 'text',
4641
+ type: "text",
4485
4642
  text: system_prompt
4486
4643
  }
4487
4644
  ]
4488
4645
  }
4489
4646
  ] : [],
4490
4647
  {
4491
- role: 'user',
4648
+ role: "user",
4492
4649
  content: [
4493
4650
  {
4494
- type: 'image_url',
4651
+ type: "image_url",
4495
4652
  image_url: {
4496
4653
  url: image_base64
4497
4654
  }
4498
4655
  },
4499
4656
  {
4500
- type: 'text',
4657
+ type: "text",
4501
4658
  text: prompt
4502
4659
  }
4503
4660
  ]
@@ -4511,7 +4668,7 @@ var __webpack_exports__ = {};
4511
4668
  throw new Error(`Kimi Vision API error: ${response.status} ${response.statusText} - ${errorText}`);
4512
4669
  }
4513
4670
  const data = await response.json();
4514
- if (!data.choices || 0 === data.choices.length) throw new Error('No choices returned from Kimi Vision API');
4671
+ if (!data.choices || 0 === data.choices.length) throw new Error("No choices returned from Kimi Vision API");
4515
4672
  return data.choices[0].message.content;
4516
4673
  } catch (kimiError) {
4517
4674
  throw lastError;
@@ -4520,50 +4677,25 @@ var __webpack_exports__ = {};
4520
4677
  }
4521
4678
  }
4522
4679
  const openAIService = new OpenAIService();
4523
- const intelligentRequirementAnalysisPrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{7684}\u{8F6F}\u{4EF6}\u{9700}\u{6C42}\u{5206}\u{6790}\u{5E08}\u{FF0C}\u{64C5}\u{957F}\u{5FEB}\u{901F}\u{8BC6}\u{522B}\u{9700}\u{6C42}\u{7C7B}\u{578B}\u{5E76}\u{8FDB}\u{884C}\u{7CBE}\u{786E}\u{7684}\u{529F}\u{80FD}\u{70B9}\u{5206}\u{6790}\u{3002}
4524
-
4525
- ## \u{4EFB}\u{52A1}\u{8981}\u{6C42}
4526
- - \u{5FEB}\u{901F}\u{8BC6}\u{522B}\u{9700}\u{6C42}\u{7684}\u{4E3B}\u{8981}\u{7C7B}\u{578B}\u{FF08}\u{63A5}\u{53E3}\u{3001}PC\u{9875}\u{9762}\u{3001}APP\u{3001}SDK\u{96C6}\u{6210}\u{3001}\u{6DF7}\u{5408}\u{7C7B}\u{578B}\u{FF09}
4527
- - \u{6839}\u{636E}\u{9700}\u{6C42}\u{7C7B}\u{578B}\u{FF0C}\u{7CBE}\u{786E}\u{63D0}\u{53D6}2-5\u{4E2A}\u{6838}\u{5FC3}\u{529F}\u{80FD}\u{70B9}
4528
- - \u{907F}\u{514D}\u{8FC7}\u{5EA6}\u{62C6}\u{5206}\u{FF0C}\u{786E}\u{4FDD}\u{6BCF}\u{4E2A}\u{529F}\u{80FD}\u{70B9}\u{90FD}\u{5177}\u{6709}\u{72EC}\u{7ACB}\u{7684}\u{4E1A}\u{52A1}\u{4EF7}\u{503C}
4529
- - \u{63A8}\u{8350}\u{6700}\u{5408}\u{9002}\u{7684}\u{6280}\u{672F}\u{6A21}\u{677F}
4530
-
4531
- ## \u{8F93}\u{5165}\u{5185}\u{5BB9}
4680
+ const intelligentRequirementAnalysisPrompt = `\u{4F60}\u{662F}\u{8F6F}\u{4EF6}\u{9700}\u{6C42}\u{5206}\u{6790}\u{5E08}\u{FF0C}\u{5FEB}\u{901F}\u{8BC6}\u{522B}\u{9700}\u{6C42}\u{7C7B}\u{578B}\u{5E76}\u{7CBE}\u{786E}\u{63D0}\u{53D6}2-5\u{4E2A}\u{6838}\u{5FC3}\u{529F}\u{80FD}\u{70B9}\u{3002}
4532
4681
 
4682
+ **\u{8F93}\u{5165}\u{5185}\u{5BB9}**:
4533
4683
  {inputContent}
4534
4684
 
4535
- ## \u{9700}\u{6C42}\u{7C7B}\u{578B}\u{8BC6}\u{522B}\u{6807}\u{51C6}
4536
-
4537
- **\u{63A5}\u{53E3}\u{7C7B}\u{578B}**\u{FF1A}
4538
- - \u{5173}\u{952E}\u{8BCD}\u{FF1A}API\u{3001}\u{63A5}\u{53E3}\u{3001}REST\u{3001}GraphQL\u{3001}\u{5FAE}\u{670D}\u{52A1}\u{3001}\u{540E}\u{7AEF}\u{670D}\u{52A1}\u{3001}\u{6570}\u{636E}\u{63A5}\u{53E3}\u{3001}\u{670D}\u{52A1}\u{7AEF}
4539
- - \u{7279}\u{5F81}\u{FF1A}\u{4E3B}\u{8981}\u{63CF}\u{8FF0}\u{6570}\u{636E}\u{4EA4}\u{4E92}\u{3001}\u{4E1A}\u{52A1}\u{903B}\u{8F91}\u{5904}\u{7406}\u{3001}\u{7CFB}\u{7EDF}\u{96C6}\u{6210}\u{3001}\u{6570}\u{636E}\u{5E93}\u{64CD}\u{4F5C}
4540
- - \u{8F93}\u{51FA}\u{FF1A}\u{6570}\u{636E}\u{7ED3}\u{6784}\u{3001}\u{63A5}\u{53E3}\u{89C4}\u{8303}\u{3001}\u{4E1A}\u{52A1}\u{903B}\u{8F91}
4685
+ ## \u{9700}\u{6C42}\u{7C7B}\u{578B}\u{8BC6}\u{522B}
4541
4686
 
4542
- **PC\u{9875}\u{9762}\u{7C7B}\u{578B}**\u{FF1A}
4543
- - \u{5173}\u{952E}\u{8BCD}\u{FF1A}\u{9875}\u{9762}\u{3001}\u{754C}\u{9762}\u{3001}UI\u{3001}\u{7F51}\u{9875}\u{3001}\u{6D4F}\u{89C8}\u{5668}\u{3001}\u{524D}\u{7AEF}\u{3001}\u{7BA1}\u{7406}\u{540E}\u{53F0}\u{3001}Web\u{5E94}\u{7528}
4544
- - \u{7279}\u{5F81}\u{FF1A}\u{4E3B}\u{8981}\u{63CF}\u{8FF0}\u{7528}\u{6237}\u{754C}\u{9762}\u{3001}\u{8868}\u{5355}\u{64CD}\u{4F5C}\u{3001}\u{6570}\u{636E}\u{5C55}\u{793A}\u{3001}\u{7528}\u{6237}\u{4EA4}\u{4E92}
4545
- - \u{8F93}\u{51FA}\u{FF1A}\u{9875}\u{9762}\u{5E03}\u{5C40}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{3001}\u{6837}\u{5F0F}\u{8BBE}\u{8BA1}
4546
-
4547
- **APP\u{7C7B}\u{578B}**\u{FF1A}
4548
- - \u{5173}\u{952E}\u{8BCD}\u{FF1A}App\u{3001}\u{79FB}\u{52A8}\u{5E94}\u{7528}\u{3001}iOS\u{3001}Android\u{3001}\u{79FB}\u{52A8}\u{7AEF}\u{3001}\u{5C0F}\u{7A0B}\u{5E8F}\u{3001}\u{539F}\u{751F}\u{5E94}\u{7528}
4549
- - \u{7279}\u{5F81}\u{FF1A}\u{4E3B}\u{8981}\u{63CF}\u{8FF0}\u{79FB}\u{52A8}\u{7AEF}\u{529F}\u{80FD}\u{3001}\u{624B}\u{52BF}\u{64CD}\u{4F5C}\u{3001}\u{79FB}\u{52A8}\u{8BBE}\u{5907}\u{7279}\u{6027}\u{3001}\u{63A8}\u{9001}\u{901A}\u{77E5}
4550
- - \u{8F93}\u{51FA}\u{FF1A}\u{79FB}\u{52A8}\u{7AEF}\u{754C}\u{9762}\u{3001}\u{624B}\u{52BF}\u{4EA4}\u{4E92}\u{3001}\u{8BBE}\u{5907}\u{9002}\u{914D}
4551
-
4552
- **SDK\u{96C6}\u{6210}\u{7C7B}\u{578B}**\u{FF1A}
4553
- - \u{5173}\u{952E}\u{8BCD}\u{FF1A}SDK\u{3001}\u{7B2C}\u{4E09}\u{65B9}\u{3001}\u{96C6}\u{6210}\u{3001}\u{5BF9}\u{63A5}\u{3001}\u{652F}\u{4ED8}\u{3001}\u{5730}\u{56FE}\u{3001}\u{63A8}\u{9001}\u{3001}\u{7EDF}\u{8BA1}\u{3001}\u{5F00}\u{653E}\u{5E73}\u{53F0}
4554
- - \u{7279}\u{5F81}\u{FF1A}\u{4E3B}\u{8981}\u{63CF}\u{8FF0}\u{4E0E}\u{5916}\u{90E8}\u{670D}\u{52A1}\u{7684}\u{5BF9}\u{63A5}\u{3001}\u{914D}\u{7F6E}\u{53C2}\u{6570}\u{3001}\u{56DE}\u{8C03}\u{5904}\u{7406}
4555
- - \u{8F93}\u{51FA}\u{FF1A}\u{96C6}\u{6210}\u{6D41}\u{7A0B}\u{3001}\u{914D}\u{7F6E}\u{8BF4}\u{660E}\u{3001}\u{8C03}\u{7528}\u{793A}\u{4F8B}
4556
-
4557
- **\u{6DF7}\u{5408}\u{7C7B}\u{578B}**\u{FF1A}
4558
- - \u{540C}\u{65F6}\u{5305}\u{542B}\u{4E0A}\u{8FF0}\u{591A}\u{79CD}\u{7C7B}\u{578B}\u{7684}\u{7279}\u{5F81}
4559
- - \u{9700}\u{8981}\u{751F}\u{6210}\u{591A}\u{79CD}\u{6280}\u{672F}\u{6A21}\u{677F}
4687
+ **\u{63A5}\u{53E3}**: API\u{3001}REST\u{3001}GraphQL\u{3001}\u{5FAE}\u{670D}\u{52A1}\u{3001}\u{540E}\u{7AEF}\u{670D}\u{52A1} \u{2192} \u{6570}\u{636E}\u{4EA4}\u{4E92}\u{3001}\u{4E1A}\u{52A1}\u{903B}\u{8F91}\u{3001}\u{7CFB}\u{7EDF}\u{96C6}\u{6210}
4688
+ **PC\u{9875}\u{9762}**: \u{9875}\u{9762}\u{3001}UI\u{3001}\u{7F51}\u{9875}\u{3001}\u{524D}\u{7AEF}\u{3001}\u{7BA1}\u{7406}\u{540E}\u{53F0} \u{2192} \u{7528}\u{6237}\u{754C}\u{9762}\u{3001}\u{8868}\u{5355}\u{64CD}\u{4F5C}\u{3001}\u{6570}\u{636E}\u{5C55}\u{793A}
4689
+ **APP**: \u{79FB}\u{52A8}\u{5E94}\u{7528}\u{3001}iOS\u{3001}Android\u{3001}\u{5C0F}\u{7A0B}\u{5E8F} \u{2192} \u{79FB}\u{52A8}\u{7AEF}\u{529F}\u{80FD}\u{3001}\u{624B}\u{52BF}\u{64CD}\u{4F5C}\u{3001}\u{8BBE}\u{5907}\u{7279}\u{6027}
4690
+ **SDK\u{96C6}\u{6210}**: \u{7B2C}\u{4E09}\u{65B9}\u{3001}\u{5BF9}\u{63A5}\u{3001}\u{652F}\u{4ED8}\u{3001}\u{5730}\u{56FE}\u{3001}\u{63A8}\u{9001} \u{2192} \u{5916}\u{90E8}\u{670D}\u{52A1}\u{5BF9}\u{63A5}\u{3001}\u{914D}\u{7F6E}\u{53C2}\u{6570}\u{3001}\u{56DE}\u{8C03}\u{5904}\u{7406}
4691
+ **\u{6DF7}\u{5408}**: \u{5305}\u{542B}\u{591A}\u{79CD}\u{7C7B}\u{578B}\u{7279}\u{5F81}
4560
4692
 
4561
4693
  ## \u{529F}\u{80FD}\u{70B9}\u{63D0}\u{53D6}\u{539F}\u{5219}
4562
4694
 
4563
- 1. **\u{7CBE}\u{786E}\u{6027}\u{539F}\u{5219}**\u{FF1A}\u{53EA}\u{63D0}\u{53D6}\u{771F}\u{6B63}\u{6838}\u{5FC3}\u{7684}\u{3001}\u{72EC}\u{7ACB}\u{7684}\u{529F}\u{80FD}\u{70B9}\u{FF08}\u{901A}\u{5E38}2-5\u{4E2A}\u{FF09}
4564
- 2. **\u{4E1A}\u{52A1}\u{4EF7}\u{503C}\u{539F}\u{5219}**\u{FF1A}\u{6BCF}\u{4E2A}\u{529F}\u{80FD}\u{70B9}\u{90FD}\u{5E94}\u{8BE5}\u{5177}\u{6709}\u{660E}\u{786E}\u{7684}\u{4E1A}\u{52A1}\u{4EF7}\u{503C}
4565
- 3. **\u{6280}\u{672F}\u{5339}\u{914D}\u{539F}\u{5219}**\u{FF1A}\u{529F}\u{80FD}\u{70B9}\u{5E94}\u{8BE5}\u{4E0E}\u{8BC6}\u{522B}\u{51FA}\u{7684}\u{9700}\u{6C42}\u{7C7B}\u{578B}\u{9AD8}\u{5EA6}\u{5339}\u{914D}
4566
- 4. **\u{907F}\u{514D}\u{8FC7}\u{5EA6}\u{62C6}\u{5206}**\u{FF1A}\u{4E0D}\u{8981}\u{5C06}\u{4E00}\u{4E2A}\u{5B8C}\u{6574}\u{7684}\u{529F}\u{80FD}\u{62C6}\u{5206}\u{6210}\u{591A}\u{4E2A}\u{5C0F}\u{529F}\u{80FD}\u{70B9}
4695
+ 1. \u{7CBE}\u{786E}\u{6027}\u{FF1A}\u{53EA}\u{63D0}\u{53D6}\u{6838}\u{5FC3}\u{72EC}\u{7ACB}\u{529F}\u{80FD}\u{70B9}\u{FF08}2-5\u{4E2A}\u{FF09}
4696
+ 2. \u{4E1A}\u{52A1}\u{4EF7}\u{503C}\u{FF1A}\u{6BCF}\u{4E2A}\u{529F}\u{80FD}\u{70B9}\u{6709}\u{660E}\u{786E}\u{4E1A}\u{52A1}\u{4EF7}\u{503C}
4697
+ 3. \u{6280}\u{672F}\u{5339}\u{914D}\u{FF1A}\u{529F}\u{80FD}\u{70B9}\u{4E0E}\u{9700}\u{6C42}\u{7C7B}\u{578B}\u{9AD8}\u{5EA6}\u{5339}\u{914D}
4698
+ 4. \u{907F}\u{514D}\u{8FC7}\u{5EA6}\u{62C6}\u{5206}\u{FF1A}\u{4FDD}\u{6301}\u{529F}\u{80FD}\u{5B8C}\u{6574}\u{6027}
4567
4699
 
4568
4700
  ## \u{8F93}\u{51FA}\u{683C}\u{5F0F}
4569
4701
 
@@ -4594,21 +4726,9 @@ var __webpack_exports__ = {};
4594
4726
  }
4595
4727
  \`\`\`
4596
4728
 
4597
- ## \u{5206}\u{6790}\u{6B65}\u{9AA4}
4598
-
4599
- 1. **\u{5FEB}\u{901F}\u{7C7B}\u{578B}\u{8BC6}\u{522B}**\u{FF1A}\u{6839}\u{636E}\u{5173}\u{952E}\u{8BCD}\u{548C}\u{7279}\u{5F81}\u{5FEB}\u{901F}\u{5224}\u{65AD}\u{9700}\u{6C42}\u{7684}\u{4E3B}\u{8981}\u{7C7B}\u{578B}
4600
- 2. **\u{6838}\u{5FC3}\u{529F}\u{80FD}\u{63D0}\u{53D6}**\u{FF1A}\u{63D0}\u{53D6}2-5\u{4E2A}\u{771F}\u{6B63}\u{6838}\u{5FC3}\u{7684}\u{529F}\u{80FD}\u{70B9}\u{FF0C}\u{907F}\u{514D}\u{8FC7}\u{5EA6}\u{62C6}\u{5206}
4601
- 3. **\u{6A21}\u{677F}\u{63A8}\u{8350}**\u{FF1A}\u{6839}\u{636E}\u{9700}\u{6C42}\u{7C7B}\u{578B}\u{63A8}\u{8350}\u{6700}\u{5408}\u{9002}\u{7684}\u{6280}\u{672F}\u{6A21}\u{677F}
4602
- 4. **\u{4F18}\u{5316}\u{5EFA}\u{8BAE}**\u{FF1A}\u{63D0}\u{4F9B}\u{529F}\u{80FD}\u{70B9}\u{4F18}\u{5316}\u{5EFA}\u{8BAE}\u{FF0C}\u{786E}\u{4FDD}\u{7CBE}\u{786E}\u{6027}
4603
4729
 
4604
- ## \u{91CD}\u{8981}\u{63D0}\u{9192}
4605
4730
 
4606
- - **\u{907F}\u{514D}\u{8FC7}\u{5EA6}\u{62C6}\u{5206}**\u{FF1A}\u{4E00}\u{4E2A}\u{5B8C}\u{6574}\u{7684}\u{4E1A}\u{52A1}\u{529F}\u{80FD}\u{4E0D}\u{8981}\u{62C6}\u{5206}\u{6210}\u{591A}\u{4E2A}\u{5C0F}\u{529F}\u{80FD}\u{70B9}
4607
- - **\u{7CBE}\u{786E}\u{5339}\u{914D}**\u{FF1A}\u{786E}\u{4FDD}\u{529F}\u{80FD}\u{70B9}\u{4E0E}\u{9700}\u{6C42}\u{7C7B}\u{578B}\u{9AD8}\u{5EA6}\u{5339}\u{914D}
4608
- - **\u{6570}\u{91CF}\u{63A7}\u{5236}**\u{FF1A}\u{901A}\u{5E38}\u{4E00}\u{4E2A}\u{9700}\u{6C42}\u{5E94}\u{8BE5}\u{53EA}\u{6709}2-5\u{4E2A}\u{6838}\u{5FC3}\u{529F}\u{80FD}\u{70B9}
4609
- - **\u{6A21}\u{677F}\u{5BFC}\u{5411}**\u{FF1A}\u{4F18}\u{5148}\u{8003}\u{8651}\u{80FD}\u{591F}\u{751F}\u{6210}\u{5355}\u{4E00}\u{6280}\u{672F}\u{6A21}\u{677F}\u{7684}\u{529F}\u{80FD}\u{70B9}\u{7EC4}\u{5408}
4610
-
4611
- \u{8BF7}\u{57FA}\u{4E8E}\u{4EE5}\u{4E0A}\u{6807}\u{51C6}\u{8FDB}\u{884C}\u{667A}\u{80FD}\u{9700}\u{6C42}\u{5206}\u{6790}\u{FF1A}`;
4731
+ **\u{8981}\u{6C42}**: \u{907F}\u{514D}\u{8FC7}\u{5EA6}\u{62C6}\u{5206}\u{FF0C}\u{7CBE}\u{786E}\u{5339}\u{914D}\u{9700}\u{6C42}\u{7C7B}\u{578B}\u{FF0C}\u{63A7}\u{5236}2-5\u{4E2A}\u{6838}\u{5FC3}\u{529F}\u{80FD}\u{70B9}\u{FF0C}\u{4F18}\u{5148}\u{5355}\u{4E00}\u{6280}\u{672F}\u{6A21}\u{677F}\u{3002}`;
4612
4732
  class IntelligentAnalyzer {
4613
4733
  async analyzeRequirements(inputContent, projectInfo, customPrompt) {
4614
4734
  try {
@@ -4724,20 +4844,13 @@ var __webpack_exports__ = {};
4724
4844
  });
4725
4845
  }
4726
4846
  }
4727
- const requirementAnalysisPrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{7684}\u{8F6F}\u{4EF6}\u{5DE5}\u{7A0B}\u{9700}\u{6C42}\u{5206}\u{6790}\u{4E13}\u{5BB6}\u{3002}\u{8BF7}\u{57FA}\u{4E8E}\u{7528}\u{6237}\u{63D0}\u{4F9B}\u{7684}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{FF0C}\u{751F}\u{6210}\u{4E00}\u{4EFD}\u{5B8C}\u{6574}\u{3001}\u{8BE6}\u{7EC6}\u{7684}\u{6807}\u{51C6}\u{5316}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{3002}
4728
-
4729
- ## \u{4EFB}\u{52A1}\u{8981}\u{6C42}
4730
- - \u{5FC5}\u{987B}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{683C}\u{5F0F}\u{9700}\u{6C42}\u{6587}\u{6863}
4731
- - \u{4E0D}\u{8981}\u{53EA}\u{7ED9}\u{51FA}\u{603B}\u{7ED3}\u{FF0C}\u{8981}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}\u{6587}\u{6863}\u{5185}\u{5BB9}
4732
- - \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{8BE6}\u{7EC6}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{7701}\u{7565}
4733
- - \u{6587}\u{6863}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
4847
+ const external_crypto_namespaceObject = require("crypto");
4848
+ var external_crypto_default = /*#__PURE__*/ __webpack_require__.n(external_crypto_namespaceObject);
4849
+ const requirementAnalysisPrompt = `\u{4F60}\u{662F}\u{8F6F}\u{4EF6}\u{5DE5}\u{7A0B}\u{9700}\u{6C42}\u{5206}\u{6790}\u{4E13}\u{5BB6}\u{3002}\u{57FA}\u{4E8E}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}\u{6807}\u{51C6}\u{5316}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF08}Markdown\u{683C}\u{5F0F}\u{FF0C}3000\u{5B57}\u{4EE5}\u{4E0A}\u{FF09}\u{3002}
4734
4850
 
4735
- ## \u{8F93}\u{5165}\u{4FE1}\u{606F}
4736
- - **\u{529F}\u{80FD}\u{540D}\u{79F0}**: {featureName}
4737
- - **\u{4E1A}\u{52A1}\u{9886}\u{57DF}**: {businessDomain}
4738
- - **\u{751F}\u{6210}\u{65F6}\u{5E8F}\u{56FE}**: {generateSequenceDiagram}
4851
+ **\u{8F93}\u{5165}**: \u{529F}\u{80FD}\u{540D}\u{79F0}={featureName}, \u{4E1A}\u{52A1}\u{9886}\u{57DF}={businessDomain}, \u{751F}\u{6210}\u{65F6}\u{5E8F}\u{56FE}={generateSequenceDiagram}
4739
4852
 
4740
- ## \u{539F}\u{59CB}\u{9700}\u{6C42}\u{5185}\u{5BB9}
4853
+ **\u{539F}\u{59CB}\u{9700}\u{6C42}**:
4741
4854
  \`\`\`
4742
4855
  {inputContent}
4743
4856
  \`\`\`
@@ -5375,30 +5488,13 @@ Scenario Outline: UI\u{7EC4}\u{4EF6}\u{4EA4}\u{4E92}\u{5904}\u{7406}\u{6D41}\u{7
5375
5488
 
5376
5489
  ---
5377
5490
 
5378
- **\u{91CD}\u{8981}\u{63D0}\u{9192}**:
5379
- 1. \u{8BF7}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{6587}\u{6863}\u{FF0C}\u{4E0D}\u{8981}\u{7701}\u{7565}\u{4EFB}\u{4F55}\u{7AE0}\u{8282}
5380
- 2. \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{5B9E}\u{8D28}\u{6027}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{53EA}\u{662F}\u{6A21}\u{677F}
5381
- 3. \u{6839}\u{636E}\u{8F93}\u{5165}\u{7684}\u{539F}\u{59CB}\u{5185}\u{5BB9}\u{8FDB}\u{884C}\u{5177}\u{4F53}\u{5206}\u{6790}\u{FF0C}\u{4E0D}\u{8981}\u{4F7F}\u{7528}\u{901A}\u{7528}\u{6A21}\u{677F}
5382
- 4. \u{6587}\u{6863}\u{603B}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
5383
- 5. \u{8868}\u{683C}\u{4E2D}\u{7684}\u{5185}\u{5BB9}\u{8981}\u{586B}\u{5199}\u{5177}\u{4F53}\u{4FE1}\u{606F}\u{FF0C}\u{4E0D}\u{8981}\u{4FDD}\u{7559}\u{5360}\u{4F4D}\u{7B26}
5384
-
5385
- \u{73B0}\u{5728}\u{8BF7}\u{5F00}\u{59CB}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF1A}\`;
5491
+ **\u{8981}\u{6C42}**: \u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{6587}\u{6863}\u{FF0C}\u{6BCF}\u{7AE0}\u{8282}\u{6709}\u{5B9E}\u{8D28}\u{5185}\u{5BB9}\u{FF0C}\u{8868}\u{683C}\u{586B}\u{5199}\u{5177}\u{4F53}\u{4FE1}\u{606F}\u{FF0C}\u{57FA}\u{4E8E}\u{539F}\u{59CB}\u{5185}\u{5BB9}\u{5177}\u{4F53}\u{5206}\u{6790}\u{3002}\`;
5386
5492
  `;
5387
- const pcPageTemplatePrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{7684}\u{524D}\u{7AEF}\u{6280}\u{672F}\u{6587}\u{6863}\u{7F16}\u{5199}\u{4E13}\u{5BB6}\u{3002}\u{8BF7}\u{57FA}\u{4E8E}\u{7528}\u{6237}\u{63D0}\u{4F9B}\u{7684}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{FF0C}\u{751F}\u{6210}\u{4E00}\u{4EFD}\u{5B8C}\u{6574}\u{3001}\u{8BE6}\u{7EC6}\u{7684}\u{524D}\u{7AEF}PC\u{9875}\u{9762}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{3002}
5388
-
5389
- ## \u{4EFB}\u{52A1}\u{8981}\u{6C42}
5390
- - \u{5FC5}\u{987B}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{683C}\u{5F0F}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}
5391
- - \u{4E0D}\u{8981}\u{53EA}\u{7ED9}\u{51FA}\u{603B}\u{7ED3}\u{FF0C}\u{8981}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}\u{6587}\u{6863}\u{5185}\u{5BB9}
5392
- - \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{8BE6}\u{7EC6}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{7701}\u{7565}
5393
- - \u{6587}\u{6863}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
5394
- - \u{91CD}\u{70B9}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{5E03}\u{5C40}\u{3001}\u{6837}\u{5F0F}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{7B49}\u{524D}\u{7AEF}\u{76F8}\u{5173}\u{5185}\u{5BB9}
5493
+ const pcPageTemplatePrompt = `\u{4F60}\u{662F}\u{524D}\u{7AEF}\u{6280}\u{672F}\u{6587}\u{6863}\u{4E13}\u{5BB6}\u{3002}\u{57FA}\u{4E8E}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}PC\u{9875}\u{9762}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF08}Markdown\u{683C}\u{5F0F}\u{FF0C}3000\u{5B57}\u{4EE5}\u{4E0A}\u{FF09}\u{3002}
5395
5494
 
5396
- ## \u{8F93}\u{5165}\u{4FE1}\u{606F}
5397
- - **\u{529F}\u{80FD}\u{540D}\u{79F0}**: {featureName}
5398
- - **\u{4E1A}\u{52A1}\u{9886}\u{57DF}**: {businessDomain}
5399
- - **\u{751F}\u{6210}\u{65F6}\u{5E8F}\u{56FE}**: {generateSequenceDiagram}
5495
+ **\u{8F93}\u{5165}**: \u{529F}\u{80FD}\u{540D}\u{79F0}={featureName}, \u{4E1A}\u{52A1}\u{9886}\u{57DF}={businessDomain}, \u{751F}\u{6210}\u{65F6}\u{5E8F}\u{56FE}={generateSequenceDiagram}
5400
5496
 
5401
- ## \u{539F}\u{59CB}\u{9700}\u{6C42}\u{5185}\u{5BB9}
5497
+ **\u{539F}\u{59CB}\u{9700}\u{6C42}**:
5402
5498
  \`\`\`
5403
5499
  {inputContent}
5404
5500
  \`\`\`
@@ -5443,13 +5539,7 @@ Scenario Outline: UI\u{7EC4}\u{4EF6}\u{4EA4}\u{4E92}\u{5904}\u{7406}\u{6D41}\u{7
5443
5539
  ### 3.2 \u{9875}\u{9762}\u{533A}\u{57DF}\u{5212}\u{5206}
5444
5540
  [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{5404}\u{4E2A}\u{529F}\u{80FD}\u{533A}\u{57DF}\u{7684}\u{5E03}\u{5C40}\u{FF0C}\u{4F7F}\u{7528}\u{6587}\u{5B57}\u{6216}ASCII\u{56FE}\u{793A}\u{63CF}\u{8FF0}\u{533A}\u{57DF}\u{4F4D}\u{7F6E}\u{5173}\u{7CFB}]
5445
5541
 
5446
- ### 3.3 \u{54CD}\u{5E94}\u{5F0F}\u{8BBE}\u{8BA1}\u{8981}\u{6C42}
5447
- [\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{5728}\u{4E0D}\u{540C}\u{5C4F}\u{5E55}\u{5C3A}\u{5BF8}\u{4E0B}\u{7684}\u{5E03}\u{5C40}\u{9002}\u{914D}\u{8981}\u{6C42}]
5448
-
5449
- ### 3.4 \u{5E03}\u{5C40}\u{7EC4}\u{4EF6}\u{89C4}\u{8303}
5450
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{4F7F}\u{7528}\u{7684}\u{5E03}\u{5C40}\u{7EC4}\u{4EF6}\u{FF0C}\u{5982}\u{6805}\u{683C}\u{7CFB}\u{7EDF}\u{3001}\u{5BB9}\u{5668}\u{3001}\u{9762}\u{677F}\u{7B49}\u{7684}\u{4F7F}\u{7528}\u{89C4}\u{8303}]
5451
-
5452
- ### 3.5 \u{9875}\u{9762}\u{6D41}\u{7EBF}\u{8BBE}\u{8BA1}
5542
+ ### 3.3 \u{9875}\u{9762}\u{6D41}\u{7EBF}\u{8BBE}\u{8BA1}
5453
5543
  [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{7528}\u{6237}\u{5728}\u{9875}\u{9762}\u{4E2D}\u{7684}\u{89C6}\u{89C9}\u{6D41}\u{7EBF}\u{548C}\u{64CD}\u{4F5C}\u{8DEF}\u{5F84}\u{8BBE}\u{8BA1}]
5454
5544
 
5455
5545
  ## 4. \u{6837}\u{5F0F}\u{89C4}\u{8303}\u{8BF4}\u{660E}
@@ -5457,21 +5547,10 @@ Scenario Outline: UI\u{7EC4}\u{4EF6}\u{4EA4}\u{4E92}\u{5904}\u{7406}\u{6D41}\u{7
5457
5547
  ### 4.1 \u{8272}\u{5F69}\u{89C4}\u{8303}
5458
5548
  [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4F7F}\u{7528}\u{7684}\u{4E3B}\u{8272}\u{8C03}\u{3001}\u{8F85}\u{52A9}\u{8272}\u{3001}\u{72B6}\u{6001}\u{8272}\u{7B49}\u{914D}\u{8272}\u{65B9}\u{6848}]
5459
5549
 
5460
- ### 4.2 \u{5B57}\u{4F53}\u{89C4}\u{8303}
5461
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4F7F}\u{7528}\u{7684}\u{5B57}\u{4F53}\u{3001}\u{5B57}\u{53F7}\u{3001}\u{5B57}\u{91CD}\u{7B49}\u{89C4}\u{8303}]
5462
-
5463
- ### 4.3 \u{7EC4}\u{4EF6}\u{6837}\u{5F0F}
5464
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{5404}\u{79CD}UI\u{7EC4}\u{4EF6}\u{7684}\u{6837}\u{5F0F}\u{89C4}\u{8303}\u{FF0C}\u{5982}\u{6309}\u{94AE}\u{3001}\u{8F93}\u{5165}\u{6846}\u{3001}\u{8868}\u{683C}\u{7B49}]
5465
-
5466
- ### 4.4 \u{95F4}\u{8DDD}\u{89C4}\u{8303}
5467
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{5143}\u{7D20}\u{95F4}\u{7684}\u{95F4}\u{8DDD}\u{89C4}\u{8303}\u{FF0C}\u{5305}\u{62EC}\u{5185}\u{8FB9}\u{8DDD}\u{3001}\u{5916}\u{8FB9}\u{8DDD}\u{7B49}]
5468
5550
 
5469
- ### 4.5 \u{54C1}\u{724C}\u{89C6}\u{89C9}\u{89C4}\u{8303}
5551
+ ### 4.2 \u{54C1}\u{724C}\u{89C6}\u{89C9}\u{89C4}\u{8303}
5470
5552
  [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{54C1}\u{724C}\u{89C6}\u{89C9}\u{5143}\u{7D20}\u{5728}\u{9875}\u{9762}\u{4E2D}\u{7684}\u{5E94}\u{7528}\u{89C4}\u{8303}\u{FF0C}\u{5982}Logo\u{3001}\u{56FE}\u{6807}\u{7B49}]
5471
5553
 
5472
- ### 4.6 \u{52A8}\u{6548}\u{89C4}\u{8303}
5473
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{52A8}\u{6548}\u{7684}\u{4F7F}\u{7528}\u{89C4}\u{8303}\u{FF0C}\u{5305}\u{62EC}\u{8FC7}\u{6E21}\u{6548}\u{679C}\u{3001}\u{52A0}\u{8F7D}\u{52A8}\u{753B}\u{7B49}]
5474
-
5475
5554
  ## 5. \u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{8BF4}\u{660E}
5476
5555
 
5477
5556
  ### 5.1 \u{7528}\u{6237}\u{64CD}\u{4F5C}\u{6D41}\u{7A0B}
@@ -5543,206 +5622,15 @@ Scenario Outline: UI\u{7EC4}\u{4EF6}\u{4EA4}\u{4E92}\u{5904}\u{7406}\u{6D41}\u{7
5543
5622
 
5544
5623
  \`\`\`mermaid
5545
5624
  sequenceDiagram
5546
- participant \u{7528}\u{6237}
5547
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5548
- participant \u{8DEF}\u{7531}\u{7BA1}\u{7406}\u{5668}
5549
- participant \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}
5550
- participant API\u{5BA2}\u{6237}\u{7AEF}
5551
- participant \u{540E}\u{7AEF}\u{670D}\u{52A1}
5552
- participant \u{6570}\u{636E}\u{5E93}
5553
- participant \u{7F13}\u{5B58}\u{670D}\u{52A1}
5554
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
5555
-
5556
- %% \u{9875}\u{9762}\u{52A0}\u{8F7D}\u{6D41}\u{7A0B}
5557
- \u{7528}\u{6237}->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8BBF}\u{95EE}\u{9875}\u{9762}URL
5558
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{8DEF}\u{7531}\u{7BA1}\u{7406}\u{5668}: \u{89E3}\u{6790}\u{8DEF}\u{7531}
5559
- \u{8DEF}\u{7531}\u{7BA1}\u{7406}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{8DEF}\u{7531}\u{4FE1}\u{606F}
5560
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{521D}\u{59CB}\u{5316}\u{9875}\u{9762}\u{72B6}\u{6001}
5561
- \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{521D}\u{59CB}\u{72B6}\u{6001}
5562
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>API\u{5BA2}\u{6237}\u{7AEF}: \u{53D1}\u{8D77}\u{6570}\u{636E}\u{8BF7}\u{6C42}
5563
- API\u{5BA2}\u{6237}\u{7AEF}->>\u{540E}\u{7AEF}\u{670D}\u{52A1}: \u{53D1}\u{9001}HTTP\u{8BF7}\u{6C42}
5564
- \u{540E}\u{7AEF}\u{670D}\u{52A1}->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{67E5}\u{8BE2}\u{7F13}\u{5B58}
5565
- alt \u{7F13}\u{5B58}\u{547D}\u{4E2D}
5566
- \u{7F13}\u{5B58}\u{670D}\u{52A1}-->>\u{540E}\u{7AEF}\u{670D}\u{52A1}: \u{8FD4}\u{56DE}\u{7F13}\u{5B58}\u{6570}\u{636E}
5567
- else \u{7F13}\u{5B58}\u{672A}\u{547D}\u{4E2D}
5568
- \u{540E}\u{7AEF}\u{670D}\u{52A1}->>\u{6570}\u{636E}\u{5E93}: \u{67E5}\u{8BE2}\u{6570}\u{636E}
5569
- \u{6570}\u{636E}\u{5E93}-->>\u{540E}\u{7AEF}\u{670D}\u{52A1}: \u{8FD4}\u{56DE}\u{67E5}\u{8BE2}\u{7ED3}\u{679C}
5570
- \u{540E}\u{7AEF}\u{670D}\u{52A1}->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{5B58}\u{50A8}\u{5230}\u{7F13}\u{5B58}
5571
- end
5572
- \u{540E}\u{7AEF}\u{670D}\u{52A1}-->>API\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}\u{6570}\u{636E}
5573
- API\u{5BA2}\u{6237}\u{7AEF}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{5904}\u{7406}\u{540E}\u{6570}\u{636E}
5574
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{9875}\u{9762}\u{72B6}\u{6001}
5575
- \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{901A}\u{77E5}\u{72B6}\u{6001}\u{66F4}\u{65B0}
5576
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{7528}\u{6237}: \u{6E32}\u{67D3}\u{9875}\u{9762}\u{5185}\u{5BB9}
5577
- \`\`\`
5578
-
5579
- ### 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}
5580
-
5581
- #### 9.2.1 \u{7EC4}\u{4EF6}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}\u{6D41}\u{7A0B}
5582
- \`\`\`mermaid
5583
- sequenceDiagram
5584
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5585
- participant \u{7EC4}\u{4EF6}\u{5E93}
5586
- participant \u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}
5587
- participant \u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}
5588
-
5589
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{7EC4}\u{4EF6}\u{5E93}: \u{8BF7}\u{6C42}\u{7EC4}\u{4EF6}\u{89C4}\u{8303}
5590
- \u{7EC4}\u{4EF6}\u{5E93}->>\u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}: \u{83B7}\u{53D6}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}
5591
- \u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}-->>\u{7EC4}\u{4EF6}\u{5E93}: \u{8FD4}\u{56DE}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}
5592
- \u{7EC4}\u{4EF6}\u{5E93}->>\u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}: \u{5E94}\u{7528}\u{6837}\u{5F0F}\u{89C4}\u{5219}
5593
- \u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}-->>\u{7EC4}\u{4EF6}\u{5E93}: \u{8FD4}\u{56DE}\u{6837}\u{5F0F}\u{914D}\u{7F6E}
5594
- \u{7EC4}\u{4EF6}\u{5E93}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{7EC4}\u{4EF6}\u{5B9E}\u{73B0}
5595
5625
  \`\`\`
5596
5626
 
5597
- #### 9.2.2 \u{54CD}\u{5E94}\u{5F0F}\u{5E03}\u{5C40}\u{9002}\u{914D}\u{6D41}\u{7A0B}
5598
- \`\`\`mermaid
5599
- sequenceDiagram
5600
- participant \u{7528}\u{6237}
5601
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5602
- participant \u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}
5603
- participant \u{5E03}\u{5C40}\u{5F15}\u{64CE}
5604
-
5605
- \u{7528}\u{6237}->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8C03}\u{6574}\u{6D4F}\u{89C8}\u{5668}\u{7A97}\u{53E3}\u{5927}\u{5C0F}
5606
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}: \u{68C0}\u{6D4B}\u{5C4F}\u{5E55}\u{5C3A}\u{5BF8}
5607
- \u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{65AD}\u{70B9}\u{4FE1}\u{606F}
5608
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{5E94}\u{7528}\u{54CD}\u{5E94}\u{5F0F}\u{89C4}\u{5219}
5609
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{9002}\u{914D}\u{540E}\u{5E03}\u{5C40}
5610
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{7528}\u{6237}: \u{91CD}\u{65B0}\u{6E32}\u{67D3}\u{9002}\u{914D}\u{9875}\u{9762}
5611
- \`\`\`
5627
+ ### 9.2 \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}
5612
5628
 
5613
- #### 9.2.3 \u{590D}\u{6742}\u{8868}\u{5355}\u{5904}\u{7406}\u{6D41}\u{7A0B}
5629
+ #### 9.2.1 \u{6027}\u{80FD}\u{4F18}\u{5316}\u{8981}\u{6C42}
5614
5630
  \`\`\`mermaid
5615
5631
  sequenceDiagram
5616
- participant \u{7528}\u{6237}
5617
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5618
- participant \u{8868}\u{5355}\u{9A8C}\u{8BC1}\u{5668}
5619
- participant \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}
5620
- participant API\u{5BA2}\u{6237}\u{7AEF}
5621
- participant \u{540E}\u{7AEF}\u{670D}\u{52A1}
5622
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
5623
- participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
5624
-
5625
- \u{7528}\u{6237}->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{63D0}\u{4EA4}\u{590D}\u{6742}\u{8868}\u{5355}
5626
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{8868}\u{5355}\u{9A8C}\u{8BC1}\u{5668}: \u{9A8C}\u{8BC1}\u{8868}\u{5355}\u{6570}\u{636E}
5627
- \u{8868}\u{5355}\u{9A8C}\u{8BC1}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{9A8C}\u{8BC1}\u{7ED3}\u{679C}
5628
- alt \u{9A8C}\u{8BC1}\u{901A}\u{8FC7}
5629
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{63D0}\u{4EA4}\u{72B6}\u{6001}
5630
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>API\u{5BA2}\u{6237}\u{7AEF}: \u{53D1}\u{9001}\u{8868}\u{5355}\u{6570}\u{636E}
5631
- API\u{5BA2}\u{6237}\u{7AEF}->>\u{540E}\u{7AEF}\u{670D}\u{52A1}: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
5632
- \u{540E}\u{7AEF}\u{670D}\u{52A1}-->>API\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{5904}\u{7406}\u{7ED3}\u{679C}
5633
- API\u{5BA2}\u{6237}\u{7AEF}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
5634
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{6210}\u{529F}\u{72B6}\u{6001}
5635
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{7528}\u{6237}: \u{663E}\u{793A}\u{6210}\u{529F}\u{6D88}\u{606F}
5636
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{63D0}\u{4EA4}\u{6210}\u{529F}
5637
- else \u{9A8C}\u{8BC1}\u{5931}\u{8D25}
5638
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{9519}\u{8BEF}\u{72B6}\u{6001}
5639
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{7528}\u{6237}: \u{663E}\u{793A}\u{9A8C}\u{8BC1}\u{9519}\u{8BEF}
5640
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{9A8C}\u{8BC1}\u{5931}\u{8D25}
5641
- end
5642
5632
  \`\`\`
5643
5633
 
5644
- ### 9.3 \u{5F02}\u{5E38}\u{6D41}\u{7A0B}\u{FF08}\u{9519}\u{8BEF}\u{5904}\u{7406}\u{FF09}
5645
-
5646
- #### 9.3.1 \u{65E0}\u{6548}UI\u{7EC4}\u{4EF6}\u{8BF7}\u{6C42}
5647
- \`\`\`mermaid
5648
- sequenceDiagram
5649
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5650
- participant \u{7EC4}\u{4EF6}\u{5E93}
5651
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
5652
-
5653
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{7EC4}\u{4EF6}\u{5E93}: \u{8BF7}\u{6C42}\u{672A}\u{77E5}\u{7EC4}\u{4EF6}
5654
- \u{7EC4}\u{4EF6}\u{5E93}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{7EC4}\u{4EF6}\u{4E0D}\u{5B58}\u{5728}\u{9519}\u{8BEF}
5655
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{7EC4}\u{4EF6}\u{9519}\u{8BEF}\u{65E5}\u{5FD7}
5656
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{4F7F}\u{7528}\u{9ED8}\u{8BA4}\u{7EC4}\u{4EF6}\u{66FF}\u{4EE3}
5657
- \`\`\`
5658
-
5659
- #### 9.3.2 \u{6837}\u{5F0F}\u{89C4}\u{8303}\u{51B2}\u{7A81}
5660
- \`\`\`mermaid
5661
- sequenceDiagram
5662
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5663
- participant \u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}
5664
- participant \u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}
5665
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
5666
-
5667
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}: \u{8BF7}\u{6C42}\u{6837}\u{5F0F}\u{89C4}\u{8303}
5668
- \u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}->>\u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}: \u{83B7}\u{53D6}\u{6837}\u{5F0F}\u{89C4}\u{5219}
5669
- \u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}-->>\u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}: \u{8FD4}\u{56DE}\u{51B2}\u{7A81}\u{6837}\u{5F0F}
5670
- \u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{6837}\u{5F0F}\u{51B2}\u{7A81}
5671
- \u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}->>\u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}: \u{89E3}\u{6790}\u{51B2}\u{7A81}\u{89C4}\u{5219}
5672
- \u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{89E3}\u{6790}\u{540E}\u{6837}\u{5F0F}
5673
- \`\`\`
5674
-
5675
- #### 9.3.3 \u{54CD}\u{5E94}\u{5F0F}\u{65AD}\u{70B9}\u{51B2}\u{7A81}
5676
- \`\`\`mermaid
5677
- sequenceDiagram
5678
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5679
- participant \u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}
5680
- participant \u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}
5681
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
5682
- participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
5683
-
5684
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}: \u{68C0}\u{6D4B}\u{54CD}\u{5E94}\u{5F0F}\u{65AD}\u{70B9}
5685
- \u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}->>\u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}: \u{83B7}\u{53D6}\u{65AD}\u{70B9}\u{89C4}\u{8303}
5686
- \u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}-->>\u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}: \u{8FD4}\u{56DE}\u{51B2}\u{7A81}\u{65AD}\u{70B9}
5687
- \u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{65AD}\u{70B9}\u{51B2}\u{7A81}
5688
- \u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}->>\u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}: \u{5E94}\u{7528}\u{9ED8}\u{8BA4}\u{65AD}\u{70B9}
5689
- \u{5A92}\u{4F53}\u{67E5}\u{8BE2}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{9ED8}\u{8BA4}\u{65AD}\u{70B9}\u{4FE1}\u{606F}
5690
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{65AD}\u{70B9}\u{5F02}\u{5E38}
5691
- \`\`\`
5692
-
5693
- ### 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}
5694
-
5695
- #### 9.4.1 \u{590D}\u{6742}\u{5E03}\u{5C40}\u{5904}\u{7406}
5696
- \`\`\`mermaid
5697
- sequenceDiagram
5698
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5699
- participant \u{5E03}\u{5C40}\u{5F15}\u{64CE}
5700
- participant \u{6027}\u{80FD}\u{76D1}\u{63A7}\u{5668}
5701
-
5702
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{8BF7}\u{6C42}\u{590D}\u{6742}\u{5E03}\u{5C40}\u{8BA1}\u{7B97}
5703
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{6267}\u{884C}\u{591A}\u{533A}\u{57DF}\u{5E03}\u{5C40}\u{7B97}\u{6CD5}
5704
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{4F18}\u{5316}\u{5E03}\u{5C40}
5705
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{6027}\u{80FD}\u{76D1}\u{63A7}\u{5668}: \u{8BB0}\u{5F55}\u{5E03}\u{5C40}\u{6027}\u{80FD}
5706
- \u{6027}\u{80FD}\u{76D1}\u{63A7}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{6027}\u{80FD}\u{5EFA}\u{8BAE}
5707
- \`\`\`
5708
-
5709
- #### 9.4.2 \u{6027}\u{80FD}\u{4F18}\u{5316}\u{8981}\u{6C42}
5710
- \`\`\`mermaid
5711
- sequenceDiagram
5712
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5713
- participant \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}
5714
- participant \u{7F13}\u{5B58}\u{7BA1}\u{7406}\u{5668}
5715
-
5716
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}: \u{8BF7}\u{6C42}\u{6E32}\u{67D3}\u{4F18}\u{5316}
5717
- \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}->>\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}: \u{5206}\u{6790}\u{6E32}\u{67D3}\u{6027}\u{80FD}
5718
- \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{4F18}\u{5316}\u{7B56}\u{7565}
5719
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{7F13}\u{5B58}\u{7BA1}\u{7406}\u{5668}: \u{914D}\u{7F6E}\u{61D2}\u{52A0}\u{8F7D}\u{7B56}\u{7565}
5720
- \u{7F13}\u{5B58}\u{7BA1}\u{7406}\u{5668}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{7F13}\u{5B58}\u{914D}\u{7F6E}
5721
- \`\`\`
5722
-
5723
- #### 9.4.3 \u{5E03}\u{5C40}\u{8BA1}\u{7B97}\u{8D85}\u{65F6}\u{5904}\u{7406}
5724
- \`\`\`mermaid
5725
- sequenceDiagram
5726
- participant \u{524D}\u{7AEF}\u{9875}\u{9762}
5727
- participant \u{5E03}\u{5C40}\u{5F15}\u{64CE}
5728
- participant \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}
5729
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
5730
- participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
5731
-
5732
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{8BF7}\u{6C42}\u{590D}\u{6742}\u{5E03}\u{5C40}\u{8BA1}\u{7B97}
5733
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{6267}\u{884C}\u{5E03}\u{5C40}\u{7B97}\u{6CD5}
5734
- alt \u{5E03}\u{5C40}\u{8BA1}\u{7B97}\u{8D85}\u{65F6}
5735
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}->>\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}: \u{8BF7}\u{6C42}\u{964D}\u{7EA7}\u{7B56}\u{7565}
5736
- \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}-->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{8FD4}\u{56DE}\u{7B80}\u{5316}\u{5E03}\u{5C40}\u{65B9}\u{6848}
5737
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{5E94}\u{7528}\u{7B80}\u{5316}\u{65B9}\u{6848}
5738
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{964D}\u{7EA7}\u{5E03}\u{5C40}
5739
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{8D85}\u{65F6}\u{4E8B}\u{4EF6}
5740
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{6027}\u{80FD}\u{6307}\u{6807}
5741
- else \u{8BA1}\u{7B97}\u{5B8C}\u{6210}
5742
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}-->>\u{524D}\u{7AEF}\u{9875}\u{9762}: \u{8FD4}\u{56DE}\u{5B8C}\u{6574}\u{5E03}\u{5C40}
5743
- end
5744
- \u{524D}\u{7AEF}\u{9875}\u{9762}->>\u{7528}\u{6237}: \u{6E32}\u{67D3}\u{9875}\u{9762}\u{5E03}\u{5C40}
5745
- \`\`\`
5746
5634
 
5747
5635
  ## 10. \u{4E1A}\u{52A1}\u{72B6}\u{6001}\u{63CF}\u{8FF0}
5748
5636
 
@@ -5761,223 +5649,26 @@ sequenceDiagram
5761
5649
  |10|\u{63D0}\u{4EA4}\u{5931}\u{8D25}|\u{8868}\u{5355}\u{63D0}\u{4EA4}\u{5931}\u{8D25}\u{72B6}\u{6001}|
5762
5650
  |[\u{6DFB}\u{52A0}\u{66F4}\u{591A}\u{72B6}\u{6001}...]||
5763
5651
 
5764
- ## 11. \u{524D}\u{7AEF}\u{5904}\u{7406}\u{903B}\u{8F91}\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}
5765
-
5766
- ### 11.1 \u{9875}\u{9762}\u{521D}\u{59CB}\u{5316}\u{903B}\u{8F91}
5767
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{52A0}\u{8F7D}\u{65F6}\u{7684}\u{521D}\u{59CB}\u{5316}\u{5904}\u{7406}\u{903B}\u{8F91}]
5768
-
5769
- ### 11.2 \u{6570}\u{636E}\u{83B7}\u{53D6}\u{903B}\u{8F91}
5770
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{6570}\u{636E}\u{83B7}\u{53D6}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}\u{FF0C}\u{5305}\u{62EC}API\u{8C03}\u{7528}\u{3001}\u{6570}\u{636E}\u{5904}\u{7406}\u{7B49}]
5771
-
5772
- ### 11.3 \u{7528}\u{6237}\u{4EA4}\u{4E92}\u{5904}\u{7406}\u{903B}\u{8F91}
5773
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{7528}\u{6237}\u{5404}\u{79CD}\u{4EA4}\u{4E92}\u{64CD}\u{4F5C}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
5774
-
5775
- ### 11.4 \u{6570}\u{636E}\u{5C55}\u{793A}\u{903B}\u{8F91}
5776
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{6570}\u{636E}\u{5728}\u{9875}\u{9762}\u{4E2D}\u{7684}\u{5C55}\u{793A}\u{5904}\u{7406}\u{903B}\u{8F91}]
5777
-
5778
- ### 11.5 \u{9519}\u{8BEF}\u{5904}\u{7406}\u{903B}\u{8F91}
5779
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{5404}\u{79CD}\u{9519}\u{8BEF}\u{60C5}\u{51B5}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
5780
-
5781
- ### 11.6 \u{6027}\u{80FD}\u{4F18}\u{5316}\u{903B}\u{8F91}
5782
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{6027}\u{80FD}\u{4F18}\u{5316}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}\u{FF0C}\u{5982}\u{61D2}\u{52A0}\u{8F7D}\u{3001}\u{7F13}\u{5B58}\u{7B49}]
5783
-
5784
- ## 12. \u{4F2A}\u{4EE3}\u{7801}\u{793A}\u{4F8B}
5785
-
5786
- \`\`\`gherkin
5787
- Scenario Outline: \u{7528}\u{6237}\u{5728}PC\u{9875}\u{9762}\u{4E2D}\u{8FDB}\u{884C}\u{8868}\u{5355}\u{63D0}\u{4EA4}
5788
- Given \u{7528}\u{6237}\u{5DF2}\u{6253}\u{5F00}<page_name>\u{9875}\u{9762}\u{5E76}\u{586B}\u{5199}\u{4E86}\u{8868}\u{5355}
5789
- When \u{7528}\u{6237}\u{70B9}\u{51FB}"\u{63D0}\u{4EA4}"\u{6309}\u{94AE}
5790
- Then \u{7CFB}\u{7EDF}\u{5E94}\u{9A8C}\u{8BC1}\u{8868}\u{5355}\u{6570}\u{636E}\u{5E76}<result>
5791
-
5792
- Examples:
5793
- | page_name | result |
5794
- | \u{7528}\u{6237}\u{4FE1}\u{606F}\u{9875} | \u{663E}\u{793A}"\u{63D0}\u{4EA4}\u{6210}\u{529F}"\u{63D0}\u{793A}\u{5E76}\u{8DF3}\u{8F6C} |
5795
- | \u{8BA2}\u{5355}\u{9875}\u{9762} | \u{663E}\u{793A}\u{9519}\u{8BEF}\u{4FE1}\u{606F}"\u{5FC5}\u{586B}\u{9879}\u{672A}\u{586B}\u{5199}" |
5796
-
5797
- Scenario Outline: PC\u{9875}\u{9762}\u{8DEF}\u{7531}\u{5BFC}\u{822A}\u{5904}\u{7406}
5798
- Given \u{7528}\u{6237}\u{5728}<current_page>\u{9875}\u{9762}
5799
- When \u{7528}\u{6237}\u{70B9}\u{51FB}<navigation_action>\u{65F6}
5800
- Then \u{7CFB}\u{7EDF}\u{5E94}:
5801
- 1. \u{9A8C}\u{8BC1}\u{7528}\u{6237}\u{662F}\u{5426}\u{6709}\u{8BBF}\u{95EE}\u{76EE}\u{6807}\u{9875}\u{9762}\u{7684}\u{6743}\u{9650}
5802
- 2. \u{4FDD}\u{5B58}\u{5F53}\u{524D}\u{9875}\u{9762}\u{72B6}\u{6001}
5803
- 3. \u{52A0}\u{8F7D}\u{76EE}\u{6807}\u{9875}\u{9762}
5804
- 4. \u{6062}\u{590D}\u{76EE}\u{6807}\u{9875}\u{9762}\u{4E4B}\u{524D}\u{7684}\u{72B6}\u{6001}\u{FF08}\u{5982}\u{679C}\u{5B58}\u{5728}\u{FF09}
5805
-
5806
- Examples:
5807
- | current_page | navigation_action | \u{5904}\u{7406}\u{903B}\u{8F91} |
5808
- | \u{9996}\u{9875} | \u{70B9}\u{51FB}\u{7528}\u{6237}\u{7BA1}\u{7406}\u{94FE}\u{63A5} | \u{68C0}\u{67E5}\u{6743}\u{9650}\u{540E}\u{8DF3}\u{8F6C}\u{5230}\u{7528}\u{6237}\u{7BA1}\u{7406}\u{9875}\u{9762} |
5809
- | \u{7528}\u{6237}\u{5217}\u{8868}\u{9875} | \u{70B9}\u{51FB}\u{8FD4}\u{56DE}\u{6309}\u{94AE} | \u{8FD4}\u{56DE}\u{4E0A}\u{4E00}\u{9875}\u{9762}\u{5E76}\u{6062}\u{590D}\u{4E4B}\u{524D}\u{6EDA}\u{52A8}\u{4F4D}\u{7F6E} |
5810
- | \u{8BA2}\u{5355}\u{9875}\u{9762} | \u{76F4}\u{63A5}\u{8F93}\u{5165}URL | \u{9A8C}\u{8BC1}\u{767B}\u{5F55}\u{72B6}\u{6001}\u{548C}\u{6743}\u{9650}\u{540E}\u{52A0}\u{8F7D}\u{9875}\u{9762} |
5811
-
5812
- Scenario Outline: PC\u{9875}\u{9762}\u{7EC4}\u{4EF6}\u{4EA4}\u{4E92}\u{6D41}\u{7A0B}
5813
- Given \u{7528}\u{6237}\u{5728}<page_name>\u{9875}\u{9762}\u{4E2D}
5814
- When \u{7528}\u{6237}\u{6267}\u{884C}<user_action>\u{64CD}\u{4F5C}\u{65F6}
5815
- Then \u{7CFB}\u{7EDF}\u{5E94}\u{6309}\u{7167}\u{4EE5}\u{4E0B}\u{903B}\u{8F91}\u{5904}\u{7406}:
5816
- 1. \u{9A8C}\u{8BC1}\u{7528}\u{6237}\u{64CD}\u{4F5C}\u{7684}\u{5408}\u{6CD5}\u{6027}
5817
- 2. \u{66F4}\u{65B0}\u{76F8}\u{5173}\u{7EC4}\u{4EF6}\u{7684}\u{72B6}\u{6001}
5818
- 3. \u{89E6}\u{53D1}\u{76F8}\u{5E94}\u{7684}\u{4E8B}\u{4EF6}\u{5904}\u{7406}\u{51FD}\u{6570}
5819
- 4. \u{6839}\u{636E}\u{5904}\u{7406}\u{7ED3}\u{679C}\u{66F4}\u{65B0}UI\u{663E}\u{793A}
5820
-
5821
- Examples:
5822
- | page_name | user_action | \u{9884}\u{671F}\u{5904}\u{7406}\u{903B}\u{8F91} |
5823
- | \u{7528}\u{6237}\u{5217}\u{8868}\u{9875} | \u{70B9}\u{51FB}\u{7F16}\u{8F91}\u{6309}\u{94AE} | \u{663E}\u{793A}\u{7F16}\u{8F91}\u{6A21}\u{6001}\u{6846}\u{FF0C}\u{586B}\u{5145}\u{7528}\u{6237}\u{6570}\u{636E} |
5824
- | \u{5546}\u{54C1}\u{8BE6}\u{60C5}\u{9875} | \u{70B9}\u{51FB}\u{6536}\u{85CF}\u{6309}\u{94AE} | \u{53D1}\u{9001}\u{6536}\u{85CF}\u{8BF7}\u{6C42}\u{FF0C}\u{66F4}\u{65B0}\u{6309}\u{94AE}\u{72B6}\u{6001}\u{548C}\u{6536}\u{85CF}\u{6570} |
5825
- | \u{8BA2}\u{5355}\u{9875}\u{9762} | \u{9009}\u{62E9}\u{652F}\u{4ED8}\u{65B9}\u{5F0F} | \u{663E}\u{793A}\u{5BF9}\u{5E94}\u{652F}\u{4ED8}\u{8868}\u{5355}\u{FF0C}\u{66F4}\u{65B0}\u{8BA2}\u{5355}\u{91D1}\u{989D}\u{8BA1}\u{7B97} |
5826
-
5827
- Scenario Outline: PC\u{9875}\u{9762}\u{6570}\u{636E}\u{52A0}\u{8F7D}\u{5F02}\u{5E38}\u{5904}\u{7406}
5828
- Given \u{7CFB}\u{7EDF}\u{6B63}\u{5728}\u{52A0}\u{8F7D}<page_name>\u{9875}\u{9762}\u{6570}\u{636E}
5829
- When \u{53D1}\u{751F}<data_error>\u{9519}\u{8BEF}\u{65F6}
5830
- Then \u{7CFB}\u{7EDF}\u{5E94}:
5831
- 1. \u{663E}\u{793A}\u{76F8}\u{5E94}\u{7684}\u{9519}\u{8BEF}\u{63D0}\u{793A}\u{4FE1}\u{606F}
5832
- 2. \u{63D0}\u{4F9B}\u{91CD}\u{8BD5}\u{6216}\u{8FD4}\u{56DE}\u{9009}\u{9879}
5833
- 3. \u{8BB0}\u{5F55}\u{9519}\u{8BEF}\u{65E5}\u{5FD7}\u{7528}\u{4E8E}\u{95EE}\u{9898}\u{8FFD}\u{8E2A}
5834
- 4. \u{6839}\u{636E}\u{9519}\u{8BEF}\u{7C7B}\u{578B}\u{91C7}\u{53D6}\u{6062}\u{590D}\u{63AA}\u{65BD}
5835
-
5836
- Examples:
5837
- | page_name | data_error | \u{6062}\u{590D}\u{63AA}\u{65BD} |
5838
- | \u{7528}\u{6237}\u{5217}\u{8868}\u{9875} | \u{7F51}\u{7EDC}\u{8FDE}\u{63A5}\u{5931}\u{8D25} | \u{663E}\u{793A}\u{91CD}\u{8BD5}\u{6309}\u{94AE}\u{FF0C}\u{63D0}\u{4F9B}\u{79BB}\u{7EBF}\u{6570}\u{636E}\u{67E5}\u{770B} |
5839
- | \u{5546}\u{54C1}\u{8BE6}\u{60C5}\u{9875} | \u{6570}\u{636E}\u{683C}\u{5F0F}\u{9519}\u{8BEF} | \u{663E}\u{793A}\u{9ED8}\u{8BA4}\u{6570}\u{636E}\u{FF0C}\u{8BB0}\u{5F55}\u{683C}\u{5F0F}\u{9519}\u{8BEF}\u{8BE6}\u{60C5} |
5840
- | \u{8BA2}\u{5355}\u{9875}\u{9762} | \u{670D}\u{52A1}\u{5668}\u{54CD}\u{5E94}\u{8D85}\u{65F6} | \u{81EA}\u{52A8}\u{91CD}\u{8BD5}\u{8BF7}\u{6C42}\u{FF0C}\u{8D85}\u{8FC7}\u{6B21}\u{6570}\u{540E}\u{63D0}\u{793A}\u{7528}\u{6237} |
5841
- | \u{4EEA}\u{8868}\u{677F}\u{9875} | \u{6743}\u{9650}\u{9A8C}\u{8BC1}\u{5931}\u{8D25} | \u{8DF3}\u{8F6C}\u{5230}\u{767B}\u{5F55}\u{9875}\u{9762}\u{FF0C}\u{4FDD}\u{5B58}\u{5F53}\u{524D}\u{9875}\u{9762}\u{72B6}\u{6001} |
5842
-
5843
- Scenario Outline: PC\u{9875}\u{9762}\u{54CD}\u{5E94}\u{5F0F}\u{5E03}\u{5C40}\u{9002}\u{914D}
5844
- Given \u{7528}\u{6237}\u{5728}\u{4E0D}\u{540C}\u{8BBE}\u{5907}\u{4E0A}\u{8BBF}\u{95EE}<page_name>\u{9875}\u{9762}
5845
- When \u{5C4F}\u{5E55}\u{5C3A}\u{5BF8}\u{4E3A}<screen_size>\u{65F6}
5846
- Then \u{9875}\u{9762}\u{5E94}\u{81EA}\u{52A8}\u{9002}\u{914D}\u{5E76}:
5847
- 1. \u{8C03}\u{6574}\u{5E03}\u{5C40}\u{7ED3}\u{6784}\u{4EE5}\u{9002}\u{5E94}\u{5C4F}\u{5E55}
5848
- 2. \u{4F18}\u{5316}\u{4EA4}\u{4E92}\u{5143}\u{7D20}\u{7684}\u{663E}\u{793A}\u{6548}\u{679C}
5849
- 3. \u{4FDD}\u{6301}\u{6838}\u{5FC3}\u{529F}\u{80FD}\u{7684}\u{53EF}\u{7528}\u{6027}
5850
-
5851
- Examples:
5852
- | page_name | screen_size | \u{9002}\u{914D}\u{7B56}\u{7565} |
5853
- | \u{7528}\u{6237}\u{7BA1}\u{7406}\u{9875} | \u{5927}\u{5C4F}\u{5E55}(>1200px) | \u{663E}\u{793A}\u{4E09}\u{680F}\u{5E03}\u{5C40}\u{FF0C}\u{63D0}\u{4F9B}\u{5B8C}\u{6574}\u{7684}\u{529F}\u{80FD}\u{9762}\u{677F} |
5854
- | \u{7528}\u{6237}\u{7BA1}\u{7406}\u{9875} | \u{4E2D}\u{7B49}\u{5C4F}\u{5E55}(768px-1200px) | \u{663E}\u{793A}\u{4E24}\u{680F}\u{5E03}\u{5C40}\u{FF0C}\u{9690}\u{85CF}\u{90E8}\u{5206}\u{6B21}\u{8981}\u{529F}\u{80FD} |
5855
- | \u{7528}\u{6237}\u{7BA1}\u{7406}\u{9875} | \u{5C0F}\u{5C4F}\u{5E55}(<768px) | \u{663E}\u{793A}\u{5355}\u{680F}\u{5E03}\u{5C40}\u{FF0C}\u{4E3B}\u{8981}\u{529F}\u{80FD}\u{901A}\u{8FC7}\u{6298}\u{53E0}\u{83DC}\u{5355}\u{8BBF}\u{95EE} |
5856
-
5857
- Scenario Outline: PC\u{9875}\u{9762}\u{590D}\u{6742}\u{6570}\u{636E}\u{52A0}\u{8F7D}\u{5904}\u{7406}
5858
- Given \u{7CFB}\u{7EDF}\u{6B63}\u{5728}\u{52A0}\u{8F7D}<page_name>\u{9875}\u{9762}\u{7684}<data_type>\u{6570}\u{636E}
5859
- When \u{6570}\u{636E}\u{91CF}\u{4E3A}<data_volume>\u{65F6}
5860
- Then \u{7CFB}\u{7EDF}\u{5E94}:
5861
- 1. \u{663E}\u{793A}\u{52A0}\u{8F7D}\u{6307}\u{793A}\u{5668}
5862
- 2. \u{5206}\u{6279}\u{52A0}\u{8F7D}\u{6570}\u{636E}\u{4EE5}\u{63D0}\u{9AD8}\u{54CD}\u{5E94}\u{6027}
5863
- 3. \u{5B9E}\u{73B0}\u{865A}\u{62DF}\u{6EDA}\u{52A8}\u{6216}\u{5206}\u{9875}\u{673A}\u{5236}
5864
- 4. \u{63D0}\u{4F9B}\u{6570}\u{636E}\u{52A0}\u{8F7D}\u{8FDB}\u{5EA6}\u{53CD}\u{9988}
5652
+ ## 11. \u{7528}\u{6237}\u{6545}\u{4E8B}
5865
5653
 
5866
- Examples:
5867
- | page_name | data_type | data_volume | \u{5904}\u{7406}\u{7B56}\u{7565} |
5868
- | \u{7528}\u{6237}\u{5217}\u{8868}\u{9875} | \u{7528}\u{6237}\u{4FE1}\u{606F} | \u{5C11}\u{91CF}(<100\u{6761}) | \u{76F4}\u{63A5}\u{52A0}\u{8F7D}\u{5E76}\u{6E32}\u{67D3}\u{6240}\u{6709}\u{6570}\u{636E} |
5869
- | \u{7528}\u{6237}\u{5217}\u{8868}\u{9875} | \u{7528}\u{6237}\u{4FE1}\u{606F} | \u{4E2D}\u{7B49}(100-1000\u{6761}) | \u{5206}\u{9875}\u{52A0}\u{8F7D}\u{FF0C}\u{6BCF}\u{9875}50\u{6761}\u{6570}\u{636E} |
5870
- | \u{7528}\u{6237}\u{5217}\u{8868}\u{9875} | \u{7528}\u{6237}\u{4FE1}\u{606F} | \u{5927}\u{91CF}(>1000\u{6761}) | \u{865A}\u{62DF}\u{6EDA}\u{52A8}\u{FF0C}\u{4EC5}\u{6E32}\u{67D3}\u{53EF}\u{89C6}\u{533A}\u{57DF}\u{6570}\u{636E} |
5871
- | \u{4EEA}\u{8868}\u{677F}\u{9875} | \u{56FE}\u{8868}\u{6570}\u{636E} | \u{5B9E}\u{65F6}\u{6570}\u{636E}\u{6D41} | \u{6D41}\u{5F0F}\u{52A0}\u{8F7D}\u{FF0C}\u{5B9A}\u{671F}\u{66F4}\u{65B0}\u{56FE}\u{8868}\u{663E}\u{793A} |
5872
-
5873
- Scenario Outline: PC\u{9875}\u{9762}\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{6D41}\u{7A0B}
5874
- Given \u{9875}\u{9762}\u{5904}\u{4E8E}<current_state>\u{72B6}\u{6001}
5875
- When \u{53D1}\u{751F}<state_change_trigger>\u{65F6}
5876
- Then \u{7CFB}\u{7EDF}\u{5E94}:
5877
- 1. \u{66F4}\u{65B0}\u{9875}\u{9762}\u{72B6}\u{6001}
5878
- 2. \u{89E6}\u{53D1}\u{76F8}\u{5E94}\u{7684}\u{72B6}\u{6001}\u{5904}\u{7406}\u{903B}\u{8F91}
5879
- 3. \u{66F4}\u{65B0}UI\u{663E}\u{793A}
5880
- 4. \u{8BB0}\u{5F55}\u{72B6}\u{6001}\u{53D8}\u{66F4}\u{65E5}\u{5FD7}
5654
+ ### 11.1 \u{6545}\u{4E8B}1
5655
+ [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{6545}\u{4E8B}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{5305}\u{62EC}\u{4EFB}\u{52A1}\u{5B9A}\u{4E49}\u{3001}\u{4E1A}\u{52A1}\u{903B}\u{8F91}\u{63CF}\u{8FF0}\u{3001}\u{6280}\u{672F}\u{65B9}\u{6848}\u{5B9E}\u{73B0}\u{7B49}]
5656
+ ### 11.2 \u{6545}\u{4E8B}2
5657
+ [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{6545}\u{4E8B}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{5305}\u{62EC}\u{4EFB}\u{52A1}\u{5B9A}\u{4E49}\u{3001}\u{4E1A}\u{52A1}\u{903B}\u{8F91}\u{63CF}\u{8FF0}\u{3001}\u{6280}\u{672F}\u{65B9}\u{6848}\u{5B9E}\u{73B0}\u{7B49}]
5658
+ ...
5659
+ ### 11.3 \u{66F4}\u{591A}\u{6545}\u{4E8B}
5660
+ [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{66F4}\u{591A}\u{6545}\u{4E8B}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{5305}\u{62EC}\u{4EFB}\u{52A1}\u{5B9A}\u{4E49}\u{3001}\u{4E1A}\u{52A1}\u{903B}\u{8F91}\u{63CF}\u{8FF0}\u{3001}\u{6280}\u{672F}\u{65B9}\u{6848}\u{5B9E}\u{73B0}\u{7B49}]
5661
+ >
5881
5662
 
5882
- Examples:
5883
- | current_state | state_change_trigger | \u{5904}\u{7406}\u{903B}\u{8F91} |
5884
- | \u{5F85}\u{52A0}\u{8F7D} | \u{9875}\u{9762}\u{521D}\u{59CB}\u{5316}\u{5B8C}\u{6210} | \u{5207}\u{6362}\u{5230}\u{52A0}\u{8F7D}\u{4E2D}\u{72B6}\u{6001}\u{FF0C}\u{663E}\u{793A}\u{52A0}\u{8F7D}\u{6307}\u{793A}\u{5668} |
5885
- | \u{52A0}\u{8F7D}\u{4E2D} | \u{6570}\u{636E}\u{52A0}\u{8F7D}\u{6210}\u{529F} | \u{5207}\u{6362}\u{5230}\u{6B63}\u{5E38}\u{663E}\u{793A}\u{72B6}\u{6001}\u{FF0C}\u{6E32}\u{67D3}\u{6570}\u{636E} |
5886
- | \u{52A0}\u{8F7D}\u{4E2D} | \u{6570}\u{636E}\u{52A0}\u{8F7D}\u{5931}\u{8D25} | \u{5207}\u{6362}\u{5230}\u{52A0}\u{8F7D}\u{5931}\u{8D25}\u{72B6}\u{6001}\u{FF0C}\u{663E}\u{793A}\u{9519}\u{8BEF}\u{4FE1}\u{606F} |
5887
- | \u{6B63}\u{5E38}\u{663E}\u{793A} | \u{7528}\u{6237}\u{4FEE}\u{6539}\u{6570}\u{636E} | \u{5207}\u{6362}\u{5230}\u{810F}\u{6570}\u{636E}\u{72B6}\u{6001}\u{FF0C}\u{663E}\u{793A}\u{4FDD}\u{5B58}\u{6309}\u{94AE} |
5888
- | \u{8868}\u{5355}\u{9A8C}\u{8BC1}\u{4E2D} | \u{9A8C}\u{8BC1}\u{5B8C}\u{6210} | \u{6839}\u{636E}\u{9A8C}\u{8BC1}\u{7ED3}\u{679C}\u{5207}\u{6362}\u{5230}\u{6210}\u{529F}\u{6216}\u{5931}\u{8D25}\u{72B6}\u{6001} |
5889
-
5890
- Scenario Outline: PC\u{9875}\u{9762}\u{54CD}\u{5E94}\u{5F0F}\u{5E03}\u{5C40}\u{9002}\u{5E94}\u{6027}\u{4F18}\u{5316}
5891
- Given \u{7528}\u{6237}\u{5728}<device_type>\u{8BBE}\u{5907}\u{4E0A}\u{4F7F}\u{7528}<page_name>\u{9875}\u{9762}
5892
- When \u{53D1}\u{751F}<layout_change_event>\u{65F6}
5893
- Then \u{7CFB}\u{7EDF}\u{5E94}:
5894
- 1. \u{68C0}\u{6D4B}\u{5F53}\u{524D}\u{89C6}\u{53E3}\u{5C3A}\u{5BF8}\u{548C}\u{8BBE}\u{5907}\u{7279}\u{6027}
5895
- 2. \u{5E94}\u{7528}\u{76F8}\u{5E94}\u{7684}\u{54CD}\u{5E94}\u{5F0F}\u{65AD}\u{70B9}\u{89C4}\u{5219}
5896
- 3. \u{8C03}\u{6574}\u{5E03}\u{5C40}\u{7EC4}\u{4EF6}\u{7684}\u{663E}\u{793A}\u{65B9}\u{5F0F}
5897
- 4. \u{4F18}\u{5316}\u{4EA4}\u{4E92}\u{5143}\u{7D20}\u{7684}\u{89E6}\u{63A7}\u{53CB}\u{597D}\u{6027}
5898
5663
 
5899
- Examples:
5900
- | device_type | page_name | layout_change_event | \u{4F18}\u{5316}\u{7B56}\u{7565} |
5901
- | \u{684C}\u{9762}\u{7AEF} | \u{6570}\u{636E}\u{8868}\u{683C}\u{9875} | \u{7A97}\u{53E3}\u{5C3A}\u{5BF8}\u{7F29}\u{5C0F} | \u{9690}\u{85CF}\u{975E}\u{5173}\u{952E}\u{5217}\u{FF0C}\u{63D0}\u{4F9B}\u{6C34}\u{5E73}\u{6EDA}\u{52A8}\u{6761} |
5902
- | \u{5E73}\u{677F}\u{7AEF} | \u{6570}\u{636E}\u{8868}\u{683C}\u{9875} | \u{5C4F}\u{5E55}\u{65CB}\u{8F6C}\u{4E3A}\u{6A2A}\u{5411} | \u{8C03}\u{6574}\u{5217}\u{5BBD}\u{6BD4}\u{4F8B}\u{FF0C}\u{4F18}\u{5316}\u{6570}\u{636E}\u{5C55}\u{793A}\u{5BC6}\u{5EA6} |
5903
- | \u{79FB}\u{52A8}\u{7AEF} | \u{6570}\u{636E}\u{8868}\u{683C}\u{9875} | \u{9996}\u{6B21}\u{52A0}\u{8F7D}\u{9875}\u{9762} | \u{91C7}\u{7528}\u{5361}\u{7247}\u{5F0F}\u{5E03}\u{5C40}\u{FF0C}\u{652F}\u{6301}\u{6ED1}\u{52A8}\u{67E5}\u{770B}\u{66F4}\u{591A}\u{4FE1}\u{606F} |
5904
- | \u{684C}\u{9762}\u{7AEF} | \u{8868}\u{5355}\u{9875}\u{9762} | \u{7A97}\u{53E3}\u{5C3A}\u{5BF8}\u{653E}\u{5927} | \u{589E}\u{52A0}\u{8868}\u{5355}\u{5143}\u{7D20}\u{95F4}\u{8DDD}\u{FF0C}\u{63D0}\u{4F9B}\u{66F4}\u{5BBD}\u{7684}\u{8F93}\u{5165}\u{6846} |
5905
- | \u{79FB}\u{52A8}\u{7AEF} | \u{8868}\u{5355}\u{9875}\u{9762} | \u{8F6F}\u{952E}\u{76D8}\u{5F39}\u{51FA} | \u{81EA}\u{52A8}\u{8C03}\u{6574}\u{8868}\u{5355}\u{5E03}\u{5C40}\u{FF0C}\u{786E}\u{4FDD}\u{8F93}\u{5165}\u{6846}\u{5728}\u{53EF}\u{89C6}\u{533A}\u{57DF}\u{5185} |
5906
-
5907
- Scenario Outline: PC\u{9875}\u{9762}\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5904}\u{7406}
5908
- Given \u{9875}\u{9762}\u{5305}\u{542B}<content_type>\u{5185}\u{5BB9}
5909
- When \u{9875}\u{9762}\u{52A0}\u{8F7D}\u{65F6}
5910
- Then \u{7CFB}\u{7EDF}\u{5E94}:
5911
- 1. \u{5E94}\u{7528}\u{76F8}\u{5E94}\u{7684}\u{6027}\u{80FD}\u{4F18}\u{5316}\u{7B56}\u{7565}
5912
- 2. \u{76D1}\u{63A7}\u{9875}\u{9762}\u{6027}\u{80FD}\u{6307}\u{6807}
5913
- 3. \u{6839}\u{636E}\u{6027}\u{80FD}\u{6570}\u{636E}\u{8C03}\u{6574}\u{4F18}\u{5316}\u{7B56}\u{7565}
5664
+ ---
5914
5665
 
5915
- Examples:
5916
- | content_type | \u{4F18}\u{5316}\u{7B56}\u{7565} |
5917
- | \u{5927}\u{91CF}\u{56FE}\u{7247} | \u{4F7F}\u{7528}\u{61D2}\u{52A0}\u{8F7D}\u{FF0C}\u{4F18}\u{5148}\u{52A0}\u{8F7D}\u{9996}\u{5C4F}\u{56FE}\u{7247} |
5918
- | \u{590D}\u{6742}\u{8868}\u{683C} | \u{4F7F}\u{7528}\u{865A}\u{62DF}\u{6EDA}\u{52A8}\u{FF0C}\u{5206}\u{9875}\u{52A0}\u{8F7D}\u{6570}\u{636E} |
5919
- | \u{5927}\u{91CF}\u{6570}\u{636E} | \u{4F7F}\u{7528}\u{6570}\u{636E}\u{5206}\u{7247}\u{FF0C}\u{589E}\u{91CF}\u{6E32}\u{67D3} |
5920
- | \u{52A8}\u{753B}\u{6548}\u{679C} | \u{4F7F}\u{7528}CSS3\u{786C}\u{4EF6}\u{52A0}\u{901F}\u{FF0C}\u{51CF}\u{5C11}\u{91CD}\u{7ED8}\u{91CD}\u{6392} |
5921
-
5922
- Scenario Outline: PC\u{9875}\u{9762}\u{7F13}\u{5B58}\u{5904}\u{7406}\u{6D41}\u{7A0B}
5923
- Given \u{7CFB}\u{7EDF}\u{68C0}\u{6D4B}\u{5230}<cache_condition>
5924
- When \u{7528}\u{6237}\u{8BBF}\u{95EE}\u{9875}\u{9762}\u{65F6}
5925
- Then \u{7CFB}\u{7EDF}\u{5E94}:
5926
- 1. \u{68C0}\u{67E5}\u{7F13}\u{5B58}\u{6709}\u{6548}\u{6027}
5927
- 2. \u{6839}\u{636E}\u{7F13}\u{5B58}\u{72B6}\u{6001}\u{51B3}\u{5B9A}\u{6570}\u{636E}\u{6765}\u{6E90}
5928
- 3. \u{66F4}\u{65B0}\u{7F13}\u{5B58}\u{FF08}\u{5982}\u{9700}\u{8981}\u{FF09}
5929
- 4. \u{663E}\u{793A}\u{6570}\u{636E}\u{7ED9}\u{7528}\u{6237}
5666
+ **\u{8981}\u{6C42}**: \u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{6587}\u{6863}\u{FF0C}\u{6BCF}\u{7AE0}\u{8282}\u{6709}\u{5B9E}\u{8D28}\u{5185}\u{5BB9}\u{FF0C}\u{8868}\u{683C}\u{586B}\u{5199}\u{5177}\u{4F53}\u{4FE1}\u{606F}\u{FF0C}\u{91CD}\u{70B9}\u{5173}\u{6CE8}\u{9875}\u{9762}\u{5E03}\u{5C40}\u{3001}\u{6837}\u{5F0F}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{3002}`;
5667
+ const appTemplatePrompt = `\u{4F60}\u{662F}\u{79FB}\u{52A8}\u{7AEF}\u{6280}\u{672F}\u{6587}\u{6863}\u{4E13}\u{5BB6}\u{3002}\u{57FA}\u{4E8E}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}APP\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF08}Markdown\u{683C}\u{5F0F}\u{FF0C}1500\u{5B57}\u{4EE5}\u{4E0A}\u{FF09}\u{3002}
5930
5668
 
5931
- Examples:
5932
- | cache_condition | \u{5904}\u{7406}\u{903B}\u{8F91} |
5933
- | \u{6709}\u{6709}\u{6548}\u{7F13}\u{5B58} | \u{76F4}\u{63A5}\u{4F7F}\u{7528}\u{7F13}\u{5B58}\u{6570}\u{636E}\u{FF0C}\u{540E}\u{53F0}\u{66F4}\u{65B0}\u{7F13}\u{5B58} |
5934
- | \u{7F13}\u{5B58}\u{5DF2}\u{8FC7}\u{671F} | \u{4F7F}\u{7528}\u{7F13}\u{5B58}\u{6570}\u{636E}\u{5FEB}\u{901F}\u{663E}\u{793A}\u{FF0C}\u{540C}\u{65F6}\u{8BF7}\u{6C42}\u{6700}\u{65B0}\u{6570}\u{636E} |
5935
- | \u{65E0}\u{7F13}\u{5B58} | \u{8BF7}\u{6C42}\u{6700}\u{65B0}\u{6570}\u{636E}\u{FF0C}\u{6210}\u{529F}\u{540E}\u{5B58}\u{5165}\u{7F13}\u{5B58} |
5936
- | \u{7F13}\u{5B58}\u{6570}\u{636E}\u{5F02}\u{5E38} | \u{8BF7}\u{6C42}\u{6700}\u{65B0}\u{6570}\u{636E}\u{FF0C}\u{4FEE}\u{590D}\u{7F13}\u{5B58} |
5937
-
5938
- Scenario Outline: PC\u{9875}\u{9762}\u{5E76}\u{53D1}\u{8BF7}\u{6C42}\u{5904}\u{7406}
5939
- Given \u{9875}\u{9762}\u{540C}\u{65F6}\u{53D1}\u{8D77}<concurrent_requests>\u{4E2A}\u{8BF7}\u{6C42}
5940
- When \u{7CFB}\u{7EDF}\u{5904}\u{7406}\u{8FD9}\u{4E9B}\u{8BF7}\u{6C42}\u{65F6}
5941
- Then \u{7CFB}\u{7EDF}\u{5E94}:
5942
- 1. \u{7BA1}\u{7406}\u{8BF7}\u{6C42}\u{961F}\u{5217}
5943
- 2. \u{63A7}\u{5236}\u{5E76}\u{53D1}\u{6570}\u{91CF}
5944
- 3. \u{5904}\u{7406}\u{8BF7}\u{6C42}\u{7ED3}\u{679C}
5945
- 4. \u{66F4}\u{65B0}UI\u{72B6}\u{6001}
5669
+ **\u{8F93}\u{5165}**: \u{529F}\u{80FD}\u{540D}\u{79F0}={featureName}, \u{4E1A}\u{52A1}\u{9886}\u{57DF}={businessDomain}
5946
5670
 
5947
- Examples:
5948
- | concurrent_requests | \u{5904}\u{7406}\u{7B56}\u{7565} |
5949
- | 1-3\u{4E2A}\u{8BF7}\u{6C42} | \u{5E76}\u{884C}\u{5904}\u{7406}\u{6240}\u{6709}\u{8BF7}\u{6C42} |
5950
- | 4-10\u{4E2A}\u{8BF7}\u{6C42} | \u{9650}\u{5236}\u{5E76}\u{53D1}\u{6570}\u{4E3A}5\u{FF0C}\u{961F}\u{5217}\u{5904}\u{7406}\u{5269}\u{4F59}\u{8BF7}\u{6C42} |
5951
- | 10\u{4E2A}\u{4EE5}\u{4E0A}\u{8BF7}\u{6C42} | \u{9650}\u{5236}\u{5E76}\u{53D1}\u{6570}\u{4E3A}3\u{FF0C}\u{663E}\u{793A}\u{8BF7}\u{6C42}\u{5904}\u{7406}\u{8FDB}\u{5EA6} |
5952
- | \u{5305}\u{542B}\u{4F9D}\u{8D56}\u{5173}\u{7CFB} | \u{6309}\u{4F9D}\u{8D56}\u{987A}\u{5E8F}\u{5904}\u{7406}\u{FF0C}\u{5148}\u{5904}\u{7406}\u{4F9D}\u{8D56}\u{8BF7}\u{6C42} |
5953
- \`\`\`
5954
-
5955
- ---
5956
-
5957
- **\u{91CD}\u{8981}\u{63D0}\u{9192}**:
5958
- 1. \u{8BF7}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{6587}\u{6863}\u{FF0C}\u{4E0D}\u{8981}\u{7701}\u{7565}\u{4EFB}\u{4F55}\u{7AE0}\u{8282}
5959
- 2. \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{5B9E}\u{8D28}\u{6027}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{53EA}\u{662F}\u{6A21}\u{677F}
5960
- 3. \u{6839}\u{636E}\u{8F93}\u{5165}\u{7684}\u{539F}\u{59CB}\u{5185}\u{5BB9}\u{8FDB}\u{884C}\u{5177}\u{4F53}\u{5206}\u{6790}\u{FF0C}\u{4E0D}\u{8981}\u{4F7F}\u{7528}\u{901A}\u{7528}\u{6A21}\u{677F}
5961
- 4. \u{6587}\u{6863}\u{603B}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
5962
- 5. \u{8868}\u{683C}\u{4E2D}\u{7684}\u{5185}\u{5BB9}\u{8981}\u{586B}\u{5199}\u{5177}\u{4F53}\u{4FE1}\u{606F}\u{FF0C}\u{4E0D}\u{8981}\u{4FDD}\u{7559}\u{5360}\u{4F4D}\u{7B26}
5963
- 6. \u{91CD}\u{70B9}\u{5173}\u{6CE8}\u{524D}\u{7AEF}\u{9875}\u{9762}\u{7684}\u{5E03}\u{5C40}\u{3001}\u{6837}\u{5F0F}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{7B49}\u{6280}\u{672F}\u{7EC6}\u{8282}
5964
-
5965
- \u{73B0}\u{5728}\u{8BF7}\u{5F00}\u{59CB}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}PC\u{9875}\u{9762}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF1A}`;
5966
- const appTemplatePrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{7684}\u{79FB}\u{52A8}\u{7AEF}\u{6280}\u{672F}\u{6587}\u{6863}\u{7F16}\u{5199}\u{4E13}\u{5BB6}\u{3002}\u{8BF7}\u{57FA}\u{4E8E}\u{7528}\u{6237}\u{63D0}\u{4F9B}\u{7684}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{FF0C}\u{751F}\u{6210}\u{4E00}\u{4EFD}\u{5B8C}\u{6574}\u{3001}\u{8BE6}\u{7EC6}\u{7684}APP\u{5F00}\u{53D1}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{3002}
5967
-
5968
- ## \u{4EFB}\u{52A1}\u{8981}\u{6C42}
5969
- - \u{5FC5}\u{987B}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{683C}\u{5F0F}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}
5970
- - \u{4E0D}\u{8981}\u{53EA}\u{7ED9}\u{51FA}\u{603B}\u{7ED3}\u{FF0C}\u{8981}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}\u{6587}\u{6863}\u{5185}\u{5BB9}
5971
- - \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{8BE6}\u{7EC6}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{7701}\u{7565}
5972
- - \u{6587}\u{6863}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
5973
- - \u{91CD}\u{70B9}\u{63CF}\u{8FF0}\u{79FB}\u{52A8}\u{7AEF}\u{9875}\u{9762}\u{5E03}\u{5C40}\u{3001}\u{6837}\u{5F0F}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{7B49}\u{79FB}\u{52A8}\u{7AEF}\u{76F8}\u{5173}\u{5185}\u{5BB9}
5974
-
5975
- ## \u{8F93}\u{5165}\u{4FE1}\u{606F}
5976
- - **\u{529F}\u{80FD}\u{540D}\u{79F0}**: {featureName}
5977
- - **\u{4E1A}\u{52A1}\u{9886}\u{57DF}**: {businessDomain}
5978
- - **\u{751F}\u{6210}\u{65F6}\u{5E8F}\u{56FE}**: {generateSequenceDiagram}
5979
-
5980
- ## \u{539F}\u{59CB}\u{9700}\u{6C42}\u{5185}\u{5BB9}
5671
+ **\u{539F}\u{59CB}\u{9700}\u{6C42}**:
5981
5672
  \`\`\`
5982
5673
  {inputContent}
5983
5674
  \`\`\`
@@ -5985,451 +5676,70 @@ Scenario Outline: PC\u{9875}\u{9762}\u{5E76}\u{53D1}\u{8BF7}\u{6C42}\u{5904}\u{7
5985
5676
  ## \u{6587}\u{6863}\u{7ED3}\u{6784}\u{8981}\u{6C42}
5986
5677
  \u{8BF7}\u{4E25}\u{683C}\u{6309}\u{7167}\u{4EE5}\u{4E0B}\u{7ED3}\u{6784}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF0C}\u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{8BE6}\u{5B9E}\u{7684}\u{5185}\u{5BB9}\u{FF1A}
5987
5678
 
5988
- # {featureName} - APP\u{5F00}\u{53D1}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}
5679
+ # {featureName} - APP\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}
5989
5680
 
5990
5681
  > **\u{751F}\u{6210}\u{65F6}\u{95F4}**: {currentTime}
5991
5682
  > **\u{4E1A}\u{52A1}\u{9886}\u{57DF}**: {businessDomain}
5992
- > **\u{5E94}\u{7528}\u{7C7B}\u{578B}**: \u{79FB}\u{52A8}\u{7AEF}\u{5E94}\u{7528}
5683
+ > **\u{5E94}\u{7528}\u{7C7B}\u{578B}**: \u{79FB}\u{52A8}\u{7AEF}\u{5E94}\u{7528}\u{7A0B}\u{5E8F}
5993
5684
 
5994
5685
  ---
5995
5686
 
5996
- ## 1. \u{9700}\u{6C42}\u{80CC}\u{666F}
5997
-
5998
- **\u{80CC}\u{666F}**: [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}APP\u{529F}\u{80FD}\u{80CC}\u{666F}\u{3001}\u{4E1A}\u{52A1}\u{9700}\u{6C42}\u{548C}\u{76EE}\u{6807}]
5999
-
6000
- **\u{5173}\u{952E}\u{529F}\u{80FD}**: [\u{5217}\u{51FA}APP\u{7684}\u{4E3B}\u{8981}\u{529F}\u{80FD}\u{70B9}]
6001
-
6002
- **\u{6D89}\u{53CA}\u{89D2}\u{8272}**: [\u{5217}\u{51FA}\u{6240}\u{6709}\u{76F8}\u{5173}\u{7528}\u{6237}\u{89D2}\u{8272}]
6003
-
6004
- ## 2. {featureName}\u{529F}\u{80FD}\u{8BBE}\u{8BA1}\u{8BF4}\u{660E}
6005
-
6006
- | | | | | |
6007
- |---|---|---|---|---|
6008
- |**\u{6D41}\u{7A0B}\u{7F16}\u{53F7}**|F001|**\u{6D41}\u{7A0B}\u{540D}\u{79F0}**|{featureName}|
6009
- |**\u{4E1A}\u{52A1}\u{529F}\u{80FD}\u{7F16}\u{53F7}**|BF001|**\u{4E1A}\u{52A1}\u{529F}\u{80FD}\u{540D}\u{79F0}**|{featureName}|
6010
- |**\u{529F}\u{80FD}\u{8BBE}\u{8BA1}\u{7F16}\u{53F7}**|FD001|**\u{7CFB}\u{7EDF}\u{529F}\u{80FD}\u{540D}\u{79F0}**|{featureName}|
6011
- |**\u{524D}\u{7F6E}\u{6761}\u{4EF6}**|[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{529F}\u{80FD}\u{4F7F}\u{7528}\u{7684}\u{524D}\u{7F6E}\u{6761}\u{4EF6}]|
6012
- |**\u{89D2}\u{8272}\u{FF08}\u{5C97}\u{4F4D}\u{FF09}**|[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{7528}\u{6237}\u{89D2}\u{8272}\u{53CA}\u{5176}\u{6743}\u{9650}]|
6013
- |**\u{5165}\u{53E3}\u{6E20}\u{9053}**|[\u{63CF}\u{8FF0}\u{529F}\u{80FD}\u{8BBF}\u{95EE}\u{5165}\u{53E3}\u{FF0C}\u{5982}Tab\u{3001}\u{6309}\u{94AE}\u{7B49}]|
6014
- |**\u{529F}\u{80FD}\u{63CF}\u{8FF0}**|[\u{8BE6}\u{7EC6}\u{7684}\u{529F}\u{80FD}\u{63CF}\u{8FF0}]|
6015
- |**\u{8C03}\u{7528}\u{80FD}\u{529B}\u{57DF}/\u{4E2D}\u{5FC3}**|[\u{5982}\u{9002}\u{7528}\u{7684}\u{540E}\u{7AEF}API\u{63A5}\u{53E3}]|
6016
-
6017
- ## 3. \u{9875}\u{9762}\u{5E03}\u{5C40}\u{8BBE}\u{8BA1}
6018
-
6019
- ### 3.1 \u{6574}\u{4F53}\u{5E03}\u{5C40}\u{7ED3}\u{6784}
6020
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{7684}\u{6574}\u{4F53}\u{5E03}\u{5C40}\u{7ED3}\u{6784}\u{FF0C}\u{5305}\u{62EC}\u{5BFC}\u{822A}\u{680F}\u{3001}\u{5185}\u{5BB9}\u{533A}\u{3001}\u{5E95}\u{90E8}\u{64CD}\u{4F5C}\u{680F}\u{7B49}\u{533A}\u{57DF}\u{7684}\u{5212}\u{5206}\u{548C}\u{529F}\u{80FD}]
6021
-
6022
- ### 3.2 \u{9875}\u{9762}\u{533A}\u{57DF}\u{5212}\u{5206}
6023
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{5404}\u{4E2A}\u{529F}\u{80FD}\u{533A}\u{57DF}\u{7684}\u{5E03}\u{5C40}\u{FF0C}\u{4F7F}\u{7528}\u{6587}\u{5B57}\u{63CF}\u{8FF0}\u{533A}\u{57DF}\u{4F4D}\u{7F6E}\u{5173}\u{7CFB}]
6024
-
6025
- ### 3.3 \u{591A}\u{5C4F}\u{5E55}\u{9002}\u{914D}\u{8981}\u{6C42}
6026
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{5728}\u{4E0D}\u{540C}\u{5C4F}\u{5E55}\u{5C3A}\u{5BF8}\u{548C}\u{5206}\u{8FA8}\u{7387}\u{4E0B}\u{7684}\u{5E03}\u{5C40}\u{9002}\u{914D}\u{8981}\u{6C42}]
6027
-
6028
- ### 3.4 \u{54CD}\u{5E94}\u{5F0F}\u{5E03}\u{5C40}\u{89C4}\u{8303}
6029
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{79FB}\u{52A8}\u{7AEF}\u{54CD}\u{5E94}\u{5F0F}\u{5E03}\u{5C40}\u{7684}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}\u{548C}\u{5B9E}\u{73B0}\u{8981}\u{6C42}]
6030
-
6031
- ### 3.5 \u{624B}\u{52BF}\u{533A}\u{57DF}\u{8BBE}\u{8BA1}
6032
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{624B}\u{52BF}\u{64CD}\u{4F5C}\u{533A}\u{57DF}\u{7684}\u{8BBE}\u{8BA1}\u{548C}\u{4EA4}\u{4E92}\u{89C4}\u{8303}]
6033
-
6034
- ## 4. \u{6837}\u{5F0F}\u{89C4}\u{8303}\u{8BF4}\u{660E}
6035
-
6036
- ### 4.1 \u{8272}\u{5F69}\u{89C4}\u{8303}
6037
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}APP\u{4F7F}\u{7528}\u{7684}\u{4E3B}\u{8272}\u{8C03}\u{3001}\u{8F85}\u{52A9}\u{8272}\u{3001}\u{72B6}\u{6001}\u{8272}\u{7B49}\u{914D}\u{8272}\u{65B9}\u{6848}]
6038
-
6039
- ### 4.2 \u{5B57}\u{4F53}\u{89C4}\u{8303}
6040
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}APP\u{4F7F}\u{7528}\u{7684}\u{5B57}\u{4F53}\u{3001}\u{5B57}\u{53F7}\u{3001}\u{5B57}\u{91CD}\u{7B49}\u{89C4}\u{8303}\u{FF0C}\u{8003}\u{8651}iOS\u{548C}Android\u{5DEE}\u{5F02}]
6041
-
6042
- ### 4.3 \u{7EC4}\u{4EF6}\u{6837}\u{5F0F}
6043
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}APP\u{4E2D}\u{5404}\u{79CD}UI\u{7EC4}\u{4EF6}\u{7684}\u{6837}\u{5F0F}\u{89C4}\u{8303}\u{FF0C}\u{5982}\u{6309}\u{94AE}\u{3001}\u{8F93}\u{5165}\u{6846}\u{3001}\u{5217}\u{8868}\u{7B49}]
6044
-
6045
- ### 4.4 \u{95F4}\u{8DDD}\u{89C4}\u{8303}
6046
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{5143}\u{7D20}\u{95F4}\u{7684}\u{95F4}\u{8DDD}\u{89C4}\u{8303}\u{FF0C}\u{5305}\u{62EC}\u{5185}\u{8FB9}\u{8DDD}\u{3001}\u{5916}\u{8FB9}\u{8DDD}\u{7B49}]
6047
-
6048
- ### 4.5 \u{56FE}\u{6807}\u{89C4}\u{8303}
6049
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}APP\u{4E2D}\u{56FE}\u{6807}\u{7684}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}\u{548C}\u{4F7F}\u{7528}\u{8981}\u{6C42}]
6050
-
6051
- ### 4.6 \u{4E3B}\u{9898}\u{89C4}\u{8303}
6052
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}APP\u{4E3B}\u{9898}\u{5207}\u{6362}\u{7684}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}\u{548C}\u{5B9E}\u{73B0}\u{8981}\u{6C42}]
6053
-
6054
- ## 5. \u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{8BF4}\u{660E}
6055
-
6056
- ### 5.1 \u{624B}\u{52BF}\u{64CD}\u{4F5C}
6057
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{652F}\u{6301}\u{7684}\u{624B}\u{52BF}\u{64CD}\u{4F5C}\u{FF0C}\u{5982}\u{6ED1}\u{52A8}\u{3001}\u{957F}\u{6309}\u{3001}\u{53CC}\u{51FB}\u{7B49}]
6058
-
6059
- ### 5.2 \u{9875}\u{9762}\u{8DF3}\u{8F6C}\u{903B}\u{8F91}
6060
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{95F4}\u{7684}\u{8DF3}\u{8F6C}\u{5173}\u{7CFB}\u{548C}\u{5BFC}\u{822A}\u{903B}\u{8F91}]
6061
-
6062
- ### 5.3 \u{72B6}\u{6001}\u{7BA1}\u{7406}
6063
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{7684}\u{5404}\u{79CD}\u{72B6}\u{6001}\u{53CA}\u{5176}\u{5207}\u{6362}\u{903B}\u{8F91}\u{FF0C}\u{5982}\u{52A0}\u{8F7D}\u{72B6}\u{6001}\u{3001}\u{7A7A}\u{72B6}\u{6001}\u{3001}\u{9519}\u{8BEF}\u{72B6}\u{6001}\u{7B49}]
6064
-
6065
- ### 5.4 \u{52A8}\u{6548}\u{8BBE}\u{8BA1}
6066
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{7684}\u{52A8}\u{753B}\u{6548}\u{679C}\u{548C}\u{8FC7}\u{6E21}\u{6548}\u{679C}\u{FF0C}\u{8003}\u{8651}\u{5E73}\u{53F0}\u{7279}\u{6027}]
6067
-
6068
- ### 5.5 \u{8868}\u{5355}\u{9A8C}\u{8BC1}\u{89C4}\u{5219}
6069
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{8868}\u{5355}\u{5143}\u{7D20}\u{7684}\u{9A8C}\u{8BC1}\u{89C4}\u{5219}\u{548C}\u{9519}\u{8BEF}\u{63D0}\u{793A}]
6070
-
6071
- ### 5.6 \u{7528}\u{6237}\u{53CD}\u{9988}\u{673A}\u{5236}
6072
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{7528}\u{6237}\u{64CD}\u{4F5C}\u{540E}\u{7684}\u{53CD}\u{9988}\u{673A}\u{5236}\u{FF0C}\u{5982}Toast\u{3001}Loading\u{7B49}]
6073
-
6074
- ### 5.7 \u{79BB}\u{7EBF}\u{4EA4}\u{4E92}\u{5904}\u{7406}
6075
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5E94}\u{7528}\u{5728}\u{79BB}\u{7EBF}\u{72B6}\u{6001}\u{4E0B}\u{7684}\u{4EA4}\u{4E92}\u{5904}\u{7406}\u{673A}\u{5236}]
6076
-
6077
- ## 6. \u{754C}\u{9762}\u{5B57}\u{6BB5}\u{8BF4}\u{660E}
6078
-
6079
- ### 6.1 \u{4E3B}\u{8981}\u{6570}\u{636E}\u{5B9E}\u{4F53}
6080
- [\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{6D89}\u{53CA}\u{7684}\u{4E3B}\u{8981}\u{6570}\u{636E}\u{5B9E}\u{4F53}]
6081
-
6082
- \u{5B9E}\u{4F53}\u{4E00}
6083
- | | | | | |
6084
- |---|---|---|---|---|
6085
- |**\u{5B57}\u{6BB5}\u{540D}\u{79F0}**|**\u{6570}\u{636E}\u{7C7B}\u{578B}**|**\u{957F}\u{5EA6}**|**\u{5FC5}\u{586B}**|**\u{8BF4}\u{660E}**|
6086
- |[\u{5B57}\u{6BB5}1]|[\u{7C7B}\u{578B}]|[\u{957F}\u{5EA6}]|[\u{662F}/\u{5426}]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
6087
- |[\u{5B57}\u{6BB5}2]|[\u{7C7B}\u{578B}]|[\u{957F}\u{5EA6}]|[\u{662F}/\u{5426}]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
6088
- |[\u{6DFB}\u{52A0}\u{66F4}\u{591A}\u{76F8}\u{5173}\u{5B57}\u{6BB5}...]|||
6089
-
6090
- ### 6.2 \u{8F93}\u{5165}\u{63A7}\u{4EF6}\u{8BF4}\u{660E}
6091
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{5404}\u{79CD}\u{8F93}\u{5165}\u{63A7}\u{4EF6}\u{7684}\u{4F7F}\u{7528}\u{89C4}\u{8303}]
6092
-
6093
- ### 6.3 \u{5C55}\u{793A}\u{63A7}\u{4EF6}\u{8BF4}\u{660E}
6094
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{5404}\u{79CD}\u{5C55}\u{793A}\u{63A7}\u{4EF6}\u{7684}\u{4F7F}\u{7528}\u{89C4}\u{8303}]
6095
-
6096
- ## 7. \u{754C}\u{9762}\u{64CD}\u{4F5C}\u{8BF4}\u{660E}
6097
-
6098
- | | | |
6099
- |---|---|---|
6100
- |**\u{5E8F}\u{53F7}**|**\u{4E1A}\u{52A1}\u{64CD}\u{4F5C}**|**\u{8BF4}\u{660E}**|
6101
- |1|[\u{64CD}\u{4F5C}1]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{64CD}\u{4F5C}\u{89E6}\u{53D1}\u{6761}\u{4EF6}\u{3001}\u{6267}\u{884C}\u{8FC7}\u{7A0B}\u{548C}\u{7ED3}\u{679C}]|
6102
- |2|[\u{64CD}\u{4F5C}2]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{64CD}\u{4F5C}\u{89E6}\u{53D1}\u{6761}\u{4EF6}\u{3001}\u{6267}\u{884C}\u{8FC7}\u{7A0B}\u{548C}\u{7ED3}\u{679C}]|
6103
- |[\u{6DFB}\u{52A0}\u{66F4}\u{591A}\u{64CD}\u{4F5C}...]
6104
-
6105
- ## 8. \u{7EC4}\u{4EF6}\u{7ED3}\u{6784}\u{8BBE}\u{8BA1}
6106
-
6107
- ### 8.1 \u{9875}\u{9762}\u{7EC4}\u{4EF6}\u{6811}
6108
- [\u{4F7F}\u{7528}\u{6811}\u{72B6}\u{7ED3}\u{6784}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{7684}\u{7EC4}\u{4EF6}\u{5C42}\u{6B21}\u{5173}\u{7CFB}]
6109
-
6110
- ### 8.2 \u{6838}\u{5FC3}\u{7EC4}\u{4EF6}\u{8BF4}\u{660E}
6111
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{7684}\u{6838}\u{5FC3}\u{7EC4}\u{4EF6}\u{529F}\u{80FD}\u{3001}\u{5C5E}\u{6027}\u{548C}\u{4F7F}\u{7528}\u{65B9}\u{5F0F}]
5687
+ ## 1. \u{9700}\u{6C42}\u{6982}\u{8FF0}
6112
5688
 
6113
- ### 8.3 \u{7EC4}\u{4EF6}\u{901A}\u{4FE1}\u{673A}\u{5236}
6114
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{7EC4}\u{4EF6}\u{95F4}\u{7684}\u{901A}\u{4FE1}\u{65B9}\u{5F0F}\u{548C}\u{6570}\u{636E}\u{6D41}]
5689
+ **\u{4E1A}\u{52A1}\u{80CC}\u{666F}**: [\u{63CF}\u{8FF0}APP\u{529F}\u{80FD}\u{80CC}\u{666F}\u{3001}\u{4E1A}\u{52A1}\u{9700}\u{6C42}\u{548C}\u{76EE}\u{6807}]
6115
5690
 
6116
- ### 8.4 \u{7EC4}\u{4EF6}\u{72B6}\u{6001}\u{7BA1}\u{7406}
6117
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{7EC4}\u{4EF6}\u{5185}\u{90E8}\u{72B6}\u{6001}\u{548C}\u{5168}\u{5C40}\u{72B6}\u{6001}\u{7684}\u{7BA1}\u{7406}\u{65B9}\u{5F0F}]
5691
+ **\u{6838}\u{5FC3}\u{529F}\u{80FD}**: [\u{5217}\u{51FA}APP\u{7684}\u{4E3B}\u{8981}\u{529F}\u{80FD}\u{70B9}]
6118
5692
 
6119
- ## 9. \u{5E73}\u{53F0}\u{7279}\u{6027}\u{8003}\u{8651}
5693
+ ## 2. \u{754C}\u{9762}\u{8BBE}\u{8BA1}
6120
5694
 
6121
- ### 9.1 iOS\u{5E73}\u{53F0}\u{9002}\u{914D}
6122
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5728}iOS\u{5E73}\u{53F0}\u{4E0A}\u{7684}\u{7279}\u{6B8A}\u{9002}\u{914D}\u{8981}\u{6C42}]
5695
+ ### 2.1 \u{9875}\u{9762}\u{5E03}\u{5C40}
5696
+ [\u{63CF}\u{8FF0}\u{4E3B}\u{8981}\u{9875}\u{9762}\u{7684}\u{5E03}\u{5C40}\u{7ED3}\u{6784}\u{548C}\u{754C}\u{9762}\u{5143}\u{7D20}]
6123
5697
 
6124
- ### 9.2 Android\u{5E73}\u{53F0}\u{9002}\u{914D}
6125
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5728}Android\u{5E73}\u{53F0}\u{4E0A}\u{7684}\u{7279}\u{6B8A}\u{9002}\u{914D}\u{8981}\u{6C42}]
5698
+ ### 2.2 \u{7528}\u{6237}\u{754C}\u{9762}
5699
+ [\u{63CF}\u{8FF0}APP\u{7684}\u{7528}\u{6237}\u{754C}\u{9762}\u{8BBE}\u{8BA1}\u{548C}\u{4EA4}\u{4E92}\u{5143}\u{7D20}]
6126
5700
 
6127
- ### 9.3 \u{7CFB}\u{7EDF}\u{6743}\u{9650}\u{8981}\u{6C42}
6128
- [\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}]
5701
+ ## 3. \u{4EA4}\u{4E92}\u{903B}\u{8F91}
6129
5702
 
6130
- ## 11. \u{4E1A}\u{52A1}\u{5BF9}\u{8C61}\u{65F6}\u{5E8F}\u{56FE}
5703
+ ### 3.1 \u{7528}\u{6237}\u{64CD}\u{4F5C}\u{6D41}\u{7A0B}
5704
+ [\u{63CF}\u{8FF0}\u{4E3B}\u{8981}\u{7684}\u{7528}\u{6237}\u{64CD}\u{4F5C}\u{6D41}\u{7A0B}\u{548C}\u{5BFC}\u{822A}\u{8DEF}\u{5F84}]
6131
5705
 
6132
- \`\`\`mermaid
6133
- sequenceDiagram
6134
- participant \u{7528}\u{6237}
6135
- participant \u{79FB}\u{52A8}\u{7AEF}APP
6136
- participant \u{8DEF}\u{7531}\u{7BA1}\u{7406}\u{5668}
6137
- participant \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}
6138
- participant \u{8BA4}\u{8BC1}\u{670D}\u{52A1}
6139
- participant \u{6743}\u{9650}\u{670D}\u{52A1}
6140
- participant \u{540E}\u{7AEF}\u{670D}\u{52A1}
6141
- participant \u{6570}\u{636E}\u{5E93}
6142
- participant \u{7F13}\u{5B58}\u{670D}\u{52A1}
6143
- participant \u{6D88}\u{606F}\u{961F}\u{5217}
6144
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6145
- participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
6146
-
6147
- %% \u{5E94}\u{7528}\u{542F}\u{52A8}\u{6D41}\u{7A0B}
6148
- \u{7528}\u{6237}->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{542F}\u{52A8}\u{5E94}\u{7528}
6149
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{8DEF}\u{7531}\u{7BA1}\u{7406}\u{5668}: \u{89E3}\u{6790}\u{521D}\u{59CB}\u{8DEF}\u{7531}
6150
- \u{8DEF}\u{7531}\u{7BA1}\u{7406}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{8DEF}\u{7531}\u{4FE1}\u{606F}
6151
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{521D}\u{59CB}\u{5316}\u{5E94}\u{7528}\u{72B6}\u{6001}
6152
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{8BA4}\u{8BC1}\u{670D}\u{52A1}: \u{9A8C}\u{8BC1}\u{7528}\u{6237}\u{8EAB}\u{4EFD}
6153
- \u{8BA4}\u{8BC1}\u{670D}\u{52A1}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{8BA4}\u{8BC1}\u{7ED3}\u{679C}
6154
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{6743}\u{9650}\u{670D}\u{52A1}: \u{68C0}\u{67E5}\u{7528}\u{6237}\u{6743}\u{9650}
6155
- \u{6743}\u{9650}\u{670D}\u{52A1}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{6743}\u{9650}\u{4FE1}\u{606F}
6156
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{8BA4}\u{8BC1}\u{72B6}\u{6001}
6157
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{663E}\u{793A}\u{4E3B}\u{754C}\u{9762}
6158
-
6159
- %% \u{9875}\u{9762}\u{52A0}\u{8F7D}\u{6D41}\u{7A0B}
6160
- \u{7528}\u{6237}->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8BBF}\u{95EE}\u{529F}\u{80FD}\u{9875}\u{9762}
6161
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{8DEF}\u{7531}\u{7BA1}\u{7406}\u{5668}: \u{89E3}\u{6790}\u{9875}\u{9762}\u{8DEF}\u{7531}
6162
- \u{8DEF}\u{7531}\u{7BA1}\u{7406}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{8DEF}\u{7531}\u{4FE1}\u{606F}
6163
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{521D}\u{59CB}\u{5316}\u{9875}\u{9762}\u{72B6}\u{6001}
6164
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{67E5}\u{8BE2}\u{7F13}\u{5B58}\u{6570}\u{636E}
6165
- alt \u{7F13}\u{5B58}\u{4E2D}\u{6709}\u{6570}\u{636E}
6166
- \u{7F13}\u{5B58}\u{670D}\u{52A1}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{7F13}\u{5B58}\u{6570}\u{636E}
6167
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{9875}\u{9762}\u{72B6}\u{6001}
6168
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{6E32}\u{67D3}\u{9875}\u{9762}\u{5185}\u{5BB9}
6169
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{7F13}\u{5B58}\u{547D}\u{4E2D}
6170
- else \u{7F13}\u{5B58}\u{4E2D}\u{65E0}\u{6570}\u{636E}
6171
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{540E}\u{7AEF}\u{670D}\u{52A1}: \u{53D1}\u{8D77}API\u{8BF7}\u{6C42}
6172
- \u{540E}\u{7AEF}\u{670D}\u{52A1}->>\u{6570}\u{636E}\u{5E93}: \u{67E5}\u{8BE2}\u{6570}\u{636E}
6173
- \u{6570}\u{636E}\u{5E93}-->>\u{540E}\u{7AEF}\u{670D}\u{52A1}: \u{8FD4}\u{56DE}\u{67E5}\u{8BE2}\u{7ED3}\u{679C}
6174
- \u{540E}\u{7AEF}\u{670D}\u{52A1}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}\u{6570}\u{636E}
6175
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{5B58}\u{50A8}\u{6570}\u{636E}\u{5230}\u{7F13}\u{5B58}
6176
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{9875}\u{9762}\u{72B6}\u{6001}
6177
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{6E32}\u{67D3}\u{9875}\u{9762}\u{5185}\u{5BB9}
6178
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{6570}\u{636E}\u{52A0}\u{8F7D}
6179
- end
6180
- \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}
6181
- \`\`\`
5706
+ ### 3.2 \u{4EA4}\u{4E92}\u{89C4}\u{5219}
5707
+ [\u{63CF}\u{8FF0}APP\u{4E2D}\u{7684}\u{4E3B}\u{8981}\u{4EA4}\u{4E92}\u{89C4}\u{5219}\u{548C}\u{54CD}\u{5E94}\u{673A}\u{5236}]
6182
5708
 
6183
- ### 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}
5709
+ ## 4. \u{6570}\u{636E}\u{5904}\u{7406}
6184
5710
 
6185
- #### 11.2.1 \u{624B}\u{52BF}\u{4EA4}\u{4E92}\u{8BBE}\u{8BA1}\u{6D41}\u{7A0B}
6186
- \`\`\`mermaid
6187
- sequenceDiagram
6188
- participant \u{7528}\u{6237}
6189
- participant \u{79FB}\u{52A8}\u{7AEF}APP
6190
- participant \u{624B}\u{52BF}\u{8BC6}\u{522B}\u{5668}
6191
- participant \u{4EA4}\u{4E92}\u{5904}\u{7406}\u{5668}
6192
- participant \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}
6193
-
6194
- \u{7528}\u{6237}->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{6267}\u{884C}\u{624B}\u{52BF}\u{64CD}\u{4F5C}
6195
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{624B}\u{52BF}\u{8BC6}\u{522B}\u{5668}: \u{8BC6}\u{522B}\u{624B}\u{52BF}\u{7C7B}\u{578B}
6196
- \u{624B}\u{52BF}\u{8BC6}\u{522B}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{624B}\u{52BF}\u{8BC6}\u{522B}\u{7ED3}\u{679C}
6197
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{4EA4}\u{4E92}\u{5904}\u{7406}\u{5668}: \u{5904}\u{7406}\u{624B}\u{52BF}\u{64CD}\u{4F5C}
6198
- \u{4EA4}\u{4E92}\u{5904}\u{7406}\u{5668}->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{5E94}\u{7528}\u{72B6}\u{6001}
6199
- \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}-->>\u{4EA4}\u{4E92}\u{5904}\u{7406}\u{5668}: \u{8FD4}\u{56DE}\u{72B6}\u{6001}\u{66F4}\u{65B0}\u{7ED3}\u{679C}
6200
- \u{4EA4}\u{4E92}\u{5904}\u{7406}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{5904}\u{7406}\u{7ED3}\u{679C}
6201
- \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}
6202
- \`\`\`
5711
+ ### 4.1 \u{6570}\u{636E}\u{5C55}\u{793A}
5712
+ [\u{63CF}\u{8FF0}APP\u{4E2D}\u{6570}\u{636E}\u{7684}\u{5C55}\u{793A}\u{65B9}\u{5F0F}\u{548C}\u{683C}\u{5F0F}]
6203
5713
 
6204
- #### 11.2.2 \u{7EC4}\u{4EF6}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}\u{6D41}\u{7A0B}
6205
- \`\`\`mermaid
6206
- sequenceDiagram
6207
- participant \u{79FB}\u{52A8}\u{7AEF}APP
6208
- participant \u{7EC4}\u{4EF6}\u{5E93}
6209
- participant \u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}
6210
- participant \u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}
6211
- participant \u{5E03}\u{5C40}\u{5F15}\u{64CE}
6212
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6213
-
6214
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{7EC4}\u{4EF6}\u{5E93}: \u{8BF7}\u{6C42}\u{7EC4}\u{4EF6}\u{89C4}\u{8303}
6215
- \u{7EC4}\u{4EF6}\u{5E93}->>\u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}: \u{83B7}\u{53D6}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}
6216
- \u{8BBE}\u{8BA1}\u{7CFB}\u{7EDF}-->>\u{7EC4}\u{4EF6}\u{5E93}: \u{8FD4}\u{56DE}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}
6217
- \u{7EC4}\u{4EF6}\u{5E93}->>\u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}: \u{5E94}\u{7528}\u{6837}\u{5F0F}\u{89C4}\u{5219}
6218
- \u{6837}\u{5F0F}\u{7BA1}\u{7406}\u{5668}-->>\u{7EC4}\u{4EF6}\u{5E93}: \u{8FD4}\u{56DE}\u{6837}\u{5F0F}\u{914D}\u{7F6E}
6219
- \u{7EC4}\u{4EF6}\u{5E93}->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{8BA1}\u{7B97}\u{5E03}\u{5C40}
6220
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}-->>\u{7EC4}\u{4EF6}\u{5E93}: \u{8FD4}\u{56DE}\u{5E03}\u{5C40}\u{4FE1}\u{606F}
6221
- \u{7EC4}\u{4EF6}\u{5E93}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{7EC4}\u{4EF6}\u{5B9E}\u{73B0}
6222
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{7EC4}\u{4EF6}\u{4F7F}\u{7528}\u{65E5}\u{5FD7}
6223
- \`\`\`
5714
+ ### 4.2 \u{6570}\u{636E}\u{4EA4}\u{4E92}
5715
+ [\u{63CF}\u{8FF0}APP\u{4E0E}\u{540E}\u{7AEF}\u{7684}\u{6570}\u{636E}\u{4EA4}\u{4E92}\u{65B9}\u{5F0F}]
6224
5716
 
6225
- ### 11.3 \u{5F02}\u{5E38}\u{6D41}\u{7A0B}\u{FF08}\u{9519}\u{8BEF}\u{5904}\u{7406}\u{FF09}
5717
+ ## 5. \u{529F}\u{80FD}\u{6A21}\u{5757}
6226
5718
 
6227
- #### 11.3.1 \u{8BBE}\u{5907}\u{517C}\u{5BB9}\u{6027}\u{9519}\u{8BEF}
6228
- \`\`\`mermaid
6229
- sequenceDiagram
6230
- participant \u{7528}\u{6237}
6231
- participant \u{79FB}\u{52A8}\u{7AEF}APP
6232
- participant \u{8BBE}\u{5907}\u{517C}\u{5BB9}\u{6027}\u{68C0}\u{67E5}\u{5668}
6233
- participant \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}
6234
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6235
-
6236
- \u{7528}\u{6237}->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{542F}\u{52A8}\u{5E94}\u{7528}
6237
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{8BBE}\u{5907}\u{517C}\u{5BB9}\u{6027}\u{68C0}\u{67E5}\u{5668}: \u{68C0}\u{67E5}\u{8BBE}\u{5907}\u{517C}\u{5BB9}\u{6027}
6238
- \u{8BBE}\u{5907}\u{517C}\u{5BB9}\u{6027}\u{68C0}\u{67E5}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{4E0D}\u{517C}\u{5BB9}\u{9519}\u{8BEF}
6239
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}: \u{5904}\u{7406}\u{517C}\u{5BB9}\u{6027}\u{9519}\u{8BEF}
6240
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{517C}\u{5BB9}\u{6027}\u{9519}\u{8BEF}
6241
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{9519}\u{8BEF}\u{5904}\u{7406}\u{7ED3}\u{679C}
6242
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{7528}\u{6237}: \u{663E}\u{793A}\u{517C}\u{5BB9}\u{6027}\u{63D0}\u{793A}
6243
- \`\`\`
5719
+ ### 5.1 \u{6838}\u{5FC3}\u{6A21}\u{5757}
5720
+ [\u{63CF}\u{8FF0}APP\u{7684}\u{6838}\u{5FC3}\u{529F}\u{80FD}\u{6A21}\u{5757}]
6244
5721
 
6245
- #### 11.3.2 \u{6743}\u{9650}\u{51B2}\u{7A81}\u{9519}\u{8BEF}
6246
- \`\`\`mermaid
6247
- sequenceDiagram
6248
- participant \u{7528}\u{6237}
6249
- participant \u{79FB}\u{52A8}\u{7AEF}APP
6250
- participant \u{6743}\u{9650}\u{670D}\u{52A1}
6251
- participant \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}
6252
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6253
- participant \u{8BBE}\u{7F6E}\u{7BA1}\u{7406}\u{5668}
6254
-
6255
- \u{7528}\u{6237}->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{6267}\u{884C}\u{9700}\u{8981}\u{6743}\u{9650}\u{7684}\u{64CD}\u{4F5C}
6256
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{6743}\u{9650}\u{670D}\u{52A1}: \u{68C0}\u{67E5}\u{6240}\u{9700}\u{6743}\u{9650}
6257
- \u{6743}\u{9650}\u{670D}\u{52A1}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{6743}\u{9650}\u{62D2}\u{7EDD}
6258
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}: \u{5904}\u{7406}\u{6743}\u{9650}\u{9519}\u{8BEF}
6259
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{6743}\u{9650}\u{9519}\u{8BEF}
6260
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}->>\u{8BBE}\u{7F6E}\u{7BA1}\u{7406}\u{5668}: \u{8BF7}\u{6C42}\u{6743}\u{9650}\u{8BBE}\u{7F6E}
6261
- \u{8BBE}\u{7F6E}\u{7BA1}\u{7406}\u{5668}-->>\u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}: \u{8FD4}\u{56DE}\u{8BBE}\u{7F6E}\u{7ED3}\u{679C}
6262
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{9519}\u{8BEF}\u{5904}\u{7406}\u{7ED3}\u{679C}
6263
- \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}
6264
- \`\`\`
5722
+ ### 5.2 \u{4E1A}\u{52A1}\u{903B}\u{8F91}
5723
+ [\u{63CF}\u{8FF0}\u{5404}\u{6A21}\u{5757}\u{7684}\u{4E1A}\u{52A1}\u{903B}\u{8F91}\u{548C}\u{5904}\u{7406}\u{6D41}\u{7A0B}]
6265
5724
 
6266
- ### 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}
5725
+ ## 6. \u{4E1A}\u{52A1}\u{6D41}\u{7A0B}
6267
5726
 
6268
- #### 11.4.1 \u{79BB}\u{7EBF}\u{529F}\u{80FD}\u{5904}\u{7406}
6269
- \`\`\`mermaid
6270
- sequenceDiagram
6271
- participant \u{7528}\u{6237}
6272
- participant \u{79FB}\u{52A8}\u{7AEF}APP
6273
- participant \u{7F51}\u{7EDC}\u{72B6}\u{6001}\u{68C0}\u{6D4B}\u{5668}
6274
- participant \u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}
6275
- participant \u{672C}\u{5730}\u{6570}\u{636E}\u{5E93}
6276
-
6277
- \u{7528}\u{6237}->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{6267}\u{884C}\u{6570}\u{636E}\u{64CD}\u{4F5C}
6278
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{7F51}\u{7EDC}\u{72B6}\u{6001}\u{68C0}\u{6D4B}\u{5668}: \u{68C0}\u{67E5}\u{7F51}\u{7EDC}\u{72B6}\u{6001}
6279
- \u{7F51}\u{7EDC}\u{72B6}\u{6001}\u{68C0}\u{6D4B}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{65E0}\u{7F51}\u{7EDC}\u{8FDE}\u{63A5}
6280
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}: \u{5904}\u{7406}\u{79BB}\u{7EBF}\u{64CD}\u{4F5C}
6281
- \u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}->>\u{672C}\u{5730}\u{6570}\u{636E}\u{5E93}: \u{5B58}\u{50A8}\u{79BB}\u{7EBF}\u{6570}\u{636E}
6282
- \u{672C}\u{5730}\u{6570}\u{636E}\u{5E93}-->>\u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}: \u{8FD4}\u{56DE}\u{5B58}\u{50A8}\u{7ED3}\u{679C}
6283
- \u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{5904}\u{7406}\u{7ED3}\u{679C}
6284
- \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}
6285
- \`\`\`
5727
+ [\u{4F7F}\u{7528}\u{7B80}\u{5355}\u{7684}mermaid\u{6D41}\u{7A0B}\u{56FE}\u{63CF}\u{8FF0}\u{4E3B}\u{8981}\u{4E1A}\u{52A1}\u{6D41}\u{7A0B}]
6286
5728
 
6287
- #### 11.4.2 \u{590D}\u{6742}\u{5E03}\u{5C40}\u{5904}\u{7406}
6288
5729
  \`\`\`mermaid
6289
- sequenceDiagram
6290
- participant \u{79FB}\u{52A8}\u{7AEF}APP
6291
- participant \u{5E03}\u{5C40}\u{5F15}\u{64CE}
6292
- participant \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}
6293
- participant \u{7F13}\u{5B58}\u{670D}\u{52A1}
6294
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6295
-
6296
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{8BF7}\u{6C42}\u{590D}\u{6742}\u{5E03}\u{5C40}\u{8BA1}\u{7B97}
6297
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{6267}\u{884C}\u{591A}\u{533A}\u{57DF}\u{5E03}\u{5C40}\u{7B97}\u{6CD5}
6298
- alt \u{5E03}\u{5C40}\u{8BA1}\u{7B97}\u{8D85}\u{65F6}
6299
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}->>\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}: \u{8BF7}\u{6C42}\u{4F18}\u{5316}\u{7B56}\u{7565}
6300
- \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}-->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{8FD4}\u{56DE}\u{7B80}\u{5316}\u{7B56}\u{7565}
6301
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}->>\u{5E03}\u{5C40}\u{5F15}\u{64CE}: \u{5E94}\u{7528}\u{7B80}\u{5316}\u{8BA1}\u{7B97}
6302
- end
6303
- \u{5E03}\u{5C40}\u{5F15}\u{64CE}-->>\u{79FB}\u{52A8}\u{7AEF}APP: \u{8FD4}\u{56DE}\u{4F18}\u{5316}\u{5E03}\u{5C40}
6304
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{5B58}\u{50A8}\u{5E03}\u{5C40}\u{7ED3}\u{679C}
6305
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}: \u{8BB0}\u{5F55}\u{5E03}\u{5C40}\u{6027}\u{80FD}
6306
- \u{79FB}\u{52A8}\u{7AEF}APP->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{5E03}\u{5C40}\u{65E5}\u{5FD7}
5730
+ graph TD
5731
+ A[\u{5F00}\u{59CB}] --> B[\u{5904}\u{7406}]
5732
+ B --> C[\u{7ED3}\u{675F}]
6307
5733
  \`\`\`
6308
5734
 
6309
- ## 12. \u{4E1A}\u{52A1}\u{72B6}\u{6001}\u{63CF}\u{8FF0}
6310
-
6311
- | | | |
6312
- |---|---|---|
6313
- |**\u{72B6}\u{6001}\u{7F16}\u{53F7}**|**\u{72B6}\u{6001}\u{540D}\u{79F0}**|**\u{63CF}\u{8FF0}**|
6314
- |01|\u{5F85}\u{52A0}\u{8F7D}|\u{9875}\u{9762}\u{521D}\u{59CB}\u{5316}\u{72B6}\u{6001}|
6315
- |02|\u{52A0}\u{8F7D}\u{4E2D}|\u{6570}\u{636E}\u{52A0}\u{8F7D}\u{72B6}\u{6001}|
6316
- |03|\u{6B63}\u{5E38}\u{663E}\u{793A}|\u{9875}\u{9762}\u{6B63}\u{5E38}\u{663E}\u{793A}\u{72B6}\u{6001}|
6317
- |04|\u{6570}\u{636E}\u{4E3A}\u{7A7A}|\u{65E0}\u{6570}\u{636E}\u{72B6}\u{6001}|
6318
- |05|\u{52A0}\u{8F7D}\u{5931}\u{8D25}|\u{6570}\u{636E}\u{52A0}\u{8F7D}\u{5931}\u{8D25}\u{72B6}\u{6001}|
6319
- |[\u{6DFB}\u{52A0}\u{66F4}\u{591A}\u{72B6}\u{6001}...]
6320
-
6321
- ## 13. \u{79FB}\u{52A8}\u{7AEF}\u{5904}\u{7406}\u{903B}\u{8F91}\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}
6322
-
6323
- ### 13.1 \u{9875}\u{9762}\u{521D}\u{59CB}\u{5316}\u{903B}\u{8F91}
6324
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{52A0}\u{8F7D}\u{65F6}\u{7684}\u{521D}\u{59CB}\u{5316}\u{5904}\u{7406}\u{903B}\u{8F91}]
6325
-
6326
- ### 13.2 \u{6570}\u{636E}\u{83B7}\u{53D6}\u{903B}\u{8F91}
6327
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{6570}\u{636E}\u{83B7}\u{53D6}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}\u{FF0C}\u{5305}\u{62EC}API\u{8C03}\u{7528}\u{3001}\u{6570}\u{636E}\u{5904}\u{7406}\u{7B49}]
6328
-
6329
- ### 13.3 \u{7528}\u{6237}\u{4EA4}\u{4E92}\u{5904}\u{7406}\u{903B}\u{8F91}
6330
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{7528}\u{6237}\u{5404}\u{79CD}\u{4EA4}\u{4E92}\u{64CD}\u{4F5C}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
6331
-
6332
- ### 13.4 \u{6570}\u{636E}\u{5C55}\u{793A}\u{903B}\u{8F91}
6333
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{6570}\u{636E}\u{5728}\u{9875}\u{9762}\u{4E2D}\u{7684}\u{5C55}\u{793A}\u{5904}\u{7406}\u{903B}\u{8F91}]
6334
-
6335
- ### 13.5 \u{9519}\u{8BEF}\u{5904}\u{7406}\u{903B}\u{8F91}
6336
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9875}\u{9762}\u{4E2D}\u{5404}\u{79CD}\u{9519}\u{8BEF}\u{60C5}\u{51B5}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
6337
-
6338
- ### 13.6 \u{79BB}\u{7EBF}\u{5904}\u{7406}\u{903B}\u{8F91}
6339
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5E94}\u{7528}\u{5728}\u{79BB}\u{7EBF}\u{72B6}\u{6001}\u{4E0B}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
6340
-
6341
- ### 13.7 \u{7F13}\u{5B58}\u{5904}\u{7406}\u{903B}\u{8F91}
6342
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5E94}\u{7528}\u{4E2D}\u{6570}\u{636E}\u{7F13}\u{5B58}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
6343
-
6344
- ## 14. \u{4F2A}\u{4EE3}\u{7801}\u{793A}\u{4F8B}
6345
-
6346
- \`\`\`gherkin
6347
- Scenario Outline: \u{7528}\u{6237}\u{5728}APP\u{4E2D}\u{8FDB}\u{884C}\u{4E0B}\u{62C9}\u{5237}\u{65B0}\u{64CD}\u{4F5C}
6348
- Given \u{7528}\u{6237}\u{5728}<page_name>\u{9875}\u{9762}
6349
- When \u{7528}\u{6237}\u{6267}\u{884C}\u{4E0B}\u{62C9}\u{5237}\u{65B0}\u{624B}\u{52BF}
6350
- Then \u{7CFB}\u{7EDF}\u{5E94}\u{91CD}\u{65B0}\u{52A0}\u{8F7D}\u{6570}\u{636E}\u{5E76}<result>
6351
-
6352
- Examples:
6353
- | page_name | result |
6354
- | \u{8BA2}\u{5355}\u{5217}\u{8868}\u{9875} | \u{663E}\u{793A}\u{6700}\u{65B0}\u{8BA2}\u{5355}\u{6570}\u{636E} |
6355
- | \u{5546}\u{54C1}\u{8BE6}\u{60C5}\u{9875} | \u{663E}\u{793A}\u{5546}\u{54C1}\u{6700}\u{65B0}\u{4FE1}\u{606F} |
6356
-
6357
- Scenario Outline: APP\u{5E73}\u{53F0}\u{7279}\u{6027}\u{9002}\u{914D}\u{6D41}\u{7A0B}
6358
- Given \u{7528}\u{6237}\u{4F7F}\u{7528}<platform>\u{8BBE}\u{5907}
6359
- When \u{5E94}\u{7528}\u{542F}\u{52A8}\u{65F6}
6360
- Then \u{7CFB}\u{7EDF}\u{5E94}:
6361
- 1. \u{68C0}\u{6D4B}\u{8BBE}\u{5907}\u{5E73}\u{53F0}\u{7C7B}\u{578B}
6362
- 2. \u{5E94}\u{7528}\u{76F8}\u{5E94}\u{5E73}\u{53F0}\u{7684}\u{8BBE}\u{8BA1}\u{89C4}\u{8303}
6363
- 3. \u{8C03}\u{6574}UI\u{7EC4}\u{4EF6}\u{6837}\u{5F0F}
6364
- 4. \u{9002}\u{914D}\u{5E73}\u{53F0}\u{7279}\u{6709}\u{7684}\u{4EA4}\u{4E92}\u{65B9}\u{5F0F}
6365
-
6366
- Examples:
6367
- | platform | \u{9002}\u{914D}\u{7B56}\u{7565} |
6368
- | iOS | \u{5E94}\u{7528}iOS\u{8BBE}\u{8BA1}\u{8BED}\u{8A00}\u{FF0C}\u{4F7F}\u{7528}\u{539F}\u{751F}\u{5BFC}\u{822A}\u{680F} |
6369
- | Android | \u{5E94}\u{7528}Material Design\u{FF0C}\u{4F7F}\u{7528}\u{539F}\u{751F}\u{8FD4}\u{56DE}\u{952E} |
6370
-
6371
- Scenario Outline: APP\u{624B}\u{52BF}\u{64CD}\u{4F5C}\u{5904}\u{7406}\u{6D41}\u{7A0B}
6372
- Given \u{7528}\u{6237}\u{5728}<page_name>\u{9875}\u{9762}\u{4E0A}\u{6267}\u{884C}<gesture_type>\u{624B}\u{52BF}
6373
- When \u{624B}\u{52BF}\u{8BC6}\u{522B}\u{5668}\u{68C0}\u{6D4B}\u{5230}\u{624B}\u{52BF}\u{65F6}
6374
- Then \u{7CFB}\u{7EDF}\u{5E94}:
6375
- 1. \u{8BC6}\u{522B}\u{624B}\u{52BF}\u{7C7B}\u{578B}\u{548C}\u{53C2}\u{6570}
6376
- 2. \u{9A8C}\u{8BC1}\u{624B}\u{52BF}\u{64CD}\u{4F5C}\u{7684}\u{5408}\u{6CD5}\u{6027}
6377
- 3. \u{6267}\u{884C}\u{76F8}\u{5E94}\u{7684}\u{4E1A}\u{52A1}\u{903B}\u{8F91}
6378
- 4. \u{63D0}\u{4F9B}\u{64CD}\u{4F5C}\u{53CD}\u{9988}
6379
-
6380
- Examples:
6381
- | page_name | gesture_type | \u{5904}\u{7406}\u{903B}\u{8F91} |
6382
- | \u{5546}\u{54C1}\u{5217}\u{8868}\u{9875} | \u{4E0B}\u{62C9}\u{5237}\u{65B0} | \u{89E6}\u{53D1}\u{6570}\u{636E}\u{91CD}\u{65B0}\u{52A0}\u{8F7D}\u{FF0C}\u{663E}\u{793A}\u{5237}\u{65B0}\u{52A8}\u{753B} |
6383
- | \u{5546}\u{54C1}\u{8BE6}\u{60C5}\u{9875} | \u{5DE6}\u{53F3}\u{6ED1}\u{52A8} | \u{5207}\u{6362}\u{5230}\u{4E0A}\u{4E00}\u{4E2A}/\u{4E0B}\u{4E00}\u{4E2A}\u{5546}\u{54C1}\u{FF0C}\u{652F}\u{6301}\u{8FB9}\u{7F18}\u{56DE}\u{5F39}\u{6548}\u{679C} |
6384
- | \u{8D2D}\u{7269}\u{8F66}\u{9875} | \u{957F}\u{6309}\u{5546}\u{54C1} | \u{663E}\u{793A}\u{5546}\u{54C1}\u{64CD}\u{4F5C}\u{83DC}\u{5355}\u{FF08}\u{5220}\u{9664}\u{3001}\u{6536}\u{85CF}\u{3001}\u{79FB}\u{52A8}\u{7B49}\u{FF09} |
6385
- | \u{8BA2}\u{5355}\u{9875} | \u{53CC}\u{51FB}\u{8BA2}\u{5355}\u{9879} | \u{5FEB}\u{901F}\u{67E5}\u{770B}\u{8BA2}\u{5355}\u{8BE6}\u{60C5}\u{FF0C}\u{652F}\u{6301}3D Touch\u{9884}\u{89C8}\u{FF08}iOS\u{FF09} |
6386
- | \u{8BBE}\u{7F6E}\u{9875} | \u{634F}\u{5408}\u{7F29}\u{653E} | \u{8C03}\u{6574}\u{754C}\u{9762}\u{5143}\u{7D20}\u{5927}\u{5C0F}\u{FF0C}\u{9002}\u{914D}\u{7528}\u{6237}\u{89C6}\u{89C9}\u{504F}\u{597D} |
6387
-
6388
- Scenario Outline: APP\u{5BFC}\u{822A}\u{4E0E}\u{8DEF}\u{7531}\u{5904}\u{7406}\u{6D41}\u{7A0B}
6389
- Given \u{7528}\u{6237}\u{5728}<current_page>\u{9875}\u{9762}\u{6267}\u{884C}<navigation_action>
6390
- When \u{7CFB}\u{7EDF}\u{5904}\u{7406}\u{5BFC}\u{822A}\u{8BF7}\u{6C42}\u{65F6}
6391
- Then \u{7CFB}\u{7EDF}\u{5E94}:
6392
- 1. \u{9A8C}\u{8BC1}\u{76EE}\u{6807}\u{9875}\u{9762}\u{8BBF}\u{95EE}\u{6743}\u{9650}
6393
- 2. \u{4FDD}\u{5B58}\u{5F53}\u{524D}\u{9875}\u{9762}\u{72B6}\u{6001}
6394
- 3. \u{6267}\u{884C}\u{9875}\u{9762}\u{8FC7}\u{6E21}\u{52A8}\u{753B}
6395
- 4. \u{52A0}\u{8F7D}\u{76EE}\u{6807}\u{9875}\u{9762}\u{5E76}\u{6062}\u{590D}\u{72B6}\u{6001}
5735
+ ---
6396
5736
 
6397
- Examples:
6398
- | current_page | navigation_action | \u{5904}\u{7406}\u{6D41}\u{7A0B} |
6399
- | \u{9996}\u{9875} | \u{70B9}\u{51FB}\u{5E95}\u{90E8}Tab | \u{5E73}\u{6ED1}\u{5207}\u{6362}Tab\u{9875}\u{9762}\u{FF0C}\u{4FDD}\u{6301}\u{5404}\u{9875}\u{9762}\u{72B6}\u{6001} |
6400
- | \u{5546}\u{54C1}\u{8BE6}\u{60C5}\u{9875} | \u{70B9}\u{51FB}\u{8FD4}\u{56DE}\u{6309}\u{94AE} | \u{8FD4}\u{56DE}\u{4E0A}\u{7EA7}\u{9875}\u{9762}\u{FF0C}\u{6062}\u{590D}\u{6EDA}\u{52A8}\u{4F4D}\u{7F6E}\u{548C}\u{7B5B}\u{9009}\u{6761}\u{4EF6} |
6401
- | \u{8D2D}\u{7269}\u{8F66}\u{9875} | \u{70B9}\u{51FB}\u{5546}\u{54C1}\u{56FE}\u{7247} | \u{8DF3}\u{8F6C}\u{5230}\u{5546}\u{54C1}\u{8BE6}\u{60C5}\u{9875}\u{FF0C}\u{4F20}\u{9012}\u{5546}\u{54C1}ID\u{548C}\u{6765}\u{6E90}\u{4FE1}\u{606F} |
6402
- | \u{8BA2}\u{5355}\u{786E}\u{8BA4}\u{9875} | \u{9875}\u{9762}\u{5237}\u{65B0} | \u{4FDD}\u{6301}\u{8868}\u{5355}\u{6570}\u{636E}\u{FF0C}\u{91CD}\u{65B0}\u{9A8C}\u{8BC1}\u{5E93}\u{5B58}\u{548C}\u{4EF7}\u{683C}\u{4FE1}\u{606F} |
6403
- | \u{8BBE}\u{7F6E}\u{9875} | \u{6DF1}\u{5EA6}\u{94FE}\u{63A5}\u{8DF3}\u{8F6C} | \u{89E3}\u{6790}\u{94FE}\u{63A5}\u{53C2}\u{6570}\u{FF0C}\u{5BFC}\u{822A}\u{5230}\u{6307}\u{5B9A}\u{8BBE}\u{7F6E}\u{9879}\u{5E76}\u{9AD8}\u{4EAE}\u{663E}\u{793A} |
6404
- \`\`\`
5737
+ **\u{8981}\u{6C42}**: \u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{6587}\u{6863}\u{FF0C}\u{6BCF}\u{7AE0}\u{8282}\u{6709}\u{5B9E}\u{8D28}\u{5185}\u{5BB9}\u{FF0C}\u{91CD}\u{70B9}\u{5173}\u{6CE8}\u{754C}\u{9762}\u{8BBE}\u{8BA1}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{548C}\u{6570}\u{636E}\u{5904}\u{7406}\u{3002}`;
5738
+ const sdkTemplatePrompt = `\u{4F60}\u{662F}\u{540E}\u{7AEF}\u{6280}\u{672F}\u{6587}\u{6863}\u{4E13}\u{5BB6}\u{3002}\u{57FA}\u{4E8E}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}\u{4E09}\u{65B9}SDK\u{96C6}\u{6210}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF08}Markdown\u{683C}\u{5F0F}\u{FF0C}1500\u{5B57}\u{4EE5}\u{4E0A}\u{FF09}\u{3002}
6405
5739
 
6406
- ---
5740
+ **\u{8F93}\u{5165}**: \u{529F}\u{80FD}\u{540D}\u{79F0}={featureName}, \u{4E1A}\u{52A1}\u{9886}\u{57DF}={businessDomain}
6407
5741
 
6408
- **\u{91CD}\u{8981}\u{63D0}\u{9192}**:
6409
- 1. \u{8BF7}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{6587}\u{6863}\u{FF0C}\u{4E0D}\u{8981}\u{7701}\u{7565}\u{4EFB}\u{4F55}\u{7AE0}\u{8282}
6410
- 2. \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{5B9E}\u{8D28}\u{6027}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{53EA}\u{662F}\u{6A21}\u{677F}
6411
- 3. \u{6839}\u{636E}\u{8F93}\u{5165}\u{7684}\u{539F}\u{59CB}\u{5185}\u{5BB9}\u{8FDB}\u{884C}\u{5177}\u{4F53}\u{5206}\u{6790}\u{FF0C}\u{4E0D}\u{8981}\u{4F7F}\u{7528}\u{901A}\u{7528}\u{6A21}\u{677F}
6412
- 4. \u{6587}\u{6863}\u{603B}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
6413
- 5. \u{8868}\u{683C}\u{4E2D}\u{7684}\u{5185}\u{5BB9}\u{8981}\u{586B}\u{5199}\u{5177}\u{4F53}\u{4FE1}\u{606F}\u{FF0C}\u{4E0D}\u{8981}\u{4FDD}\u{7559}\u{5360}\u{4F4D}\u{7B26}
6414
- 6. \u{91CD}\u{70B9}\u{5173}\u{6CE8}\u{79FB}\u{52A8}\u{7AEF}\u{7279}\u{6709}\u{7684}\u{5E03}\u{5C40}\u{3001}\u{6837}\u{5F0F}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{7B49}\u{6280}\u{672F}\u{7EC6}\u{8282}
6415
- 7. \u{8003}\u{8651}iOS\u{548C}Android\u{5E73}\u{53F0}\u{7684}\u{5DEE}\u{5F02}\u{6027}
6416
-
6417
- \u{73B0}\u{5728}\u{8BF7}\u{5F00}\u{59CB}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}APP\u{5F00}\u{53D1}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF1A}`;
6418
- const sdkTemplatePrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{7684}\u{540E}\u{7AEF}\u{6280}\u{672F}\u{6587}\u{6863}\u{7F16}\u{5199}\u{4E13}\u{5BB6}\u{3002}\u{8BF7}\u{57FA}\u{4E8E}\u{7528}\u{6237}\u{63D0}\u{4F9B}\u{7684}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{FF0C}\u{751F}\u{6210}\u{4E00}\u{4EFD}\u{5B8C}\u{6574}\u{3001}\u{8BE6}\u{7EC6}\u{7684}\u{4E09}\u{65B9}SDK\u{96C6}\u{6210}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{3002}
6419
-
6420
- ## \u{4EFB}\u{52A1}\u{8981}\u{6C42}
6421
- - \u{5FC5}\u{987B}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{683C}\u{5F0F}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}
6422
- - \u{4E0D}\u{8981}\u{53EA}\u{7ED9}\u{51FA}\u{603B}\u{7ED3}\u{FF0C}\u{8981}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}\u{6587}\u{6863}\u{5185}\u{5BB9}
6423
- - \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{8BE6}\u{7EC6}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{7701}\u{7565}
6424
- - \u{6587}\u{6863}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
6425
- - \u{91CD}\u{70B9}\u{63CF}\u{8FF0}SDK\u{63A5}\u{5165}\u{6D41}\u{7A0B}\u{3001}\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{3001}\u{6570}\u{636E}\u{7ED3}\u{6784}\u{7B49}\u{540E}\u{7AEF}\u{76F8}\u{5173}\u{5185}\u{5BB9}
6426
-
6427
- ## \u{8F93}\u{5165}\u{4FE1}\u{606F}
6428
- - **\u{529F}\u{80FD}\u{540D}\u{79F0}**: {featureName}
6429
- - **\u{4E1A}\u{52A1}\u{9886}\u{57DF}**: {businessDomain}
6430
- - **\u{751F}\u{6210}\u{65F6}\u{5E8F}\u{56FE}**: {generateSequenceDiagram}
6431
-
6432
- ## \u{539F}\u{59CB}\u{9700}\u{6C42}\u{5185}\u{5BB9}
5742
+ **\u{539F}\u{59CB}\u{9700}\u{6C42}**:
6433
5743
  \`\`\`
6434
5744
  {inputContent}
6435
5745
  \`\`\`
@@ -6437,578 +5747,78 @@ Scenario Outline: APP\u{5BFC}\u{822A}\u{4E0E}\u{8DEF}\u{7531}\u{5904}\u{7406}\u{
6437
5747
  ## \u{6587}\u{6863}\u{7ED3}\u{6784}\u{8981}\u{6C42}
6438
5748
  \u{8BF7}\u{4E25}\u{683C}\u{6309}\u{7167}\u{4EE5}\u{4E0B}\u{7ED3}\u{6784}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF0C}\u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{8BE6}\u{5B9E}\u{7684}\u{5185}\u{5BB9}\u{FF1A}
6439
5749
 
6440
- # {featureName} - \u{4E09}\u{65B9}SDK\u{96C6}\u{6210}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}
6441
-
6442
- > **\u{751F}\u{6210}\u{65F6}\u{95F4}**: {currentTime}
6443
- > **\u{4E1A}\u{52A1}\u{9886}\u{57DF}**: {businessDomain}
6444
- > **\u{96C6}\u{6210}\u{7C7B}\u{578B}**: \u{4E09}\u{65B9}SDK\u{96C6}\u{6210}
6445
-
6446
- ---
6447
-
6448
- ## 1. \u{9700}\u{6C42}\u{80CC}\u{666F}
6449
-
6450
- **\u{80CC}\u{666F}**: [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{96C6}\u{6210}\u{7684}\u{80CC}\u{666F}\u{3001}\u{4E1A}\u{52A1}\u{9700}\u{6C42}\u{548C}\u{76EE}\u{6807}]
6451
-
6452
- **\u{5173}\u{952E}\u{529F}\u{80FD}**: [\u{5217}\u{51FA}SDK\u{96C6}\u{6210}\u{7684}\u{4E3B}\u{8981}\u{529F}\u{80FD}\u{70B9}]
6453
-
6454
- **\u{6D89}\u{53CA}\u{89D2}\u{8272}**: [\u{5217}\u{51FA}\u{6240}\u{6709}\u{76F8}\u{5173}\u{7CFB}\u{7EDF}\u{89D2}\u{8272}]
6455
-
6456
- ## 2. {featureName}\u{529F}\u{80FD}\u{8BBE}\u{8BA1}\u{8BF4}\u{660E}
6457
-
6458
- | | | | | |
6459
- |---|---|---|---|---|
6460
- |**\u{6D41}\u{7A0B}\u{7F16}\u{53F7}**|F001|**\u{6D41}\u{7A0B}\u{540D}\u{79F0}**|{featureName}|
6461
- |**\u{4E1A}\u{52A1}\u{529F}\u{80FD}\u{7F16}\u{53F7}**|BF001|**\u{4E1A}\u{52A1}\u{529F}\u{80FD}\u{540D}\u{79F0}**|{featureName}|
6462
- |**\u{529F}\u{80FD}\u{8BBE}\u{8BA1}\u{7F16}\u{53F7}**|FD001|**\u{7CFB}\u{7EDF}\u{529F}\u{80FD}\u{540D}\u{79F0}**|{featureName}|
6463
- |**\u{524D}\u{7F6E}\u{6761}\u{4EF6}**|[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{96C6}\u{6210}\u{7684}\u{524D}\u{7F6E}\u{6761}\u{4EF6}]|
6464
- |**\u{89D2}\u{8272}\u{FF08}\u{5C97}\u{4F4D}\u{FF09}**|[\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{7CFB}\u{7EDF}\u{89D2}\u{8272}\u{53CA}\u{5176}\u{6743}\u{9650}]|
6465
- |**\u{5165}\u{53E3}\u{6E20}\u{9053}**|[\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{5165}\u{53E3}]|
6466
- |**\u{529F}\u{80FD}\u{63CF}\u{8FF0}**|[\u{8BE6}\u{7EC6}\u{7684}\u{529F}\u{80FD}\u{63CF}\u{8FF0}]|
6467
- |**\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}]|
6468
-
6469
- ## 3. SDK\u{63A5}\u{5165}\u{6D41}\u{7A0B}
6470
-
6471
- ### 3.1 \u{63A5}\u{5165}\u{51C6}\u{5907}\u{5DE5}\u{4F5C}
6472
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{63A5}\u{5165}\u{524D}\u{7684}\u{51C6}\u{5907}\u{5DE5}\u{4F5C}\u{FF0C}\u{5305}\u{62EC}\u{73AF}\u{5883}\u{51C6}\u{5907}\u{3001}\u{4F9D}\u{8D56}\u{5B89}\u{88C5}\u{7B49}]
6473
-
6474
- ### 3.2 SDK\u{521D}\u{59CB}\u{5316}\u{914D}\u{7F6E}
6475
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{7684}\u{521D}\u{59CB}\u{5316}\u{914D}\u{7F6E}\u{8FC7}\u{7A0B}\u{FF0C}\u{5305}\u{62EC}\u{914D}\u{7F6E}\u{53C2}\u{6570}\u{3001}\u{5BC6}\u{94A5}\u{8BBE}\u{7F6E}\u{7B49}]
6476
-
6477
- ### 3.3 SDK\u{6CE8}\u{518C}\u{4E0E}\u{8BA4}\u{8BC1}
6478
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{7684}\u{6CE8}\u{518C}\u{548C}\u{8BA4}\u{8BC1}\u{6D41}\u{7A0B}]
6479
-
6480
- ### 3.4 \u{529F}\u{80FD}\u{96C6}\u{6210}\u{6B65}\u{9AA4}
6481
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{5404}\u{9879}\u{529F}\u{80FD}\u{7684}\u{96C6}\u{6210}\u{6B65}\u{9AA4}]
6482
-
6483
- ### 3.5 \u{5B89}\u{5168}\u{914D}\u{7F6E}
6484
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{7684}\u{5B89}\u{5168}\u{914D}\u{7F6E}\u{8981}\u{6C42}\u{FF0C}\u{5982}\u{8BC1}\u{4E66}\u{3001}\u{52A0}\u{5BC6}\u{7B49}]
6485
-
6486
- ### 3.6 \u{6D4B}\u{8BD5}\u{73AF}\u{5883}\u{914D}\u{7F6E}
6487
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{5728}\u{6D4B}\u{8BD5}\u{73AF}\u{5883}\u{4E2D}\u{7684}\u{914D}\u{7F6E}\u{8981}\u{6C42}]
6488
-
6489
- ## 4. \u{63A5}\u{53E3}\u{8C03}\u{7528}\u{8BF4}\u{660E}
6490
-
6491
- ### 4.1 \u{4E3B}\u{8981}API\u{63A5}\u{53E3}
6492
- [\u{5217}\u{51FA}SDK\u{63D0}\u{4F9B}\u{7684}\u{4E3B}\u{8981}API\u{63A5}\u{53E3}]
6493
-
6494
- ### 4.2 \u{63A5}\u{53E3}\u{8C03}\u{7528}\u{793A}\u{4F8B}
6495
- [\u{63D0}\u{4F9B}\u{8BE6}\u{7EC6}\u{7684}\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{793A}\u{4F8B}\u{4EE3}\u{7801}]
6496
-
6497
- ### 4.3 \u{8BF7}\u{6C42}\u{53C2}\u{6570}\u{8BF4}\u{660E}
6498
- [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{5404}\u{63A5}\u{53E3}\u{7684}\u{8BF7}\u{6C42}\u{53C2}\u{6570}]
6499
-
6500
- ### 4.4 \u{54CD}\u{5E94}\u{6570}\u{636E}\u{7ED3}\u{6784}
6501
- [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{5404}\u{63A5}\u{53E3}\u{7684}\u{54CD}\u{5E94}\u{6570}\u{636E}\u{7ED3}\u{6784}]
6502
-
6503
- ### 4.5 \u{9519}\u{8BEF}\u{7801}\u{8BF4}\u{660E}
6504
- [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}SDK\u{8FD4}\u{56DE}\u{7684}\u{9519}\u{8BEF}\u{7801}\u{53CA}\u{5176}\u{542B}\u{4E49}]
6505
-
6506
- ### 4.6 \u{63A5}\u{53E3}\u{8C03}\u{7528}\u{9650}\u{5236}
6507
- [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}SDK\u{63A5}\u{53E3}\u{7684}\u{8C03}\u{7528}\u{9891}\u{7387}\u{9650}\u{5236}\u{548C}\u{914D}\u{989D}\u{7BA1}\u{7406}]
6508
-
6509
- ### 4.7 \u{5F02}\u{6B65}\u{56DE}\u{8C03}\u{5904}\u{7406}
6510
- [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}SDK\u{5F02}\u{6B65}\u{56DE}\u{8C03}\u{7684}\u{5904}\u{7406}\u{673A}\u{5236}]
6511
-
6512
- ## 5. \u{6570}\u{636E}\u{7ED3}\u{6784}\u{5B9A}\u{4E49}
6513
-
6514
- ### 5.1 \u{8BF7}\u{6C42}\u{6570}\u{636E}\u{7ED3}\u{6784}
6515
- [\u{8BE6}\u{7EC6}\u{5B9A}\u{4E49}\u{8BF7}\u{6C42}\u{6570}\u{636E}\u{7684}\u{7ED3}\u{6784}]
6516
-
6517
- ### 5.2 \u{54CD}\u{5E94}\u{6570}\u{636E}\u{7ED3}\u{6784}
6518
- [\u{8BE6}\u{7EC6}\u{5B9A}\u{4E49}\u{54CD}\u{5E94}\u{6570}\u{636E}\u{7684}\u{7ED3}\u{6784}]
6519
-
6520
- ### 5.3 \u{6570}\u{636E}\u{7C7B}\u{578B}\u{8BF4}\u{660E}
6521
- [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{5404}\u{6570}\u{636E}\u{5B57}\u{6BB5}\u{7684}\u{7C7B}\u{578B}\u{548C}\u{542B}\u{4E49}]
6522
-
6523
- ### 5.4 \u{6570}\u{636E}\u{9A8C}\u{8BC1}\u{89C4}\u{5219}
6524
- [\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}]
6525
-
6526
- ### 5.5 \u{6570}\u{636E}\u{8F6C}\u{6362}\u{89C4}\u{8303}
6527
- [\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}]
6528
-
6529
- ### 5.6 \u{654F}\u{611F}\u{6570}\u{636E}\u{5904}\u{7406}
6530
- [\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}]
6531
-
6532
- ## 6. \u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{8BF4}\u{660E}
6533
-
6534
- ### 6.1 \u{8C03}\u{7528}\u{65F6}\u{5E8F}
6535
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{7684}\u{65F6}\u{5E8F}\u{903B}\u{8F91}]
6536
-
6537
- ### 6.2 \u{56DE}\u{8C03}\u{5904}\u{7406}
6538
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{56DE}\u{8C03}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
6539
-
6540
- ### 6.3 \u{5F02}\u{5E38}\u{5904}\u{7406}
6541
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{5F02}\u{5E38}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
6542
-
6543
- ### 6.4 \u{91CD}\u{8BD5}\u{673A}\u{5236}
6544
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{5931}\u{8D25}\u{65F6}\u{7684}\u{91CD}\u{8BD5}\u{673A}\u{5236}]
6545
-
6546
- ### 6.5 \u{72B6}\u{6001}\u{7BA1}\u{7406}
6547
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{8FC7}\u{7A0B}\u{4E2D}\u{7684}\u{72B6}\u{6001}\u{7BA1}\u{7406}]
6548
-
6549
- ### 6.6 \u{8D85}\u{65F6}\u{5904}\u{7406}
6550
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{7684}\u{8D85}\u{65F6}\u{5904}\u{7406}\u{673A}\u{5236}]
6551
-
6552
- ### 6.7 \u{5E76}\u{53D1}\u{5904}\u{7406}
6553
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{7684}\u{5E76}\u{53D1}\u{8C03}\u{7528}\u{5904}\u{7406}\u{673A}\u{5236}]
6554
-
6555
- ## 7. \u{914D}\u{7F6E}\u{53C2}\u{6570}\u{8BF4}\u{660E}
6556
-
6557
- | | | | |
6558
- |---|---|---|---|
6559
- |**\u{53C2}\u{6570}\u{540D}\u{79F0}**|**\u{53C2}\u{6570}\u{7C7B}\u{578B}**|**\u{662F}\u{5426}\u{5FC5}\u{586B}**|**\u{8BF4}\u{660E}**|
6560
- |[\u{53C2}\u{6570}1]|[\u{5B57}\u{7B26}\u{4E32}/\u{6570}\u{5B57}\u{7B49}]|[\u{662F}/\u{5426}]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
6561
- |[\u{53C2}\u{6570}2]|[\u{5B57}\u{7B26}\u{4E32}/\u{6570}\u{5B57}\u{7B49}]|[\u{662F}/\u{5426}]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
6562
- |[\u{6DFB}\u{52A0}\u{66F4}\u{591A}\u{53C2}\u{6570}...]|||
6563
-
6564
- ### 7.1 \u{73AF}\u{5883}\u{914D}\u{7F6E}\u{53C2}\u{6570}
6565
- [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{4E0D}\u{540C}\u{73AF}\u{5883}\u{4E0B}\u{7684}\u{914D}\u{7F6E}\u{53C2}\u{6570}\u{5DEE}\u{5F02}]
6566
-
6567
- ### 7.2 \u{6027}\u{80FD}\u{914D}\u{7F6E}\u{53C2}\u{6570}
6568
- [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{5F71}\u{54CD}SDK\u{6027}\u{80FD}\u{7684}\u{914D}\u{7F6E}\u{53C2}\u{6570}]
6569
-
6570
- ### 7.3 \u{5B89}\u{5168}\u{914D}\u{7F6E}\u{53C2}\u{6570}
6571
- [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{5B89}\u{5168}\u{76F8}\u{5173}\u{7684}\u{914D}\u{7F6E}\u{53C2}\u{6570}]
6572
-
6573
- ## 8. \u{5B89}\u{5168}\u{6027}\u{8003}\u{8651}
6574
-
6575
- ### 8.1 \u{6570}\u{636E}\u{52A0}\u{5BC6}
6576
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{6570}\u{636E}\u{4F20}\u{8F93}\u{548C}\u{5B58}\u{50A8}\u{7684}\u{52A0}\u{5BC6}\u{8981}\u{6C42}]
6577
-
6578
- ### 8.2 \u{8BBF}\u{95EE}\u{63A7}\u{5236}
6579
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8BBF}\u{95EE}\u{7684}\u{6743}\u{9650}\u{63A7}\u{5236}\u{673A}\u{5236}]
6580
-
6581
- ### 8.3 \u{5BC6}\u{94A5}\u{7BA1}\u{7406}
6582
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{5BC6}\u{94A5}\u{7684}\u{7BA1}\u{7406}\u{65B9}\u{5F0F}]
6583
-
6584
- ### 8.4 \u{65E5}\u{5FD7}\u{8BB0}\u{5F55}
6585
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{7684}\u{65E5}\u{5FD7}\u{8BB0}\u{5F55}\u{8981}\u{6C42}]
6586
-
6587
- ### 8.5 \u{5B89}\u{5168}\u{5BA1}\u{8BA1}
6588
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{7684}\u{5B89}\u{5168}\u{5BA1}\u{8BA1}\u{8981}\u{6C42}]
6589
-
6590
- ### 8.6 \u{9632}\u{5FA1}\u{673A}\u{5236}
6591
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}\u{9488}\u{5BF9}SDK\u{8C03}\u{7528}\u{7684}\u{5B89}\u{5168}\u{9632}\u{5FA1}\u{673A}\u{5236}]
6592
-
6593
- ## 9. \u{6027}\u{80FD}\u{4F18}\u{5316}\u{8981}\u{6C42}
6594
-
6595
- ### 9.1 \u{8C03}\u{7528}\u{6027}\u{80FD}
6596
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{7684}\u{6027}\u{80FD}\u{8981}\u{6C42}]
6597
-
6598
- ### 9.2 \u{8D44}\u{6E90}\u{5360}\u{7528}
6599
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{5BF9}\u{7CFB}\u{7EDF}\u{8D44}\u{6E90}\u{7684}\u{5360}\u{7528}\u{8981}\u{6C42}]
6600
-
6601
- ### 9.3 \u{7F13}\u{5B58}\u{7B56}\u{7565}
6602
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{7684}\u{7F13}\u{5B58}\u{4F7F}\u{7528}\u{7B56}\u{7565}]
6603
-
6604
- ### 9.4 \u{8FDE}\u{63A5}\u{6C60}\u{7BA1}\u{7406}
6605
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8FDE}\u{63A5}\u{6C60}\u{7684}\u{7BA1}\u{7406}\u{7B56}\u{7565}]
6606
-
6607
- ### 9.5 \u{8D1F}\u{8F7D}\u{5747}\u{8861}
6608
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{7684}\u{8D1F}\u{8F7D}\u{5747}\u{8861}\u{7B56}\u{7565}]
6609
-
6610
- ### 9.6 \u{76D1}\u{63A7}\u{6307}\u{6807}
6611
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{7684}\u{76D1}\u{63A7}\u{6307}\u{6807}\u{8981}\u{6C42}]
6612
-
6613
- ## 10. \u{4E1A}\u{52A1}\u{5BF9}\u{8C61}\u{65F6}\u{5E8F}\u{56FE}
6614
-
6615
- \`\`\`mermaid
6616
- sequenceDiagram
6617
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6618
- participant SDK
6619
- participant \u{8BA4}\u{8BC1}\u{670D}\u{52A1}
6620
- participant \u{6743}\u{9650}\u{670D}\u{52A1}
6621
- participant \u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}
6622
- participant \u{6570}\u{636E}\u{5E93}
6623
- participant \u{7F13}\u{5B58}\u{670D}\u{52A1}
6624
- participant \u{6D88}\u{606F}\u{961F}\u{5217}
6625
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6626
- participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
6627
-
6628
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{521D}\u{59CB}\u{5316}\u{8BF7}\u{6C42}
6629
- SDK->>\u{8BA4}\u{8BC1}\u{670D}\u{52A1}: \u{9A8C}\u{8BC1}\u{5E94}\u{7528}\u{51ED}\u{8BC1}
6630
- \u{8BA4}\u{8BC1}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{8BA4}\u{8BC1}\u{7ED3}\u{679C}
6631
- SDK->>\u{6743}\u{9650}\u{670D}\u{52A1}: \u{68C0}\u{67E5}\u{5E94}\u{7528}\u{6743}\u{9650}
6632
- \u{6743}\u{9650}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{6743}\u{9650}\u{4FE1}\u{606F}
6633
- SDK->>\u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}: \u{53D1}\u{9001}\u{521D}\u{59CB}\u{5316}\u{8BF7}\u{6C42}
6634
- \u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{521D}\u{59CB}\u{5316}\u{54CD}\u{5E94}
6635
- SDK->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{5B58}\u{50A8}\u{521D}\u{59CB}\u{5316}\u{72B6}\u{6001}
6636
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{521D}\u{59CB}\u{5316}\u{6210}\u{529F}
6637
-
6638
- %% SDK\u{4E1A}\u{52A1}\u{8C03}\u{7528}\u{6D41}\u{7A0B}
6639
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{53D1}\u{9001}\u{4E1A}\u{52A1}\u{8BF7}\u{6C42}
6640
- SDK->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{67E5}\u{8BE2}\u{7F13}\u{5B58}\u{6570}\u{636E}
6641
- alt \u{7F13}\u{5B58}\u{4E2D}\u{6709}\u{6570}\u{636E}
6642
- \u{7F13}\u{5B58}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{7F13}\u{5B58}\u{6570}\u{636E}
6643
- SDK->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{7F13}\u{5B58}\u{547D}\u{4E2D}
6644
- else \u{7F13}\u{5B58}\u{4E2D}\u{65E0}\u{6570}\u{636E}
6645
- SDK->>\u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}: \u{53D1}\u{9001}API\u{8C03}\u{7528}
6646
- \u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}API\u{54CD}\u{5E94}
6647
- SDK->>\u{7F13}\u{5B58}\u{670D}\u{52A1}: \u{5B58}\u{50A8}\u{5230}\u{7F13}\u{5B58}
6648
- SDK->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}API\u{8C03}\u{7528}
6649
- end
6650
- SDK->>\u{6D88}\u{606F}\u{961F}\u{5217}: \u{53D1}\u{9001}\u{5F02}\u{6B65}\u{6D88}\u{606F}
6651
- SDK->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{8C03}\u{7528}\u{65E5}\u{5FD7}
6652
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{4E1A}\u{52A1}\u{54CD}\u{5E94}
6653
- \`\`\`
6654
-
6655
- ### 10.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}
6656
-
6657
- #### 10.2.1 \u{5B89}\u{5168}\u{89C4}\u{8303}\u{6D41}\u{7A0B}
6658
- \`\`\`mermaid
6659
- sequenceDiagram
6660
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6661
- participant SDK
6662
- participant \u{5B89}\u{5168}\u{670D}\u{52A1}
6663
- participant \u{52A0}\u{5BC6}\u{670D}\u{52A1}
6664
- participant \u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}
6665
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6666
-
6667
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{53D1}\u{9001}\u{5305}\u{542B}\u{654F}\u{611F}\u{6570}\u{636E}\u{7684}\u{8BF7}\u{6C42}
6668
- SDK->>\u{5B89}\u{5168}\u{670D}\u{52A1}: \u{68C0}\u{67E5}\u{6570}\u{636E}\u{5B89}\u{5168}\u{6027}
6669
- \u{5B89}\u{5168}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{5B89}\u{5168}\u{68C0}\u{67E5}\u{7ED3}\u{679C}
6670
- alt \u{6570}\u{636E}\u{5B89}\u{5168}\u{5408}\u{89C4}
6671
- SDK->>\u{52A0}\u{5BC6}\u{670D}\u{52A1}: \u{52A0}\u{5BC6}\u{654F}\u{611F}\u{6570}\u{636E}
6672
- \u{52A0}\u{5BC6}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{52A0}\u{5BC6}\u{6570}\u{636E}
6673
- SDK->>\u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}: \u{53D1}\u{9001}\u{52A0}\u{5BC6}\u{8BF7}\u{6C42}
6674
- \u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
6675
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{5904}\u{7406}\u{7ED3}\u{679C}
6676
- else \u{6570}\u{636E}\u{5B58}\u{5728}\u{5B89}\u{5168}\u{98CE}\u{9669}
6677
- SDK->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{5B89}\u{5168}\u{98CE}\u{9669}
6678
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{5B89}\u{5168}\u{9519}\u{8BEF}
6679
- end
6680
- \`\`\`
6681
-
6682
- #### 10.2.2 \u{56DE}\u{8C03}\u{5904}\u{7406}\u{6D41}\u{7A0B}
6683
- \`\`\`mermaid
6684
- sequenceDiagram
6685
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6686
- participant SDK
6687
- participant \u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}
6688
- participant \u{56DE}\u{8C03}\u{5904}\u{7406}\u{5668}
6689
- participant \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}
6690
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6691
-
6692
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{53D1}\u{8D77}\u{5F02}\u{6B65}\u{64CD}\u{4F5C}\u{8BF7}\u{6C42}
6693
- SDK->>\u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}: \u{53D1}\u{9001}\u{5F02}\u{6B65}\u{8BF7}\u{6C42}
6694
- \u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{63A5}\u{6536}\u{786E}\u{8BA4}
6695
- \u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}->>\u{56DE}\u{8C03}\u{5904}\u{7406}\u{5668}: \u{53D1}\u{9001}\u{5904}\u{7406}\u{7ED3}\u{679C}
6696
- \u{56DE}\u{8C03}\u{5904}\u{7406}\u{5668}->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{64CD}\u{4F5C}\u{72B6}\u{6001}
6697
- \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}-->>\u{56DE}\u{8C03}\u{5904}\u{7406}\u{5668}: \u{8FD4}\u{56DE}\u{72B6}\u{6001}\u{66F4}\u{65B0}\u{7ED3}\u{679C}
6698
- \u{56DE}\u{8C03}\u{5904}\u{7406}\u{5668}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{56DE}\u{8C03}\u{65E5}\u{5FD7}
6699
- \u{56DE}\u{8C03}\u{5904}\u{7406}\u{5668}->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{53D1}\u{9001}\u{56DE}\u{8C03}\u{901A}\u{77E5}
6700
- \`\`\`
6701
-
6702
- #### 10.2.3 SDK\u{5B89}\u{5168}\u{89C4}\u{8303}\u{6D41}\u{7A0B}
6703
- \`\`\`mermaid
6704
- sequenceDiagram
6705
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6706
- participant SDK
6707
- participant \u{5B89}\u{5168}\u{670D}\u{52A1}
6708
- participant \u{52A0}\u{5BC6}\u{6A21}\u{5757}
6709
- participant \u{8BC1}\u{4E66}\u{7BA1}\u{7406}\u{5668}
6710
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6711
-
6712
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{53D1}\u{9001}\u{654F}\u{611F}\u{6570}\u{636E}\u{8BF7}\u{6C42}
6713
- SDK->>\u{5B89}\u{5168}\u{670D}\u{52A1}: \u{9A8C}\u{8BC1}\u{8BF7}\u{6C42}\u{5B89}\u{5168}\u{6027}
6714
- \u{5B89}\u{5168}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{5B89}\u{5168}\u{68C0}\u{67E5}\u{7ED3}\u{679C}
6715
- alt \u{8BF7}\u{6C42}\u{5B89}\u{5168}\u{5408}\u{89C4}
6716
- SDK->>\u{52A0}\u{5BC6}\u{6A21}\u{5757}: \u{52A0}\u{5BC6}\u{654F}\u{611F}\u{6570}\u{636E}
6717
- \u{52A0}\u{5BC6}\u{6A21}\u{5757}-->>SDK: \u{8FD4}\u{56DE}\u{52A0}\u{5BC6}\u{6570}\u{636E}
6718
- SDK->>\u{8BC1}\u{4E66}\u{7BA1}\u{7406}\u{5668}: \u{9A8C}\u{8BC1}\u{8BC1}\u{4E66}\u{6709}\u{6548}\u{6027}
6719
- \u{8BC1}\u{4E66}\u{7BA1}\u{7406}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{8BC1}\u{4E66}\u{9A8C}\u{8BC1}\u{7ED3}\u{679C}
6720
- SDK->>\u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}: \u{53D1}\u{9001}\u{5B89}\u{5168}\u{8BF7}\u{6C42}
6721
- \u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}-->>SDK: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
6722
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{5904}\u{7406}\u{7ED3}\u{679C}
6723
- else \u{5B58}\u{5728}\u{5B89}\u{5168}\u{98CE}\u{9669}
6724
- SDK->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{5B89}\u{5168}\u{8FDD}\u{89C4}\u{4E8B}\u{4EF6}
6725
- SDK->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{5B89}\u{5168}\u{9519}\u{8BEF}\u{63D0}\u{793A}
6726
- end
6727
- \`\`\`
6728
-
6729
- ### 10.3 \u{5F02}\u{5E38}\u{6D41}\u{7A0B}\u{FF08}\u{9519}\u{8BEF}\u{5904}\u{7406}\u{FF09}
6730
-
6731
- #### 10.3.1 SDK\u{517C}\u{5BB9}\u{6027}\u{9519}\u{8BEF}
6732
- \`\`\`mermaid
6733
- sequenceDiagram
6734
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6735
- participant SDK
6736
- participant \u{517C}\u{5BB9}\u{6027}\u{68C0}\u{67E5}\u{5668}
6737
- participant \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}
6738
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6739
-
6740
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{521D}\u{59CB}\u{5316}\u{8BF7}\u{6C42}
6741
- SDK->>\u{517C}\u{5BB9}\u{6027}\u{68C0}\u{67E5}\u{5668}: \u{68C0}\u{67E5}SDK\u{7248}\u{672C}\u{517C}\u{5BB9}\u{6027}
6742
- \u{517C}\u{5BB9}\u{6027}\u{68C0}\u{67E5}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{517C}\u{5BB9}\u{6027}\u{9519}\u{8BEF}
6743
- SDK->>\u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}: \u{5904}\u{7406}\u{517C}\u{5BB9}\u{6027}\u{9519}\u{8BEF}
6744
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{517C}\u{5BB9}\u{6027}\u{9519}\u{8BEF}
6745
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{9519}\u{8BEF}\u{5904}\u{7406}\u{7ED3}\u{679C}
6746
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{517C}\u{5BB9}\u{6027}\u{9519}\u{8BEF}\u{63D0}\u{793A}
6747
- \`\`\`
6748
-
6749
- #### 10.3.2 \u{914D}\u{7F6E}\u{51B2}\u{7A81}\u{9519}\u{8BEF}
6750
- \`\`\`mermaid
6751
- sequenceDiagram
6752
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6753
- participant SDK
6754
- participant \u{914D}\u{7F6E}\u{7BA1}\u{7406}\u{5668}
6755
- participant \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}
6756
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6757
-
6758
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{53D1}\u{9001}\u{914D}\u{7F6E}\u{53C2}\u{6570}
6759
- SDK->>\u{914D}\u{7F6E}\u{7BA1}\u{7406}\u{5668}: \u{9A8C}\u{8BC1}\u{914D}\u{7F6E}\u{53C2}\u{6570}
6760
- \u{914D}\u{7F6E}\u{7BA1}\u{7406}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{914D}\u{7F6E}\u{51B2}\u{7A81}
6761
- SDK->>\u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}: \u{5904}\u{7406}\u{914D}\u{7F6E}\u{9519}\u{8BEF}
6762
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{914D}\u{7F6E}\u{9519}\u{8BEF}
6763
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}->>SDK: \u{5E94}\u{7528}\u{9ED8}\u{8BA4}\u{914D}\u{7F6E}
6764
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{914D}\u{7F6E}\u{8B66}\u{544A}\u{53CA}\u{9ED8}\u{8BA4}\u{914D}\u{7F6E}\u{7ED3}\u{679C}
6765
- \`\`\`
6766
-
6767
- #### 10.3.3 SDK\u{521D}\u{59CB}\u{5316}\u{51B2}\u{7A81}
6768
- \`\`\`mermaid
6769
- sequenceDiagram
6770
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6771
- participant SDK
6772
- participant \u{521D}\u{59CB}\u{5316}\u{68C0}\u{67E5}\u{5668}
6773
- participant \u{4F9D}\u{8D56}\u{7BA1}\u{7406}\u{5668}
6774
- participant \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}
6775
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6776
-
6777
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{53D1}\u{8D77}\u{521D}\u{59CB}\u{5316}\u{8BF7}\u{6C42}
6778
- SDK->>\u{521D}\u{59CB}\u{5316}\u{68C0}\u{67E5}\u{5668}: \u{68C0}\u{67E5}\u{521D}\u{59CB}\u{5316}\u{72B6}\u{6001}
6779
- \u{521D}\u{59CB}\u{5316}\u{68C0}\u{67E5}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{521D}\u{59CB}\u{5316}\u{72B6}\u{6001}
6780
- alt \u{672A}\u{521D}\u{59CB}\u{5316}
6781
- SDK->>\u{4F9D}\u{8D56}\u{7BA1}\u{7406}\u{5668}: \u{68C0}\u{67E5}\u{4F9D}\u{8D56}\u{9879}
6782
- \u{4F9D}\u{8D56}\u{7BA1}\u{7406}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{4F9D}\u{8D56}\u{68C0}\u{67E5}\u{7ED3}\u{679C}
6783
- SDK->>SDK: \u{6267}\u{884C}\u{521D}\u{59CB}\u{5316}\u{903B}\u{8F91}
6784
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{521D}\u{59CB}\u{5316}\u{6210}\u{529F}
6785
- else \u{5DF2}\u{521D}\u{59CB}\u{5316}
6786
- SDK->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{91CD}\u{590D}\u{521D}\u{59CB}\u{5316}
6787
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{5DF2}\u{521D}\u{59CB}\u{5316}\u{72B6}\u{6001}
6788
- else \u{4F9D}\u{8D56}\u{7F3A}\u{5931}
6789
- SDK->>\u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}: \u{5904}\u{7406}\u{4F9D}\u{8D56}\u{9519}\u{8BEF}
6790
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{4F9D}\u{8D56}\u{7F3A}\u{5931}
6791
- \u{9519}\u{8BEF}\u{5904}\u{7406}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{9519}\u{8BEF}\u{5904}\u{7406}\u{7ED3}\u{679C}
6792
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{4F9D}\u{8D56}\u{7F3A}\u{5931}\u{9519}\u{8BEF}
6793
- end
6794
- \`\`\`
6795
-
6796
- ### 10.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}
6797
-
6798
- #### 10.4.1 \u{79BB}\u{7EBF}SDK\u{529F}\u{80FD}\u{5904}\u{7406}
6799
- \`\`\`mermaid
6800
- sequenceDiagram
6801
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6802
- participant SDK
6803
- participant \u{7F51}\u{7EDC}\u{72B6}\u{6001}\u{68C0}\u{6D4B}\u{5668}
6804
- participant \u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}
6805
- participant \u{672C}\u{5730}\u{6570}\u{636E}\u{5E93}
6806
- participant \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}
6807
-
6808
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{53D1}\u{9001}\u{6570}\u{636E}\u{64CD}\u{4F5C}\u{8BF7}\u{6C42}
6809
- SDK->>\u{7F51}\u{7EDC}\u{72B6}\u{6001}\u{68C0}\u{6D4B}\u{5668}: \u{68C0}\u{67E5}\u{7F51}\u{7EDC}\u{72B6}\u{6001}
6810
- \u{7F51}\u{7EDC}\u{72B6}\u{6001}\u{68C0}\u{6D4B}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{65E0}\u{7F51}\u{7EDC}\u{8FDE}\u{63A5}
6811
- SDK->>\u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}: \u{5904}\u{7406}\u{79BB}\u{7EBF}\u{64CD}\u{4F5C}
6812
- \u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}->>\u{672C}\u{5730}\u{6570}\u{636E}\u{5E93}: \u{5B58}\u{50A8}\u{79BB}\u{7EBF}\u{6570}\u{636E}
6813
- \u{672C}\u{5730}\u{6570}\u{636E}\u{5E93}-->>\u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}: \u{8FD4}\u{56DE}\u{5B58}\u{50A8}\u{7ED3}\u{679C}
6814
- \u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}->>\u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}: \u{66F4}\u{65B0}\u{79BB}\u{7EBF}\u{72B6}\u{6001}
6815
- \u{72B6}\u{6001}\u{7BA1}\u{7406}\u{5668}-->>\u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}: \u{8FD4}\u{56DE}\u{72B6}\u{6001}\u{66F4}\u{65B0}\u{7ED3}\u{679C}
6816
- \u{79BB}\u{7EBF}\u{6570}\u{636E}\u{7BA1}\u{7406}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{79BB}\u{7EBF}\u{5904}\u{7406}\u{7ED3}\u{679C}
6817
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{79BB}\u{7EBF}\u{64CD}\u{4F5C}\u{6210}\u{529F}\u{63D0}\u{793A}
6818
- \`\`\`
6819
-
6820
- #### 10.4.2 \u{6027}\u{80FD}\u{4F18}\u{5316}\u{8981}\u{6C42}
6821
- \`\`\`mermaid
6822
- sequenceDiagram
6823
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6824
- participant SDK
6825
- participant \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}
6826
- participant \u{8FDE}\u{63A5}\u{6C60}\u{7BA1}\u{7406}\u{5668}
6827
- participant \u{7F13}\u{5B58}\u{7BA1}\u{7406}\u{5668}
6828
- participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
6829
-
6830
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{53D1}\u{8D77}\u{9AD8}\u{5E76}\u{53D1}\u{8BF7}\u{6C42}
6831
- SDK->>\u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}: \u{5206}\u{6790}\u{6027}\u{80FD}\u{9700}\u{6C42}
6832
- \u{6027}\u{80FD}\u{4F18}\u{5316}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{4F18}\u{5316}\u{7B56}\u{7565}
6833
- SDK->>\u{8FDE}\u{63A5}\u{6C60}\u{7BA1}\u{7406}\u{5668}: \u{5E94}\u{7528}\u{8FDE}\u{63A5}\u{6C60}\u{7B56}\u{7565}
6834
- \u{8FDE}\u{63A5}\u{6C60}\u{7BA1}\u{7406}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{8FDE}\u{63A5}\u{6C60}\u{914D}\u{7F6E}
6835
- SDK->>\u{7F13}\u{5B58}\u{7BA1}\u{7406}\u{5668}: \u{914D}\u{7F6E}\u{7F13}\u{5B58}\u{7B56}\u{7565}
6836
- \u{7F13}\u{5B58}\u{7BA1}\u{7406}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{7F13}\u{5B58}\u{914D}\u{7F6E}
6837
- SDK->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{6027}\u{80FD}\u{6307}\u{6807}
6838
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{4F18}\u{5316}\u{540E}\u{54CD}\u{5E94}
6839
- \`\`\`
6840
-
6841
- #### 10.4.3 SDK\u{8D44}\u{6E90}\u{6CC4}\u{6F0F}\u{68C0}\u{6D4B}
6842
- \`\`\`mermaid
6843
- sequenceDiagram
6844
- participant \u{5E94}\u{7528}\u{7CFB}\u{7EDF}
6845
- participant SDK
6846
- participant \u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}
6847
- participant \u{5185}\u{5B58}\u{76D1}\u{63A7}\u{5668}
6848
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
6849
- participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
6850
-
6851
- \u{5E94}\u{7528}\u{7CFB}\u{7EDF}->>SDK: \u{957F}\u{65F6}\u{95F4}\u{4F7F}\u{7528}SDK
6852
- SDK->>\u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}: \u{5B9A}\u{671F}\u{68C0}\u{67E5}\u{8D44}\u{6E90}\u{72B6}\u{6001}
6853
- \u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}->>\u{5185}\u{5B58}\u{76D1}\u{63A7}\u{5668}: \u{68C0}\u{67E5}\u{5185}\u{5B58}\u{4F7F}\u{7528}\u{60C5}\u{51B5}
6854
- \u{5185}\u{5B58}\u{76D1}\u{63A7}\u{5668}-->>\u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}: \u{8FD4}\u{56DE}\u{5185}\u{5B58}\u{72B6}\u{6001}
6855
- alt \u{5185}\u{5B58}\u{4F7F}\u{7528}\u{6B63}\u{5E38}
6856
- \u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}->>SDK: \u{7EE7}\u{7EED}\u{6B63}\u{5E38}\u{8FD0}\u{884C}
6857
- else \u{53D1}\u{73B0}\u{5185}\u{5B58}\u{6CC4}\u{6F0F}
6858
- \u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{8D44}\u{6E90}\u{6CC4}\u{6F0F}\u{4E8B}\u{4EF6}
6859
- \u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}->>\u{76D1}\u{63A7}\u{670D}\u{52A1}: \u{53D1}\u{9001}\u{544A}\u{8B66}\u{901A}\u{77E5}
6860
- \u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}->>\u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}: \u{6267}\u{884C}\u{8D44}\u{6E90}\u{56DE}\u{6536}
6861
- \u{8D44}\u{6E90}\u{7BA1}\u{7406}\u{5668}-->>SDK: \u{8FD4}\u{56DE}\u{8D44}\u{6E90}\u{56DE}\u{6536}\u{7ED3}\u{679C}
6862
- end
6863
- SDK-->>\u{5E94}\u{7528}\u{7CFB}\u{7EDF}: \u{8FD4}\u{56DE}\u{8FD0}\u{884C}\u{72B6}\u{6001}
6864
- \`\`\`
6865
-
6866
- ## 11. \u{4E1A}\u{52A1}\u{72B6}\u{6001}\u{63CF}\u{8FF0}
5750
+ # {featureName} - \u{4E09}\u{65B9}SDK\u{96C6}\u{6210}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}
6867
5751
 
6868
- | | | |
6869
- |---|---|---|
6870
- |**\u{72B6}\u{6001}\u{7F16}\u{53F7}**|**\u{72B6}\u{6001}\u{540D}\u{79F0}**|**\u{63CF}\u{8FF0}**|
6871
- |01|\u{672A}\u{521D}\u{59CB}\u{5316}|SDK\u{672A}\u{521D}\u{59CB}\u{5316}\u{72B6}\u{6001}|
6872
- |02|\u{521D}\u{59CB}\u{5316}\u{4E2D}|SDK\u{521D}\u{59CB}\u{5316}\u{8FDB}\u{884C}\u{4E2D}|
6873
- |03|\u{5DF2}\u{521D}\u{59CB}\u{5316}|SDK\u{521D}\u{59CB}\u{5316}\u{5B8C}\u{6210}|
6874
- |04|\u{8C03}\u{7528}\u{4E2D}|SDK\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{4E2D}|
6875
- |05|\u{8C03}\u{7528}\u{6210}\u{529F}|SDK\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{6210}\u{529F}|
6876
- |06|\u{8C03}\u{7528}\u{5931}\u{8D25}|SDK\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{5931}\u{8D25}|
6877
- |[\u{6DFB}\u{52A0}\u{66F4}\u{591A}\u{72B6}\u{6001}...]
5752
+ > **\u{751F}\u{6210}\u{65F6}\u{95F4}**: {currentTime}
5753
+ > **\u{4E1A}\u{52A1}\u{9886}\u{57DF}**: {businessDomain}
5754
+ > **\u{96C6}\u{6210}\u{7C7B}\u{578B}**: \u{4E09}\u{65B9}SDK\u{96C6}\u{6210}
6878
5755
 
6879
- ## 12. \u{5904}\u{7406}\u{903B}\u{8F91}\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}
5756
+ ---
6880
5757
 
6881
- ### 12.1 SDK\u{521D}\u{59CB}\u{5316}\u{903B}\u{8F91}
6882
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{521D}\u{59CB}\u{5316}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
5758
+ ## 1. \u{9700}\u{6C42}\u{6982}\u{8FF0}
6883
5759
 
6884
- ### 12.2 \u{63A5}\u{53E3}\u{8C03}\u{7528}\u{903B}\u{8F91}
6885
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
5760
+ **\u{4E1A}\u{52A1}\u{80CC}\u{666F}**: [\u{63CF}\u{8FF0}SDK\u{96C6}\u{6210}\u{7684}\u{80CC}\u{666F}\u{3001}\u{4E1A}\u{52A1}\u{9700}\u{6C42}\u{548C}\u{76EE}\u{6807}]
6886
5761
 
6887
- ### 12.3 \u{56DE}\u{8C03}\u{5904}\u{7406}\u{903B}\u{8F91}
6888
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{56DE}\u{8C03}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
5762
+ **\u{6838}\u{5FC3}\u{529F}\u{80FD}**: [\u{5217}\u{51FA}SDK\u{96C6}\u{6210}\u{7684}\u{4E3B}\u{8981}\u{529F}\u{80FD}\u{70B9}]
6889
5763
 
6890
- ### 12.4 \u{9519}\u{8BEF}\u{5904}\u{7406}\u{903B}\u{8F91}
6891
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{9519}\u{8BEF}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
5764
+ ## 2. SDK\u{96C6}\u{6210}\u{8BBE}\u{8BA1}
6892
5765
 
6893
- ### 12.5 \u{8D44}\u{6E90}\u{91CA}\u{653E}\u{903B}\u{8F91}
6894
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8D44}\u{6E90}\u{91CA}\u{653E}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
5766
+ ### 2.1 \u{63A5}\u{5165}\u{6D41}\u{7A0B}
5767
+ [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{63A5}\u{5165}\u{7684}\u{51C6}\u{5907}\u{5DE5}\u{4F5C}\u{548C}\u{914D}\u{7F6E}\u{6D41}\u{7A0B}]
6895
5768
 
6896
- ### 12.6 \u{91CD}\u{8BD5}\u{903B}\u{8F91}
6897
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{5931}\u{8D25}\u{65F6}\u{7684}\u{91CD}\u{8BD5}\u{5904}\u{7406}\u{903B}\u{8F91}]
5769
+ ### 2.2 \u{521D}\u{59CB}\u{5316}\u{914D}\u{7F6E}
5770
+ [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{7684}\u{521D}\u{59CB}\u{5316}\u{914D}\u{7F6E}\u{8FC7}\u{7A0B}]
6898
5771
 
6899
- ### 12.7 \u{7F13}\u{5B58}\u{903B}\u{8F91}
6900
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{4E2D}\u{7684}\u{7F13}\u{5B58}\u{5904}\u{7406}\u{903B}\u{8F91}]
5772
+ ## 3. \u{63A5}\u{53E3}\u{8C03}\u{7528}\u{8BF4}\u{660E}
6901
5773
 
6902
- ## 13. \u{6D4B}\u{8BD5}\u{9A8C}\u{8BC1}\u{8981}\u{6C42}
5774
+ ### 3.1 \u{4E3B}\u{8981}API\u{63A5}\u{53E3}
5775
+ [\u{5217}\u{51FA}SDK\u{63D0}\u{4F9B}\u{7684}\u{4E3B}\u{8981}API\u{63A5}\u{53E3}]
6903
5776
 
6904
- ### 13.1 \u{529F}\u{80FD}\u{6D4B}\u{8BD5}
6905
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{529F}\u{80FD}\u{7684}\u{6D4B}\u{8BD5}\u{8981}\u{6C42}]
5777
+ ### 3.2 \u{63A5}\u{53E3}\u{8C03}\u{7528}\u{793A}\u{4F8B}
5778
+ [\u{63D0}\u{4F9B}\u{8BE6}\u{7EC6}\u{7684}\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{793A}\u{4F8B}\u{4EE3}\u{7801}]
6906
5779
 
6907
- ### 13.2 \u{6027}\u{80FD}\u{6D4B}\u{8BD5}
6908
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{6027}\u{80FD}\u{7684}\u{6D4B}\u{8BD5}\u{8981}\u{6C42}]
5780
+ ### 3.3 \u{53C2}\u{6570}\u{8BF4}\u{660E}
5781
+ [\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{5404}\u{63A5}\u{53E3}\u{7684}\u{8BF7}\u{6C42}\u{53C2}\u{6570}\u{548C}\u{54CD}\u{5E94}\u{6570}\u{636E}\u{7ED3}\u{6784}]
6909
5782
 
6910
- ### 13.3 \u{5B89}\u{5168}\u{6D4B}\u{8BD5}
6911
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{5B89}\u{5168}\u{6027}\u{7684}\u{6D4B}\u{8BD5}\u{8981}\u{6C42}]
5783
+ |\u{53C2}\u{6570}\u{540D}\u{79F0}|\u{7C7B}\u{578B}|\u{662F}\u{5426}\u{5FC5}\u{586B}|\u{8BF4}\u{660E}|
5784
+ |------|------|------|------|
5785
+ |[\u{53C2}\u{6570}1]|[string/number\u{7B49}]|[\u{662F}/\u{5426}]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
5786
+ |[\u{53C2}\u{6570}2]|[string/number\u{7B49}]|[\u{662F}/\u{5426}]|[\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}]|
6912
5787
 
6913
- ### 13.4 \u{517C}\u{5BB9}\u{6027}\u{6D4B}\u{8BD5}
6914
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{517C}\u{5BB9}\u{6027}\u{7684}\u{6D4B}\u{8BD5}\u{8981}\u{6C42}]
5788
+ ## 4. \u{4EA4}\u{4E92}\u{903B}\u{8F91}
6915
5789
 
6916
- ### 13.5 \u{5F02}\u{5E38}\u{6D4B}\u{8BD5}
6917
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{5F02}\u{5E38}\u{60C5}\u{51B5}\u{7684}\u{6D4B}\u{8BD5}\u{8981}\u{6C42}]
5790
+ ### 4.1 \u{8C03}\u{7528}\u{65F6}\u{5E8F}
5791
+ [\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{7684}\u{65F6}\u{5E8F}\u{903B}\u{8F91}]
6918
5792
 
6919
- ### 13.6 \u{56DE}\u{5F52}\u{6D4B}\u{8BD5}
6920
- [\u{8BE6}\u{7EC6}\u{63CF}\u{8FF0}SDK\u{56DE}\u{5F52}\u{6D4B}\u{8BD5}\u{7684}\u{8981}\u{6C42}]
5793
+ ### 4.2 \u{9519}\u{8BEF}\u{5904}\u{7406}
5794
+ [\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{5F02}\u{5E38}\u{7684}\u{5904}\u{7406}\u{903B}\u{8F91}]
6921
5795
 
6922
- ## 14. \u{4F2A}\u{4EE3}\u{7801}\u{793A}\u{4F8B}
5796
+ ## 5. \u{5B89}\u{5168}\u{4E0E}\u{6027}\u{80FD}
6923
5797
 
6924
- \`\`\`gherkin
6925
- Scenario Outline: \u{7528}\u{6237}\u{901A}\u{8FC7}SDK\u{8FDB}\u{884C}\u{652F}\u{4ED8}\u{64CD}\u{4F5C}
6926
- Given \u{7CFB}\u{7EDF}\u{5DF2}\u{521D}\u{59CB}\u{5316}<sdk_name>SDK
6927
- When \u{7528}\u{6237}\u{53D1}\u{8D77}\u{652F}\u{4ED8}\u{8BF7}\u{6C42}\u{FF0C}\u{91D1}\u{989D}\u{4E3A}<amount>\u{FF0C}\u{8BA2}\u{5355}\u{53F7}\u{4E3A}<order_id>
6928
- Then SDK\u{5E94}\u{8FD4}\u{56DE}\u{652F}\u{4ED8}\u{7ED3}\u{679C}<result>
5798
+ ### 5.1 \u{5B89}\u{5168}\u{6027}\u{8003}\u{8651}
5799
+ [\u{63CF}\u{8FF0}\u{6570}\u{636E}\u{52A0}\u{5BC6}\u{3001}\u{8BBF}\u{95EE}\u{63A7}\u{5236}\u{7B49}\u{5B89}\u{5168}\u{8981}\u{6C42}]
6929
5800
 
6930
- Examples:
6931
- | sdk_name | amount | order_id | result |
6932
- | \u{652F}\u{4ED8}\u{5B9D} | 100.00 | ORD001 | \u{652F}\u{4ED8}\u{6210}\u{529F} |
6933
- | \u{5FAE}\u{4FE1}\u{652F}\u{4ED8} | 200.00 | ORD002 | \u{652F}\u{4ED8}\u{5931}\u{8D25}-\u{4F59}\u{989D}\u{4E0D}\u{8DB3} |
6934
-
6935
- Scenario Outline: SDK\u{521D}\u{59CB}\u{5316}\u{4E0E}\u{8BA4}\u{8BC1}\u{6D41}\u{7A0B}
6936
- Given \u{5E94}\u{7528}\u{7CFB}\u{7EDF}\u{4F7F}\u{7528}<sdk_type>\u{7C7B}\u{578B}\u{7684}SDK
6937
- When \u{7CFB}\u{7EDF}\u{542F}\u{52A8}SDK\u{521D}\u{59CB}\u{5316}\u{8FC7}\u{7A0B}\u{65F6}
6938
- Then SDK\u{5E94}:
6939
- 1. \u{9A8C}\u{8BC1}\u{5E94}\u{7528}\u{51ED}\u{8BC1}\u{7684}\u{6709}\u{6548}\u{6027}
6940
- 2. \u{68C0}\u{67E5}\u{5E94}\u{7528}\u{6743}\u{9650}
6941
- 3. \u{8FDE}\u{63A5}\u{7B2C}\u{4E09}\u{65B9}\u{670D}\u{52A1}
6942
- 4. \u{8FD4}\u{56DE}\u{521D}\u{59CB}\u{5316}\u{7ED3}\u{679C}
5801
+ ### 5.2 \u{6027}\u{80FD}\u{4F18}\u{5316}
5802
+ [\u{63CF}\u{8FF0}SDK\u{8C03}\u{7528}\u{7684}\u{6027}\u{80FD}\u{8981}\u{6C42}\u{548C}\u{4F18}\u{5316}\u{7B56}\u{7565}]
6943
5803
 
6944
- Examples:
6945
- | sdk_type | \u{9884}\u{671F}\u{884C}\u{4E3A} |
6946
- | \u{652F}\u{4ED8}SDK | \u{9A8C}\u{8BC1}\u{5546}\u{6237}ID\u{548C}\u{5BC6}\u{94A5}\u{FF0C}\u{8FDE}\u{63A5}\u{652F}\u{4ED8}\u{7F51}\u{5173} |
6947
- | \u{5730}\u{56FE}SDK | \u{9A8C}\u{8BC1}API Key\u{FF0C}\u{8FDE}\u{63A5}\u{5730}\u{56FE}\u{670D}\u{52A1} |
6948
- | \u{63A8}\u{9001}SDK | \u{9A8C}\u{8BC1}\u{5E94}\u{7528}\u{6807}\u{8BC6}\u{FF0C}\u{8FDE}\u{63A5}\u{63A8}\u{9001}\u{670D}\u{52A1} |
6949
- | \u{65E0}\u{6548}\u{51ED}\u{8BC1} | \u{8FD4}\u{56DE}\u{521D}\u{59CB}\u{5316}\u{5931}\u{8D25}\u{FF0C}\u{8BB0}\u{5F55}\u{9519}\u{8BEF}\u{65E5}\u{5FD7} |
6950
-
6951
- Scenario Outline: SDK\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{4E0E}\u{56DE}\u{8C03}\u{5904}\u{7406}
6952
- Given \u{5E94}\u{7528}\u{7CFB}\u{7EDF}\u{5DF2}\u{521D}\u{59CB}\u{5316}<sdk_name>SDK
6953
- When \u{8C03}\u{7528}<api_method>\u{63A5}\u{53E3}\u{5E76}\u{4F20}\u{5165}<parameter_status>\u{53C2}\u{6570}\u{65F6}
6954
- Then SDK\u{5E94}:
6955
- 1. \u{9A8C}\u{8BC1}\u{53C2}\u{6570}\u{6709}\u{6548}\u{6027}
6956
- 2. \u{6267}\u{884C}API\u{8C03}\u{7528}
6957
- 3. \u{5904}\u{7406}\u{5F02}\u{6B65}\u{56DE}\u{8C03}
6958
- 4. \u{8FD4}\u{56DE}\u{8C03}\u{7528}\u{7ED3}\u{679C}
5804
+ ## 6. \u{4E1A}\u{52A1}\u{6D41}\u{7A0B}
6959
5805
 
6960
- Examples:
6961
- | sdk_name | api_method | parameter_status | \u{5904}\u{7406}\u{903B}\u{8F91} |
6962
- | \u{652F}\u{4ED8}\u{5B9D} | pay | \u{6709}\u{6548}\u{53C2}\u{6570} | \u{53D1}\u{8D77}\u{652F}\u{4ED8}\u{8BF7}\u{6C42}\u{FF0C}\u{76D1}\u{542C}\u{652F}\u{4ED8}\u{7ED3}\u{679C}\u{56DE}\u{8C03} |
6963
- | \u{5FAE}\u{4FE1}\u{652F}\u{4ED8} | refund | \u{7F3A}\u{5931}\u{5FC5}\u{586B}\u{53C2}\u{6570} | \u{8FD4}\u{56DE}\u{53C2}\u{6570}\u{9519}\u{8BEF}\u{FF0C}\u{8BE6}\u{7EC6}\u{8BF4}\u{660E}\u{7F3A}\u{5931}\u{5B57}\u{6BB5} |
6964
- | \u{5730}\u{56FE}SDK | getLocation| \u{7F51}\u{7EDC}\u{5F02}\u{5E38} | \u{91CD}\u{8BD5}3\u{6B21}\u{540E}\u{8FD4}\u{56DE}\u{7F51}\u{7EDC}\u{9519}\u{8BEF}\u{FF0C}\u{63D0}\u{4F9B}\u{79BB}\u{7EBF}\u{5B9A}\u{4F4D}\u{65B9}\u{6848} |
6965
- | \u{63A8}\u{9001}SDK | sendMessage| \u{8D85}\u{65F6}\u{53C2}\u{6570} | \u{8BBE}\u{7F6E}5\u{79D2}\u{8D85}\u{65F6}\u{FF0C}\u{8D85}\u{65F6}\u{540E}\u{8FD4}\u{56DE}\u{5931}\u{8D25}\u{5E76}\u{8BB0}\u{5F55}\u{65E5}\u{5FD7} |
6966
- | \u{5B58}\u{50A8}SDK | uploadFile | \u{5927}\u{6587}\u{4EF6} | \u{5206}\u{5757}\u{4E0A}\u{4F20}\u{FF0C}\u{652F}\u{6301}\u{65AD}\u{70B9}\u{7EED}\u{4F20}\u{548C}\u{8FDB}\u{5EA6}\u{56DE}\u{8C03} |
6967
-
6968
- Scenario Outline: SDK\u{9519}\u{8BEF}\u{5904}\u{7406}\u{4E0E}\u{6062}\u{590D}\u{673A}\u{5236}
6969
- Given SDK\u{5728}\u{6267}\u{884C}<operation_type>\u{64CD}\u{4F5C}\u{65F6}\u{9047}\u{5230}<error_type>\u{9519}\u{8BEF}
6970
- When \u{7CFB}\u{7EDF}\u{68C0}\u{6D4B}\u{5230}\u{9519}\u{8BEF}\u{5E76}\u{542F}\u{52A8}\u{6062}\u{590D}\u{6D41}\u{7A0B}\u{65F6}
6971
- Then SDK\u{5E94}:
6972
- 1. \u{8BB0}\u{5F55}\u{8BE6}\u{7EC6}\u{7684}\u{9519}\u{8BEF}\u{65E5}\u{5FD7}
6973
- 2. \u{6839}\u{636E}\u{9519}\u{8BEF}\u{7C7B}\u{578B}\u{6267}\u{884C}\u{6062}\u{590D}\u{7B56}\u{7565}
6974
- 3. \u{901A}\u{77E5}\u{5E94}\u{7528}\u{7CFB}\u{7EDF}\u{5904}\u{7406}\u{7ED3}\u{679C}
6975
- 4. \u{66F4}\u{65B0}\u{5185}\u{90E8}\u{72B6}\u{6001}\u{7BA1}\u{7406}
5806
+ [\u{4F7F}\u{7528}\u{7B80}\u{5355}\u{7684}mermaid\u{6D41}\u{7A0B}\u{56FE}\u{63CF}\u{8FF0}\u{4E3B}\u{8981}\u{4E1A}\u{52A1}\u{6D41}\u{7A0B}]
6976
5807
 
6977
- Examples:
6978
- | operation_type | error_type | \u{6062}\u{590D}\u{7B56}\u{7565} |
6979
- | \u{652F}\u{4ED8}\u{64CD}\u{4F5C} | \u{7F51}\u{7EDC}\u{8D85}\u{65F6} | \u{6307}\u{6570}\u{9000}\u{907F}\u{91CD}\u{8BD5}\u{FF0C}\u{6700}\u{591A}\u{91CD}\u{8BD5}3\u{6B21}\u{FF0C}\u{5931}\u{8D25}\u{540E}\u{8FD4}\u{56DE}\u{9519}\u{8BEF}\u{7801} |
6980
- | \u{6587}\u{4EF6}\u{4E0A}\u{4F20} | \u{670D}\u{52A1}\u{5668}\u{9519}\u{8BEF} | \u{6682}\u{505C}\u{4E0A}\u{4F20}\u{FF0C}\u{7B49}\u{5F85}5\u{5206}\u{949F}\u{540E}\u{81EA}\u{52A8}\u{6062}\u{590D}\u{FF0C}\u{652F}\u{6301}\u{624B}\u{52A8}\u{91CD}\u{8BD5} |
6981
- | \u{4F4D}\u{7F6E}\u{83B7}\u{53D6} | \u{6743}\u{9650}\u{62D2}\u{7EDD} | \u{5F15}\u{5BFC}\u{7528}\u{6237}\u{5F00}\u{542F}\u{6743}\u{9650}\u{FF0C}\u{63D0}\u{4F9B}\u{964D}\u{7EA7}\u{65B9}\u{6848}\u{FF08}\u{5982}IP\u{5B9A}\u{4F4D}\u{FF09} |
6982
- | \u{6D88}\u{606F}\u{63A8}\u{9001} | \u{8BC1}\u{4E66}\u{8FC7}\u{671F} | \u{81EA}\u{52A8}\u{66F4}\u{65B0}\u{8BC1}\u{4E66}\u{FF0C}\u{91CD}\u{65B0}\u{5EFA}\u{7ACB}\u{5B89}\u{5168}\u{8FDE}\u{63A5} |
6983
- | \u{6570}\u{636E}\u{540C}\u{6B65} | \u{6570}\u{636E}\u{51B2}\u{7A81} | \u{51B2}\u{7A81}\u{68C0}\u{6D4B}\u{4E0E}\u{5408}\u{5E76}\u{7B56}\u{7565}\u{FF0C}\u{8BB0}\u{5F55}\u{51B2}\u{7A81}\u{8BE6}\u{60C5}\u{4F9B}\u{4EBA}\u{5DE5}\u{5904}\u{7406} |
5808
+ \`\`\`mermaid
5809
+ graph TD
5810
+ A[\u{5F00}\u{59CB}] --> B[\u{5904}\u{7406}]
5811
+ B --> C[\u{7ED3}\u{675F}]
6984
5812
  \`\`\`
6985
5813
 
6986
5814
  ---
6987
5815
 
6988
- **\u{91CD}\u{8981}\u{63D0}\u{9192}**:
6989
- 1. \u{8BF7}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{6587}\u{6863}\u{FF0C}\u{4E0D}\u{8981}\u{7701}\u{7565}\u{4EFB}\u{4F55}\u{7AE0}\u{8282}
6990
- 2. \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{5B9E}\u{8D28}\u{6027}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{53EA}\u{662F}\u{6A21}\u{677F}
6991
- 3. \u{6839}\u{636E}\u{8F93}\u{5165}\u{7684}\u{539F}\u{59CB}\u{5185}\u{5BB9}\u{8FDB}\u{884C}\u{5177}\u{4F53}\u{5206}\u{6790}\u{FF0C}\u{4E0D}\u{8981}\u{4F7F}\u{7528}\u{901A}\u{7528}\u{6A21}\u{677F}
6992
- 4. \u{6587}\u{6863}\u{603B}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
6993
- 5. \u{8868}\u{683C}\u{4E2D}\u{7684}\u{5185}\u{5BB9}\u{8981}\u{586B}\u{5199}\u{5177}\u{4F53}\u{4FE1}\u{606F}\u{FF0C}\u{4E0D}\u{8981}\u{4FDD}\u{7559}\u{5360}\u{4F4D}\u{7B26}
6994
- 6. \u{91CD}\u{70B9}\u{5173}\u{6CE8}SDK\u{63A5}\u{5165}\u{6D41}\u{7A0B}\u{3001}\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{3001}\u{6570}\u{636E}\u{7ED3}\u{6784}\u{7B49}\u{6280}\u{672F}\u{7EC6}\u{8282}
6995
-
6996
- \u{73B0}\u{5728}\u{8BF7}\u{5F00}\u{59CB}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}\u{4E09}\u{65B9}SDK\u{96C6}\u{6210}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF1A}`;
6997
- const apiTemplatePrompt = `\u{4F60}\u{662F}\u{4E00}\u{4F4D}\u{4E13}\u{4E1A}\u{7684}\u{540E}\u{7AEF}\u{6280}\u{672F}\u{6587}\u{6863}\u{7F16}\u{5199}\u{4E13}\u{5BB6}\u{3002}\u{8BF7}\u{57FA}\u{4E8E}\u{7528}\u{6237}\u{63D0}\u{4F9B}\u{7684}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{FF0C}\u{751F}\u{6210}\u{4E00}\u{4EFD}\u{5B8C}\u{6574}\u{3001}\u{8BE6}\u{7EC6}\u{7684}API\u{63A5}\u{53E3}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{3002}
6998
-
6999
- ## \u{4EFB}\u{52A1}\u{8981}\u{6C42}
7000
- - \u{5FC5}\u{987B}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{683C}\u{5F0F}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}
7001
- - \u{4E0D}\u{8981}\u{53EA}\u{7ED9}\u{51FA}\u{603B}\u{7ED3}\u{FF0C}\u{8981}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}\u{6587}\u{6863}\u{5185}\u{5BB9}
7002
- - \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{8BE6}\u{7EC6}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{7701}\u{7565}
7003
- - \u{6587}\u{6863}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
7004
- - \u{91CD}\u{70B9}\u{63CF}\u{8FF0}API\u{63A5}\u{53E3}\u{8BBE}\u{8BA1}\u{3001}\u{6570}\u{636E}\u{7ED3}\u{6784}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{7B49}\u{540E}\u{7AEF}\u{76F8}\u{5173}\u{5185}\u{5BB9}
7005
-
7006
- ## \u{8F93}\u{5165}\u{4FE1}\u{606F}
7007
- - **\u{529F}\u{80FD}\u{540D}\u{79F0}**: {featureName}
7008
- - **\u{4E1A}\u{52A1}\u{9886}\u{57DF}**: {businessDomain}
7009
- - **\u{751F}\u{6210}\u{65F6}\u{5E8F}\u{56FE}**: {generateSequenceDiagram}
7010
-
7011
- ## \u{539F}\u{59CB}\u{9700}\u{6C42}\u{5185}\u{5BB9}
5816
+ **\u{8981}\u{6C42}**: \u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{6587}\u{6863}\u{FF0C}\u{6BCF}\u{7AE0}\u{8282}\u{6709}\u{5B9E}\u{8D28}\u{5185}\u{5BB9}\u{FF0C}\u{8868}\u{683C}\u{586B}\u{5199}\u{5177}\u{4F53}\u{4FE1}\u{606F}\u{FF0C}\u{91CD}\u{70B9}\u{5173}\u{6CE8}SDK\u{63A5}\u{5165}\u{6D41}\u{7A0B}\u{3001}\u{63A5}\u{53E3}\u{8C03}\u{7528}\u{548C}\u{6570}\u{636E}\u{7ED3}\u{6784}\u{3002}`;
5817
+ const apiTemplatePrompt = `\u{4F60}\u{662F}\u{540E}\u{7AEF}\u{6280}\u{672F}\u{6587}\u{6863}\u{4E13}\u{5BB6}\u{3002}\u{57FA}\u{4E8E}\u{8F93}\u{5165}\u{5185}\u{5BB9}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}API\u{63A5}\u{53E3}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF08}Markdown\u{683C}\u{5F0F}\u{FF0C}3000\u{5B57}\u{4EE5}\u{4E0A}\u{FF09}\u{3002}
5818
+
5819
+ **\u{8F93}\u{5165}**: \u{529F}\u{80FD}\u{540D}\u{79F0}={featureName}, \u{4E1A}\u{52A1}\u{9886}\u{57DF}={businessDomain}, \u{751F}\u{6210}\u{65F6}\u{5E8F}\u{56FE}={generateSequenceDiagram}
5820
+
5821
+ **\u{539F}\u{59CB}\u{9700}\u{6C42}**:
7012
5822
  \`\`\`
7013
5823
  {inputContent}
7014
5824
  \`\`\`
@@ -7048,13 +5858,65 @@ Scenario Outline: SDK\u{9519}\u{8BEF}\u{5904}\u{7406}\u{4E0E}\u{6062}\u{590D}\u{
7048
5858
  ## 3. \u{6570}\u{636E}\u{5EFA}\u{6A21}
7049
5859
  ## 3.1 ER\u{903B}\u{8F91}\u{56FE}\u{8BBE}\u{8BA1}
7050
5860
 
7051
- [\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}]
5861
+ \u{57FA}\u{4E8E}\u{9700}\u{6C42}\u{5206}\u{6790}\u{FF0C}\u{8BBE}\u{8BA1}\u{4EE5}\u{4E0B}\u{6570}\u{636E}\u{5E93}\u{8868}\u{5173}\u{7CFB}\u{FF1A}
5862
+ - \u{7528}\u{6237}\u{8868} (users): \u{5B58}\u{50A8}\u{7528}\u{6237}\u{57FA}\u{672C}\u{4FE1}\u{606F}\u{FF0C}\u{5982}\u{7528}\u{6237}\u{540D}\u{3001}\u{90AE}\u{7BB1}\u{3001}\u{5BC6}\u{7801}\u{7B49}
5863
+ - \u{8BA2}\u{5355}\u{8868} (orders): \u{5B58}\u{50A8}\u{8BA2}\u{5355}\u{4FE1}\u{606F}\u{FF0C}\u{4E0E}\u{7528}\u{6237}\u{8868}\u{4E00}\u{5BF9}\u{591A}\u{5173}\u{7CFB}
5864
+ - \u{4EA7}\u{54C1}\u{8868} (products): \u{5B58}\u{50A8}\u{4EA7}\u{54C1}\u{4FE1}\u{606F}\u{FF0C}\u{4E0E}\u{8BA2}\u{5355}\u{8868}\u{591A}\u{5BF9}\u{591A}\u{5173}\u{7CFB}\u{FF08}\u{901A}\u{8FC7}\u{8BA2}\u{5355}\u{9879}\u{8868}\u{5173}\u{8054}\u{FF09}
5865
+
5866
+ \u{8BF7}\u{6839}\u{636E}\u{5177}\u{4F53}\u{9700}\u{6C42}\u{8BBE}\u{8BA1}\u{6570}\u{636E}\u{5E93}\u{8868}\u{7ED3}\u{6784}\u{FF0C}\u{5305}\u{62EC}\u{FF1A}
5867
+ 1. \u{8868}\u{7684}\u{4E2D}\u{82F1}\u{6587}\u{540D}\u{79F0}
5868
+ 2. \u{8868}\u{5B57}\u{6BB5}\u{5B9A}\u{4E49}\u{FF08}\u{5B57}\u{6BB5}\u{540D}\u{3001}\u{7C7B}\u{578B}\u{3001}\u{7EA6}\u{675F}\u{6761}\u{4EF6}\u{FF09}
5869
+ 3. \u{8868}\u{4E4B}\u{95F4}\u{7684}\u{5173}\u{7CFB}\u{FF08}\u{4E00}\u{5BF9}\u{4E00}\u{3001}\u{4E00}\u{5BF9}\u{591A}\u{3001}\u{591A}\u{5BF9}\u{591A}\u{FF09}
5870
+ 4. \u{4E3B}\u{952E}\u{548C}\u{5916}\u{952E}\u{7EA6}\u{675F}
5871
+
7052
5872
  \`\`\`mermaid
5873
+ erDiagram
5874
+ users ||--o{ orders : "\u{62E5}\u{6709}"
5875
+ orders ||--o{ order_items : "\u{5305}\u{542B}"
5876
+ products ||--o{ order_items : "\u{88AB}\u{8D2D}\u{4E70}"
5877
+ users {
5878
+ int id PK
5879
+ string username
5880
+ string email
5881
+ string password_hash
5882
+ datetime created_at
5883
+ datetime updated_at
5884
+ }
5885
+ orders {
5886
+ int id PK
5887
+ int user_id FK
5888
+ decimal total_amount
5889
+ string status
5890
+ datetime order_date
5891
+ datetime created_at
5892
+ }
5893
+ products {
5894
+ int id PK
5895
+ string name
5896
+ string description
5897
+ decimal price
5898
+ int stock_quantity
5899
+ datetime created_at
5900
+ }
5901
+ order_items {
5902
+ int id PK
5903
+ int order_id FK
5904
+ int product_id FK
5905
+ int quantity
5906
+ decimal unit_price
5907
+ decimal subtotal
5908
+ }
7053
5909
  \`\`\`
7054
5910
 
5911
+ **\u{6570}\u{636E}\u{5E93}\u{8868}\u{5173}\u{7CFB}\u{8BF4}\u{660E}\u{FF1A}**
5912
+ - **\u{7528}\u{6237}-\u{8BA2}\u{5355}\u{5173}\u{7CFB}**: \u{4E00}\u{5BF9}\u{591A}\u{5173}\u{7CFB}\u{FF0C}\u{4E00}\u{4E2A}\u{7528}\u{6237}\u{53EF}\u{4EE5}\u{62E5}\u{6709}\u{591A}\u{4E2A}\u{8BA2}\u{5355}
5913
+ - **\u{8BA2}\u{5355}-\u{8BA2}\u{5355}\u{9879}\u{5173}\u{7CFB}**: \u{4E00}\u{5BF9}\u{591A}\u{5173}\u{7CFB}\u{FF0C}\u{4E00}\u{4E2A}\u{8BA2}\u{5355}\u{53EF}\u{4EE5}\u{5305}\u{542B}\u{591A}\u{4E2A}\u{8BA2}\u{5355}\u{9879}
5914
+ - **\u{4EA7}\u{54C1}-\u{8BA2}\u{5355}\u{9879}\u{5173}\u{7CFB}**: \u{4E00}\u{5BF9}\u{591A}\u{5173}\u{7CFB}\u{FF0C}\u{4E00}\u{4E2A}\u{4EA7}\u{54C1}\u{53EF}\u{4EE5}\u{88AB}\u{591A}\u{4E2A}\u{8BA2}\u{5355}\u{9879}\u{8D2D}\u{4E70}
5915
+ - **\u{8BA2}\u{5355}\u{9879}\u{8868}**: \u{4F5C}\u{4E3A}\u{4E2D}\u{95F4}\u{8868}\u{FF0C}\u{5B9E}\u{73B0}\u{8BA2}\u{5355}\u{548C}\u{4EA7}\u{54C1}\u{7684}\u{591A}\u{5BF9}\u{591A}\u{5173}\u{7CFB}
5916
+
7055
5917
  ## 4. \u{6570}\u{636E}\u{8868}\u{5B9E}\u{4F53}\u{8BBE}\u{8BA1}
7056
5918
 
7057
- [\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}]
5919
+ [\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{3001}\u{7D22}\u{5F15}\u{89C4}\u{5219}\u{7B49}]
7058
5920
 
7059
5921
  ## 5. API\u{63A5}\u{53E3}\u{8BBE}\u{8BA1}
7060
5922
 
@@ -7102,27 +5964,6 @@ Scenario Outline: SDK\u{9519}\u{8BEF}\u{5904}\u{7406}\u{4E0E}\u{6062}\u{590D}\u{
7102
5964
  #### 6.2.1 \u{6B63}\u{5411}\u{6D41}\u{7A0B}
7103
5965
  \`\`\`mermaid
7104
5966
  sequenceDiagram
7105
- participant \u{5BA2}\u{6237}\u{7AEF}
7106
- participant API\u{7F51}\u{5173}
7107
- participant \u{8BA4}\u{8BC1}\u{670D}\u{52A1}
7108
- participant \u{6743}\u{9650}\u{670D}\u{52A1}
7109
- participant \u{4E1A}\u{52A1}\u{670D}\u{52A1}
7110
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
7111
-
7112
- \u{5BA2}\u{6237}\u{7AEF}->>API\u{7F51}\u{5173}: \u{53D1}\u{9001}API\u{8BF7}\u{6C42}
7113
- 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}
7114
- alt \u{4EE4}\u{724C}\u{6709}\u{6548}
7115
- \u{8BA4}\u{8BC1}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{8BA4}\u{8BC1}\u{6210}\u{529F}
7116
- 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}
7117
- \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}
7118
- API\u{7F51}\u{5173}->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
7119
- \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}
7120
- API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
7121
- else \u{4EE4}\u{724C}\u{65E0}\u{6548}
7122
- \u{8BA4}\u{8BC1}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{8BA4}\u{8BC1}\u{5931}\u{8D25}
7123
- API\u{7F51}\u{5173}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{8BA4}\u{8BC1}\u{5931}\u{8D25}
7124
- API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}401\u{9519}\u{8BEF}
7125
- end
7126
5967
  \`\`\`
7127
5968
 
7128
5969
  ### 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}
@@ -7130,85 +5971,11 @@ sequenceDiagram
7130
5971
  #### 6.3.1 xx\u{5F02}\u{5E38}\u{5904}\u{7406}\u{6D41}\u{7A0B}
7131
5972
  \`\`\`mermaid
7132
5973
  sequenceDiagram
7133
- participant \u{5BA2}\u{6237}\u{7AEF}
7134
- participant API\u{7F51}\u{5173}
7135
- participant \u{9650}\u{6D41}\u{670D}\u{52A1}
7136
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
7137
-
7138
- \u{5BA2}\u{6237}\u{7AEF}->>API\u{7F51}\u{5173}: \u{53D1}\u{9001}API\u{8BF7}\u{6C42}
7139
- API\u{7F51}\u{5173}->>\u{9650}\u{6D41}\u{670D}\u{52A1}: \u{68C0}\u{67E5}\u{8BF7}\u{6C42}\u{9891}\u{7387}
7140
- \u{9650}\u{6D41}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{9650}\u{6D41}\u{51B3}\u{5B9A}
7141
- alt \u{8BF7}\u{6C42}\u{9891}\u{7387}\u{6B63}\u{5E38}
7142
- API\u{7F51}\u{5173}->>\u{540E}\u{7EED}\u{670D}\u{52A1}: \u{5904}\u{7406}\u{8BF7}\u{6C42}
7143
- else \u{8BF7}\u{6C42}\u{9891}\u{7387}\u{8FC7}\u{9AD8}
7144
- API\u{7F51}\u{5173}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{9650}\u{6D41}\u{4E8B}\u{4EF6}
7145
- API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}429\u{9519}\u{8BEF}(\u{8BF7}\u{6C42}\u{8FC7}\u{591A})
7146
- end
7147
5974
  \`\`\`
7148
5975
 
7149
5976
  #### 6.3.2 xx\u{5F02}\u{5E38}\u{5904}\u{7406}\u{6D41}\u{7A0B}
7150
5977
  \`\`\`mermaid
7151
5978
  sequenceDiagram
7152
- participant \u{5BA2}\u{6237}\u{7AEF}
7153
- participant API\u{7F51}\u{5173}
7154
- participant \u{4E1A}\u{52A1}\u{670D}\u{52A1}
7155
- participant \u{6570}\u{636E}\u{9A8C}\u{8BC1}\u{5668}
7156
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
7157
-
7158
- \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}
7159
- API\u{7F51}\u{5173}->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
7160
- \u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{6570}\u{636E}\u{9A8C}\u{8BC1}\u{5668}: \u{9A8C}\u{8BC1}\u{6570}\u{636E}\u{683C}\u{5F0F}
7161
- \u{6570}\u{636E}\u{9A8C}\u{8BC1}\u{5668}-->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8FD4}\u{56DE}\u{9A8C}\u{8BC1}\u{5931}\u{8D25}
7162
- \u{4E1A}\u{52A1}\u{670D}\u{52A1}->>\u{65E5}\u{5FD7}\u{670D}\u{52A1}: \u{8BB0}\u{5F55}\u{9A8C}\u{8BC1}\u{9519}\u{8BEF}
7163
- \u{4E1A}\u{52A1}\u{670D}\u{52A1}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}400\u{9519}\u{8BEF}(\u{8BF7}\u{6C42}\u{6570}\u{636E}\u{65E0}\u{6548})
7164
- 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}
7165
- \`\`\`
7166
-
7167
- ### 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}
7168
-
7169
- #### 6.4.1 \u{5E76}\u{53D1}\u{51B2}\u{7A81}\u{5904}\u{7406}
7170
- \`\`\`mermaid
7171
- sequenceDiagram
7172
- participant \u{5BA2}\u{6237}\u{7AEF}
7173
- participant API\u{7F51}\u{5173}
7174
- participant \u{6570}\u{636E}\u{5E93}
7175
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
7176
- participant \u{7F13}\u{5B58}\u{670D}\u{52A1}
7177
-
7178
- alt \u{9AD8}\u{5E76}\u{53D1}\u{573A}\u{666F}
7179
- \u{5BA2}\u{6237}\u{7AEF}->>API\u{7F51}\u{5173}: \u{5E76}\u{53D1}\u{8BF7}\u{6C42}
7180
- API\u{7F51}\u{5173}->>\u{6570}\u{636E}\u{5E93}: \u{6267}\u{884C}\u{6570}\u{636E}\u{64CD}\u{4F5C}
7181
- \u{6570}\u{636E}\u{5E93}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{7ED3}\u{679C}
7182
- 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}
7183
- 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}
7184
- else \u{975E}\u{9AD8}\u{5E76}\u{53D1}\u{573A}\u{666F}
7185
- API\u{7F51}\u{5173}->>\u{6570}\u{636E}\u{5E93}: \u{6267}\u{884C}\u{6570}\u{636E}\u{64CD}\u{4F5C}
7186
- \u{6570}\u{636E}\u{5E93}-->>API\u{7F51}\u{5173}: \u{8FD4}\u{56DE}\u{7ED3}\u{679C}
7187
- 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}
7188
- end
7189
- API\u{7F51}\u{5173}->>\u{5BA2}\u{6237}\u{7AEF}: \u{8FD4}\u{56DE}\u{54CD}\u{5E94}
7190
- \`\`\`
7191
- #### 6.4.2 \u{8D85}\u{65F6}\u{5904}\u{7406}
7192
- \`\`\`mermaid
7193
- sequenceDiagram
7194
- participant \u{5BA2}\u{6237}\u{7AEF}
7195
- participant API\u{7F51}\u{5173}
7196
- participant \u{4E1A}\u{52A1}\u{670D}\u{52A1}
7197
- participant \u{65E5}\u{5FD7}\u{670D}\u{52A1}
7198
- participant \u{76D1}\u{63A7}\u{670D}\u{52A1}
7199
- participant \u{5907}\u{7528}\u{670D}\u{52A1}
7200
-
7201
- \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}
7202
- API\u{7F51}\u{5173}->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
7203
- \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}
7204
- \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}
7205
- \u{4E1A}\u{52A1}\u{670D}\u{52A1}-->>\u{4E1A}\u{52A1}\u{670D}\u{52A1}: \u{91CD}\u{8BD5}\u{8BF7}\u{6C42}
7206
- \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})
7207
- API\u{7F51}\u{5173}->>\u{5907}\u{7528}\u{670D}\u{52A1}: \u{8F6C}\u{53D1}\u{8BF7}\u{6C42}
7208
- \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}
7209
- 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}
7210
- 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}
7211
- 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}
7212
5979
  \`\`\`
7213
5980
 
7214
5981
  ## 7. \u{4E1A}\u{52A1}\u{72B6}\u{6001}\u{63CF}\u{8FF0}
@@ -7232,67 +5999,11 @@ Scenario Outline: \u{7528}\u{6237}\u{901A}\u{8FC7}API\u{67E5}\u{8BE2}\u{8BA2}\u{
7232
5999
  | order_id | error_message |
7233
6000
  | 12345 | null (\u{6210}\u{529F}\u{8FD4}\u{56DE}\u{8BA2}\u{5355}\u{4FE1}\u{606F}) |
7234
6001
  | 99999 | "\u{8BA2}\u{5355}\u{4E0D}\u{5B58}\u{5728}" |
7235
-
7236
- Scenario Outline: API\u{8BA4}\u{8BC1}\u{4E0E}\u{6388}\u{6743}\u{6D41}\u{7A0B}
7237
- Given \u{5BA2}\u{6237}\u{7AEF}\u{4F7F}\u{7528}<auth_type>\u{65B9}\u{5F0F}\u{8FDB}\u{884C}\u{8BA4}\u{8BC1}
7238
- When \u{5BA2}\u{6237}\u{7AEF}\u{8BBF}\u{95EE}<api_endpoint>\u{63A5}\u{53E3}\u{65F6}
7239
- Then \u{7CFB}\u{7EDF}\u{5E94}:
7240
- 1. \u{9A8C}\u{8BC1}\u{8BA4}\u{8BC1}\u{51ED}\u{8BC1}\u{7684}\u{6709}\u{6548}\u{6027}
7241
- 2. \u{68C0}\u{67E5}\u{7528}\u{6237}\u{6743}\u{9650}
7242
- 3. \u{6839}\u{636E}\u{9A8C}\u{8BC1}\u{7ED3}\u{679C}\u{8FD4}\u{56DE}\u{76F8}\u{5E94}\u{54CD}\u{5E94}
7243
-
7244
- Examples:
7245
- | auth_type | api_endpoint | \u{9884}\u{671F}\u{884C}\u{4E3A} |
7246
- | Bearer Token | /orders | \u{9A8C}\u{8BC1}\u{4EE4}\u{724C}\u{6709}\u{6548}\u{6027}\u{FF0C}\u{68C0}\u{67E5}\u{8BA2}\u{5355}\u{8BBF}\u{95EE}\u{6743}\u{9650} |
7247
- | API Key | /products | \u{9A8C}\u{8BC1}API Key\u{FF0C}\u{68C0}\u{67E5}\u{4EA7}\u{54C1}\u{8BBF}\u{95EE}\u{6743}\u{9650} |
7248
- | \u{65E0}\u{6548}\u{4EE4}\u{724C} | /orders | \u{8FD4}\u{56DE}401\u{672A}\u{6388}\u{6743}\u{9519}\u{8BEF} |
7249
- | \u{65E0}\u{6743}\u{9650}\u{7528}\u{6237} | /admin | \u{8FD4}\u{56DE}403\u{7981}\u{6B62}\u{8BBF}\u{95EE}\u{9519}\u{8BEF} |
7250
-
7251
- Scenario Outline: API\u{8C03}\u{7528}\u{4E0E}\u{6570}\u{636E}\u{5904}\u{7406}\u{6D41}\u{7A0B}
7252
- Given \u{5BA2}\u{6237}\u{7AEF}\u{5411}<api_endpoint>\u{53D1}\u{9001}<http_method>\u{8BF7}\u{6C42}
7253
- When \u{8BF7}\u{6C42}\u{5305}\u{542B}<data_status>\u{6570}\u{636E}\u{65F6}
7254
- Then \u{7CFB}\u{7EDF}\u{5E94}:
7255
- 1. \u{9A8C}\u{8BC1}\u{8BF7}\u{6C42}\u{53C2}\u{6570}\u{683C}\u{5F0F}
7256
- 2. \u{6267}\u{884C}\u{4E1A}\u{52A1}\u{903B}\u{8F91}\u{5904}\u{7406}
7257
- 3. \u{8FD4}\u{56DE}\u{6807}\u{51C6}\u{5316}\u{54CD}\u{5E94}\u{683C}\u{5F0F}
7258
-
7259
- Examples:
7260
- | api_endpoint | http_method | data_status | \u{5904}\u{7406}\u{903B}\u{8F91} |
7261
- | /users | POST | \u{6709}\u{6548}\u{6570}\u{636E} | \u{521B}\u{5EFA}\u{65B0}\u{7528}\u{6237}\u{FF0C}\u{8FD4}\u{56DE}\u{7528}\u{6237}ID\u{548C}\u{521B}\u{5EFA}\u{65F6}\u{95F4} |
7262
- | /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} |
7263
- | /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} |
7264
- | /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} |
7265
- | /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} |
7266
- | /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} |
7267
-
7268
- Scenario Outline: API\u{9650}\u{6D41}\u{4E0E}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{5904}\u{7406}
7269
- 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}
7270
- When \u{7CFB}\u{7EDF}\u{68C0}\u{6D4B}\u{5230}<traffic_pattern>\u{65F6}
7271
- Then \u{7CFB}\u{7EDF}\u{5E94}:
7272
- 1. \u{5E94}\u{7528}\u{9650}\u{6D41}\u{7B56}\u{7565}\u{63A7}\u{5236}\u{8BF7}\u{6C42}\u{9891}\u{7387}
7273
- 2. \u{8FD4}\u{56DE}\u{9002}\u{5F53}\u{7684}\u{9650}\u{6D41}\u{54CD}\u{5E94}\u{7801}
7274
- 3. \u{63D0}\u{4F9B}\u{91CD}\u{8BD5}\u{5EFA}\u{8BAE}\u{548C}\u{65F6}\u{95F4}\u{7A97}\u{53E3}\u{4FE1}\u{606F}
7275
-
7276
- Examples:
7277
- | time_window | request_count | traffic_pattern | \u{9650}\u{6D41}\u{7B56}\u{7565} |
7278
- | 1\u{5206}\u{949F} | 60\u{4E2A}\u{8BF7}\u{6C42} | \u{6B63}\u{5E38}\u{6D41}\u{91CF} | \u{5141}\u{8BB8}\u{8BF7}\u{6C42}\u{901A}\u{8FC7}\u{FF0C}\u{8BB0}\u{5F55}\u{8BBF}\u{95EE}\u{65E5}\u{5FD7} |
7279
- | 1\u{5206}\u{949F} | 120\u{4E2A}\u{8BF7}\u{6C42} | \u{7A81}\u{53D1}\u{6D41}\u{91CF} | \u{8FD4}\u{56DE}429\u{72B6}\u{6001}\u{7801}\u{FF0C}\u{5EFA}\u{8BAE}\u{7B49}\u{5F85}30\u{79D2}\u{540E}\u{91CD}\u{8BD5} |
7280
- | 1\u{5206}\u{949F} | 1000\u{4E2A}\u{8BF7}\u{6C42} | \u{6076}\u{610F}\u{653B}\u{51FB} | \u{7ACB}\u{5373}\u{62D2}\u{7EDD}\u{8BF7}\u{6C42}\u{FF0C}\u{8BB0}\u{5F55}IP\u{5E76}\u{89E6}\u{53D1}\u{5B89}\u{5168}\u{9632}\u{62A4}\u{673A}\u{5236} |
7281
- | 5\u{5206}\u{949F} | 50\u{4E2A}\u{8BF7}\u{6C42} | \u{5468}\u{671F}\u{6027}\u{8BF7}\u{6C42} | \u{5141}\u{8BB8}\u{8BF7}\u{6C42}\u{901A}\u{8FC7}\u{FF0C}\u{4F18}\u{5316}\u{7F13}\u{5B58}\u{7B56}\u{7565}\u{63D0}\u{5347}\u{54CD}\u{5E94}\u{901F}\u{5EA6} |
7282
- | 1\u{5C0F}\u{65F6} | 10000\u{4E2A}\u{8BF7}\u{6C42} | \u{6B63}\u{5E38}\u{4E1A}\u{52A1}\u{9AD8}\u{5CF0} | \u{52A8}\u{6001}\u{8C03}\u{6574}\u{9650}\u{6D41}\u{9608}\u{503C}\u{FF0C}\u{542F}\u{7528}\u{8D1F}\u{8F7D}\u{5747}\u{8861}\u{7B56}\u{7565} |
7283
6002
  \`\`\`
7284
6003
 
7285
6004
  ---
7286
6005
 
7287
- **\u{91CD}\u{8981}\u{63D0}\u{9192}**:
7288
- 1. \u{8BF7}\u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{7684}Markdown\u{6587}\u{6863}\u{FF0C}\u{4E0D}\u{8981}\u{7701}\u{7565}\u{4EFB}\u{4F55}\u{7AE0}\u{8282}
7289
- 2. \u{6BCF}\u{4E2A}\u{7AE0}\u{8282}\u{90FD}\u{8981}\u{6709}\u{5B9E}\u{8D28}\u{6027}\u{7684}\u{5185}\u{5BB9}\u{FF0C}\u{4E0D}\u{80FD}\u{53EA}\u{662F}\u{6A21}\u{677F}
7290
- 3. \u{6839}\u{636E}\u{8F93}\u{5165}\u{7684}\u{539F}\u{59CB}\u{5185}\u{5BB9}\u{8FDB}\u{884C}\u{5177}\u{4F53}\u{5206}\u{6790}\u{FF0C}\u{4E0D}\u{8981}\u{4F7F}\u{7528}\u{901A}\u{7528}\u{6A21}\u{677F}
7291
- 4. \u{6587}\u{6863}\u{603B}\u{957F}\u{5EA6}\u{5E94}\u{8BE5}\u{5728}3000\u{5B57}\u{4EE5}\u{4E0A}
7292
- 5. \u{8868}\u{683C}\u{4E2D}\u{7684}\u{5185}\u{5BB9}\u{8981}\u{586B}\u{5199}\u{5177}\u{4F53}\u{4FE1}\u{606F}\u{FF0C}\u{4E0D}\u{8981}\u{4FDD}\u{7559}\u{5360}\u{4F4D}\u{7B26}
7293
- 6. \u{91CD}\u{70B9}\u{5173}\u{6CE8}API\u{63A5}\u{53E3}\u{8BBE}\u{8BA1}\u{3001}\u{6570}\u{636E}\u{7ED3}\u{6784}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{7B49}\u{6280}\u{672F}\u{7EC6}\u{8282}
7294
-
7295
- \u{73B0}\u{5728}\u{8BF7}\u{5F00}\u{59CB}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}API\u{63A5}\u{53E3}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{FF1A}`;
6006
+ **\u{8981}\u{6C42}**: \u{8F93}\u{51FA}\u{5B8C}\u{6574}\u{6587}\u{6863}\u{FF0C}\u{6BCF}\u{7AE0}\u{8282}\u{6709}\u{5B9E}\u{8D28}\u{5185}\u{5BB9}\u{FF0C}\u{8868}\u{683C}\u{586B}\u{5199}\u{5177}\u{4F53}\u{4FE1}\u{606F}\u{FF0C}\u{91CD}\u{70B9}\u{5173}\u{6CE8}API\u{63A5}\u{53E3}\u{8BBE}\u{8BA1}\u{3001}\u{6570}\u{636E}\u{7ED3}\u{6784}\u{3001}\u{4EA4}\u{4E92}\u{903B}\u{8F91}\u{FF0C}\u{4F2A}\u{4EE3}\u{7801}\u{4F7F}\u{7528}gherkin\u{8BED}\u{6CD5}\u{3002}`;
7296
6007
  class TemplateSelector {
7297
6008
  templateMap = new Map([
7298
6009
  [
@@ -7300,7 +6011,7 @@ Scenario Outline: API\u{9650}\u{6D41}\u{4E0E}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{
7300
6011
  pcPageTemplatePrompt
7301
6012
  ],
7302
6013
  [
7303
- 'APP',
6014
+ "APP",
7304
6015
  appTemplatePrompt
7305
6016
  ],
7306
6017
  [
@@ -7312,19 +6023,19 @@ Scenario Outline: API\u{9650}\u{6D41}\u{4E0E}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{
7312
6023
  apiTemplatePrompt
7313
6024
  ],
7314
6025
  [
7315
- 'api',
6026
+ "api",
7316
6027
  apiTemplatePrompt
7317
6028
  ],
7318
6029
  [
7319
- 'pc',
6030
+ "pc",
7320
6031
  pcPageTemplatePrompt
7321
6032
  ],
7322
6033
  [
7323
- 'app',
6034
+ "app",
7324
6035
  appTemplatePrompt
7325
6036
  ],
7326
6037
  [
7327
- 'sdk',
6038
+ "sdk",
7328
6039
  sdkTemplatePrompt
7329
6040
  ]
7330
6041
  ]);
@@ -7364,10 +6075,10 @@ Scenario Outline: API\u{9650}\u{6D41}\u{4E0E}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{
7364
6075
  const lowerType = requirementType.toLowerCase();
7365
6076
  if (this.containsAny(lowerType, [
7366
6077
  "\u9875\u9762",
7367
- 'pc',
7368
- 'web',
6078
+ "pc",
6079
+ "web",
7369
6080
  "\u754C\u9762",
7370
- 'ui',
6081
+ "ui",
7371
6082
  "\u7F51\u9875",
7372
6083
  "\u6D4F\u89C8\u5668",
7373
6084
  "\u524D\u7AEF"
@@ -7376,18 +6087,18 @@ Scenario Outline: API\u{9650}\u{6D41}\u{4E0E}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{
7376
6087
  template: pcPageTemplatePrompt
7377
6088
  };
7378
6089
  if (this.containsAny(lowerType, [
7379
- 'app',
6090
+ "app",
7380
6091
  "\u79FB\u52A8",
7381
- 'ios',
7382
- 'android',
6092
+ "ios",
6093
+ "android",
7383
6094
  "\u5C0F\u7A0B\u5E8F",
7384
6095
  "\u79FB\u52A8\u7AEF"
7385
6096
  ])) return {
7386
- type: 'APP',
6097
+ type: "APP",
7387
6098
  template: appTemplatePrompt
7388
6099
  };
7389
6100
  if (this.containsAny(lowerType, [
7390
- 'sdk',
6101
+ "sdk",
7391
6102
  "\u7B2C\u4E09\u65B9",
7392
6103
  "\u96C6\u6210",
7393
6104
  "\u5BF9\u63A5",
@@ -7400,9 +6111,9 @@ Scenario Outline: API\u{9650}\u{6D41}\u{4E0E}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{
7400
6111
  };
7401
6112
  if (this.containsAny(lowerType, [
7402
6113
  "\u63A5\u53E3",
7403
- 'api',
7404
- 'rest',
7405
- 'graphql',
6114
+ "api",
6115
+ "rest",
6116
+ "graphql",
7406
6117
  "\u5FAE\u670D\u52A1",
7407
6118
  "\u540E\u7AEF",
7408
6119
  "\u670D\u52A1\u7AEF"
@@ -7441,17 +6152,60 @@ Scenario Outline: API\u{9650}\u{6D41}\u{4E0E}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{
7441
6152
  }
7442
6153
  class DocumentGenerator {
7443
6154
  templateSelector = new TemplateSelector();
6155
+ static cache = new Map();
6156
+ static CACHE_DURATION = 86400000;
6157
+ generateCacheKey(content, requirementType, customPrompt) {
6158
+ const keySource = `${content}_${requirementType}_${customPrompt || ""}`;
6159
+ return external_crypto_default().createHash("md5").update(keySource).digest("hex");
6160
+ }
6161
+ getCachedDocument(cacheKey) {
6162
+ const cached = DocumentGenerator.cache.get(cacheKey);
6163
+ if (cached) {
6164
+ const now = Date.now();
6165
+ if (now - cached.timestamp < DocumentGenerator.CACHE_DURATION) {
6166
+ logger.info("\u4ECE\u7F13\u5B58\u4E2D\u83B7\u53D6\u6587\u6863", {
6167
+ cacheKey
6168
+ });
6169
+ return cached.document;
6170
+ }
6171
+ DocumentGenerator.cache.delete(cacheKey);
6172
+ logger.info("\u7F13\u5B58\u5DF2\u8FC7\u671F\uFF0C\u5DF2\u5220\u9664", {
6173
+ cacheKey
6174
+ });
6175
+ }
6176
+ return null;
6177
+ }
6178
+ saveToCache(cacheKey, document) {
6179
+ DocumentGenerator.cache.set(cacheKey, {
6180
+ document,
6181
+ timestamp: Date.now()
6182
+ });
6183
+ logger.info("\u6587\u6863\u5DF2\u4FDD\u5B58\u5230\u7F13\u5B58", {
6184
+ cacheKey
6185
+ });
6186
+ }
6187
+ cleanupExpiredCache() {
6188
+ const now = Date.now();
6189
+ let cleanedCount = 0;
6190
+ for (const [key, value] of DocumentGenerator.cache.entries())if (now - value.timestamp >= DocumentGenerator.CACHE_DURATION) {
6191
+ DocumentGenerator.cache.delete(key);
6192
+ cleanedCount++;
6193
+ }
6194
+ if (cleanedCount > 0) logger.info("\u6E05\u7406\u8FC7\u671F\u7F13\u5B58\u5B8C\u6210", {
6195
+ cleanedCount
6196
+ });
6197
+ }
7444
6198
  async generateUnifiedDocument(analysis, projectInfo, featureName, sourceInfo, customPrompt, currentProjectPath) {
7445
6199
  try {
7446
- logger.info("\u5F00\u59CB\u751F\u6210\u7EDF\u4E00\u6280\u672F\u6587\u6863", {
6200
+ logger.info("\u51C6\u5907\u751F\u6210\u7EDF\u4E00\u6280\u672F\u6587\u6863\u4EFB\u52A1", {
7447
6201
  featureName,
7448
6202
  requirementType: analysis.requirementType,
7449
6203
  featureCount: analysis.requirements.length,
7450
6204
  currentProjectPath
7451
6205
  });
7452
6206
  const requirementTypes = this.parseRequirementTypes(analysis.requirementType);
7453
- const reportTasks = requirementTypes.map(async (reqType)=>{
7454
- logger.info("\u751F\u6210\u62A5\u544A", {
6207
+ const generationTasks = await Promise.all(requirementTypes.map(async (reqType)=>{
6208
+ logger.info("\u51C6\u5907\u62A5\u544A\u751F\u6210\u4EFB\u52A1", {
7455
6209
  requirementType: reqType,
7456
6210
  featureName
7457
6211
  });
@@ -7465,34 +6219,39 @@ Scenario Outline: API\u{9650}\u{6D41}\u{4E0E}\u{9519}\u{8BEF}\u{6062}\u{590D}\u{
7465
6219
  existingContent = await promises_namespaceObject.readFile(outputPath, "utf8");
7466
6220
  }
7467
6221
  const unifiedContent = this.buildUnifiedContent(analysis, projectInfo, featureName, sourceInfo);
7468
- const document = isUpdate && existingContent ? await this.updateExistingDocument(existingContent, unifiedContent, featureName, reqType, projectInfo, customPrompt) : await this.generateDocument(unifiedContent, featureName, reqType, projectInfo, customPrompt);
7469
- await promises_namespaceObject.writeFile(outputPath, document, "utf8");
7470
- logger.info("\u62A5\u544A\u751F\u6210\u5B8C\u6210", {
7471
- requirementType: reqType,
7472
- outputPath,
7473
- documentLength: document.length
7474
- });
6222
+ const promptData = isUpdate && existingContent ? this.buildUpdatePrompt(existingContent, unifiedContent, featureName, reqType, projectInfo, customPrompt) : this.buildGenerationPrompt(unifiedContent, featureName, reqType, projectInfo, customPrompt);
7475
6223
  return {
7476
6224
  requirementType: reqType,
7477
6225
  outputPath,
7478
- isUpdate
6226
+ isUpdate,
6227
+ prompt: promptData.prompt,
6228
+ systemPrompt: promptData.systemPrompt,
6229
+ templateContent: promptData.templateContent,
6230
+ templateVariables: "templateVariables" in promptData ? promptData.templateVariables : {
6231
+ featureName: featureName,
6232
+ inputContent: this.buildUnifiedContent(analysis, projectInfo, featureName, sourceInfo),
6233
+ currentTime: new Date().toISOString(),
6234
+ businessDomain: this.mapRequirementTypeToBusinessDomain(reqType),
6235
+ generateSequenceDiagram: "true",
6236
+ customPrompt
6237
+ },
6238
+ existingContent: "existingContent" in promptData ? promptData.existingContent : void 0
7479
6239
  };
7480
- });
7481
- const analysisInfos = await Promise.all(reportTasks);
7482
- const generatedFiles = analysisInfos.map((info)=>info.outputPath);
7483
- const result = this.buildAnalysisResult(analysis, projectInfo, generatedFiles[0], sourceInfo, analysisInfos[0].isUpdate, generatedFiles, analysisInfos);
7484
- logger.info("\u6240\u6709\u6280\u672F\u6587\u6863\u751F\u6210\u5B8C\u6210", {
7485
- totalFiles: generatedFiles.length,
6240
+ }));
6241
+ const generatedFiles = generationTasks.map((task)=>task.outputPath);
6242
+ const result = this.buildTaskResult(analysis, projectInfo, generatedFiles[0], sourceInfo, generationTasks[0].isUpdate, generatedFiles, generationTasks);
6243
+ logger.info("\u6587\u6863\u751F\u6210\u4EFB\u52A1\u51C6\u5907\u5B8C\u6210", {
6244
+ totalTasks: generationTasks.length,
7486
6245
  files: generatedFiles
7487
6246
  });
7488
6247
  return result;
7489
6248
  } catch (error) {
7490
6249
  if (error instanceof RequirementAnalysisError) throw error;
7491
- logger.error("\u6587\u6863\u751F\u6210\u5931\u8D25", {
6250
+ logger.error("\u6587\u6863\u751F\u6210\u4EFB\u52A1\u51C6\u5907\u5931\u8D25", {
7492
6251
  error,
7493
6252
  featureName
7494
6253
  });
7495
- throw new RequirementAnalysisError("\u6280\u672F\u6587\u6863\u751F\u6210\u8FC7\u7A0B\u4E2D\u53D1\u751F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u9700\u6C42\u5185\u5BB9\u548C\u9879\u76EE\u914D\u7F6E", types_ErrorCodes.DOCUMENT_GENERATION_FAILED, {
6254
+ throw new RequirementAnalysisError("\u6280\u672F\u6587\u6863\u751F\u6210\u4EFB\u52A1\u51C6\u5907\u8FC7\u7A0B\u4E2D\u53D1\u751F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u9700\u6C42\u5185\u5BB9\u548C\u9879\u76EE\u914D\u7F6E", types_ErrorCodes.DOCUMENT_GENERATION_FAILED, {
7496
6255
  featureName,
7497
6256
  originalError: error
7498
6257
  });
@@ -7575,21 +6334,46 @@ ${combinedFeatureContent}
7575
6334
  - **\u{5206}\u{6790}\u{65F6}\u{95F4}**: ${new Date().toISOString()}
7576
6335
  `;
7577
6336
  }
7578
- async generateDocument(content, title, requirementType, projectInfo, customPrompt) {
6337
+ async generateDocument(content, title, requirementType, projectInfo, customPrompt, outputPath) {
7579
6338
  try {
6339
+ const cacheKey = this.generateCacheKey(content, requirementType, customPrompt);
6340
+ let document = this.getCachedDocument(cacheKey);
6341
+ if (document) {
6342
+ logger.info("\u4F7F\u7528\u7F13\u5B58\u7684\u6587\u6863", {
6343
+ title,
6344
+ requirementType
6345
+ });
6346
+ return document;
6347
+ }
7580
6348
  const template = this.templateSelector.selectTemplate(requirementType);
7581
6349
  this.templateSelector.validateTemplate(template, requirementType);
7582
6350
  const fullPrompt = this.buildDocumentPrompt(template, content, title, projectInfo, customPrompt, requirementType);
7583
- const document = await openAIService.generateText({
6351
+ if (outputPath) try {
6352
+ document = await this.generateDocumentStream(fullPrompt, outputPath, title, "", {
6353
+ realTimeMode: true
6354
+ });
6355
+ } catch (streamError) {
6356
+ logger.error("\u6D41\u5F0F\u751F\u6210\u5931\u8D25\uFF0C\u5C1D\u8BD5\u4F7F\u7528\u975E\u6D41\u5F0F\u65B9\u5F0F", {
6357
+ error: streamError,
6358
+ requirementType
6359
+ });
6360
+ document = await openAIService.generateText({
6361
+ prompt: fullPrompt,
6362
+ system_prompt: "\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u6280\u672F\u6587\u6863\u7F16\u5199\u4E13\u5BB6\uFF0C\u8BF7\u751F\u6210\u5B8C\u6574\u3001\u8BE6\u7EC6\u7684\u6280\u672F\u9700\u6C42\u6587\u6863\u3002"
6363
+ });
6364
+ }
6365
+ else document = await openAIService.generateText({
7584
6366
  prompt: fullPrompt,
7585
6367
  system_prompt: "\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u6280\u672F\u6587\u6863\u7F16\u5199\u4E13\u5BB6\uFF0C\u8BF7\u751F\u6210\u5B8C\u6574\u3001\u8BE6\u7EC6\u7684\u6280\u672F\u9700\u6C42\u6587\u6863\u3002"
7586
6368
  });
7587
6369
  this.validateGeneratedDocument(document, title);
6370
+ this.saveToCache(cacheKey, document);
7588
6371
  return document;
7589
6372
  } catch (error) {
7590
6373
  logger.error("\u6280\u672F\u6587\u6863\u751F\u6210\u5931\u8D25", {
7591
6374
  error,
7592
- requirementType
6375
+ requirementType,
6376
+ title
7593
6377
  });
7594
6378
  throw new RequirementAnalysisError(`\u{65E0}\u{6CD5}\u{751F}\u{6210}${requirementType}\u{7C7B}\u{578B}\u{7684}\u{6280}\u{672F}\u{6587}\u{6863}\u{FF0C}\u{8BF7}\u{68C0}\u{67E5}\u{9700}\u{6C42}\u{63CF}\u{8FF0}\u{662F}\u{5426}\u{5B8C}\u{6574}`, types_ErrorCodes.DOCUMENT_GENERATION_FAILED, {
7595
6379
  requirementType,
@@ -7597,9 +6381,393 @@ ${combinedFeatureContent}
7597
6381
  });
7598
6382
  }
7599
6383
  }
6384
+ async generateDocumentStream(prompt, outputPath, title, initialContent = "", options) {
6385
+ const startTime = Date.now();
6386
+ const MAX_RETRY = 1;
6387
+ let retryCount = 0;
6388
+ let fullDocument = initialContent;
6389
+ let totalIOWriteCount = 0;
6390
+ let totalChunkCount = 0;
6391
+ let totalStreamTime = 0;
6392
+ let lastError = null;
6393
+ let totalChunkSize = 0;
6394
+ let chunkSizeList = [];
6395
+ let streamTimes = [];
6396
+ let ioTimes = [];
6397
+ const enablePerformanceMetrics = "production" !== process.env.NODE_ENV;
6398
+ let chunkBuffer = "";
6399
+ let currentBufferSize = options?.realTimeMode ? 100 : options?.bufferSize || 150;
6400
+ const MAX_BUFFER_SIZE = options?.realTimeMode ? 500 : 1000;
6401
+ const BUFFER_GROWTH_RATE = 1.5;
6402
+ let lastWriteTime = Date.now();
6403
+ const MIN_WRITE_INTERVAL = 50;
6404
+ while(retryCount <= MAX_RETRY){
6405
+ const streamStartTime = Date.now();
6406
+ try {
6407
+ logger.info("\u5F00\u59CB\u6D41\u5F0F\u751F\u6210\u6587\u6863", {
6408
+ outputPath,
6409
+ retryCount,
6410
+ currentLength: fullDocument.length,
6411
+ hasInitialContent: initialContent.length > 0,
6412
+ realTimeMode: options?.realTimeMode,
6413
+ bufferSize: currentBufferSize
6414
+ });
6415
+ if (0 === retryCount) await promises_namespaceObject.writeFile(outputPath, initialContent, "utf8");
6416
+ let chunkCount = 0;
6417
+ let streamStartLength = fullDocument.length;
6418
+ const actualPrompt = fullDocument.length > 0 && retryCount > 0 ? this.buildContinuationPrompt(prompt, fullDocument) : prompt;
6419
+ logger.info("\u8C03\u7528OpenAI\u6D41\u5F0FAPI", {
6420
+ promptLength: actualPrompt.length,
6421
+ isRetry: retryCount > 0,
6422
+ currentDocLength: fullDocument.length
6423
+ });
6424
+ let stream;
6425
+ try {
6426
+ stream = await openAIService.generateStream({
6427
+ prompt: actualPrompt,
6428
+ system_prompt: "\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u6280\u672F\u6587\u6863\u7F16\u5199\u4E13\u5BB6\uFF0C\u8BF7\u751F\u6210\u5B8C\u6574\u3001\u8BE6\u7EC6\u7684\u6280\u672F\u9700\u6C42\u6587\u6863\u3002"
6429
+ });
6430
+ } catch (apiError) {
6431
+ logger.error("\u8C03\u7528OpenAI API\u5931\u8D25", {
6432
+ error: apiError,
6433
+ retryCount
6434
+ });
6435
+ throw apiError;
6436
+ }
6437
+ try {
6438
+ for await (const chunk of stream){
6439
+ fullDocument += chunk;
6440
+ chunkBuffer += chunk;
6441
+ chunkCount++;
6442
+ totalChunkSize += chunk.length;
6443
+ if (enablePerformanceMetrics) chunkSizeList.push(chunk.length);
6444
+ const currentTime = Date.now();
6445
+ const timeSinceLastWrite = currentTime - lastWriteTime;
6446
+ if (options?.bufferSize) {
6447
+ if (chunkBuffer.length >= options.bufferSize) {
6448
+ await this.writeBufferToFile(outputPath, chunkBuffer, enablePerformanceMetrics, ioTimes);
6449
+ totalIOWriteCount++;
6450
+ chunkBuffer = "";
6451
+ lastWriteTime = currentTime;
6452
+ }
6453
+ } else {
6454
+ const shouldWrite = chunkBuffer.length >= currentBufferSize || timeSinceLastWrite > MIN_WRITE_INTERVAL && options?.realTimeMode;
6455
+ if (shouldWrite) {
6456
+ await this.writeBufferToFile(outputPath, chunkBuffer, enablePerformanceMetrics, ioTimes);
6457
+ totalIOWriteCount++;
6458
+ if (!options?.realTimeMode) {
6459
+ if (currentBufferSize < MAX_BUFFER_SIZE) currentBufferSize = Math.min(Math.floor(currentBufferSize * BUFFER_GROWTH_RATE), MAX_BUFFER_SIZE);
6460
+ }
6461
+ chunkBuffer = "";
6462
+ lastWriteTime = currentTime;
6463
+ }
6464
+ }
6465
+ }
6466
+ if (chunkBuffer.length > 0) {
6467
+ await this.writeBufferToFile(outputPath, chunkBuffer, enablePerformanceMetrics, ioTimes);
6468
+ totalIOWriteCount++;
6469
+ }
6470
+ const currentStreamTime = Date.now() - streamStartTime;
6471
+ if (enablePerformanceMetrics) streamTimes.push(currentStreamTime);
6472
+ totalStreamTime += currentStreamTime;
6473
+ totalChunkCount += chunkCount;
6474
+ logger.info("\u6D41\u5F0F\u6587\u6863\u751F\u6210\u5B8C\u6210", {
6475
+ outputPath,
6476
+ documentLength: fullDocument.length,
6477
+ totalChunks: chunkCount,
6478
+ totalChunkCount,
6479
+ totalIOWriteCount,
6480
+ currentStreamTime: `${currentStreamTime}ms`,
6481
+ totalStreamTime: `${totalStreamTime}ms`,
6482
+ retryCount,
6483
+ finalBufferSize: currentBufferSize
6484
+ });
6485
+ if (this.isDocumentComplete(fullDocument)) {
6486
+ this.validateGeneratedDocument(fullDocument, title);
6487
+ logger.info("\u6D41\u5F0F\u6587\u6863\u751F\u6210\u5B8C\u6210", {
6488
+ documentLength: fullDocument.length
6489
+ });
6490
+ return fullDocument;
6491
+ }
6492
+ if (fullDocument.length >= 2000) {
6493
+ logger.info("\u6587\u6863\u957F\u5EA6\u8FBE\u5230\u9608\u503C\uFF0C\u89C6\u4E3A\u5B8C\u6574", {
6494
+ documentLength: fullDocument.length
6495
+ });
6496
+ return fullDocument;
6497
+ }
6498
+ logger.warn("\u6587\u6863\u53EF\u80FD\u4E0D\u5B8C\u6574\uFF0C\u4F46\u5DF2\u8FBE\u5230\u6700\u5927\u91CD\u8BD5\u6B21\u6570", {
6499
+ documentLength: fullDocument.length
6500
+ });
6501
+ retryCount++;
6502
+ continue;
6503
+ } catch (streamError) {
6504
+ lastError = streamError;
6505
+ logger.error("\u6D41\u5F0F\u8BFB\u53D6\u8FC7\u7A0B\u4E2D\u51FA\u9519", {
6506
+ error: streamError,
6507
+ outputPath,
6508
+ currentLength: fullDocument.length,
6509
+ newContentLength: fullDocument.length - streamStartLength,
6510
+ retryCount
6511
+ });
6512
+ if (chunkBuffer.length > 0) {
6513
+ await this.writeBufferToFile(outputPath, chunkBuffer, enablePerformanceMetrics, ioTimes);
6514
+ fullDocument += chunkBuffer;
6515
+ chunkBuffer = "";
6516
+ }
6517
+ const newContentLength = fullDocument.length - streamStartLength;
6518
+ if (newContentLength > 0 && retryCount < MAX_RETRY) {
6519
+ logger.info("\u6D41\u5F0F\u751F\u6210\u4E2D\u65AD\uFF0C\u4F46\u5DF2\u4EA7\u751F\u65B0\u5185\u5BB9\uFF0C\u5C1D\u8BD5\u7EE7\u7EED\u751F\u6210", {
6520
+ newContentLength,
6521
+ totalLength: fullDocument.length,
6522
+ retryCount: retryCount + 1
6523
+ });
6524
+ retryCount++;
6525
+ continue;
6526
+ }
6527
+ logger.warn("\u6D41\u5F0F\u751F\u6210\u4E2D\u65AD\uFF0C\u4FDD\u7559\u5DF2\u751F\u6210\u5185\u5BB9", {
6528
+ currentLength: fullDocument.length,
6529
+ hasContent: fullDocument.length > 0,
6530
+ retryCount
6531
+ });
6532
+ break;
6533
+ }
6534
+ } catch (error) {
6535
+ lastError = error;
6536
+ logger.error("\u6D41\u5F0F\u6587\u6863\u751F\u6210\u5931\u8D25", {
6537
+ error,
6538
+ outputPath,
6539
+ retryCount,
6540
+ currentLength: fullDocument.length
6541
+ });
6542
+ if (chunkBuffer.length > 0) try {
6543
+ await this.writeBufferToFile(outputPath, chunkBuffer, enablePerformanceMetrics, ioTimes);
6544
+ fullDocument += chunkBuffer;
6545
+ chunkBuffer = "";
6546
+ } catch (writeError) {
6547
+ logger.error("\u5199\u5165\u7F13\u51B2\u533A\u5931\u8D25", {
6548
+ error: writeError
6549
+ });
6550
+ }
6551
+ if (fullDocument.length > 0 && retryCount < MAX_RETRY) {
6552
+ logger.info("\u5C1D\u8BD5\u91CD\u8BD5\u6D41\u5F0F\u751F\u6210", {
6553
+ currentLength: fullDocument.length
6554
+ });
6555
+ retryCount++;
6556
+ continue;
6557
+ }
6558
+ if (0 === fullDocument.length) {
6559
+ logger.error("\u6D41\u5F0F\u751F\u6210\u5B8C\u5168\u5931\u8D25\uFF0C\u6CA1\u6709\u751F\u6210\u4EFB\u4F55\u5185\u5BB9", {
6560
+ error,
6561
+ lastError
6562
+ });
6563
+ throw new RequirementAnalysisError("\u6D41\u5F0F\u6587\u6863\u751F\u6210\u5931\u8D25\uFF0C\u65E0\u6CD5\u8FDE\u63A5\u5230AI\u670D\u52A1\u6216\u751F\u6210\u5185\u5BB9", types_ErrorCodes.DOCUMENT_GENERATION_FAILED, {
6564
+ originalError: error,
6565
+ lastError,
6566
+ outputPath
6567
+ });
6568
+ }
6569
+ logger.info("\u4FDD\u7559\u5DF2\u751F\u6210\u5185\u5BB9\uFF0C\u5C1D\u8BD5\u4F7F\u7528\u975E\u6D41\u5F0F\u65B9\u5F0F\u7EE7\u7EED", {
6570
+ currentLength: fullDocument.length
6571
+ });
6572
+ break;
6573
+ }
6574
+ }
6575
+ let finalDocument = fullDocument;
6576
+ if (fullDocument.length > 0 && !this.isDocumentComplete(fullDocument)) {
6577
+ logger.info("\u4F7F\u7528\u975E\u6D41\u5F0F\u65B9\u5F0F\u7EE7\u7EED\u751F\u6210\u6587\u6863", {
6578
+ currentLength: fullDocument.length
6579
+ });
6580
+ try {
6581
+ finalDocument = await this.continueDocumentGeneration(prompt, fullDocument, outputPath);
6582
+ logger.info("\u6587\u6863\u7EED\u5199\u5B8C\u6210", {
6583
+ documentLength: finalDocument.length
6584
+ });
6585
+ } catch (continueError) {
6586
+ logger.error("\u6587\u6863\u7EED\u5199\u5931\u8D25", {
6587
+ error: continueError,
6588
+ currentLength: fullDocument.length
6589
+ });
6590
+ finalDocument = fullDocument;
6591
+ }
6592
+ }
6593
+ if (0 === finalDocument.length) {
6594
+ logger.error("\u6587\u6863\u751F\u6210\u5B8C\u5168\u5931\u8D25\uFF0C\u6CA1\u6709\u751F\u6210\u4EFB\u4F55\u5185\u5BB9", {
6595
+ lastError,
6596
+ outputPath
6597
+ });
6598
+ throw new RequirementAnalysisError("\u6587\u6863\u751F\u6210\u5931\u8D25\uFF0C\u65E0\u6CD5\u751F\u6210\u4EFB\u4F55\u5185\u5BB9\u3002\u8BF7\u68C0\u67E5AI\u670D\u52A1\u8FDE\u63A5\u6216\u7A0D\u540E\u91CD\u8BD5\u3002", types_ErrorCodes.DOCUMENT_GENERATION_FAILED, {
6599
+ originalError: lastError,
6600
+ outputPath,
6601
+ title
6602
+ });
6603
+ }
6604
+ if (enablePerformanceMetrics) {
6605
+ const totalTime = Date.now() - startTime;
6606
+ const avgIOWriteTime = totalIOWriteCount > 0 ? Math.round((totalTime - totalStreamTime) / totalIOWriteCount) : 0;
6607
+ const avgChunkSize = totalChunkCount > 0 ? Math.round(totalChunkSize / totalChunkCount) : 0;
6608
+ const avgStreamTime = streamTimes.length > 0 ? Math.round(streamTimes.reduce((a, b)=>a + b, 0) / streamTimes.length) : 0;
6609
+ const avgIOTime = ioTimes.length > 0 ? Math.round(ioTimes.reduce((a, b)=>a + b, 0) / ioTimes.length) : 0;
6610
+ const minChunkSize = chunkSizeList.length > 0 ? Math.min(...chunkSizeList) : 0;
6611
+ const maxChunkSize = chunkSizeList.length > 0 ? Math.max(...chunkSizeList) : 0;
6612
+ logger.info("\u6D41\u5F0F\u6587\u6863\u751F\u6210\u6027\u80FD\u7EDF\u8BA1", {
6613
+ outputPath,
6614
+ documentLength: finalDocument.length,
6615
+ totalChunks: totalChunkCount,
6616
+ totalIOWriteCount,
6617
+ totalTime: `${totalTime}ms`,
6618
+ totalStreamTime: `${totalStreamTime}ms`,
6619
+ avgIOWriteTime: `${avgIOWriteTime}ms/IO`,
6620
+ avgChunkSize: `${avgChunkSize}chars/chunk`,
6621
+ avgStreamTime: `${avgStreamTime}ms/call`,
6622
+ avgIOTime: `${avgIOTime}ms/IO`,
6623
+ minChunkSize: `${minChunkSize}chars`,
6624
+ maxChunkSize: `${maxChunkSize}chars`,
6625
+ bufferSize: currentBufferSize,
6626
+ retryCount
6627
+ });
6628
+ }
6629
+ return finalDocument;
6630
+ }
6631
+ async writeBufferToFile(outputPath, buffer, enablePerformanceMetrics, ioTimes) {
6632
+ const ioStartTime = Date.now();
6633
+ await promises_namespaceObject.appendFile(outputPath, buffer, "utf8");
6634
+ if (enablePerformanceMetrics) {
6635
+ const ioTime = Date.now() - ioStartTime;
6636
+ ioTimes.push(ioTime);
6637
+ }
6638
+ }
6639
+ buildContinuationPrompt(originalPrompt, existingContent) {
6640
+ return `# \u{4EFB}\u{52A1}\u{FF1A}\u{7EE7}\u{7EED}\u{5B8C}\u{6210}\u{6587}\u{6863}\u{751F}\u{6210}
6641
+
6642
+ ## \u{539F}\u{59CB}\u{9700}\u{6C42}
6643
+ ${originalPrompt}
6644
+
6645
+ ## \u{5DF2}\u{751F}\u{6210}\u{7684}\u{5185}\u{5BB9}
6646
+ \u{3010}\u{3010}\u{3010}\u{5DF2}\u{5B8C}\u{6210}\u{90E8}\u{5206}\u{5F00}\u{59CB}\u{3011}\u{3011}\u{3011}
6647
+ ${existingContent}
6648
+ \u{3010}\u{3010}\u{3010}\u{5DF2}\u{5B8C}\u{6210}\u{90E8}\u{5206}\u{7ED3}\u{675F}\u{3011}\u{3011}\u{3011}
6649
+
6650
+ ## \u{7EE7}\u{7EED}\u{8981}\u{6C42}
6651
+ \u{8BF7}\u{4ECE}\u{4E0A}\u{8FF0}\u{5185}\u{5BB9}\u{7684}\u{7ED3}\u{5C3E}\u{5904}\u{7EE7}\u{7EED}\u{751F}\u{6210}\u{FF0C}\u{5B8C}\u{6210}\u{5269}\u{4F59}\u{7684}\u{6587}\u{6863}\u{5185}\u{5BB9}\u{3002}\u{6CE8}\u{610F}\u{FF1A}
6652
+ 1. \u{4E0D}\u{8981}\u{91CD}\u{590D}\u{5DF2}\u{751F}\u{6210}\u{7684}\u{5185}\u{5BB9}
6653
+ 2. \u{4FDD}\u{6301}\u{6587}\u{6863}\u{7ED3}\u{6784}\u{7684}\u{8FDE}\u{8D2F}\u{6027}
6654
+ 3. \u{786E}\u{4FDD}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}
6655
+ 4. \u{76F4}\u{63A5}\u{4ECE}\u{4E2D}\u{65AD}\u{5904}\u{7EE7}\u{7EED}\u{FF0C}\u{4E0D}\u{8981}\u{6DFB}\u{52A0}\u{4EFB}\u{4F55}\u{8BF4}\u{660E}\u{6027}\u{6587}\u{5B57}
6656
+
6657
+ \u{8BF7}\u{7EE7}\u{7EED}\u{751F}\u{6210}\u{FF1A}`;
6658
+ }
6659
+ isDocumentComplete(document) {
6660
+ const hasEnding = document.includes("## \u66F4\u65B0\u65E5\u5FD7") || document.includes("---\n\n**") || document.trim().endsWith("---") || document.trim().endsWith("\u3002") || document.trim().endsWith("\uFF09");
6661
+ const hasReasonableLength = document.length >= 1000;
6662
+ return hasEnding && hasReasonableLength;
6663
+ }
6664
+ async continueDocumentGeneration(originalPrompt, existingContent, outputPath) {
6665
+ try {
6666
+ const continuationPrompt = this.buildContinuationPrompt(originalPrompt, existingContent);
6667
+ logger.info("\u4F7F\u7528\u975E\u6D41\u5F0FAPI\u7EE7\u7EED\u751F\u6210", {
6668
+ existingLength: existingContent.length
6669
+ });
6670
+ const continuedPart = await openAIService.generateText({
6671
+ prompt: continuationPrompt,
6672
+ system_prompt: "\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u6280\u672F\u6587\u6863\u7F16\u5199\u4E13\u5BB6\uFF0C\u8BF7\u7EE7\u7EED\u5B8C\u6210\u6587\u6863\u7684\u5269\u4F59\u90E8\u5206\u3002"
6673
+ });
6674
+ await promises_namespaceObject.appendFile(outputPath, continuedPart, "utf8");
6675
+ const fullDocument = existingContent + continuedPart;
6676
+ logger.info("\u6587\u6863\u7EED\u5199\u5B8C\u6210", {
6677
+ originalLength: existingContent.length,
6678
+ continuedLength: continuedPart.length,
6679
+ totalLength: fullDocument.length
6680
+ });
6681
+ return fullDocument;
6682
+ } catch (error) {
6683
+ logger.error("\u6587\u6863\u7EED\u5199\u5931\u8D25", {
6684
+ error,
6685
+ existingLength: existingContent.length
6686
+ });
6687
+ logger.warn("\u8FD4\u56DE\u5DF2\u751F\u6210\u7684\u90E8\u5206\u5185\u5BB9", {
6688
+ length: existingContent.length
6689
+ });
6690
+ return existingContent;
6691
+ }
6692
+ }
6693
+ buildGenerationPrompt(content, title, requirementType, projectInfo, customPrompt) {
6694
+ const template = this.templateSelector.selectTemplate(requirementType);
6695
+ this.templateSelector.validateTemplate(template, requirementType);
6696
+ const businessDomain = this.mapRequirementTypeToBusinessDomain(requirementType);
6697
+ const templateVariables = {
6698
+ featureName: title,
6699
+ inputContent: content,
6700
+ currentTime: new Date().toISOString(),
6701
+ businessDomain,
6702
+ generateSequenceDiagram: "true",
6703
+ generateERDiagram: "true",
6704
+ customPrompt
6705
+ };
6706
+ let prompt = template;
6707
+ if (customPrompt) prompt += `
6708
+
6709
+ ## \u{81EA}\u{5B9A}\u{4E49}\u{8981}\u{6C42}
6710
+ ${customPrompt}`;
6711
+ return {
6712
+ prompt,
6713
+ systemPrompt: "\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u6280\u672F\u6587\u6863\u7F16\u5199\u4E13\u5BB6\uFF0C\u8BF7\u751F\u6210\u5B8C\u6574\u3001\u8BE6\u7EC6\u7684\u6280\u672F\u9700\u6C42\u6587\u6863\u3002",
6714
+ templateContent: template,
6715
+ templateVariables
6716
+ };
6717
+ }
6718
+ buildUpdatePrompt(existingContent, newContent, title, requirementType, projectInfo, customPrompt) {
6719
+ const template = this.templateSelector.selectTemplate(requirementType);
6720
+ const businessDomain = this.mapRequirementTypeToBusinessDomain(requirementType);
6721
+ const templateVariables = {
6722
+ featureName: title,
6723
+ inputContent: newContent,
6724
+ currentTime: new Date().toISOString(),
6725
+ businessDomain,
6726
+ generateSequenceDiagram: "true",
6727
+ generateERDiagram: "true",
6728
+ customPrompt,
6729
+ existingContent
6730
+ };
6731
+ const prompt = `
6732
+ # \u{4EFB}\u{52A1}\u{FF1A}\u{667A}\u{80FD}\u{66F4}\u{65B0}\u{9700}\u{6C42}\u{5206}\u{6790}\u{62A5}\u{544A}
6733
+
6734
+ ## \u{5DF2}\u{5B58}\u{5728}\u{7684}\u{62A5}\u{544A}\u{5185}\u{5BB9}\u{FF1A}
6735
+ \u{3010}\u{3010}\u{3010}\u{65E7}\u{5185}\u{5BB9}\u{5F00}\u{59CB}\u{3011}\u{3011}\u{3011}
6736
+ ${existingContent}
6737
+ \u{3010}\u{3010}\u{3010}\u{65E7}\u{5185}\u{5BB9}\u{7ED3}\u{675F}\u{3011}\u{3011}\u{3011}
6738
+
6739
+ ## \u{65B0}\u{589E}\u{7684}\u{9700}\u{6C42}\u{4FE1}\u{606F}\u{FF1A}
6740
+ \u{3010}\u{3010}\u{3010}\u{65B0}\u{5185}\u{5BB9}\u{5F00}\u{59CB}\u{3011}\u{3011}\u{3011}
6741
+ ${newContent}
6742
+ \u{3010}\u{3010}\u{3010}\u{65B0}\u{5185}\u{5BB9}\u{7ED3}\u{675F}\u{3011}\u{3011}
6743
+
6744
+ ## \u{66F4}\u{65B0}\u{8981}\u{6C42}\u{FF1A}
6745
+ 1. **\u{667A}\u{80FD}\u{5408}\u{5E76}**\u{FF1A}\u{5C06}\u{65B0}\u{5185}\u{5BB9}\u{4E0E}\u{65E7}\u{5185}\u{5BB9}\u{8FDB}\u{884C}\u{667A}\u{80FD}\u{5408}\u{5E76}\u{FF0C}\u{4E0D}\u{662F}\u{7B80}\u{5355}\u{8986}\u{76D6}
6746
+ 2. **\u{4FDD}\u{7559}\u{6709}\u{6548}\u{4FE1}\u{606F}**\u{FF1A}\u{4FDD}\u{7559}\u{65E7}\u{62A5}\u{544A}\u{4E2D}\u{4ECD}\u{7136}\u{6709}\u{6548}\u{7684}\u{5185}\u{5BB9}
6747
+ 3. **\u{66F4}\u{65B0}\u{53D8}\u{5316}\u{9879}**\u{FF1A}\u{5982}\u{679C}\u{65B0}\u{5185}\u{5BB9}\u{4E0E}\u{65E7}\u{5185}\u{5BB9}\u{6709}\u{51B2}\u{7A81}\u{FF0C}\u{4EE5}\u{65B0}\u{5185}\u{5BB9}\u{4E3A}\u{51C6}
6748
+ 4. **\u{589E}\u{91CF}\u{6DFB}\u{52A0}**\u{FF1A}\u{5982}\u{679C}\u{662F}\u{65B0}\u{589E}\u{529F}\u{80FD}\u{70B9}\u{FF0C}\u{5219}\u{6DFB}\u{52A0}\u{5230}\u{539F}\u{6709}\u{529F}\u{80FD}\u{70B9}\u{5217}\u{8868}\u{4E2D}
6749
+ 5. **\u{4FDD}\u{6301}\u{7ED3}\u{6784}**\u{FF1A}\u{4FDD}\u{6301}\u{539F}\u{6709}\u{62A5}\u{544A}\u{7684}\u{6587}\u{6863}\u{7ED3}\u{6784}\u{548C}\u{683C}\u{5F0F}
6750
+ 6. **\u{6DFB}\u{52A0}\u{66F4}\u{65B0}\u{8BB0}\u{5F55}**\u{FF1A}\u{5728}\u{6587}\u{6863}\u{672B}\u{5C3E}\u{6DFB}\u{52A0}\u{66F4}\u{65B0}\u{65E5}\u{5FD7}\u{FF0C}\u{8BB0}\u{5F55}\u{672C}\u{6B21}\u{66F4}\u{65B0}\u{7684}\u{5185}\u{5BB9}
6751
+
6752
+ ## \u{6280}\u{672F}\u{6A21}\u{677F}\u{53C2}\u{8003}\u{FF1A}
6753
+ ${template}
6754
+
6755
+ ${customPrompt ? `## \u{81EA}\u{5B9A}\u{4E49}\u{8981}\u{6C42}\u{FF1A}
6756
+ ${customPrompt}` : ""}
6757
+
6758
+ \u{8BF7}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}\u{66F4}\u{65B0}\u{540E}\u{7684}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{3002}
6759
+ `;
6760
+ return {
6761
+ prompt,
6762
+ systemPrompt: "\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u6280\u672F\u6587\u6863\u7F16\u5199\u4E13\u5BB6\uFF0C\u64C5\u957F\u667A\u80FD\u5408\u5E76\u548C\u66F4\u65B0\u6280\u672F\u6587\u6863\u3002\u8BF7\u4FDD\u6301\u6587\u6863\u7684\u4E13\u4E1A\u6027\u548C\u5B8C\u6574\u6027\u3002",
6763
+ templateContent: template,
6764
+ templateVariables,
6765
+ existingContent
6766
+ };
6767
+ }
7600
6768
  buildDocumentPrompt(template, content, title, projectInfo, customPrompt, requirementType) {
7601
6769
  const businessDomain = this.mapRequirementTypeToBusinessDomain(requirementType);
7602
- let prompt = template.replace(/\{featureName\}/g, title).replace(/\{inputContent\}/g, content).replace(/\{currentTime\}/g, new Date().toISOString()).replace(/\{businessDomain\}/g, businessDomain).replace(/\{generateSequenceDiagram\}/g, "true");
6770
+ let prompt = template.replace(/\{featureName\}/g, title).replace(/\{inputContent\}/g, content).replace(/\{currentTime\}/g, new Date().toISOString()).replace(/\{businessDomain\}/g, businessDomain).replace(/\{generateSequenceDiagram\}/g, "true").replace(/\{generateERDiagram\}/g, "true");
7603
6771
  if (customPrompt) prompt += `
7604
6772
 
7605
6773
  ## \u{81EA}\u{5B9A}\u{4E49}\u{8981}\u{6C42}
@@ -7627,7 +6795,7 @@ ${customPrompt}`;
7627
6795
  return false;
7628
6796
  }
7629
6797
  }
7630
- async updateExistingDocument(existingContent, newContent, title, requirementType, projectInfo, customPrompt) {
6798
+ async updateExistingDocument(existingContent, newContent, title, requirementType, projectInfo, customPrompt, outputPath) {
7631
6799
  try {
7632
6800
  logger.info("\u5F00\u59CB\u667A\u80FD\u5408\u5E76\u66F4\u65B0\u6587\u6863", {
7633
6801
  title
@@ -7662,6 +6830,9 @@ ${customPrompt}` : ""}
7662
6830
 
7663
6831
  \u{8BF7}\u{751F}\u{6210}\u{5B8C}\u{6574}\u{7684}\u{66F4}\u{65B0}\u{540E}\u{7684}\u{6280}\u{672F}\u{9700}\u{6C42}\u{6587}\u{6863}\u{3002}
7664
6832
  `;
6833
+ if (outputPath) return await this.generateDocumentStream(updatePrompt, outputPath, title, "", {
6834
+ realTimeMode: true
6835
+ });
7665
6836
  const updatedDocument = await openAIService.generateText({
7666
6837
  prompt: updatePrompt,
7667
6838
  system_prompt: "\u4F60\u662F\u4E00\u4F4D\u4E13\u4E1A\u7684\u6280\u672F\u6587\u6863\u7F16\u5199\u4E13\u5BB6\uFF0C\u64C5\u957F\u667A\u80FD\u5408\u5E76\u548C\u66F4\u65B0\u6280\u672F\u6587\u6863\u3002\u8BF7\u4FDD\u6301\u6587\u6863\u7684\u4E13\u4E1A\u6027\u548C\u5B8C\u6574\u6027\u3002"
@@ -7690,6 +6861,9 @@ ${customPrompt}` : ""}
7690
6861
  if (!document.includes(title)) logger.warn("\u751F\u6210\u7684\u6587\u6863\u53EF\u80FD\u4E0E\u9700\u6C42\u6807\u9898\u4E0D\u5339\u914D", {
7691
6862
  title
7692
6863
  });
6864
+ if (document.includes("## 3.1 ER\u903B\u8F91\u56FE\u8BBE\u8BA1") && !document.includes("erDiagram") && !document.includes("entity")) logger.warn("\u751F\u6210\u7684\u6587\u6863\u53EF\u80FD\u7F3A\u5C11ER\u56FE\u5185\u5BB9", {
6865
+ title
6866
+ });
7693
6867
  }
7694
6868
  buildAnalysisResult(analysis, projectInfo, outputPath, sourceInfo, isUpdate = false, generatedFiles, analysisInfos) {
7695
6869
  const featuresToProcess = analysis.featureDependencies?.mergedFeatures || analysis.requirements;
@@ -7707,11 +6881,13 @@ ${customPrompt}` : ""}
7707
6881
  return {
7708
6882
  success: true,
7709
6883
  message: `
7710
- # ${operationIcon} \u{9700}\u{6C42}\u{5206}\u{6790}\u{62A5}\u{544A}\u{5DF2}${operationType}
6884
+ # ${operationIcon} \u{9700}\u{6C42}\u{5206}\u{6790}\u{62A5}\u{544A}\u{5DF2}\u{5F00}\u{59CB}${operationType}\u{FF08}\u{6D41}\u{5F0F}\u{8F93}\u{51FA}\u{FF09}
7711
6885
 
7712
6886
  ## \u{1F4C4} \u{62A5}\u{544A}\u{5730}\u{5740}
7713
6887
  ${reportAddresses}
7714
6888
 
6889
+ \u{FFFD} **\u{63D0}\u{793A}\u{544A}**: \u{6587}\u{6863}\u{6B63}\u{5728}\u{5B9E}\u{65F6}\u{751F}\u{6210}\u{4E2D}\u{FF0C}\u{60A8}\u{53EF}\u{4EE5}\u{7ACB}\u{5373}\u{6253}\u{5F00}\u{4E0A}\u{8FF0}\u{6587}\u{4EF6}\u{67E5}\u{770B}\u{751F}\u{6210}\u{8FDB}\u{5EA6}\u{3002}\u{6587}\u{6863}\u{5185}\u{5BB9}\u{4F1A}\u{81EA}\u{52A8}\u{5237}\u{65B0}\u{663E}\u{793A}\u{3002}
6890
+
7715
6891
  ## \u{1F4CA} \u{62A5}\u{544A}\u{603B}\u{7ED3}
7716
6892
  - **\u{9700}\u{6C42}\u{7C7B}\u{578B}**: ${analysis.requirementType}
7717
6893
  - **\u{751F}\u{6210}\u{62A5}\u{544A}\u{6570}**: ${allAbsolutePaths.length} \u{4EFD}
@@ -7762,6 +6938,71 @@ ${featuresToProcess.map((f, i)=>{
7762
6938
  }
7763
6939
  };
7764
6940
  }
6941
+ buildTaskResult(analysis, projectInfo, outputPath, sourceInfo, isUpdate = false, generatedFiles, generationTasks) {
6942
+ const featuresToProcess = analysis.featureDependencies?.mergedFeatures || analysis.requirements;
6943
+ const absolutePath = external_path_default().resolve(outputPath);
6944
+ const allGeneratedFiles = generatedFiles || [
6945
+ absolutePath
6946
+ ];
6947
+ const allAbsolutePaths = allGeneratedFiles.map((f)=>external_path_default().resolve(f));
6948
+ return {
6949
+ success: true,
6950
+ message: `
6951
+ # \u{1F4CB} \u{9700}\u{6C42}\u{5206}\u{6790}\u{62A5}\u{544A}\u{751F}\u{6210}\u{4EFB}\u{52A1}\u{5DF2}\u{51C6}\u{5907}
6952
+
6953
+ ## \u{1F4CA} \u{4EFB}\u{52A1}\u{6982}\u{89C8}
6954
+ - **\u{9700}\u{6C42}\u{7C7B}\u{578B}**: ${analysis.requirementType}
6955
+ - **\u{62A5}\u{544A}\u{6570}\u{91CF}**: ${allAbsolutePaths.length} \u{4EFD}
6956
+ - **\u{529F}\u{80FD}\u{70B9}\u{6570}\u{91CF}**: ${featuresToProcess.length} \u{4E2A}
6957
+ - **\u{64CD}\u{4F5C}\u{7C7B}\u{578B}**: ${isUpdate ? "\u589E\u91CF\u66F4\u65B0" : "\u65B0\u5EFA"}
6958
+
6959
+ ## \u{1F3AF} \u{529F}\u{80FD}\u{70B9}\u{6E05}\u{5355}
6960
+ ${featuresToProcess.map((f, i)=>{
6961
+ const featureTitle = "title" in f ? f.title : f.featureName;
6962
+ const priority = "priority" in f ? f.priority : "medium";
6963
+ const complexity = "complexity" in f ? f.complexity : f.estimatedComplexity;
6964
+ return `${i + 1}. **${featureTitle}** - ${priority}\u{4F18}\u{5148}\u{7EA7} | ${complexity}\u{590D}\u{6742}\u{5EA6}`;
6965
+ }).join("\n")}
6966
+
6967
+ ## \u{1F4DD} \u{751F}\u{6210}\u{4EFB}\u{52A1}
6968
+
6969
+ ${generationTasks?.map((task, i)=>`
6970
+ ### \u{4EFB}\u{52A1}${i + 1}\u{FF1A}${task.requirementType}\u{62A5}\u{544A}
6971
+
6972
+ **\u{6587}\u{4EF6}\u{8DEF}\u{5F84}**: \`${task.outputPath}\`
6973
+ **\u{64CD}\u{4F5C}\u{7C7B}\u{578B}**: ${task.isUpdate ? "\u589E\u91CF\u66F4\u65B0" : "\u65B0\u5EFA"}
6974
+
6975
+ \u{8BF7}\u{4F7F}\u{7528}\u{6D41}\u{5F0F}\u{8F93}\u{51FA}\u{65B9}\u{5F0F}\u{751F}\u{6210}\u{6587}\u{6863}\u{5185}\u{5BB9}\u{5E76}\u{5B9E}\u{65F6}\u{5199}\u{5165}\u{6587}\u{4EF6}\u{3002}
6976
+ `).join("\n")}
6977
+
6978
+ ---
6979
+
6980
+ **\u{8F93}\u{5165}\u{6765}\u{6E90}**: ${sourceInfo}
6981
+ **\u{4EFB}\u{52A1}\u{521B}\u{5EFA}\u{65F6}\u{95F4}**: ${new Date().toLocaleString("zh-CN")}
6982
+
6983
+ ## \u{26A0}\u{FE0F} \u{6267}\u{884C}\u{8BF4}\u{660E}
6984
+
6985
+ 1. **\u{7531}IDE\u{6267}\u{884C}**: \u{8FD9}\u{4E9B}\u{751F}\u{6210}\u{4EFB}\u{52A1}\u{5C06}\u{7531}Kiro IDE\u{81EA}\u{52A8}\u{6267}\u{884C}
6986
+ 2. **\u{6D41}\u{5F0F}\u{8F93}\u{51FA}**: \u{4F7F}\u{7528}\u{6D41}\u{5F0F}\u{65B9}\u{5F0F}\u{751F}\u{6210}\u{FF0C}\u{5B9E}\u{65F6}\u{5199}\u{5165}\u{6587}\u{4EF6}
6987
+ 3. **\u{5B9E}\u{65F6}\u{67E5}\u{770B}**: \u{53EF}\u{4EE5}\u{968F}\u{65F6}\u{6253}\u{5F00}\u{6587}\u{4EF6}\u{67E5}\u{770B}\u{751F}\u{6210}\u{8FDB}\u{5EA6}
6988
+ 4. **\u{9519}\u{8BEF}\u{5904}\u{7406}**: \u{5982}\u{679C}\u{751F}\u{6210}\u{5931}\u{8D25}\u{FF0C}\u{5DF2}\u{751F}\u{6210}\u{7684}\u{5185}\u{5BB9}\u{4F1A}\u{88AB}\u{4FDD}\u{7559}
6989
+ `.trim(),
6990
+ outputPath: absolutePath,
6991
+ generatedFiles: allAbsolutePaths,
6992
+ analysisInfo: {
6993
+ requirementType: analysis.requirementType,
6994
+ recommendedTemplate: analysis.templateRecommendation.primaryTemplate,
6995
+ featureCount: featuresToProcess.length,
6996
+ projectType: projectInfo?.projectType,
6997
+ generatedReports: generationTasks?.map((task)=>({
6998
+ requirementType: task.requirementType,
6999
+ outputPath: task.outputPath,
7000
+ isUpdate: task.isUpdate
7001
+ }))
7002
+ },
7003
+ generationTasks: generationTasks
7004
+ };
7005
+ }
7765
7006
  }
7766
7007
  class RequirementAnalyzerService {
7767
7008
  intelligentAnalyzer = new IntelligentAnalyzer();
@@ -7971,11 +7212,12 @@ ${featuresToProcess.map((f, i)=>{
7971
7212
  type: "text",
7972
7213
  text: JSON.stringify({
7973
7214
  success: true,
7974
- message: serviceResult.message || "\u9700\u6C42\u5206\u6790\u5B8C\u6210",
7215
+ message: serviceResult.message || "\u9700\u6C42\u5206\u6790\u4EFB\u52A1\u5DF2\u51C6\u5907",
7975
7216
  data: {
7976
7217
  outputPath: serviceResult.outputPath,
7977
7218
  generatedFiles: serviceResult.generatedFiles || [],
7978
- analysisInfo: serviceResult.analysisInfo || {}
7219
+ analysisInfo: serviceResult.analysisInfo || {},
7220
+ generationTasks: serviceResult.generationTasks || []
7979
7221
  }
7980
7222
  })
7981
7223
  }
@@ -7990,8 +7232,9 @@ ${featuresToProcess.map((f, i)=>{
7990
7232
  success: false,
7991
7233
  message: error.message || "\u9700\u6C42\u5206\u6790\u8FC7\u7A0B\u4E2D\u53D1\u751F\u9519\u8BEF",
7992
7234
  data: {
7993
- code: error.code || "UNKNOWN_ERROR",
7994
- context: error.context || null
7235
+ code: error.code || "\u672A\u77E5\u5F02\u5E38\u9700\u8981\u91CD\u65B0\u8C03\u7528\u667A\u80FD\u4F53",
7236
+ context: error.context || null,
7237
+ prompt: "\u68C0\u67E5\u62A5\u544A\u5B8C\u6574\u6027\uFF0C\u5982\u679C\u4E0D\u5B8C\u6574\u8865\u5168\u7F3A\u5C11\u7684\u4FE1\u606F\uFF0C\u5982\u679C\u5B8C\u6574\u8F93\u51FA\u4E00\u4E2A100\u5B57\u7684\u62A5\u544A\u5185\u5BB9\u6458\u8981"
7995
7238
  }
7996
7239
  })
7997
7240
  }
@@ -10657,15 +9900,12 @@ ${user_input}
10657
9900
  - \u{6839}\u{636E}\u{5145}\u{5206}\u{4E86}\u{89E3}\u{5230}\u{7684}\u{4FE1}\u{606F}\u{FF0C}\u{6E05}\u{6670}\u{5B8C}\u{6574}\u{7684}\u{590D}\u{8FF0}\u{7528}\u{6237}\u{9700}\u{6C42}\u{FF0C}\u{5E76}\u{7ED9}\u{51FA}\u{4E00}\u{4E2A}\u{9AD8}\u{5EA6}\u{6D53}\u{7F29}\u{7684}\u{3001}\u{7ED3}\u{8BBA}\u{6027}\u{7684}\u{6838}\u{5FC3}\u{89C2}\u{70B9}
10658
9901
 
10659
9902
  **\u{4F7F}\u{7528}\u{5DE5}\u{5177}\u{FF1A}**
10660
- ${project_context ? `
9903
+ ${`
10661
9904
  1. \u{4F7F}\u{7528} readFile \u{8BFB}\u{53D6}\u{9879}\u{76EE}\u{6839}\u{76EE}\u{5F55}\u{7684} CLAUDE.md \u{6587}\u{4EF6}\u{FF0C}\u{83B7}\u{53D6}\u{9879}\u{76EE}\u{67B6}\u{6784}\u{7D22}\u{5F15}
10662
- 2. \u{57FA}\u{4E8E} CLAUDE.md \u{7D22}\u{5F15}\u{FF0C}\u{5FEB}\u{901F}\u{5B9A}\u{4F4D}\u{5230}\u{4E0E}\u{9700}\u{6C42}\u{76F8}\u{5173}\u{7684}\u{6A21}\u{5757}
9905
+ 2. \u{57FA}\u{4E8E} CLAUDE.md \u{7D22}\u{5F15}\u{FF0C}\u{5FEB}\u{901F}\u{5B9A}\u{4F4D}\u{5230}\u{4E0E}\u{9700}\u{6C42}\u{76F8}\u{5173}\u{7684}\u{6A21}\u{5757}\u{4EE5}\u{53CA}\u{53EF}\u{4EE5}\u{4F7F}\u{7528}\u{7684}\u{7EC4}\u{4EF6}\u{6216}\u{6A21}\u{5757}
10663
9906
  3. \u{4F7F}\u{7528} grepSearch \u{5728}\u{7279}\u{5B9A}\u{6A21}\u{5757}\u{76EE}\u{5F55}\u{4E0B}\u{641C}\u{7D22}\u{76F8}\u{5173}\u{529F}\u{80FD}\u{5B9E}\u{73B0}
10664
9907
  4. \u{4F7F}\u{7528} readFile \u{8BFB}\u{53D6}\u{5173}\u{952E}\u{914D}\u{7F6E}\u{6587}\u{4EF6}\u{4E86}\u{89E3}\u{9879}\u{76EE}\u{8BBE}\u{7F6E}
10665
- 5. \u{6839}\u{636E}\u{9879}\u{76EE}\u{4E2D}\u{4E0E}\u{9700}\u{6C42}\u{76F8}\u{5173}\u{7684}\u{6A21}\u{5757}\u{7EC4}\u{4EF6}\u{4EE3}\u{7801}\u{4E0E}\u{7528}\u{6237}\u{8F93}\u{5165}\u{7684}\u{9700}\u{6C42}\u{8FDB}\u{884C}\u{6574}\u{5408}\u{FF0C}\u{603B}\u{7ED3}\u{51FA}\u{5B8C}\u{6574}\u{7684}\u{9700}\u{6C42}
10666
- ` : `
10667
- 1. \u{57FA}\u{4E8E}\u{901A}\u{7528}\u{6700}\u{4F73}\u{5B9E}\u{8DF5}\u{8FDB}\u{884C}\u{9700}\u{6C42}\u{5206}\u{6790}
10668
- 2. \u{641C}\u{7D22}\u{76F8}\u{5173}\u{6280}\u{672F}\u{6587}\u{6863}\u{548C}\u{6700}\u{4F73}\u{5B9E}\u{8DF5}
9908
+ 5. \u{6839}\u{636E}\u{9879}\u{76EE}\u{4E2D}\u{4E0E}\u{9700}\u{6C42}\u{76F8}\u{5173}\u{7684}\u{6A21}\u{5757}\u{7EC4}\u{4EF6}\u{4E0E}\u{7528}\u{6237}\u{8F93}\u{5165}\u{7684}\u{9700}\u{6C42}\u{8FDB}\u{884C}\u{6574}\u{5408}\u{FF0C}\u{7528}\u{4E8E}\u{540E}\u{7EED}\u{65B9}\u{6848}\u{8BBE}\u{8BA1}
10669
9909
  `}
10670
9910
 
10671
9911
  ### 2. \u{573A}\u{666F}\u{8BC6}\u{522B}
@@ -10690,6 +9930,8 @@ ${project_context ? `
10690
9930
  ### 4. \u{65B9}\u{6848}\u{8BBE}\u{8BA1}
10691
9931
  **\u{6267}\u{884C}\u{6B65}\u{9AA4}\u{FF1A}**
10692
9932
  - \u{65B9}\u{6848}\u{8BBE}\u{8BA1}\u{4F18}\u{5148}\u{590D}\u{7528}\u{73B0}\u{6709}\u{65B9}\u{6848}\u{FF0C}\u{7EC4}\u{4EF6}\u{FF0C}\u{5DE5}\u{5177}\u{65B9}\u{6CD5}\u{7B49}\u{FF0C}\u{80FD}\u{590D}\u{7528}\u{7684}\u{5C3D}\u{53EF}\u{80FD}\u{590D}\u{7528}
9933
+ - \u{5982}\u{679C}\u{662F}\u{540E}\u{7AEF}\u{670D}\u{52A1}\u{FF0C}\u{67E5}\u{8BE2}\u{5E76}\u{660E}\u{786E}\u{4F7F}\u{7528}\u{7684}\u{6570}\u{636E}\u{5E93}\u{7C7B}\u{578B}\u{FF0C}\u{4E2D}\u{95F4}\u{4EF6}\u{6280}\u{672F}\u{FF1A}kafka\u{3001}redis \u{7B49}
9934
+ - \u{5982}\u{679C}\u{662F}APP\u{7C7B}\u{578B}\u{7684}APP/SDK \u{68C0}\u{67E5}\u{5DF2}\u{6709}\u{5B9E}\u{73B0}\u{60C5}\u{51B5}\u{FF0C}\u{5E76}\u{4E86}\u{89E3}\u{4E0E}\u{5E94}\u{7528}\u{573A}\u{666F}\u{7684}\u{5339}\u{914D}\u{5EA6}\u{FF0C}\u{907F}\u{514D}\u{4E0D}\u{5FC5}\u{8981}\u{7684}\u{91CD}\u{6784}\u{FF08}\u{6216}\u{8005}\u{5F15}\u{5165}\u{65B0}SDK\u{FF0C}\u{65B0}SDK\u{4E0E}\u{73B0}\u{6709}\u{4E1A}\u{52A1}\u{9694}\u{79BB}\u{6027}\u{8F83}\u{5F3A}\u{FF09}
10693
9935
  - \u{626B}\u{63CF}\u{9879}\u{76EE}\u{4E2D}\u{4F7F}\u{7528}\u{7684}\u{6D4B}\u{8BD5}\u{6846}\u{67B6}\u{548C}\u{811A}\u{672C}\u{FF0C}\u{751F}\u{6210}\u{672C}\u{6B21}\u{9700}\u{6C42}\u{7684}\u{6D4B}\u{8BD5}\u{811A}\u{672C}\u{FF0C}\u{5982}\u{679C}\u{4E0D}\u{5B58}\u{5728}\u{6D4B}\u{8BD5}\u{811A}\u{672C}\u{FF0C}\u{5219}\u{7F16}\u{5199}\u{6D4B}\u{8BD5}\u{811A}\u{672C}\u{5230}.aico/tests\u{4E0B}\u{9762}
10694
9936
 
10695
9937
  **\u{4F7F}\u{7528}\u{5DE5}\u{5177}\u{FF1A}** grepSearch, readFile \u{67E5}\u{627E}\u{73B0}\u{6709}\u{7EC4}\u{4EF6}\u{548C}\u{5DE5}\u{5177}