intention-coding 0.3.8 → 0.4.1

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 (51) hide show
  1. package/package.json +1 -1
  2. package/dist/db/file-storage.js +0 -638
  3. package/dist/index.js +0 -26
  4. package/dist/server/index.js +0 -88
  5. package/dist/services/bug-fix-agent/index.js +0 -320
  6. package/dist/services/change-summarizer/index.js +0 -123
  7. package/dist/services/change-summarizer/prompt/change-analysis.js +0 -56
  8. package/dist/services/code-generator/index.js +0 -403
  9. package/dist/services/code-generator/stages/execution-stage.js +0 -549
  10. package/dist/services/code-generator/stages/ideation-stage.js +0 -267
  11. package/dist/services/code-generator/stages/optimization-stage.js +0 -334
  12. package/dist/services/code-generator/stages/planning-stage.js +0 -295
  13. package/dist/services/code-generator/stages/research-stage.js +0 -283
  14. package/dist/services/code-generator/stages/review-stage.js +0 -270
  15. package/dist/services/code-generator/types.js +0 -37
  16. package/dist/services/code-generator/utils/instruction-executor.js +0 -207
  17. package/dist/services/code-generator/workflow-manager.js +0 -252
  18. package/dist/services/image-analysis/analyzer.js +0 -530
  19. package/dist/services/image-analysis/index.js +0 -406
  20. package/dist/services/image-analysis/types.js +0 -46
  21. package/dist/services/image-converter/converter.js +0 -310
  22. package/dist/services/image-converter/index.js +0 -262
  23. package/dist/services/image-converter/types.js +0 -31
  24. package/dist/services/integrated-generator/index.js +0 -1297
  25. package/dist/services/pdf2md/index.js +0 -180
  26. package/dist/services/project-template/index.js +0 -83
  27. package/dist/services/project-template/prompt/project-rules.js +0 -98
  28. package/dist/services/requirement-analyzer/chunk-reader.js +0 -218
  29. package/dist/services/requirement-analyzer/core/document-generator.js +0 -254
  30. package/dist/services/requirement-analyzer/core/intelligent-analyzer.js +0 -169
  31. package/dist/services/requirement-analyzer/core/project-analyzer.js +0 -199
  32. package/dist/services/requirement-analyzer/core/requirement-analyzer-service.js +0 -191
  33. package/dist/services/requirement-analyzer/core/template-selector.js +0 -124
  34. package/dist/services/requirement-analyzer/core/types.js +0 -23
  35. package/dist/services/requirement-analyzer/index.js +0 -177
  36. package/dist/services/requirement-analyzer/prompt/api-template.js +0 -302
  37. package/dist/services/requirement-analyzer/prompt/app-template.js +0 -455
  38. package/dist/services/requirement-analyzer/prompt/intelligent-requirement-analysis.js +0 -92
  39. package/dist/services/requirement-analyzer/prompt/pc-page-template.js +0 -582
  40. package/dist/services/requirement-analyzer/prompt/requirement-analysis.js +0 -664
  41. package/dist/services/requirement-analyzer/prompt/sdk-template.js +0 -582
  42. package/dist/services/requirement-analyzer/utils/file-reader.js +0 -169
  43. package/dist/services/world2md/index.js +0 -157
  44. package/dist/types/index.js +0 -2
  45. package/dist/utils/common.js +0 -72
  46. package/dist/utils/config.js +0 -163
  47. package/dist/utils/context-manager.js +0 -114
  48. package/dist/utils/dify.js +0 -243
  49. package/dist/utils/logger.js +0 -129
  50. package/dist/utils/openai.js +0 -225
  51. package/dist/utils/pack.js +0 -75
