speccore 5.4.2 → 5.4.3

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 (111) hide show
  1. package/README.en.md +4 -3
  2. package/README.md +5 -4
  3. package/package.json +1 -1
  4. package/dist/commands/audit.d.ts +0 -10
  5. package/dist/commands/audit.d.ts.map +0 -1
  6. package/dist/commands/audit.js +0 -278
  7. package/dist/commands/audit.js.map +0 -1
  8. package/dist/commands/baseline.d.ts +0 -13
  9. package/dist/commands/baseline.d.ts.map +0 -1
  10. package/dist/commands/baseline.js +0 -227
  11. package/dist/commands/baseline.js.map +0 -1
  12. package/dist/commands/bugfix.d.ts +0 -13
  13. package/dist/commands/bugfix.d.ts.map +0 -1
  14. package/dist/commands/bugfix.js +0 -181
  15. package/dist/commands/bugfix.js.map +0 -1
  16. package/dist/commands/change.d.ts +0 -14
  17. package/dist/commands/change.d.ts.map +0 -1
  18. package/dist/commands/change.js +0 -208
  19. package/dist/commands/change.js.map +0 -1
  20. package/dist/commands/context.d.ts +0 -8
  21. package/dist/commands/context.d.ts.map +0 -1
  22. package/dist/commands/context.js +0 -180
  23. package/dist/commands/context.js.map +0 -1
  24. package/dist/commands/dashboard.d.ts +0 -9
  25. package/dist/commands/dashboard.d.ts.map +0 -1
  26. package/dist/commands/dashboard.js +0 -209
  27. package/dist/commands/dashboard.js.map +0 -1
  28. package/dist/commands/demo.d.ts +0 -10
  29. package/dist/commands/demo.d.ts.map +0 -1
  30. package/dist/commands/demo.js +0 -151
  31. package/dist/commands/demo.js.map +0 -1
  32. package/dist/commands/global-status.d.ts +0 -9
  33. package/dist/commands/global-status.d.ts.map +0 -1
  34. package/dist/commands/global-status.js +0 -135
  35. package/dist/commands/global-status.js.map +0 -1
  36. package/dist/commands/goal.d.ts +0 -15
  37. package/dist/commands/goal.d.ts.map +0 -1
  38. package/dist/commands/goal.js +0 -232
  39. package/dist/commands/goal.js.map +0 -1
  40. package/dist/commands/handover.d.ts +0 -11
  41. package/dist/commands/handover.d.ts.map +0 -1
  42. package/dist/commands/handover.js +0 -169
  43. package/dist/commands/handover.js.map +0 -1
  44. package/dist/commands/help.d.ts +0 -10
  45. package/dist/commands/help.d.ts.map +0 -1
  46. package/dist/commands/help.js +0 -93
  47. package/dist/commands/help.js.map +0 -1
  48. package/dist/commands/history.d.ts +0 -9
  49. package/dist/commands/history.d.ts.map +0 -1
  50. package/dist/commands/history.js +0 -87
  51. package/dist/commands/history.js.map +0 -1
  52. package/dist/commands/impact.d.ts +0 -12
  53. package/dist/commands/impact.d.ts.map +0 -1
  54. package/dist/commands/impact.js +0 -238
  55. package/dist/commands/impact.js.map +0 -1
  56. package/dist/commands/index-update.d.ts +0 -8
  57. package/dist/commands/index-update.d.ts.map +0 -1
  58. package/dist/commands/index-update.js +0 -180
  59. package/dist/commands/index-update.js.map +0 -1
  60. package/dist/commands/iteration-from-global.d.ts +0 -11
  61. package/dist/commands/iteration-from-global.d.ts.map +0 -1
  62. package/dist/commands/iteration-from-global.js +0 -294
  63. package/dist/commands/iteration-from-global.js.map +0 -1
  64. package/dist/commands/new-task.d.ts +0 -15
  65. package/dist/commands/new-task.d.ts.map +0 -1
  66. package/dist/commands/new-task.js +0 -208
  67. package/dist/commands/new-task.js.map +0 -1
  68. package/dist/commands/platform-add.d.ts +0 -12
  69. package/dist/commands/platform-add.d.ts.map +0 -1
  70. package/dist/commands/platform-add.js +0 -111
  71. package/dist/commands/platform-add.js.map +0 -1
  72. package/dist/commands/rename.d.ts +0 -14
  73. package/dist/commands/rename.d.ts.map +0 -1
  74. package/dist/commands/rename.js +0 -298
  75. package/dist/commands/rename.js.map +0 -1
  76. package/dist/commands/research.d.ts +0 -14
  77. package/dist/commands/research.d.ts.map +0 -1
  78. package/dist/commands/research.js +0 -181
  79. package/dist/commands/research.js.map +0 -1
  80. package/dist/commands/retro.d.ts +0 -10
  81. package/dist/commands/retro.d.ts.map +0 -1
  82. package/dist/commands/retro.js +0 -130
  83. package/dist/commands/retro.js.map +0 -1
  84. package/dist/commands/spec.d.ts +0 -8
  85. package/dist/commands/spec.d.ts.map +0 -1
  86. package/dist/commands/spec.js +0 -155
  87. package/dist/commands/spec.js.map +0 -1
  88. package/dist/commands/sync-global.d.ts +0 -13
  89. package/dist/commands/sync-global.d.ts.map +0 -1
  90. package/dist/commands/sync-global.js +0 -218
  91. package/dist/commands/sync-global.js.map +0 -1
  92. package/dist/commands/sync.d.ts +0 -13
  93. package/dist/commands/sync.d.ts.map +0 -1
  94. package/dist/commands/sync.js +0 -216
  95. package/dist/commands/sync.js.map +0 -1
  96. package/dist/commands/template-add.d.ts +0 -12
  97. package/dist/commands/template-add.d.ts.map +0 -1
  98. package/dist/commands/template-add.js +0 -65
  99. package/dist/commands/template-add.js.map +0 -1
  100. package/dist/commands/welcome.d.ts +0 -9
  101. package/dist/commands/welcome.d.ts.map +0 -1
  102. package/dist/commands/welcome.js +0 -166
  103. package/dist/commands/welcome.js.map +0 -1
  104. package/dist/core/global-layer.d.ts +0 -124
  105. package/dist/core/global-layer.d.ts.map +0 -1
  106. package/dist/core/global-layer.js +0 -456
  107. package/dist/core/global-layer.js.map +0 -1
  108. package/dist/core/intent-recognition.d.ts +0 -48
  109. package/dist/core/intent-recognition.d.ts.map +0 -1
  110. package/dist/core/intent-recognition.js +0 -524
  111. package/dist/core/intent-recognition.js.map +0 -1