@@ -1,1297 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.integratedGenerator = exports.IntegratedGeneratorParams = void 0;
16
- const zod_1 = require("zod");
17
- const promises_1 = __importDefault(require("fs/promises"));
18
- const path_1 = __importDefault(require("path"));
19
- const logger_1 = require("../../utils/logger");
20
- const config_1 = require("../../utils/config");
21
- const common_1 = require("../../utils/common");
22
- const crypto_1 = require("crypto");
23
- exports.IntegratedGeneratorParams = zod_1.z.object({
24
- // 项目基本信息
25
- project_name: zod_1.z.string().describe("项目名称"),
26
- project_description: zod_1.z.string().describe("项目描述"),
27
- // 需求信息
28
- user_story: zod_1.z.string().describe("用户故事 - 遵循As a...I want...So that...格式"),
29
- acceptance_criteria: zod_1.z.array(zod_1.z.string()).describe("验收标准列表"),
30
- // 技术信息
31
- programming_language: zod_1.z.string().describe("编程语言"),
32
- framework: zod_1.z.string().optional().describe("使用的框架"),
33
- architecture_pattern: zod_1.z.enum(['microservices', 'monolithic', 'layered', 'event-driven']).optional().describe("架构模式"),
34
- // 生成选项
35
- generation_type: zod_1.z.enum(['full_project', 'module_only', 'feature_only']).default('full_project').describe("生成类型"),
36
- include_examples: zod_1.z.boolean().optional().default(true).describe("是否包含代码示例"),
37
- include_tests: zod_1.z.boolean().optional().default(true).describe("是否包含测试代码"),
38
- // 自定义内容
39
- custom_context: zod_1.z.string().optional().describe("自定义上下文信息"),
40
- business_rules: zod_1.z.array(zod_1.z.string()).optional().describe("业务规则"),
41
- technical_requirements: zod_1.z.string().optional().describe("技术要求")
42
- });
43
- exports.integratedGenerator = {
44
- name: 'integrated_generator',
45
- description: '集成化项目生成器 - 按照需求驱动的开发流程生成完整的项目结构和代码',
46
- parameters: exports.IntegratedGeneratorParams,
47
- execute: (args) => __awaiter(void 0, void 0, void 0, function* () {
48
- const { project_name, project_description, user_story, acceptance_criteria, programming_language, framework, architecture_pattern = 'layered', generation_type = 'full_project', include_examples = true, include_tests = true, custom_context, business_rules = [], technical_requirements } = args;
49
- const sessionUuid = (0, crypto_1.randomUUID)();
50
- const sanitizedProjectName = (0, common_1.sanitizeFileName)(project_name);
51
- const sessionId = `${sanitizedProjectName}_${Date.now()}`;
52
- try {
53
- logger_1.logger.info('开始集成化项目生成流程', {
54
- sessionUuid,
55
- sessionId,
56
- project_name,
57
- programming_language,
58
- framework,
59
- generation_type
60
- });
61
- // 1. 准备输出目录
62
- const outputDir = path_1.default.join((0, config_1.getStorageDir)(), 'integrated-projects');
63
- yield promises_1.default.mkdir(outputDir, { recursive: true });
64
- const projectDir = path_1.default.join(outputDir, sessionId);
65
- yield promises_1.default.mkdir(projectDir, { recursive: true });
66
- // 2. 创建项目结构
67
- const projectStructure = yield createProjectStructure({
68
- projectDir,
69
- project_name,
70
- programming_language,
71
- framework,
72
- architecture_pattern,
73
- generation_type
74
- });
75
- // 3. 按规则流程生成文档和代码
76
- const generationResult = yield executeRuleBasedGeneration({
77
- sessionUuid,
78
- projectDir,
79
- project_name,
80
- project_description,
81
- user_story,
82
- acceptance_criteria,
83
- programming_language,
84
- framework,
85
- architecture_pattern,
86
- generation_type,
87
- include_examples,
88
- include_tests,
89
- custom_context,
90
- business_rules,
91
- technical_requirements
92
- });
93
- // 4. 生成项目规范文档
94
- yield generateProjectStandards({
95
- projectDir,
96
- project_name,
97
- programming_language,
98
- framework,
99
- architecture_pattern
100
- });
101
- // 5. 创建开发工作流文档
102
- yield createDevelopmentWorkflow({
103
- projectDir,
104
- project_name,
105
- user_story,
106
- acceptance_criteria
107
- });
108
- logger_1.logger.info('集成化项目生成完成', {
109
- sessionUuid,
110
- projectDir: path_1.default.resolve(projectDir),
111
- generatedFiles: generationResult.files.length,
112
- structure: projectStructure
113
- });
114
- return formatIntegrationResult({
115
- sessionUuid,
116
- projectDir,
117
- project_name,
118
- generationResult,
119
- projectStructure
120
- });
121
- }
122
- catch (error) {
123
- const errorMsg = error instanceof Error ? error.message : String(error);
124
- logger_1.logger.error('集成化项目生成失败', {
125
- sessionUuid,
126
- project_name,
127
- error: errorMsg
128
- });
129
- throw new Error(`集成化项目生成失败: ${errorMsg}`);
130
- }
131
- })
132
- };
133
- // 创建项目结构
134
- function createProjectStructure(params) {
135
- return __awaiter(this, void 0, void 0, function* () {
136
- const { projectDir, programming_language, architecture_pattern, generation_type } = params;
137
- const structure = {
138
- docs: ['requirements', 'architecture', 'api', 'deployment'],
139
- tests: ['unit', 'integration', 'e2e'],
140
- config: [],
141
- scripts: []
142
- };
143
- // 根据编程语言和架构模式创建结构
144
- if (programming_language === 'typescript') {
145
- if (architecture_pattern === 'layered') {
146
- structure.src = ['controllers', 'services', 'repositories', 'models', 'middleware', 'utils'];
147
- structure.config = ['database', 'environment', 'logging'];
148
- }
149
- else if (architecture_pattern === 'microservices') {
150
- structure.services = [];
151
- structure.shared = ['common', 'utils', 'config'];
152
- }
153
- }
154
- else if (programming_language === 'python') {
155
- structure.src = ['api', 'core', 'models', 'services', 'utils'];
156
- structure.config = ['settings', 'database'];
157
- }
158
- // 创建目录结构
159
- for (const [dir, subdirs] of Object.entries(structure)) {
160
- const dirPath = path_1.default.join(projectDir, dir);
161
- yield promises_1.default.mkdir(dirPath, { recursive: true });
162
- if (Array.isArray(subdirs)) {
163
- for (const subdir of subdirs) {
164
- yield promises_1.default.mkdir(path_1.default.join(dirPath, subdir), { recursive: true });
165
- }
166
- }
167
- }
168
- // 创建基础配置文件
169
- yield createBaseConfigFiles(projectDir, params);
170
- return structure;
171
- });
172
- }
173
- // 创建基础配置文件
174
- function createBaseConfigFiles(projectDir, params) {
175
- return __awaiter(this, void 0, void 0, function* () {
176
- const { programming_language, framework } = params;
177
- // 根据语言创建对应的配置文件
178
- if (programming_language === 'typescript') {
179
- yield promises_1.default.writeFile(path_1.default.join(projectDir, 'tsconfig.json'), JSON.stringify({
180
- compilerOptions: {
181
- target: 'ES2020',
182
- module: 'commonjs',
183
- outDir: './dist',
184
- rootDir: './src',
185
- strict: true,
186
- esModuleInterop: true,
187
- skipLibCheck: true,
188
- forceConsistentCasingInFileNames: true
189
- }
190
- }, null, 2));
191
- yield promises_1.default.writeFile(path_1.default.join(projectDir, 'package.json'), JSON.stringify({
192
- name: params.project_name,
193
- version: '1.0.0',
194
- description: params.project_description,
195
- main: 'dist/index.js',
196
- scripts: {
197
- dev: 'ts-node-dev --respawn --transpile-only src/index.ts',
198
- build: 'tsc',
199
- test: 'jest',
200
- lint: 'eslint src/**/*.ts'
201
- },
202
- dependencies: Object.assign(Object.assign(Object.assign({}, (framework === 'express' && { express: '^4.18.0' })), (framework === 'koa' && { koa: '^2.14.0' })), { 'dotenv': '^16.0.0' }),
203
- devDependencies: {
204
- '@types/node': '^18.0.0',
205
- 'typescript': '^4.9.0',
206
- 'jest': '^29.0.0',
207
- 'ts-jest': '^29.0.0'
208
- }
209
- }, null, 2));
210
- }
211
- });
212
- }
213
- // 执行基于规则的生成流程
214
- function executeRuleBasedGeneration(params) {
215
- return __awaiter(this, void 0, void 0, function* () {
216
- const { projectDir, sessionUuid } = params;
217
- const generatedFiles = [];
218
- // 1. 生成用户故事文档(严格按照规则)
219
- const storyContent = yield generateUserStoryDocument(params);
220
- const storyPath = path_1.default.join(projectDir, 'docs', 'requirements', 'user-story.md');
221
- yield promises_1.default.writeFile(storyPath, storyContent, 'utf-8');
222
- const storyStats = yield promises_1.default.stat(storyPath);
223
- generatedFiles.push({ type: 'user-story', path: storyPath, size: storyStats.size });
224
- // 2. 生成Feature文件(等待用户确认后才生成)
225
- const featureContent = yield generateFeatureFile(params);
226
- const featurePath = path_1.default.join(projectDir, 'docs', 'requirements', `${(0, common_1.sanitizeFileName)(params.project_name)}.feature.md`);
227
- yield promises_1.default.writeFile(featurePath, featureContent, 'utf-8');
228
- const featureStats = yield promises_1.default.stat(featurePath);
229
- generatedFiles.push({ type: 'feature', path: featurePath, size: featureStats.size });
230
- // 3. 生成技术架构文档
231
- const architectureContent = yield generateArchitectureDocument(params);
232
- const architecturePath = path_1.default.join(projectDir, 'docs', 'architecture', 'technical-architecture.md');
233
- yield promises_1.default.writeFile(architecturePath, architectureContent, 'utf-8');
234
- const archStats = yield promises_1.default.stat(architecturePath);
235
- generatedFiles.push({ type: 'architecture', path: architecturePath, size: archStats.size });
236
- // 4. 生成API文档
237
- const apiContent = yield generateApiDocumentation(params);
238
- const apiPath = path_1.default.join(projectDir, 'docs', 'api', 'api-specification.md');
239
- yield promises_1.default.writeFile(apiPath, apiContent, 'utf-8');
240
- const apiStats = yield promises_1.default.stat(apiPath);
241
- generatedFiles.push({ type: 'api', path: apiPath, size: apiStats.size });
242
- // 5. 生成测试计划
243
- const testPlanContent = yield generateTestPlan(params);
244
- const testPlanPath = path_1.default.join(projectDir, 'docs', 'testing-strategy.md');
245
- yield promises_1.default.writeFile(testPlanPath, testPlanContent, 'utf-8');
246
- const testStats = yield promises_1.default.stat(testPlanPath);
247
- generatedFiles.push({ type: 'test-plan', path: testPlanPath, size: testStats.size });
248
- // 6. 生成代码模板(如果指定了语言)
249
- if (params.programming_language) {
250
- const codeTemplates = yield generateCodeTemplates(params);
251
- const codeDir = path_1.default.join(projectDir, 'src');
252
- for (const template of codeTemplates) {
253
- const templatePath = path_1.default.join(codeDir, template.filename);
254
- yield promises_1.default.mkdir(path_1.default.dirname(templatePath), { recursive: true });
255
- yield promises_1.default.writeFile(templatePath, template.content, 'utf-8');
256
- const stats = yield promises_1.default.stat(templatePath);
257
- generatedFiles.push({ type: 'code-template', path: templatePath, size: stats.size });
258
- }
259
- }
260
- return { files: generatedFiles };
261
- });
262
- }
263
- // 生成用户故事文档
264
- function generateUserStoryDocument(params) {
265
- return __awaiter(this, void 0, void 0, function* () {
266
- const { project_name, project_description, user_story, acceptance_criteria, business_rules = [] } = params;
267
- return `# ${project_name} - 用户故事
268
-
269
- ## 作为 (As a)
270
- [从用户故事中提取角色]
271
-
272
- ## 我想要 (I want)
273
- [从用户故事中提取需求]
274
-
275
- ## 以便于 (So that)
276
- [从用户故事中提取价值]
277
-
278
- ## 验收标准 (Acceptance Criteria)
279
- ${acceptance_criteria.map((criteria, index) => `- [ ] ${criteria}`).join('\n')}
280
-
281
- ## 业务规则
282
- ${business_rules.map((rule) => `* ${rule}`).join('\n')}
283
-
284
- ## 补充信息
285
- - 项目描述:${project_description}
286
- - 技术要求:${params.technical_requirements || '待补充'}
287
- - 编程语言:${params.programming_language}
288
- - 框架:${params.framework || '未指定'}
289
-
290
- ## 关联文件
291
- - Feature文件:../requirements/${(0, common_1.sanitizeFileName)(project_name)}.feature.md
292
- - API文档:../api/api-specification.md
293
- - 技术架构:../architecture/technical-architecture.md
294
-
295
- ## 版本管理
296
- - 版本:v1.0.0
297
- - 创建时间:${new Date().toISOString()}
298
- - 状态:待评审
299
-
300
- ## 评审检查点
301
- - [ ] 故事描述清晰完整
302
- - [ ] 验收标准具体可测试
303
- - [ ] 技术可行性已评估
304
- - [ ] 业务价值已明确
305
-
306
- > **重要提示**:此用户故事必须经过业务人员和开发人员的评审确认后,才能开始编写Feature文件和进行开发工作。详见.cursor/rules/requirements.md中的开发流程规范。
307
- `;
308
- });
309
- }
310
- // 生成Feature文件
311
- function generateFeatureFile(params) {
312
- return __awaiter(this, void 0, void 0, function* () {
313
- const { project_name, user_story, acceptance_criteria } = params;
314
- // 从用户故事提取关键信息
315
- const lines = user_story.split('\n');
316
- const asLine = lines.find((l) => l.toLowerCase().includes('as a')) || 'As a user';
317
- const wantLine = lines.find((l) => l.toLowerCase().includes('i want')) || 'I want to use the system';
318
- const soThatLine = lines.find((l) => l.toLowerCase().includes('so that')) || 'So that I can achieve my goals';
319
- return `# ${project_name} - Feature Specification
320
-
321
- > **关联需求文档**:user-story.md
322
- > **状态**:等待用户故事确认后开发
323
-
324
- ## Feature: ${project_name}
325
-
326
- ### Background
327
- ${asLine}
328
- ${wantLine}
329
- ${soThatLine}
330
-
331
- ### Scenarios
332
-
333
- ${acceptance_criteria.map((criteria, index) => `
334
- #### Scenario ${index + 1}: ${criteria.split(',')[0] || criteria}
335
- Given ${asLine.replace('As a', 'I am a').toLowerCase()}
336
- And ${wantLine.replace('I want', 'I have').toLowerCase()}
337
- When ${criteria.toLowerCase()}
338
- Then ${soThatLine.replace('so that', 'I can').toLowerCase()}
339
- `).join('\n')}
340
-
341
- ### Technical Notes
342
- - **编程语言**:${params.programming_language}
343
- - **框架**:${params.framework || '标准库'}
344
- - **架构模式**:${params.architecture_pattern}
345
-
346
- ### Implementation Guidelines
347
- 1. **前置条件**:用户故事已经通过评审
348
- 2. **开发顺序**:按照验收标准的优先级顺序实现
349
- 3. **测试要求**:每个场景必须有对应的测试用例
350
- 4. **代码审查**:完成后需要进行代码审查
351
-
352
- ### Dependencies
353
- - 用户故事评审完成
354
- - 技术方案确定
355
- - 开发环境准备就绪
356
-
357
- ### Definition of Done
358
- - [ ] 所有验收标准场景实现完成
359
- - [ ] 单元测试覆盖率达标
360
- - [ ] 代码审查通过
361
- - [ ] 文档更新完成
362
- - [ ] 部署验证通过
363
- `;
364
- });
365
- }
366
- // 生成架构文档
367
- function generateArchitectureDocument(params) {
368
- return __awaiter(this, void 0, void 0, function* () {
369
- const { project_name, programming_language, framework, architecture_pattern } = params;
370
- return `# ${project_name} - Technical Architecture
371
-
372
- ## 1. 系统概述
373
-
374
- ### 1.1 项目背景
375
- ${params.project_description}
376
-
377
- ### 1.2 技术栈
378
- - **编程语言**:${programming_language}
379
- - **框架**:${framework || '原生实现'}
380
- - **架构模式**:${architecture_pattern}
381
-
382
- ## 2. 架构设计
383
-
384
- ### 2.1 总体架构
385
- \`\`\`mermaid
386
- graph TD
387
- A[Presentation Layer] --> B[Application Layer]
388
- B --> C[Domain Layer]
389
- C --> D[Infrastructure Layer]
390
-
391
- style A fill:#f9f,stroke:#333
392
- style B fill:#bbf,stroke:#333
393
- style C fill:#9f9,stroke:#333
394
- style D fill:#ff9,stroke:#333
395
- \`\`\`
396
-
397
- ### 2.2 模块划分
398
-
399
- #### 2.2.1 控制器层 (Controllers)
400
- - 处理HTTP请求
401
- - 参数验证
402
- - 响应格式化
403
-
404
- #### 2.2.2 服务层 (Services)
405
- - 业务逻辑处理
406
- - 事务管理
407
- - 领域服务协调
408
-
409
- #### 2.2.3 数据访问层 (Repositories)
410
- - 数据持久化
411
- - 查询优化
412
- - 缓存管理
413
-
414
- #### 2.2.4 领域模型 (Domain Models)
415
- - 核心业务实体
416
- - 业务规则
417
- - 状态管理
418
-
419
- ## 3. 技术决策
420
-
421
- ### 3.1 设计模式应用
422
- - **Repository Pattern**:数据访问抽象
423
- - **Service Layer Pattern**:业务逻辑封装
424
- - **Factory Pattern**:对象创建管理
425
- - **Strategy Pattern**:算法选择
426
-
427
- ### 3.2 数据一致性
428
- - 事务边界定义
429
- - 并发控制策略
430
- - 错误处理机制
431
-
432
- ### 3.3 可测试性设计
433
- - 依赖注入
434
- - 接口抽象
435
- - 测试数据管理
436
-
437
- ## 4. 开发规范
438
-
439
- ### 4.1 目录结构
440
- \`\`\`
441
- ${project_name}/
442
- ├── src/
443
- │ ├── controllers/ # 控制器层
444
- │ ├── services/ # 服务层
445
- │ ├── repositories/ # 数据访问层
446
- │ ├── models/ # 领域模型
447
- │ ├── middleware/ # 中间件
448
- │ └── utils/ # 工具类
449
- ├── tests/
450
- │ ├── unit/ # 单元测试
451
- │ ├── integration/ # 集成测试
452
- │ └── e2e/ # 端到端测试
453
- ├── docs/
454
- │ ├── api/ # API文档
455
- │ ├── architecture/ # 架构文档
456
- │ └── requirements/ # 需求文档
457
- └── config/ # 配置文件
458
- \`\`\`
459
-
460
- ### 4.2 命名规范
461
- - **文件命名**:kebab-case
462
- - **类命名**:PascalCase
463
- - **函数命名**:camelCase
464
- - **常量命名**:UPPER_SNAKE_CASE
465
-
466
- ## 5. 部署架构
467
-
468
- ### 5.1 环境划分
469
- - **开发环境**:本地开发
470
- - **测试环境**:功能测试
471
- - **预生产环境**:集成测试
472
- - **生产环境**:正式部署
473
-
474
- ### 5.2 部署策略
475
- - 容器化部署
476
- - 蓝绿部署
477
- - 滚动更新
478
- - 回滚机制
479
-
480
- ## 6. 监控与运维
481
-
482
- ### 6.1 监控指标
483
- - 系统性能监控
484
- - 业务指标监控
485
- - 错误日志监控
486
- - 用户行为分析
487
-
488
- ### 6.2 告警机制
489
- - 阈值告警
490
- - 异常检测
491
- - 自动恢复
492
- - 人工介入
493
- `;
494
- });
495
- }
496
- // 生成API文档
497
- function generateApiDocumentation(params) {
498
- return __awaiter(this, void 0, void 0, function* () {
499
- const { project_name, programming_language } = params;
500
- return `# ${project_name} - API Specification
501
-
502
- ## 1. API设计原则
503
-
504
- ### 1.1 RESTful设计规范
505
- - 使用HTTP方法表达操作语义
506
- - 使用标准HTTP状态码
507
- - 使用清晰的URL结构
508
- - 支持内容协商
509
-
510
- ### 1.2 版本管理
511
- - URL版本控制:/api/v1/
512
- - Header版本控制:Accept: application/vnd.api+json;version=1.0
513
-
514
- ## 2. 认证与授权
515
-
516
- ### 2.1 认证方式
517
- - JWT Token认证
518
- - OAuth 2.0支持
519
- - API Key认证
520
-
521
- ### 2.2 权限控制
522
- - 基于角色的访问控制(RBAC)
523
- - 基于资源的访问控制
524
- - 细粒度权限管理
525
-
526
- ## 3. 响应格式
527
-
528
- ### 3.1 标准响应结构
529
- \`\`\`json
530
- {
531
- "success": true,
532
- "data": {},
533
- "message": "操作成功",
534
- "code": 200,
535
- "timestamp": "2024-01-01T00:00:00Z"
536
- }
537
- \`\`\`
538
-
539
- ### 3.2 错误响应结构
540
- \`\`\`json
541
- {
542
- "success": false,
543
- "error": {
544
- "code": "VALIDATION_ERROR",
545
- "message": "参数验证失败",
546
- "details": []
547
- },
548
- "timestamp": "2024-01-01T00:00:00Z"
549
- }
550
- \`\`\`
551
-
552
- ## 4. 核心API端点
553
-
554
- ### 4.1 资源操作
555
- - **GET** /api/v1/{resource} - 获取资源列表
556
- - **GET** /api/v1/{resource}/{id} - 获取单个资源
557
- - **POST** /api/v1/{resource} - 创建资源
558
- - **PUT** /api/v1/{resource}/{id} - 更新资源
559
- - **DELETE** /api/v1/{resource}/{id} - 删除资源
560
-
561
- ### 4.2 查询参数
562
- - **filter**: 过滤条件
563
- - **sort**: 排序字段
564
- - **page**: 页码
565
- - **limit**: 每页数量
566
- - **fields**: 返回字段
567
-
568
- ## 5. 错误处理
569
-
570
- ### 5.1 HTTP状态码
571
- - **200 OK**: 请求成功
572
- - **201 Created**: 资源创建成功
573
- - **400 Bad Request**: 请求参数错误
574
- - **401 Unauthorized**: 未授权
575
- - **403 Forbidden**: 权限不足
576
- - **404 Not Found**: 资源不存在
577
- - **422 Unprocessable Entity**: 业务逻辑错误
578
- - **500 Internal Server Error**: 服务器内部错误
579
-
580
- ### 5.2 错误码规范
581
- - **格式**: MODULE_ERROR_TYPE
582
- - **示例**: USER_NOT_FOUND, VALIDATION_FAILED
583
-
584
- ## 6. 测试API
585
-
586
- ### 6.1 健康检查
587
- - **GET** /api/health - 系统健康检查
588
-
589
- ### 6.2 版本信息
590
- - **GET** /api/version - 获取API版本信息
591
-
592
- ## 7. 开发工具
593
-
594
- ### 7.1 API文档
595
- - Swagger/OpenAPI 3.0
596
- - Postman集合
597
- - 自动化测试脚本
598
-
599
- ### 7.2 Mock服务
600
- - 开发环境Mock数据
601
- - 测试环境隔离
602
- - 性能测试支持
603
- `;
604
- });
605
- }
606
- // 生成测试计划
607
- function generateTestPlan(params) {
608
- return __awaiter(this, void 0, void 0, function* () {
609
- const { project_name, programming_language, framework, acceptance_criteria } = params;
610
- return `# ${project_name} - 测试策略与计划
611
-
612
- ## 1. 测试目标
613
-
614
- ### 1.1 总体目标
615
- 确保${project_name}的功能完整性、性能稳定性和用户体验质量。
616
-
617
- ### 1.2 具体目标
618
- - 功能测试覆盖率:≥90%
619
- - 单元测试覆盖率:≥80%
620
- - 性能测试:响应时间<200ms
621
- - 安全测试:通过OWASP Top 10检查
622
-
623
- ## 2. 测试类型
624
-
625
- ### 2.1 单元测试
626
- - **测试框架**:${getTestFramework(programming_language, framework)}
627
- - **测试范围**:所有业务逻辑、工具函数、数据验证
628
- - **测试策略**:
629
- - 边界值测试
630
- - 异常场景测试
631
- - 正常流程测试
632
-
633
- ### 2.2 集成测试
634
- - **测试范围**:API接口、数据库操作、外部服务集成
635
- - **测试策略**:
636
- - Happy Path测试
637
- - 错误处理测试
638
- - 数据一致性测试
639
-
640
- ### 2.3 端到端测试
641
- - **测试范围**:完整用户流程
642
- - **测试工具**:${getE2ETestTool(programming_language, framework)}
643
- - **测试场景**:
644
- ${acceptance_criteria.map((criteria) => `- ${criteria}`).join('\n ')}
645
-
646
- ### 2.4 性能测试
647
- - **测试工具**:${getPerformanceTestTool(programming_language, framework)}
648
- - **测试指标**:
649
- - 响应时间
650
- - 吞吐量
651
- - 并发用户数
652
- - 资源使用率
653
-
654
- ## 3. 测试环境
655
-
656
- ### 3.1 测试环境配置
657
- - **开发环境**:本地开发测试
658
- - **测试环境**:功能测试
659
- - **预生产环境**:集成测试
660
- - **性能测试环境**:压力测试
661
-
662
- ### 3.2 测试数据管理
663
- - **测试数据生成**:自动化脚本
664
- - **数据清理**:测试后自动清理
665
- - **数据版本控制**:测试数据版本管理
666
-
667
- ## 4. 测试执行计划
668
-
669
- ### 4.1 测试阶段
670
- | 阶段 | 时间 | 负责人 | 目标 |
671
- |------|------|--------|------|
672
- | 单元测试 | Week 1 | 开发工程师 | 代码质量保证 |
673
- | 集成测试 | Week 2 | 测试工程师 | 接口功能验证 |
674
- | 端到端测试 | Week 3 | 测试工程师 | 用户流程验证 |
675
- | 性能测试 | Week 4 | 性能测试工程师 | 系统性能验证 |
676
-
677
- ### 4.2 测试用例设计
678
- - **用例编号规则**:TC-{模块}-{功能}-{序号}
679
- - **用例模板**:
680
- - 前置条件
681
- - 测试步骤
682
- - 预期结果
683
- - 实际结果
684
- - 测试数据
685
-
686
- ## 5. 自动化测试
687
-
688
- ### 5.1 CI/CD集成
689
- - **触发条件**:代码提交、合并请求
690
- - **执行流程**:
691
- 1. 代码质量检查
692
- 2. 单元测试执行
693
- 3. 集成测试执行
694
- 4. 测试报告生成
695
-
696
- ### 5.2 测试报告
697
- - **报告内容**:
698
- - 测试执行结果
699
- - 覆盖率统计
700
- - 性能指标
701
- - 缺陷统计
702
- - **报告格式**:HTML、JSON、XML
703
-
704
- ## 6. 缺陷管理
705
-
706
- ### 6.1 缺陷分类
707
- - **严重程度**:致命、严重、一般、轻微
708
- - **优先级**:高、中、低
709
- - **类型**:功能、性能、安全、兼容性
710
-
711
- ### 6.2 缺陷生命周期
712
- - **新建** → **确认** → **修复** → **验证** → **关闭**
713
-
714
- ## 7. 质量门禁
715
-
716
- ### 7.1 代码质量要求
717
- - 单元测试覆盖率 ≥ 80%
718
- - 代码复杂度 ≤ 10
719
- - 技术债务 ≤ 5%
720
-
721
- ### 7.2 功能质量要求
722
- - 所有验收标准测试通过
723
- - 无致命和严重缺陷
724
- - 性能指标达标
725
-
726
- ## 8. 测试工具配置
727
-
728
- ### 8.1 配置文件示例
729
- - Jest配置
730
- - Postman集合
731
- - 性能测试脚本
732
- - 自动化测试脚本
733
-
734
- ## 9. 与AI集成的测试流程
735
-
736
- ### 9.1 AI辅助测试用例生成
737
- 1. 基于用户故事生成测试用例
738
- 2. AI审查测试用例完整性
739
- 3. 生成边界条件测试
740
-
741
- ### 9.2 AI辅助测试执行
742
- 1. 智能测试数据生成
743
- 2. 异常场景自动发现
744
- 3. 测试结果智能分析
745
- `;
746
- });
747
- }
748
- // 生成项目规范文档
749
- function generateProjectStandards(params) {
750
- return __awaiter(this, void 0, void 0, function* () {
751
- const { projectDir, project_name, programming_language, framework, architecture_pattern } = params;
752
- const standardsContent = `# ${project_name} - 开发规范
753
-
754
- ## 1. 技术栈规范
755
-
756
- ### 1.1 编程语言
757
- - **语言**:${programming_language}
758
- - **版本**:${getLanguageVersion(programming_language)}
759
- - **代码风格**:${getCodeStyleGuide(programming_language)}
760
-
761
- ### 1.2 框架与库
762
- - **主框架**:${framework || '标准库'}
763
- - **依赖管理**:${getPackageManager(programming_language)}
764
- - **构建工具**:${getBuildTool(programming_language)}
765
-
766
- ### 1.3 开发工具
767
- - **IDE**:VS Code (推荐)
768
- - **代码格式化**:${getFormatterConfig(programming_language)}
769
- - **代码检查**:${getLinterConfig(programming_language)}
770
-
771
- ## 2. 项目结构规范
772
-
773
- ### 2.1 目录结构
774
- ${getDirectoryStructure(programming_language, architecture_pattern)}
775
-
776
- ### 2.2 文件命名规范
777
- - **文件命名**:kebab-case
778
- - **类命名**:PascalCase
779
- - **函数命名**:camelCase
780
- - **常量命名**:UPPER_SNAKE_CASE
781
-
782
- ## 3. 编码规范
783
-
784
- ### 3.1 代码风格
785
- ${getCodingStandards(programming_language)}
786
-
787
- ### 3.2 注释规范
788
- - **函数注释**:包含参数说明、返回值说明、异常说明
789
- - **类注释**:包含类的作用、使用示例
790
- - **模块注释**:包含模块功能、依赖关系
791
-
792
- ### 3.3 错误处理
793
- - 使用try-catch处理异常
794
- - 提供有意义的错误信息
795
- - 记录错误日志
796
-
797
- ## 4. 测试规范
798
-
799
- ### 4.1 测试框架
800
- - **单元测试**:${getTestFramework(programming_language, framework)}
801
- - **集成测试**:${getIntegrationTestFramework(programming_language)}
802
- - **端到端测试**:${getE2ETestTool(programming_language, framework)}
803
-
804
- ### 4.2 测试要求
805
- - 单元测试覆盖率 ≥ 80%
806
- - 所有公共API必须有测试
807
- - 边界条件测试
808
- - 异常场景测试
809
-
810
- ## 5. 提交规范
811
-
812
- ### 5.1 提交消息格式
813
- \`\`\`
814
- <type>(<scope>): <subject>
815
-
816
- <body>
817
-
818
- <footer>
819
- \`\`\`
820
-
821
- ### 5.2 提交类型
822
- - **feat**: 新功能
823
- - **fix**: 修复bug
824
- - **docs**: 文档更新
825
- - **style**: 代码格式调整
826
- - **refactor**: 代码重构
827
- - **test**: 测试相关
828
- - **chore**: 构建过程或辅助工具的变动
829
-
830
- ## 6. 文档规范
831
-
832
- ### 6.1 API文档
833
- - 使用OpenAPI 3.0规范
834
- - 包含完整的请求/响应示例
835
- - 提供错误码说明
836
-
837
- ### 6.2 README文档
838
- - 项目简介
839
- - 安装说明
840
- - 使用示例
841
- - 贡献指南
842
-
843
- ## 7. 部署规范
844
-
845
- ### 7.1 环境配置
846
- - 开发环境
847
- - 测试环境
848
- - 预生产环境
849
- - 生产环境
850
-
851
- ### 7.2 部署流程
852
- 1. 代码审查通过
853
- 2. 自动化测试通过
854
- 3. 构建镜像
855
- 4. 部署到测试环境
856
- 5. 验证测试
857
- 6. 部署到生产环境
858
-
859
- ## 8. 监控规范
860
-
861
- ### 8.1 日志规范
862
- - 使用结构化日志
863
- - 包含请求ID用于追踪
864
- - 敏感信息脱敏
865
-
866
- ### 8.2 指标监控
867
- - 响应时间
868
- - 错误率
869
- - 系统资源使用
870
- - 业务指标
871
- `;
872
- yield promises_1.default.writeFile(path_1.default.join(projectDir, 'docs', 'development-standards.md'), standardsContent, 'utf-8');
873
- });
874
- }
875
- // 创建开发工作流文档
876
- function createDevelopmentWorkflow(params) {
877
- return __awaiter(this, void 0, void 0, function* () {
878
- const { projectDir, project_name, user_story, acceptance_criteria } = params;
879
- const workflowContent = `# ${project_name} - 开发工作流
880
-
881
- ## 1. 开发流程图
882
-
883
- \`\`\`mermaid
884
- flowchart TD
885
- Start([开始]) --> Story[创建用户故事]
886
- Story --> ReviewStory{用户故事评审}
887
- ReviewStory -->|通过| WriteFeature[编写Feature文件]
888
- ReviewStory -->|不通过| ReviseStory[修改用户故事]
889
- ReviseStory --> ReviewStory
890
-
891
- WriteFeature --> ConfirmFeature{Feature确认}
892
- ConfirmFeature -->|通过| Design[技术方案设计]
893
- ConfirmFeature -->|不通过| ReviseFeature[修改Feature]
894
- ReviseFeature --> ConfirmFeature
895
-
896
- Design --> Implement[代码实现]
897
- Implement --> Test[编写测试]
898
- Test --> ReviewCode[代码审查]
899
- ReviewCode --> DeployTest[部署测试]
900
- DeployTest --> Acceptance{验收测试}
901
- Acceptance -->|通过| Done([完成])
902
- Acceptance -->|不通过| Fix[修复问题]
903
- Fix --> Test
904
-
905
- style Story fill:#e1f5fe
906
- style WriteFeature fill:#f3e5f5
907
- style Design fill:#e8f5e8
908
- style Implement fill:#fff3e0
909
- style Done fill:#e8f5e8
910
- \`\`\`
911
-
912
- ## 2. 详细步骤说明
913
-
914
- ### 2.1 第一阶段:需求确认
915
- 1. **用户故事创建**
916
- - 使用模板:docs/requirements/user-story.md
917
- - 包含完整的As a/I want/So that结构
918
- - 列出具体可测试的验收标准
919
-
920
- 2. **用户故事评审**
921
- - 参与人员:产品经理、开发工程师、测试工程师
922
- - 检查点:
923
- - 故事描述清晰完整
924
- - 验收标准具体可测试
925
- - 技术可行性评估
926
- - 业务价值明确
927
-
928
- ### 2.2 第二阶段:Feature文件编写
929
- 1. **Feature文档创建**
930
- - 基于确认的用户故事
931
- - 使用标准Gherkin语法
932
- - 每个验收标准对应一个Scenario
933
-
934
- 2. **Feature评审**
935
- - 技术方案验证
936
- - 测试用例完整性检查
937
- - 开发工作量评估
938
-
939
- ### 2.3 第三阶段:技术实现
940
- 1. **技术方案设计**
941
- - 架构设计文档
942
- - 数据库设计
943
- - API接口设计
944
-
945
- 2. **代码实现**
946
- - 遵循开发规范
947
- - 单元测试编写
948
- - 代码审查
949
-
950
- 3. **测试验证**
951
- - 单元测试执行
952
- - 集成测试执行
953
- - 验收测试执行
954
-
955
- ## 3. 质量门禁
956
-
957
- ### 3.1 代码质量要求
958
- - 单元测试覆盖率 ≥ 80%
959
- - 代码复杂度 ≤ 10
960
- - 无致命和严重缺陷
961
- - 代码审查通过
962
-
963
- ### 3.2 文档要求
964
- - 用户故事已评审确认
965
- - Feature文件已更新
966
- - API文档已同步
967
- - 部署文档已准备
968
-
969
- ## 4. 工具使用指南
970
-
971
- ### 4.1 开发工具
972
- - **IDE**: VS Code
973
- - **版本控制**: Git
974
- - **构建工具**: ${getBuildTool('typescript')}
975
-
976
- ### 4.2 测试工具
977
- - **单元测试**: ${getTestFramework('typescript', 'express')}
978
- - **API测试**: Postman / REST Client
979
- - **性能测试**: ${getPerformanceTestTool('typescript', 'express')}
980
-
981
- ### 4.3 部署工具
982
- - **容器化**: Docker
983
- - **CI/CD**: GitHub Actions
984
- - **监控**: ${getMonitoringTool('typescript')}
985
-
986
- ## 5. 当前任务状态
987
-
988
- ### 5.1 当前用户故事
989
- \`\`\`
990
- ${user_story}
991
- \`\`\`
992
-
993
- ### 5.2 验收标准
994
- ${acceptance_criteria.map((criteria, index) => `${index + 1}. ${criteria}`).join('\n')}
995
-
996
- ### 5.3 下一步行动
997
- 1. [ ] 评审用户故事
998
- 2. [ ] 确认验收标准
999
- 3. [ ] 编写Feature文件
1000
- 4. [ ] 技术方案设计
1001
- 5. [ ] 代码实现
1002
- 6. [ ] 测试验证
1003
- 7. [ ] 部署上线
1004
-
1005
- ## 6. 注意事项
1006
-
1007
- ### 6.1 禁止行为
1008
- - ❌ 未评审用户故事直接开发
1009
- - ❌ 未确认验收标准开始编码
1010
- - ❌ 跳过测试直接部署
1011
- - ❌ 无代码审查合并代码
1012
-
1013
- ### 6.2 推荐实践
1014
- - ✅ 小步快跑,频繁提交
1015
- - ✅ 测试驱动开发(TDD)
1016
- - ✅ 持续集成,持续部署
1017
- - ✅ 文档与代码同步更新
1018
- `;
1019
- yield promises_1.default.writeFile(path_1.default.join(projectDir, 'docs', 'development-workflow.md'), workflowContent, 'utf-8');
1020
- });
1021
- }
1022
- // 格式化集成结果
1023
- function formatIntegrationResult(params) {
1024
- const { sessionUuid, projectDir, project_name, generationResult, projectStructure } = params;
1025
- return `
1026
- # 🎉 集成化项目生成完成
1027
-
1028
- ## 📋 项目概览
1029
- - **项目名称**: ${project_name}
1030
- - **会话ID**: ${sessionUuid}
1031
- - **项目目录**: \`${projectDir}\`
1032
- - **生成时间**: ${new Date().toISOString()}
1033
-
1034
- ## 📁 项目结构
1035
- \`\`\`
1036
- ${project_name}/
1037
- ${Object.entries(projectStructure).map(([dir, subdirs]) => `├── ${dir}/\n${subdirs.map(sd => `│ ├── ${sd}/`).join('\n')}`).join('\n')}
1038
- └── ...
1039
- \`\`\`
1040
-
1041
- ## 📄 生成的文档
1042
- ${generationResult.files.map((f) => `- **${f.type}**: \`${path_1.default.relative(projectDir, f.path)}\``).join('\n')}
1043
-
1044
- ## 🎯 开发工作流
1045
-
1046
- ### 阶段1: 需求确认 ✅
1047
- - [x] 用户故事文档已生成
1048
- - [x] 验收标准已定义
1049
- - [ ] **待完成**: 用户故事评审会议
1050
-
1051
- ### 阶段2: Feature设计 ✅
1052
- - [x] Feature文件模板已创建
1053
- - [ ] **待完成**: Feature文件评审确认
1054
-
1055
- ### 阶段3: 技术实现 📋
1056
- - [x] 技术架构文档已生成
1057
- - [x] API规范已定义
1058
- - [x] 测试策略已制定
1059
- - [ ] **待开始**: 代码实现
1060
-
1061
- ## 🚀 下一步操作
1062
-
1063
- 1. **评审用户故事**
1064
- \`\`\`bash
1065
- # 查看用户故事
1066
- cat docs/requirements/user-story.md
1067
- \`\`\`
1068
-
1069
- 2. **确认验收标准**
1070
- - 与业务团队确认验收标准
1071
- - 调整和完善用户故事
1072
-
1073
- 3. **开始开发**
1074
- - 按照development-workflow.md中的流程执行
1075
- - 遵循development-standards.md中的规范
1076
-
1077
- 4. **使用AI辅助开发**
1078
- - 使用Cursor AI进行代码生成
1079
- - 遵循.cursor/rules/中的规范
1080
-
1081
- ## 📖 重要文件
1082
- - **用户故事**: docs/requirements/user-story.md
1083
- - **Feature文件**: docs/requirements/${(0, common_1.sanitizeFileName)(project_name)}.feature.md
1084
- - **技术架构**: docs/architecture/technical-architecture.md
1085
- - **API文档**: docs/api/api-specification.md
1086
- - **开发工作流**: docs/development-workflow.md
1087
- - **开发规范**: docs/development-standards.md
1088
-
1089
- ## ⚠️ 重要提醒
1090
-
1091
- **严格按照以下流程执行开发:**
1092
- 1. 📋 **用户故事评审** (必须先完成)
1093
- 2. 📝 **Feature文件确认** (用户明确要求后)
1094
- 3. 🏗️ **技术方案设计**
1095
- 4. 💻 **代码实现**
1096
- 5. 🧪 **测试验证**
1097
- 6. 🚀 **部署上线`;
1098
- }
1099
- // 工具函数
1100
- function getTestFramework(language, framework) {
1101
- var _a, _b;
1102
- const frameworks = {
1103
- typescript: { express: 'Jest', koa: 'Jest', default: 'Jest' },
1104
- javascript: { express: 'Jest', koa: 'Jest', default: 'Jest' },
1105
- python: { django: 'pytest', flask: 'pytest', default: 'unittest' },
1106
- java: { spring: 'JUnit 5', default: 'JUnit 5' },
1107
- go: { default: 'testing' }
1108
- };
1109
- return ((_a = frameworks[language]) === null || _a === void 0 ? void 0 : _a[framework || 'default']) || ((_b = frameworks[language]) === null || _b === void 0 ? void 0 : _b.default) || 'Unknown';
1110
- }
1111
- function getIntegrationTestFramework(language) {
1112
- const frameworks = {
1113
- typescript: 'Supertest',
1114
- javascript: 'Supertest',
1115
- python: 'pytest-django',
1116
- java: 'Spring Boot Test',
1117
- go: 'httpexpect'
1118
- };
1119
- return frameworks[language] || 'Unknown';
1120
- }
1121
- function getE2ETestTool(language, framework) {
1122
- var _a, _b;
1123
- const tools = {
1124
- typescript: { express: 'Cypress', koa: 'Cypress', default: 'Cypress' },
1125
- javascript: { express: 'Cypress', koa: 'Cypress', default: 'Cypress' },
1126
- python: { django: 'Selenium', flask: 'Selenium', default: 'Selenium' },
1127
- java: { spring: 'Selenium', default: 'Selenium' }
1128
- };
1129
- return ((_a = tools[language]) === null || _a === void 0 ? void 0 : _a[framework || 'default']) || ((_b = tools[language]) === null || _b === void 0 ? void 0 : _b.default) || 'Selenium';
1130
- }
1131
- function getPerformanceTestTool(language, framework) {
1132
- var _a, _b;
1133
- const tools = {
1134
- typescript: { express: 'Artillery', koa: 'Artillery', default: 'Artillery' },
1135
- javascript: { express: 'Artillery', koa: 'Artillery', default: 'Artillery' },
1136
- python: { django: 'Locust', flask: 'Locust', default: 'Locust' },
1137
- java: { spring: 'JMeter', default: 'JMeter' }
1138
- };
1139
- return ((_a = tools[language]) === null || _a === void 0 ? void 0 : _a[framework || 'default']) || ((_b = tools[language]) === null || _b === void 0 ? void 0 : _b.default) || 'JMeter';
1140
- }
1141
- function getLanguageVersion(language) {
1142
- const versions = {
1143
- typescript: '5.0+',
1144
- javascript: 'ES2020+',
1145
- python: '3.9+',
1146
- java: '17+',
1147
- go: '1.20+',
1148
- csharp: '.NET 6+'
1149
- };
1150
- return versions[language] || 'Latest';
1151
- }
1152
- function getCodeStyleGuide(language) {
1153
- const guides = {
1154
- typescript: 'ESLint + Prettier',
1155
- javascript: 'ESLint + Prettier',
1156
- python: 'PEP 8 + Black',
1157
- java: 'Google Java Style',
1158
- go: 'gofmt',
1159
- csharp: '.NET Code Style'
1160
- };
1161
- return guides[language] || 'Standard';
1162
- }
1163
- function getPackageManager(language) {
1164
- const managers = {
1165
- typescript: 'npm/yarn/pnpm',
1166
- javascript: 'npm/yarn/pnpm',
1167
- python: 'pip/poetry',
1168
- java: 'Maven/Gradle',
1169
- go: 'go mod',
1170
- csharp: 'NuGet'
1171
- };
1172
- return managers[language] || 'Standard';
1173
- }
1174
- function getBuildTool(language) {
1175
- const tools = {
1176
- typescript: 'tsc',
1177
- javascript: 'webpack',
1178
- python: 'poetry/pyproject',
1179
- java: 'Maven/Gradle',
1180
- go: 'go build',
1181
- csharp: 'MSBuild'
1182
- };
1183
- return tools[language] || 'Standard';
1184
- }
1185
- function getFormatterConfig(language) {
1186
- const configs = {
1187
- typescript: '.prettierrc',
1188
- javascript: '.prettierrc',
1189
- python: 'pyproject.toml',
1190
- java: 'checkstyle.xml',
1191
- go: 'gofmt'
1192
- };
1193
- return configs[language] || 'Standard';
1194
- }
1195
- function getLinterConfig(language) {
1196
- const configs = {
1197
- typescript: '.eslintrc.json',
1198
- javascript: '.eslintrc.json',
1199
- python: '.flake8',
1200
- java: 'checkstyle.xml',
1201
- go: 'golangci-lint'
1202
- };
1203
- return configs[language] || 'Standard';
1204
- }
1205
- function getDirectoryStructure(language, architecture) {
1206
- if (language === 'typescript' && architecture === 'layered') {
1207
- return `
1208
- project-name/
1209
- ├── src/
1210
- │ ├── controllers/ # 控制器层
1211
- │ ├── services/ # 业务逻辑层
1212
- │ ├── repositories/ # 数据访问层
1213
- │ ├── models/ # 数据模型
1214
- │ ├── middleware/ # 中间件
1215
- │ ├── utils/ # 工具函数
1216
- │ └── config/ # 配置
1217
- ├── tests/
1218
- │ ├── unit/ # 单元测试
1219
- │ ├── integration/ # 集成测试
1220
- │ └── e2e/ # 端到端测试
1221
- ├── docs/ # 项目文档
1222
- └── config/ # 配置文件
1223
- `;
1224
- }
1225
- return '标准项目结构';
1226
- }
1227
- function getCodingStandards(language) {
1228
- const standards = {
1229
- typescript: '使用TypeScript严格模式,接口优先,类型安全',
1230
- javascript: '使用ES6+特性,避免var,使用const/let',
1231
- python: '遵循PEP 8规范,使用类型注解',
1232
- java: '遵循Google Java Style,使用Optional处理空值',
1233
- go: '使用gofmt格式化,遵循Effective Go'
1234
- };
1235
- return standards[language] || '遵循语言最佳实践';
1236
- }
1237
- function getMonitoringTool(language) {
1238
- const tools = {
1239
- typescript: 'Prometheus + Grafana',
1240
- javascript: 'Prometheus + Grafana',
1241
- python: 'Prometheus + Grafana',
1242
- java: 'Micrometer + Prometheus',
1243
- go: 'Prometheus + Grafana'
1244
- };
1245
- return tools[language] || 'Standard monitoring';
1246
- }
1247
- // 生成代码模板
1248
- function generateCodeTemplates(params) {
1249
- return __awaiter(this, void 0, void 0, function* () {
1250
- const { programming_language, framework, project_name } = params;
1251
- const templates = [];
1252
- if (programming_language === 'typescript') {
1253
- templates.push({
1254
- filename: 'controllers/index.ts',
1255
- content: `import { Router } from 'express';
1256
- import { healthCheck } from './health.controller';
1257
-
1258
- const router = Router();
1259
-
1260
- router.get('/health', healthCheck);
1261
-
1262
- export default router;`
1263
- }, {
1264
- filename: 'controllers/health.controller.ts',
1265
- content: `import { Request, Response } from 'express';
1266
-
1267
- export const healthCheck = async (req: Request, res: Response) => {
1268
- try {
1269
- res.json({
1270
- status: 'OK',
1271
- timestamp: new Date().toISOString(),
1272
- service: '${project_name}'
1273
- });
1274
- } catch (error) {
1275
- res.status(500).json({
1276
- status: 'ERROR',
1277
- message: 'Health check failed'
1278
- });
1279
- }
1280
- };`
1281
- }, {
1282
- filename: 'services/index.ts',
1283
- content: `// Service layer exports
1284
- export * from './base.service';`
1285
- }, {
1286
- filename: 'models/index.ts',
1287
- content: `// Model definitions
1288
- export interface BaseModel {
1289
- id: string;
1290
- createdAt: Date;
1291
- updatedAt: Date;
1292
- }`
1293
- });
1294
- }
1295
- return templates;
1296
- });
1297
- }