@@ -1,294 +0,0 @@
1
- "use strict";
2
- /**
3
- * iteration-from-global - 从全量层生成期次命令
4
- * 从 GLOBAL/INDEX.md 查找需求 ID,定位到对应项目 REQUIREMENT.md 提取需求,生成新的期次
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.iterationFromGlobalCommand = iterationFromGlobalCommand;
8
- const logger_1 = require("../utils/logger");
9
- const fs_extra_1 = require("fs-extra");
10
- const path_1 = require("path");
11
- const global_layer_1 = require("../core/global-layer");
12
- const context_1 = require("../core/context");
13
- async function iterationFromGlobalCommand(options) {
14
- if (!options.reqs) {
15
- logger_1.logger.error('请提供需求 ID 列表。用法: speccore iteration-from-global --reqs=REQ-001,REQ-002 --name=<期次名称>');
16
- logger_1.logger.info('提示: 使用 speccore global-status 查看可用的需求列表');
17
- return;
18
- }
19
- if (!options.name) {
20
- logger_1.logger.error('请提供期次名称。用法: speccore iteration-from-global --name=<期次名称>');
21
- return;
22
- }
23
- const spinner = new logger_1.Spinner('读取全量层需求...');
24
- spinner.start();
25
- try {
26
- // 1. 读取全量索引
27
- const index = await (0, global_layer_1.readGlobalIndex)();
28
- const reqIds = options.reqs.split(',').map((r) => r.trim()).filter(Boolean);
29
- // 2. 查找需求
30
- const foundReqs = [];
31
- const notFound = [];
32
- for (const reqId of reqIds) {
33
- const req = index.reqs.find((r) => r.id === reqId);
34
- if (req) {
35
- foundReqs.push(req);
36
- }
37
- else {
38
- notFound.push(reqId);
39
- }
40
- }
41
- if (notFound.length > 0) {
42
- spinner.fail(`以下需求 ID 不存在: ${notFound.join(', ')}`);
43
- logger_1.logger.info('请运行 speccore global-status 查看可用需求列表');
44
- return;
45
- }
46
- // 3. 读取需求详情
47
- spinner.stop(`找到 ${foundReqs.length} 个需求,正在生成期次...`);
48
- const reqDetails = [];
49
- for (const req of foundReqs) {
50
- const detail = await (0, global_layer_1.readRequirementDetail)(req.project, req.id);
51
- reqDetails.push({ req, detail: detail || `### ${req.id}:${req.name}\n\n(需求详情从 ${req.filePath} 读取)` });
52
- }
53
- // 4. 预览方案
54
- logger_1.logger.info('');
55
- logger_1.logger.info(`📋 准备生成期次: ${options.name}`);
56
- logger_1.logger.info('');
57
- logger_1.logger.info('选择需求:');
58
- for (const { req } of reqDetails) {
59
- logger_1.logger.info(` ${req.id}: ${req.name}(${req.project})`);
60
- }
61
- logger_1.logger.info('');
62
- // 5. 创建期次目录
63
- const iterationDir = (0, path_1.join)(process.cwd(), `期次-${options.name}`);
64
- if (await (0, fs_extra_1.pathExists)(iterationDir)) {
65
- if (!options.force) {
66
- logger_1.logger.error(`期次 期次-${options.name} 已存在。使用 --force 覆盖。`);
67
- return;
68
- }
69
- }
70
- await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '00-需求文档'));
71
- await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '00-技术文档'));
72
- await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '00-期次总览'));
73
- // 6. 生成需求文档
74
- const reqContent = generateIterationRequirement(options.name, reqDetails);
75
- await (0, fs_extra_1.writeFile)((0, path_1.join)(iterationDir, '00-需求文档', 'REQUIREMENT.md'), reqContent);
76
- // 7. 生成架构文档
77
- const archContent = generateIterationArchitecture(options.name, foundReqs);
78
- await (0, fs_extra_1.writeFile)((0, path_1.join)(iterationDir, '00-技术文档', 'ARCHITECTURE.md'), archContent);
79
- // 8. 生成期次总览
80
- const graphContent = generateProjectGraph(options.name, foundReqs, reqDetails.length);
81
- await (0, fs_extra_1.writeFile)((0, path_1.join)(iterationDir, '00-期次总览', 'PROJECT_GRAPH.md'), graphContent);
82
- // 9. 自动拆分 Task
83
- const taskIds = await autoSplitTasks(iterationDir, foundReqs);
84
- // 10. 更新全量索引
85
- const today = new Date().toISOString().split('T')[0];
86
- for (let i = 0; i < foundReqs.length; i++) {
87
- await (0, global_layer_1.updateReqInIndex)(foundReqs[i].id, {
88
- status: '✅ 已实现',
89
- iteration: options.name,
90
- task: taskIds[i] || '',
91
- });
92
- }
93
- await (0, global_layer_1.appendIterationLink)({
94
- name: options.name,
95
- reqs: reqIds,
96
- status: '🔄 进行中',
97
- createdAt: today,
98
- });
99
- const newVersion = (0, global_layer_1.bumpGlobalVersion)(index.version);
100
- await (0, global_layer_1.updateIndexVersion)(newVersion);
101
- // 11. 更新上下文
102
- await (0, context_1.updateContext)({
103
- currentIteration: `期次-${options.name}`,
104
- lastUpdated: new Date().toISOString(),
105
- });
106
- // 12. 输出结果
107
- logger_1.logger.info('');
108
- logger_1.logger.success('✅ 期次生成完成!');
109
- logger_1.logger.info('');
110
- logger_1.logger.info(`📁 期次: 期次-${options.name}`);
111
- logger_1.logger.info(`📋 包含需求: ${reqIds.join(', ')}`);
112
- logger_1.logger.info('');
113
- logger_1.logger.info(`📊 生成 Task(${taskIds.length} 个):`);
114
- for (let i = 0; i < foundReqs.length; i++) {
115
- logger_1.logger.info(` ${taskIds[i]}: ${foundReqs[i].name}(来源: ${foundReqs[i].id})`);
116
- }
117
- logger_1.logger.info('');
118
- logger_1.logger.info('📋 全量索引已更新');
119
- logger_1.logger.info('📋 下一步:');
120
- logger_1.logger.info(' speccore plan 生成调度方案');
121
- logger_1.logger.info(' speccore execute 开始开发');
122
- logger_1.logger.info(' 需求变更时运行 speccore sync-global 同步回全量层');
123
- }
124
- catch (error) {
125
- spinner.fail(`期次生成失败: ${error}`);
126
- throw error;
127
- }
128
- }
129
- /**
130
- * 生成期次需求文档
131
- */
132
- function generateIterationRequirement(iterationName, reqDetails) {
133
- const today = new Date().toISOString().split('T')[0];
134
- let content = `# ${iterationName} - 需求文档
135
-
136
- > 本文件从全量层生成。需求来源: GLOBAL/PROJECTS/
137
- > 创建日期: ${today}
138
-
139
- ---
140
-
141
- ## 需求列表
142
-
143
- `;
144
- for (const { req, detail } of reqDetails) {
145
- content += `### ${req.id}:${req.name}
146
- > 来源项目: ${req.project}
147
-
148
- ${detail}
149
-
150
- ---
151
- `;
152
- }
153
- return content;
154
- }
155
- /**
156
- * 生成期次架构文档
157
- */
158
- function generateIterationArchitecture(iterationName, reqs) {
159
- const today = new Date().toISOString().split('T')[0];
160
- let content = `# ${iterationName} - 技术架构
161
-
162
- > 本文件从全量层继承。创建日期: ${today}
163
-
164
- ## 涉及项目
165
-
166
- `;
167
- const projects = [...new Set(reqs.map((r) => r.project))];
168
- for (const proj of projects) {
169
- content += `- **${proj}**: ${reqs.filter((r) => r.project === proj).map((r) => r.name).join('、')}\n`;
170
- }
171
- content += `
172
- ## 技术栈
173
-
174
- (从全量层 GLOBAL/TECH_STACK.md 继承)
175
-
176
- ## 架构决策
177
-
178
- (继承全量层架构,详见 GLOBAL/ARCHITECTURE.md)
179
-
180
- ## 变更记录
181
-
182
- | 日期 | 版本 | 变更说明 | 作者 |
183
- | :--- | :--- | :--- | :--- |
184
- | ${today} | v1.0 | 从全量层生成 | SpecCore |
185
- `;
186
- return content;
187
- }
188
- /**
189
- * 生成期次总览
190
- */
191
- function generateProjectGraph(iterationName, reqs, taskCount) {
192
- const today = new Date().toISOString().split('T')[0];
193
- let content = `# ${iterationName} - 期次总览
194
-
195
- > 创建日期: ${today}
196
- > 状态: 🔄 进行中
197
-
198
- ## 任务列表
199
-
200
- | Task ID | 名称 | 来源需求 | 优先级 | 状态 |
201
- | :--- | :--- | :--- | :--- | :--- |
202
- `;
203
- for (let i = 0; i < reqs.length; i++) {
204
- const taskId = `Task-${String(i + 1).padStart(3, '0')}`;
205
- content += `| ${taskId} | ${reqs[i].name} | ${reqs[i].id} | 高 | 🔲 待开发 |\n`;
206
- }
207
- content += `
208
- ## 完成统计
209
-
210
- - 总任务数: ${taskCount}
211
- - 已完成: 0
212
- - 进行中: 0
213
- - 待开发: ${taskCount}
214
-
215
- ## 变更记录
216
-
217
- | 日期 | 版本 | 变更说明 | 作者 |
218
- | :--- | :--- | :--- | :--- |
219
- | ${today} | v1.0 | 从全量层生成 | SpecCore |
220
- `;
221
- return content;
222
- }
223
- /**
224
- * 自动拆分 Task
225
- */
226
- async function autoSplitTasks(iterationDir, reqs) {
227
- const taskIds = [];
228
- const today = new Date().toISOString().split('T')[0];
229
- for (let i = 0; i < reqs.length; i++) {
230
- const taskId = `Task-${String(i + 1).padStart(3, '0')}`;
231
- const taskDir = (0, path_1.join)(iterationDir, taskId);
232
- await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'backend'));
233
- await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'frontend'));
234
- // .task-type
235
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, '.task-type'), 'feature');
236
- // backend/TASK.md
237
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'TASK.md'), `# ${taskId}: ${reqs[i].name}
238
-
239
- > 来源: ${reqs[i].id}(${reqs[i].project})
240
- > 创建日期: ${today}
241
- > 状态: 🔲 待开发
242
-
243
- ## 实现方案
244
-
245
- (待补充)
246
-
247
- ## 产出物
248
-
249
- - [ ] 代码实现
250
- - [ ] 单元测试
251
- - [ ] 集成测试
252
- - [ ] API 文档
253
-
254
- ## 变更记录
255
-
256
- | 日期 | 版本 | 变更说明 | 作者 |
257
- | :--- | :--- | :--- | :--- |
258
- | ${today} | v1.0 | 自动生成 | SpecCore |
259
- `);
260
- // backend/REQ.md
261
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'REQ.md'), `# ${reqs[i].name} - 需求
262
-
263
- > 来源: ${reqs[i].id}(${reqs[i].project})
264
- > 创建日期: ${today}
265
-
266
- ## 功能描述
267
-
268
- (从全量层继承)
269
-
270
- ## 验收标准
271
-
272
- - [ ] 功能验收
273
- - [ ] 性能验收
274
- - [ ] 安全验收
275
- `);
276
- // backend/TECH.md
277
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'TECH.md'), `# ${reqs[i].name} - 技术方案
278
-
279
- > 来源: ${reqs[i].id}(${reqs[i].project})
280
- > 创建日期: ${today}
281
-
282
- ## 技术方案
283
-
284
- (从全量层继承)
285
-
286
- ## 技术决策
287
-
288
- (待补充)
289
- `);
290
- taskIds.push(taskId);
291
- }
292
- return taskIds;
293
- }
294
- //# sourceMappingURL=iteration-from-global.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iteration-from-global.js","sourceRoot":"","sources":["../../src/commands/iteration-from-global.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * new-task — 创建单个原子任务,支持多平台
3
- * 支持 --platforms 参数指定前端平台,--backend-only / --frontend-only
4
- */
5
- export interface NewTaskOptions {
6
- name: string;
7
- type?: string;
8
- desc?: string;
9
- platforms?: string;
10
- backendOnly?: boolean;
11
- frontendOnly?: boolean;
12
- iteration?: string;
13
- }
14
- export declare function newTaskCommand(options: NewTaskOptions): Promise<void>;
15
- //# sourceMappingURL=new-task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new-task.d.ts","sourceRoot":"","sources":["../../src/commands/new-task.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF3E"}
@@ -1,208 +0,0 @@
1
- "use strict";
2
- /**
3
- * new-task — 创建单个原子任务,支持多平台
4
- * 支持 --platforms 参数指定前端平台,--backend-only / --frontend-only
5
- */
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.newTaskCommand = newTaskCommand;
11
- const fs_extra_1 = require("fs-extra");
12
- const path_1 = require("path");
13
- const logger_1 = require("../utils/logger");
14
- const context_1 = require("../core/context");
15
- const js_yaml_1 = __importDefault(require("js-yaml"));
16
- async function newTaskCommand(options) {
17
- const spinner = new logger_1.Spinner('Creating task');
18
- spinner.start();
19
- try {
20
- if (!options.name) {
21
- spinner.fail('Task name is required. Use --name="<task name>"');
22
- return;
23
- }
24
- // 自动推断任务类型
25
- const taskType = options.type || inferTaskType(options.name);
26
- // 读取平台配置
27
- const platforms = await resolvePlatforms(options);
28
- // 确定期次
29
- const iteration = await (0, context_1.getDefaultIteration)(options.iteration);
30
- if (!iteration) {
31
- spinner.fail('No active iteration found. Create one first with: speccore iteration create');
32
- return;
33
- }
34
- // 生成 Task ID
35
- const taskId = await generateTaskId(iteration);
36
- // 创建 Task 目录结构
37
- const taskDirName = `${taskId}-${options.name}`;
38
- const taskDir = (0, path_1.join)(process.cwd(), `期次-${iteration}`, taskDirName);
39
- if (await (0, fs_extra_1.pathExists)(taskDir)) {
40
- spinner.fail(`Task directory already exists: ${taskDirName}`);
41
- return;
42
- }
43
- await (0, fs_extra_1.ensureDir)(taskDir);
44
- // 创建 _shared/ 目录
45
- await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, '_shared'));
46
- // 创建后端目录(除非 --frontend-only)
47
- if (!options.frontendOnly) {
48
- await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'backend'));
49
- await createBackendSpecs(taskDir, taskId, options.name, taskType, iteration);
50
- }
51
- // 创建前端各平台目录(除非 --backend-only)
52
- if (!options.backendOnly && platforms.length > 0) {
53
- await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'frontend'));
54
- for (const platform of platforms) {
55
- await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'frontend', platform));
56
- await createFrontendPlatformSpecs(taskDir, platform, taskId, options.name, taskType, iteration);
57
- }
58
- }
59
- // 创建共享文件
60
- await createSharedFiles(taskDir, taskId, options.name, platforms);
61
- // 更新上下文
62
- await (0, context_1.updateContext)({
63
- currentTask: taskDirName,
64
- lastUpdated: new Date().toISOString(),
65
- });
66
- spinner.stop('Task created successfully');
67
- logger_1.logger.info('');
68
- logger_1.logger.info(`✅ ${taskDirName} 创建完成!`);
69
- logger_1.logger.info('');
70
- logger_1.logger.info(`📁 已创建目录:`);
71
- logger_1.logger.info(` - ${taskDirName}/ (${taskType})`);
72
- if (!options.frontendOnly) {
73
- logger_1.logger.info(` - backend/ REQ.md TECH.md TASK.md`);
74
- }
75
- if (!options.backendOnly && platforms.length > 0) {
76
- for (const platform of platforms) {
77
- logger_1.logger.info(` - frontend/${platform}/ REQ.md TECH.md TASK.md`);
78
- }
79
- }
80
- logger_1.logger.info('');
81
- logger_1.logger.info('📋 下一步:/spec-execute --task=' + taskId + ' 开始开发');
82
- }
83
- catch (error) {
84
- spinner.fail(`Task creation failed: ${error}`);
85
- throw error;
86
- }
87
- }
88
- /**
89
- * 读取 platforms.yaml 确定平台列表
90
- */
91
- async function resolvePlatforms(options) {
92
- const platformsYaml = (0, path_1.join)(process.cwd(), '.speccore', 'config', 'platforms.yaml');
93
- if (!(await (0, fs_extra_1.pathExists)(platformsYaml))) {
94
- return [];
95
- }
96
- const content = await (0, fs_extra_1.readFile)(platformsYaml, 'utf-8');
97
- const config = js_yaml_1.default.load(content);
98
- const availablePlatforms = [];
99
- if (config?.platforms) {
100
- for (const [key, value] of Object.entries(config.platforms)) {
101
- const p = value;
102
- if (p?.enabled) {
103
- availablePlatforms.push(key);
104
- }
105
- }
106
- }
107
- // 如果指定了具体平台,则过滤
108
- if (options.platforms && options.platforms !== 'all') {
109
- const specified = options.platforms.split(',').map((s) => s.trim());
110
- return specified.filter((p) => availablePlatforms.includes(p));
111
- }
112
- return availablePlatforms;
113
- }
114
- /**
115
- * 自动推断任务类型
116
- */
117
- function inferTaskType(name) {
118
- const typePatterns = [
119
- [/修复|bug|bugfix|错误|异常|crash/i, 'bugfix'],
120
- [/调研|研究|research|选型|评估/i, 'research'],
121
- [/优化|improve|优化|提速|加快/i, 'optimization'],
122
- [/迁移|升级|upgrade|版本/i, 'migration'],
123
- [/文档|doc|document|手册/i, 'document'],
124
- [/登录|注册|认证|auth|支付|订单|管理/i, 'feature'],
125
- ];
126
- for (const [pattern, type] of typePatterns) {
127
- if (pattern.test(name))
128
- return type;
129
- }
130
- return 'feature';
131
- }
132
- /**
133
- * 生成 Task ID
134
- */
135
- async function generateTaskId(iteration) {
136
- const iterDir = (0, path_1.join)(process.cwd(), `期次-${iteration}`);
137
- let maxNum = 0;
138
- if (await (0, fs_extra_1.pathExists)(iterDir)) {
139
- const entries = await (0, fs_extra_1.readdir)(iterDir, { withFileTypes: true });
140
- for (const entry of entries) {
141
- if (entry.isDirectory()) {
142
- const match = entry.name.match(/^Task-(\d+)/);
143
- if (match) {
144
- const num = parseInt(match[1], 10);
145
- if (num > maxNum)
146
- maxNum = num;
147
- }
148
- }
149
- }
150
- }
151
- return `Task-${String(maxNum + 1).padStart(3, '0')}`;
152
- }
153
- /**
154
- * 创建后端 Spec 文件
155
- */
156
- async function createBackendSpecs(taskDir, taskId, taskName, taskType, iteration) {
157
- const today = new Date().toISOString().split('T')[0];
158
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'REQ.md'), `# ${taskId} ${taskName} - 后端需求\n\n` +
159
- `> 创建时间:${today}\n` +
160
- `> 任务类型:${taskType}\n` +
161
- `> 关联期次:${iteration}\n\n` +
162
- `## 需求描述\n\n_待填写_\n\n` +
163
- `## 验收标准\n\n- [ ] AC-01: \n`);
164
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'TECH.md'), `# ${taskId} ${taskName} - 后端技术方案\n\n` +
165
- `## 技术选型\n\n_待填写_\n\n` +
166
- `## 核心类设计\n\n_待填写_\n\n` +
167
- `## 异常处理\n\n_待填写_\n`);
168
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'TASK.md'), `# ${taskId} ${taskName} - 后端任务\n\n` +
169
- `| 属性 | 值 |\n` +
170
- `| :--- | :--- |\n` +
171
- `| 状态 | 🔲 待开发 |\n` +
172
- `| 优先级 | medium |\n\n` +
173
- `## 开发清单\n\n- [ ] 待拆分\n`);
174
- }
175
- /**
176
- * 创建前端平台 Spec 文件
177
- */
178
- async function createFrontendPlatformSpecs(taskDir, platform, taskId, taskName, taskType, iteration) {
179
- const today = new Date().toISOString().split('T')[0];
180
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', platform, 'REQ.md'), `# ${taskId} ${taskName} - ${platform} 前端需求\n\n` +
181
- `> 创建时间:${today}\n` +
182
- `> 任务类型:${taskType}\n` +
183
- `> 关联期次:${iteration}\n` +
184
- `> 目标平台:${platform}\n\n` +
185
- `## 页面列表\n\n_待填写_\n\n` +
186
- `## 验收标准\n\n- [ ] AC-01: \n`);
187
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', platform, 'TECH.md'), `# ${taskId} ${taskName} - ${platform} 技术方案\n\n` +
188
- `## 组件设计\n\n_待填写_\n\n` +
189
- `## 状态管理\n\n_待填写_\n`);
190
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', platform, 'TASK.md'), `# ${taskId} ${taskName} - ${platform} 任务\n\n` +
191
- `| 属性 | 值 |\n` +
192
- `| :--- | :--- |\n` +
193
- `| 状态 | 🔲 待开发 |\n` +
194
- `| 优先级 | medium |\n\n` +
195
- `## 开发清单\n\n- [ ] 待拆分\n`);
196
- }
197
- /**
198
- * 创建共享文件
199
- */
200
- async function createSharedFiles(taskDir, taskId, taskName, platforms) {
201
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, '_shared', 'API_CONTRACT.yaml'), `# ${taskId} ${taskName} — API Contract\n` +
202
- `# 所有平台共享的接口定义\n\n` +
203
- `endpoints: []\n`);
204
- await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, '_shared', 'business-rules.md'), `# 业务规则\n\n` +
205
- `> 所有平台共享的业务规则\n\n` +
206
- `## 规则列表\n\n_待填写_\n`);
207
- }
208
- //# sourceMappingURL=new-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new-task.js","sourceRoot":"","sources":["../../src/commands/new-task.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * platform-add — 动态添加前端平台类型
3
- * 自动更新 platforms.yaml 并同步到现有 Task
4
- */
5
- export interface PlatformAddOptions {
6
- name: string;
7
- description?: string;
8
- tech?: string;
9
- syncExisting?: boolean;
10
- }
11
- export declare function platformAddCommand(options: PlatformAddOptions): Promise<void>;
12
- //# sourceMappingURL=platform-add.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-add.d.ts","sourceRoot":"","sources":["../../src/commands/platform-add.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkEnF"}