speccore 5.11.2 → 5.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -4
- package/dist/cli.js +41 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +7 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +369 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/change.d.ts +2 -0
- package/dist/commands/change.d.ts.map +1 -1
- package/dist/commands/change.js +72 -0
- package/dist/commands/change.js.map +1 -1
- package/dist/commands/done.d.ts +8 -0
- package/dist/commands/done.d.ts.map +1 -0
- package/dist/commands/done.js +97 -0
- package/dist/commands/done.js.map +1 -0
- package/dist/commands/execute.d.ts +2 -0
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +147 -5
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/iteration/create.d.ts.map +1 -1
- package/dist/commands/iteration/create.js +6 -4
- package/dist/commands/iteration/create.js.map +1 -1
- package/dist/commands/iteration/split.d.ts +2 -0
- package/dist/commands/iteration/split.d.ts.map +1 -1
- package/dist/commands/iteration/split.js +492 -11
- package/dist/commands/iteration/split.js.map +1 -1
- package/dist/commands/lifecycle.d.ts +9 -0
- package/dist/commands/lifecycle.d.ts.map +1 -0
- package/dist/commands/lifecycle.js +223 -0
- package/dist/commands/lifecycle.js.map +1 -0
- package/dist/commands/word2spec.d.ts +1 -0
- package/dist/commands/word2spec.d.ts.map +1 -1
- package/dist/commands/word2spec.js +92 -12
- package/dist/commands/word2spec.js.map +1 -1
- package/dist/core/git-integration.d.ts +1 -1
- package/dist/core/git-integration.d.ts.map +1 -1
- package/dist/core/git-integration.js +5 -1
- package/dist/core/git-integration.js.map +1 -1
- package/dist/core/global-counters.d.ts +16 -0
- package/dist/core/global-counters.d.ts.map +1 -0
- package/dist/core/global-counters.js +44 -0
- package/dist/core/global-counters.js.map +1 -0
- package/dist/core/next-steps.d.ts +2 -0
- package/dist/core/next-steps.d.ts.map +1 -0
- package/dist/core/next-steps.js +69 -0
- package/dist/core/next-steps.js.map +1 -0
- package/dist/core/risk-scorer.d.ts +14 -0
- package/dist/core/risk-scorer.d.ts.map +1 -0
- package/dist/core/risk-scorer.js +61 -0
- package/dist/core/risk-scorer.js.map +1 -0
- package/dist/locales/en-US.json +19 -2
- package/dist/locales/zh-CN.json +19 -2
- package/package.json +1 -1
|
@@ -5,6 +5,37 @@ const fs_extra_1 = require("fs-extra");
|
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
const logger_1 = require("../../utils/logger");
|
|
7
7
|
const context_1 = require("../../core/context");
|
|
8
|
+
const risk_scorer_1 = require("../../core/risk-scorer");
|
|
9
|
+
const global_counters_1 = require("../../core/global-counters");
|
|
10
|
+
const next_steps_1 = require("../../core/next-steps");
|
|
11
|
+
async function detectPlatforms(iterationDir, specified) {
|
|
12
|
+
if (specified)
|
|
13
|
+
return specified.split(',').map(p => p.trim()).filter(Boolean);
|
|
14
|
+
// Auto-detect from INDEX.md (populated by word2spec)
|
|
15
|
+
const indexPath = (0, path_1.join)(iterationDir, '00-需求文档', 'INDEX.md');
|
|
16
|
+
if (await (0, fs_extra_1.pathExists)(indexPath)) {
|
|
17
|
+
const content = await (0, fs_extra_1.readFile)(indexPath, 'utf-8');
|
|
18
|
+
// Parse table rows: skip header and separator lines
|
|
19
|
+
const lines = content.split('\n');
|
|
20
|
+
const platforms = new Set();
|
|
21
|
+
let inTable = false;
|
|
22
|
+
for (const line of lines) {
|
|
23
|
+
if (line.startsWith('|') && !line.includes(':---')) {
|
|
24
|
+
const cols = line.split('|').map(c => c.trim()).filter(Boolean);
|
|
25
|
+
// First column is platform name, skip header row
|
|
26
|
+
if (cols[0] && cols[0] !== '端' && !String(cols[0]).includes('文件')) {
|
|
27
|
+
platforms.add(cols[0]);
|
|
28
|
+
inTable = true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Also check for common date patterns in first col and filter them
|
|
33
|
+
const filtered = [...platforms].filter(p => !/^\d{4}-\d{2}-\d{2}$/.test(p));
|
|
34
|
+
if (filtered.length > 0)
|
|
35
|
+
return filtered;
|
|
36
|
+
}
|
|
37
|
+
return ['web']; // default
|
|
38
|
+
}
|
|
8
39
|
async function iterationSplitCommand(options) {
|
|
9
40
|
const spinner = new logger_1.Spinner('Splitting requirements into tasks');
|
|
10
41
|
spinner.start();
|
|
@@ -27,6 +58,23 @@ async function iterationSplitCommand(options) {
|
|
|
27
58
|
return;
|
|
28
59
|
}
|
|
29
60
|
logger_1.logger.info(`Found ${sections.length} sections to split`);
|
|
61
|
+
const platforms = await detectPlatforms(iterationDir, options.platforms);
|
|
62
|
+
logger_1.logger.info(`Platforms: ${platforms.join(', ')}`);
|
|
63
|
+
// ── Strict mode: preview + confirm each task's split plan ──
|
|
64
|
+
if (options.strict) {
|
|
65
|
+
const approved = await strictSplitPreview(sections, platforms, iterationDir);
|
|
66
|
+
if (approved.length === 0) {
|
|
67
|
+
spinner.stop('已取消,未创建任何任务');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
for (const section of approved) {
|
|
71
|
+
const idx = sections.indexOf(section);
|
|
72
|
+
const taskId = `Task-${String(idx + 1).padStart(3, '0')}`;
|
|
73
|
+
await createTaskFromSection(iterationDir, taskId, section, platforms);
|
|
74
|
+
}
|
|
75
|
+
spinner.stop(`✅ 创建了 ${approved.length} 个任务`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
30
78
|
if (options.dryRun) {
|
|
31
79
|
spinner.stop('Dry run complete - no files created');
|
|
32
80
|
for (const section of sections) {
|
|
@@ -36,12 +84,17 @@ async function iterationSplitCommand(options) {
|
|
|
36
84
|
}
|
|
37
85
|
// Create tasks
|
|
38
86
|
for (let i = 0; i < sections.length; i++) {
|
|
39
|
-
const taskId =
|
|
40
|
-
await createTaskFromSection(iterationDir, taskId, sections[i]);
|
|
87
|
+
const { id: taskId } = await (0, global_counters_1.nextTaskId)(sections[i].name);
|
|
88
|
+
await createTaskFromSection(iterationDir, taskId, sections[i], platforms);
|
|
41
89
|
}
|
|
90
|
+
// ── Generate impact graph + risk scores ──
|
|
91
|
+
await generateImpactGraph(iterationDir, sections, platforms);
|
|
92
|
+
// ── Generate .env.example for the iteration ──
|
|
93
|
+
await generateEnvExample(iterationDir, sections);
|
|
42
94
|
// Update PROJECT_GRAPH.md
|
|
43
95
|
await updateProjectGraph(iterationDir, sections);
|
|
44
96
|
spinner.stop(`Created ${sections.length} tasks from requirements`);
|
|
97
|
+
(0, next_steps_1.showNextSteps)('split');
|
|
45
98
|
}
|
|
46
99
|
catch (error) {
|
|
47
100
|
spinner.fail(`Split failed: ${error}`);
|
|
@@ -50,6 +103,7 @@ async function iterationSplitCommand(options) {
|
|
|
50
103
|
}
|
|
51
104
|
function extractSections(content, sectionFilter) {
|
|
52
105
|
const sections = [];
|
|
106
|
+
let currentPlatform;
|
|
53
107
|
const lines = content.split('\n');
|
|
54
108
|
let currentSection = null;
|
|
55
109
|
let currentContent = [];
|
|
@@ -65,6 +119,17 @@ function extractSections(content, sectionFilter) {
|
|
|
65
119
|
content: '',
|
|
66
120
|
level: headerMatch[1].length
|
|
67
121
|
};
|
|
122
|
+
// 检测 "## {X}端需求" 父章节,子章节继承此平台
|
|
123
|
+
const platformMatch = currentSection.name.match(/^(.+)端需求$/);
|
|
124
|
+
if (platformMatch) {
|
|
125
|
+
currentPlatform = platformMatch[1];
|
|
126
|
+
currentSection = null; // 容器章节本身不作为 Task
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
else if (currentSection.level === 2) {
|
|
130
|
+
currentPlatform = undefined; // 新的 ## 章节重置平台
|
|
131
|
+
}
|
|
132
|
+
currentSection.platform = currentPlatform;
|
|
68
133
|
currentContent = [];
|
|
69
134
|
}
|
|
70
135
|
else if (currentSection) {
|
|
@@ -82,15 +147,61 @@ function extractSections(content, sectionFilter) {
|
|
|
82
147
|
return filters.some(f => s.name.includes(f));
|
|
83
148
|
});
|
|
84
149
|
}
|
|
85
|
-
|
|
150
|
+
// Filter template noise: skip empty/template placeholder sections
|
|
151
|
+
return filterTemplateNoise(sections);
|
|
86
152
|
}
|
|
87
|
-
|
|
153
|
+
const TEMPLATE_PATTERNS = [
|
|
154
|
+
/^\d+\.\d+\s*(背景|目标|范围)\s*$/,
|
|
155
|
+
/^\d+\.\d+\s*(性能|安全|兼容性)\s*$/,
|
|
156
|
+
/^\d+\.\s*(需求概述|功能需求|非功能需求|验收标准|附录)\s*$/,
|
|
157
|
+
/^功能模块[一二三四五]\s*$/,
|
|
158
|
+
];
|
|
159
|
+
function filterTemplateNoise(sections) {
|
|
160
|
+
return sections.filter(s => {
|
|
161
|
+
// Skip sections matching template patterns
|
|
162
|
+
for (const pattern of TEMPLATE_PATTERNS) {
|
|
163
|
+
if (pattern.test(s.name))
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
// Skip sections with effectively empty content
|
|
167
|
+
const meaningful = (s.content || '').replace(/[\s\n>#*-|]/g, '').length;
|
|
168
|
+
if (meaningful < 3)
|
|
169
|
+
return false;
|
|
170
|
+
return true;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
async function createTaskFromSection(iterationDir, taskId, section, allPlatforms) {
|
|
88
174
|
const taskDir = (0, path_1.join)(iterationDir, taskId);
|
|
89
|
-
|
|
90
|
-
|
|
175
|
+
// 如果 section 有指定平台则只创建该平台,否则创建全部平台
|
|
176
|
+
const taskPlatforms = section.platform ? [section.platform] : allPlatforms;
|
|
91
177
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, '_shared'));
|
|
178
|
+
// Create per-platform directories: backend services under backend/, frontend under frontend/
|
|
179
|
+
for (const platform of taskPlatforms) {
|
|
180
|
+
if (platform.startsWith('后台') || platform === 'backend') {
|
|
181
|
+
// Backend service: e.g., 后台管理端 → backend/管理端
|
|
182
|
+
const service = platform.replace(/^后台/, '').trim() || 'default';
|
|
183
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'backend', service || platform));
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'frontend', platform));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Always create a common backend directory for shared backend specs
|
|
190
|
+
if (!taskPlatforms.some(p => p.startsWith('后台'))) {
|
|
191
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'backend'));
|
|
192
|
+
}
|
|
92
193
|
// Write task type
|
|
93
194
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, '.task-type'), 'feature');
|
|
195
|
+
// Write TEST.md — auto-generated test outline
|
|
196
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'TEST.md'), generateTestOutline(section));
|
|
197
|
+
// Write REVIEW.md — auto-generated code review checklist
|
|
198
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'REVIEW.md'), generateReviewChecklist(section));
|
|
199
|
+
// Write SCHEMA.md — DB schema template (only if DB content detected)
|
|
200
|
+
if (section.content.match(/数据库|数据表|表结构|DDL|ALTER|建表|索引/)) {
|
|
201
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'SCHEMA.md'), generateSchemaTemplate(section));
|
|
202
|
+
}
|
|
203
|
+
// Write DEPLOY.md — deployment checklist
|
|
204
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'DEPLOY.md'), generateDeployChecklist(section));
|
|
94
205
|
// Write REQ.md
|
|
95
206
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', 'REQ.md'), `# ${section.name}
|
|
96
207
|
|
|
@@ -138,13 +249,31 @@ ${section.content}
|
|
|
138
249
|
| TECH.md | ✅ | ./TECH.md |
|
|
139
250
|
| TASK.md | ✅ | ./TASK.md |
|
|
140
251
|
`);
|
|
141
|
-
// Copy to frontend
|
|
252
|
+
// Copy to each platform directory (backend services + frontend platforms)
|
|
142
253
|
const reqContent = await (0, fs_extra_1.readFile)((0, path_1.join)(taskDir, 'backend', 'REQ.md'), 'utf-8');
|
|
143
|
-
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', 'REQ.md'), reqContent);
|
|
144
254
|
const techContent = await (0, fs_extra_1.readFile)((0, path_1.join)(taskDir, 'backend', 'TECH.md'), 'utf-8');
|
|
145
|
-
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', 'TECH.md'), techContent);
|
|
146
255
|
const taskContent = await (0, fs_extra_1.readFile)((0, path_1.join)(taskDir, 'backend', 'TASK.md'), 'utf-8');
|
|
147
|
-
await (0, fs_extra_1.
|
|
256
|
+
const testContent = await (0, fs_extra_1.readFile)((0, path_1.join)(taskDir, 'backend', 'TEST.md'), 'utf-8');
|
|
257
|
+
const reviewContent = await (0, fs_extra_1.readFile)((0, path_1.join)(taskDir, 'backend', 'REVIEW.md'), 'utf-8');
|
|
258
|
+
for (const platform of taskPlatforms) {
|
|
259
|
+
if (platform.startsWith('后台') || platform === 'backend') {
|
|
260
|
+
const service = platform.replace(/^后台/, '').trim() || platform;
|
|
261
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'backend', service));
|
|
262
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', service, 'REQ.md'), reqContent);
|
|
263
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', service, 'TECH.md'), techContent);
|
|
264
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', service, 'TASK.md'), taskContent);
|
|
265
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', service, 'TEST.md'), testContent);
|
|
266
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'backend', service, 'REVIEW.md'), reviewContent);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(taskDir, 'frontend', platform));
|
|
270
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', platform, 'REQ.md'), reqContent);
|
|
271
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', platform, 'TECH.md'), techContent);
|
|
272
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', platform, 'TASK.md'), taskContent);
|
|
273
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', platform, 'TEST.md'), testContent);
|
|
274
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, 'frontend', platform, 'REVIEW.md'), reviewContent);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
148
277
|
}
|
|
149
278
|
async function updateProjectGraph(iterationDir, sections) {
|
|
150
279
|
const graphPath = (0, path_1.join)(iterationDir, '00-期次总览', 'PROJECT_GRAPH.md');
|
|
@@ -153,7 +282,7 @@ async function updateProjectGraph(iterationDir, sections) {
|
|
|
153
282
|
content = await (0, fs_extra_1.readFile)(graphPath, 'utf-8');
|
|
154
283
|
}
|
|
155
284
|
for (let i = 0; i < sections.length; i++) {
|
|
156
|
-
const taskId =
|
|
285
|
+
const { id: taskId } = await (0, global_counters_1.nextTaskId)(sections[i].name);
|
|
157
286
|
const taskName = sections[i].name;
|
|
158
287
|
if (!content.includes(taskId)) {
|
|
159
288
|
const taskEntry = `| ${taskId} | ${taskName} | feature | 0% | 🔲 待开发 | |\n`;
|
|
@@ -162,4 +291,356 @@ async function updateProjectGraph(iterationDir, sections) {
|
|
|
162
291
|
}
|
|
163
292
|
await (0, fs_extra_1.writeFile)(graphPath, content);
|
|
164
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* 根据需求内容自动生成测试用例框架
|
|
296
|
+
*/
|
|
297
|
+
function generateTestOutline(section) {
|
|
298
|
+
const name = section.name;
|
|
299
|
+
const content = section.content || '';
|
|
300
|
+
const isBackend = section.platform?.startsWith('后台') || false;
|
|
301
|
+
const hasApi = content.includes('/api/') || content.includes('接口');
|
|
302
|
+
const hasDb = content.includes('数据表') || content.includes('数据库') || content.includes('表');
|
|
303
|
+
let outline = `# ${name} — 测试用例\n\n`;
|
|
304
|
+
outline += `> 自动生成于 split,请在编码后补充具体用例\n\n`;
|
|
305
|
+
outline += `## 1. 单元测试\n\n`;
|
|
306
|
+
if (isBackend && hasApi) {
|
|
307
|
+
outline += `| 用例 | 接口 | 输入 | 预期 | 状态 |\n`;
|
|
308
|
+
outline += `| :--- | :--- | :--- | :--- | :--- |\n`;
|
|
309
|
+
outline += `| 正常请求 | | | 200 | ⬜ |\n`;
|
|
310
|
+
outline += `| 参数校验 | | | 400 | ⬜ |\n`;
|
|
311
|
+
outline += `| 未授权 | | | 401 | ⬜ |\n`;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
outline += `| 用例 | 场景 | 输入 | 预期 | 状态 |\n`;
|
|
315
|
+
outline += `| :--- | :--- | :--- | :--- | :--- |\n`;
|
|
316
|
+
outline += `| 正常渲染 | 默认 | | | ⬜ |\n`;
|
|
317
|
+
outline += `| 空数据 | 无数据 | | | ⬜ |\n`;
|
|
318
|
+
}
|
|
319
|
+
if (hasDb) {
|
|
320
|
+
outline += `\n## 2. 数据库测试\n\n`;
|
|
321
|
+
outline += `| 用例 | 表 | 操作 | 预期 | 状态 |\n`;
|
|
322
|
+
outline += `| :--- | :--- | :--- | :--- | :--- |\n`;
|
|
323
|
+
outline += `| 事务回滚 | | INSERT/UPDATE | 异常时回滚 | ⬜ |\n`;
|
|
324
|
+
outline += `| 唯一约束 | | INSERT 重复 | 约束冲突 | ⬜ |\n`;
|
|
325
|
+
}
|
|
326
|
+
outline += `\n## 3. 集成测试 / E2E\n\n`;
|
|
327
|
+
outline += `| 用例 | 流程 | 预期 | 状态 |\n`;
|
|
328
|
+
outline += `| :--- | :--- | :--- | :--- |\n`;
|
|
329
|
+
outline += `| 正常流程 | 从头到尾走通 | 成功 | ⬜ |\n`;
|
|
330
|
+
outline += `| 异常流程 | 中断/超时 | 优雅降级 | ⬜ |\n`;
|
|
331
|
+
outline += `| 并发 | 多用户同时操作 | 无数据错乱 | ⬜ |\n`;
|
|
332
|
+
outline += `\n## 4. 性能 / 安全\n\n`;
|
|
333
|
+
outline += `| 用例 | 指标 | 阈值 | 状态 |\n`;
|
|
334
|
+
outline += `| :--- | :--- | :--- | :--- |\n`;
|
|
335
|
+
outline += `| 响应时间 | P99 | < 500ms | ⬜ |\n`;
|
|
336
|
+
outline += `| 并发容量 | QPS | 满足预期 | ⬜ |\n`;
|
|
337
|
+
outline += `\n> ⬜ 待编写 | ✅ 通过 | ❌ 失败 | ➖ 不适用\n`;
|
|
338
|
+
return outline;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* 根据需求内容自动生成代码审查清单
|
|
342
|
+
*/
|
|
343
|
+
function generateReviewChecklist(section) {
|
|
344
|
+
const name = section.name;
|
|
345
|
+
const content = section.content || '';
|
|
346
|
+
const hasApi = content.includes('/api/') || content.includes('接口');
|
|
347
|
+
const hasDb = content.includes('数据库') || content.includes('表');
|
|
348
|
+
const hasBatch = content.includes('批量') || content.includes('导出');
|
|
349
|
+
const hasAuth = content.includes('权限') || content.includes('角色') || content.includes('认证');
|
|
350
|
+
const isBackend = section.platform?.startsWith('后台') || false;
|
|
351
|
+
let checklist = `# ${name} — Code Review Checklist\n\n`;
|
|
352
|
+
checklist += `> 自动生成于 split,请在提交 PR 前逐项确认\n\n`;
|
|
353
|
+
checklist += `## 功能正确性\n\n`;
|
|
354
|
+
checklist += `- [ ] 需求覆盖完整,无遗漏\n`;
|
|
355
|
+
checklist += `- [ ] 边界条件处理(空值、极值、特殊字符)\n`;
|
|
356
|
+
checklist += `- [ ] 错误码统一\n\n`;
|
|
357
|
+
checklist += `## 代码质量\n\n`;
|
|
358
|
+
checklist += `- [ ] 零 ` + '`any`' + ` 类型\n`;
|
|
359
|
+
checklist += `- [ ] 无 console.log 残留\n`;
|
|
360
|
+
checklist += `- [ ] 命名清晰、见名知义\n`;
|
|
361
|
+
checklist += `- [ ] 无重复代码(>3 次提取为函数)\n\n`;
|
|
362
|
+
if (isBackend) {
|
|
363
|
+
checklist += `## 后端专项\n\n`;
|
|
364
|
+
checklist += `- [ ] 接口幂等性\n`;
|
|
365
|
+
checklist += `- [ ] 参数校验(@Valid / DTO)\n`;
|
|
366
|
+
checklist += `- [ ] 防 SQL 注入\n`;
|
|
367
|
+
checklist += `- [ ] 日志脱敏(密码/手机号不打日志)\n`;
|
|
368
|
+
if (hasDb) {
|
|
369
|
+
checklist += `- [ ] 数据库事务边界正确\n`;
|
|
370
|
+
checklist += `- [ ] 索引是否匹配查询条件\n`;
|
|
371
|
+
}
|
|
372
|
+
if (hasBatch) {
|
|
373
|
+
checklist += `- [ ] 批量操作有上限限制\n`;
|
|
374
|
+
checklist += `- [ ] 大数据量分页处理\n`;
|
|
375
|
+
}
|
|
376
|
+
if (hasAuth) {
|
|
377
|
+
checklist += `- [ ] 权限校验在每个接口入口(不是中间件漏掉)\n`;
|
|
378
|
+
}
|
|
379
|
+
checklist += `\n`;
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
checklist += `## 前端专项\n\n`;
|
|
383
|
+
checklist += `- [ ] 组件拆分合理(>200 行考虑拆分)\n`;
|
|
384
|
+
checklist += `- [ ] 无 XSS 漏洞(v-html 审查)\n`;
|
|
385
|
+
checklist += `- [ ] 响应式适配\n`;
|
|
386
|
+
checklist += `- [ ] 加载态 / 空态 / 错误态 / 边界态(四态齐全)\n\n`;
|
|
387
|
+
}
|
|
388
|
+
checklist += `## 测试\n\n`;
|
|
389
|
+
checklist += `- [ ] 核心路径有单元测试\n`;
|
|
390
|
+
checklist += `- [ ] 参照 \`TEST.md\` 逐项验证\n`;
|
|
391
|
+
checklist += `- [ ] \`speccore validate --task=${name}\` 通过\n\n`;
|
|
392
|
+
checklist += `## 自查确认\n\n`;
|
|
393
|
+
checklist += `- [ ] 已在本地完整跑通\n`;
|
|
394
|
+
checklist += `- [ ] 相关的 \`REQ.md\` 已更新(如有变化)\n`;
|
|
395
|
+
checklist += `- [ ] PR 描述写清楚了「做了什么 + 怎么测」\n`;
|
|
396
|
+
return checklist;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* 严格模式:预览拆分方案,逐 section 确认
|
|
400
|
+
*/
|
|
401
|
+
async function strictSplitPreview(sections, platforms, iterationDir) {
|
|
402
|
+
const ask = (q) => {
|
|
403
|
+
process.stdout.write(q);
|
|
404
|
+
return new Promise((resolve) => {
|
|
405
|
+
process.stdin.resume();
|
|
406
|
+
process.stdin.once('data', (data) => {
|
|
407
|
+
process.stdin.pause();
|
|
408
|
+
resolve(data.toString().split('\n')[0].trim());
|
|
409
|
+
});
|
|
410
|
+
});
|
|
411
|
+
};
|
|
412
|
+
logger_1.logger.info('\n╔══════════════════════════════════════════╗');
|
|
413
|
+
logger_1.logger.info('║ 🔍 Strict Split — 预览拆分方案 ║');
|
|
414
|
+
logger_1.logger.info('╚══════════════════════════════════════════╝\n');
|
|
415
|
+
logger_1.logger.info(`检测到 ${sections.length} 个章节,${platforms.length} 个端: ${platforms.join(', ')}\n`);
|
|
416
|
+
const approved = [];
|
|
417
|
+
for (let i = 0; i < sections.length; i++) {
|
|
418
|
+
const s = sections[i];
|
|
419
|
+
const taskId = `Task-${String(i + 1).padStart(3, '0')}`;
|
|
420
|
+
// Determine target directory
|
|
421
|
+
const target = s.platform
|
|
422
|
+
? (s.platform.startsWith('后台') ? `backend/${s.platform.replace(/^后台/, '')}` : `frontend/${s.platform}`)
|
|
423
|
+
: platforms.join(' + ');
|
|
424
|
+
logger_1.logger.info(`── ${taskId}: ${s.name} ──`);
|
|
425
|
+
logger_1.logger.info(` 端: ${target}`);
|
|
426
|
+
logger_1.logger.info(` 内容: ${(s.content || '').slice(0, 60).replace(/\n/g, ' ')}...`);
|
|
427
|
+
const answer = (await ask(` → 保留?[y]确认 [e]编辑名称 [a]分配 [N]跳过 [q]取消: `)).toLowerCase();
|
|
428
|
+
if (answer === 'q') {
|
|
429
|
+
logger_1.logger.info(' ❌ 取消全部\n');
|
|
430
|
+
approved.length = 0;
|
|
431
|
+
break;
|
|
432
|
+
}
|
|
433
|
+
if (answer === 'a') {
|
|
434
|
+
const owner = await ask(` → 分配给谁?(如需要多端,用逗号分隔: 张三(后台),李四(Web)): `);
|
|
435
|
+
if (owner) {
|
|
436
|
+
// Store owner info for later use
|
|
437
|
+
s._owner = owner;
|
|
438
|
+
logger_1.logger.info(` 👤 负责人: ${owner}`);
|
|
439
|
+
}
|
|
440
|
+
approved.push(s);
|
|
441
|
+
logger_1.logger.info(` ✅ 保留`);
|
|
442
|
+
}
|
|
443
|
+
else if (answer === 'e') {
|
|
444
|
+
const newName = await ask(` → 新名称: `);
|
|
445
|
+
if (newName) {
|
|
446
|
+
s.name = newName;
|
|
447
|
+
logger_1.logger.info(` 📝 已改名: ${newName}`);
|
|
448
|
+
}
|
|
449
|
+
approved.push(s);
|
|
450
|
+
}
|
|
451
|
+
else if (answer === 'y' || answer === 'yes') {
|
|
452
|
+
approved.push(s);
|
|
453
|
+
logger_1.logger.info(` ✅ 保留`);
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
logger_1.logger.info(` ⏭️ 跳过`);
|
|
457
|
+
}
|
|
458
|
+
logger_1.logger.info('');
|
|
459
|
+
}
|
|
460
|
+
if (approved.length === 0)
|
|
461
|
+
return [];
|
|
462
|
+
logger_1.logger.info(`\n 将创建 ${approved.length}/${sections.length} 个任务`);
|
|
463
|
+
const confirm = await ask(' 确认创建?[y/N] ');
|
|
464
|
+
logger_1.logger.info('\n✅ 确认创建...\n');
|
|
465
|
+
(0, next_steps_1.showNextSteps)('split');
|
|
466
|
+
return approved;
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* 生成任务间影响关系图 + 风险评分
|
|
470
|
+
*/
|
|
471
|
+
async function generateImpactGraph(iterationDir, sections, platforms) {
|
|
472
|
+
const deps = [];
|
|
473
|
+
const sectionApis = sections.map((s, i) => {
|
|
474
|
+
const taskId = `Task-${String(i + 1).padStart(3, '0')}`;
|
|
475
|
+
const apis = (s.content.match(/\/api\/[a-zA-Z0-9\/-]+/g) || []).map(a => a.trim());
|
|
476
|
+
return { name: taskId, apis };
|
|
477
|
+
});
|
|
478
|
+
for (let i = 0; i < sectionApis.length; i++) {
|
|
479
|
+
for (let j = 0; j < sectionApis.length; j++) {
|
|
480
|
+
if (i === j)
|
|
481
|
+
continue;
|
|
482
|
+
for (const api of sectionApis[j].apis) {
|
|
483
|
+
if (sections[i].content.includes(api)) {
|
|
484
|
+
deps.push({ from: sectionApis[i].name, fromName: sections[i].name, to: sectionApis[j].name, toName: sections[j].name, reason: api });
|
|
485
|
+
break;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
const seen = new Set();
|
|
491
|
+
const uniqueDeps = deps.filter(d => { const k = d.from + d.to; if (seen.has(k))
|
|
492
|
+
return false; seen.add(k); return true; });
|
|
493
|
+
let impact = '# IMPACT.md\n\n> auto-generated by split\n\n## Risk Scores\n\n| Task | Risk | Score | Tags | Reasons |\n| :--- | :--- | ---: | :--- | :--- |\n';
|
|
494
|
+
for (let i = 0; i < sections.length; i++) {
|
|
495
|
+
const s = sections[i];
|
|
496
|
+
const taskId = `Task-${String(i + 1).padStart(3, '0')}`;
|
|
497
|
+
const risk = (0, risk_scorer_1.scoreRisk)(s.content + s.name, s.name);
|
|
498
|
+
impact += `| ${taskId}: ${s.name} | ${risk.level} | ${risk.score} | ${risk.tags.join(' ')} | ${risk.reasons.join('; ')} |\n`;
|
|
499
|
+
const taskDir = (0, path_1.join)(iterationDir, taskId);
|
|
500
|
+
if (await (0, fs_extra_1.pathExists)(taskDir)) {
|
|
501
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(taskDir, '.risk'), `# Risk: ${risk.level}\nscore: ${risk.score}\ntags: ${risk.tags.join(',')}\n`);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
impact += '\n## Dependencies\n\n';
|
|
505
|
+
if (uniqueDeps.length > 0) {
|
|
506
|
+
impact += '| Consumer | -> | Producer | API |\n| :--- | :---: | :--- | :--- |\n';
|
|
507
|
+
for (const d of uniqueDeps)
|
|
508
|
+
impact += `| ${d.from}: ${d.fromName} | -> | ${d.to}: ${d.toName} | \`${d.reason}\` |\n`;
|
|
509
|
+
impact += '\n> Consumer tasks must wait for Producer tasks, or pre-define API contracts.\n';
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
impact += 'No task dependencies detected — all tasks can be developed in parallel.\n';
|
|
513
|
+
}
|
|
514
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(iterationDir, 'IMPACT.md'), impact);
|
|
515
|
+
logger_1.logger.info(`\nImpact analysis: ${iterationDir}/IMPACT.md`);
|
|
516
|
+
}
|
|
517
|
+
function generateSchemaTemplate(section) {
|
|
518
|
+
const name = section.name;
|
|
519
|
+
return `# ${name} — Database Schema
|
|
520
|
+
|
|
521
|
+
> Auto-generated. Fill in DDL before development.
|
|
522
|
+
|
|
523
|
+
## Tables
|
|
524
|
+
|
|
525
|
+
| Table | Purpose | Engine | Charset |
|
|
526
|
+
| :--- | :--- | :--- | :--- |
|
|
527
|
+
| | | InnoDB | utf8mb4 |
|
|
528
|
+
|
|
529
|
+
## DDL
|
|
530
|
+
|
|
531
|
+
\`\`\`sql
|
|
532
|
+
-- TODO: Write CREATE TABLE statements
|
|
533
|
+
|
|
534
|
+
\`\`\`
|
|
535
|
+
|
|
536
|
+
## Indexes
|
|
537
|
+
|
|
538
|
+
| Table | Index | Columns | Type |
|
|
539
|
+
| :--- | :--- | :--- | :--- |
|
|
540
|
+
| | | | BTREE |
|
|
541
|
+
|
|
542
|
+
## Migration Plan
|
|
543
|
+
|
|
544
|
+
- [ ] Dev: Write DDL in local
|
|
545
|
+
- [ ] Review: DBA reviews schema changes
|
|
546
|
+
- [ ] Stage: Run migration on staging
|
|
547
|
+
- [ ] Prod: Run migration during deployment window
|
|
548
|
+
|
|
549
|
+
## Rollback
|
|
550
|
+
|
|
551
|
+
\`\`\`sql
|
|
552
|
+
-- TODO: Write rollback DDL
|
|
553
|
+
\`\`\`
|
|
554
|
+
`;
|
|
555
|
+
}
|
|
556
|
+
function generateDeployChecklist(section) {
|
|
557
|
+
const name = section.name;
|
|
558
|
+
const hasDb = section.content.match(/数据库|数据表|DDL|ALTER/) !== null;
|
|
559
|
+
return `# ${name} — Deployment Checklist
|
|
560
|
+
|
|
561
|
+
## Pre-Deploy
|
|
562
|
+
|
|
563
|
+
- [ ] All tests pass (\`speccore lifecycle --task=${name} --check\`)
|
|
564
|
+
- [ ] Code review approved (REVIEW.md all checked)
|
|
565
|
+
- [ ] PR merged to main
|
|
566
|
+
- [ ] CI/CD pipeline green
|
|
567
|
+
|
|
568
|
+
${hasDb ? '- [ ] DB migration script ready and reviewed\n- [ ] DB backup taken before migration\n' : ''}
|
|
569
|
+
## Deploy Steps
|
|
570
|
+
|
|
571
|
+
1. [ ] Merge to release branch
|
|
572
|
+
2. [ ] Tag version: \`git tag vX.Y.Z\`
|
|
573
|
+
3. [ ] Deploy to staging
|
|
574
|
+
4. [ ] Smoke test on staging
|
|
575
|
+
5. [ ] Deploy to production
|
|
576
|
+
${hasDb ? '6. [ ] Run DB migration\n7. [ ] Verify data integrity\n' : ''}
|
|
577
|
+
## Post-Deploy
|
|
578
|
+
|
|
579
|
+
- [ ] Monitor error logs (first 30 min)
|
|
580
|
+
- [ ] Monitor performance metrics
|
|
581
|
+
- [ ] Run \`speccore archive --task=${name}\`
|
|
582
|
+
|
|
583
|
+
## Rollback Plan
|
|
584
|
+
|
|
585
|
+
- [ ] \`git revert\` the merge commit
|
|
586
|
+
${hasDb ? '- [ ] Run rollback DDL from SCHEMA.md\n' : ''}- [ ] Notify team on rollback
|
|
587
|
+
`;
|
|
588
|
+
}
|
|
589
|
+
async function generateEnvExample(iterationDir, sections) {
|
|
590
|
+
const envPath = (0, path_1.join)(iterationDir, '.env.example');
|
|
591
|
+
let env = '# Environment Variables — ' + iterationDir + '\n';
|
|
592
|
+
env += '# Copy to .env and fill in values\n\n';
|
|
593
|
+
const needs = new Set();
|
|
594
|
+
for (const s of sections) {
|
|
595
|
+
const c = s.content + s.name;
|
|
596
|
+
if (c.match(/Redis|缓存/))
|
|
597
|
+
needs.add('REDIS_URL=redis://localhost:6379');
|
|
598
|
+
if (c.match(/Kafka|MQ|消息队列/))
|
|
599
|
+
needs.add('KAFKA_BROKERS=localhost:9092');
|
|
600
|
+
if (c.match(/MySQL|数据库|JDBC|数据表/))
|
|
601
|
+
needs.add('DB_URL=jdbc:mysql://localhost:3306/db\nDB_USER=root\nDB_PASS=');
|
|
602
|
+
if (c.match(/OSS|对象存储|S3|文件上传/))
|
|
603
|
+
needs.add('OSS_ENDPOINT=https://oss.example.com\nOSS_KEY=\nOSS_SECRET=');
|
|
604
|
+
if (c.match(/支付|微信|支付宝|wechat|alipay/))
|
|
605
|
+
needs.add('PAYMENT_API_KEY=\nPAYMENT_SECRET=');
|
|
606
|
+
if (c.match(/短信|SMS|验证码/))
|
|
607
|
+
needs.add('SMS_API_KEY=\nSMS_SECRET=');
|
|
608
|
+
if (c.match(/邮件|email|smtp/))
|
|
609
|
+
needs.add('SMTP_HOST=smtp.example.com\nSMTP_PORT=587\nSMTP_USER=\nSMTP_PASS=');
|
|
610
|
+
if (c.match(/token|JWT|OAuth|鉴权|登录/))
|
|
611
|
+
needs.add('JWT_SECRET=\nTOKEN_EXPIRE=3600');
|
|
612
|
+
}
|
|
613
|
+
if (needs.size === 0) {
|
|
614
|
+
needs.add('# No extra environment variables detected.');
|
|
615
|
+
needs.add('# Add required variables here.');
|
|
616
|
+
}
|
|
617
|
+
env += [...needs].join('\n') + '\n';
|
|
618
|
+
await (0, fs_extra_1.writeFile)(envPath, env);
|
|
619
|
+
logger_1.logger.info(`Env example: ${iterationDir}/.env.example`);
|
|
620
|
+
}
|
|
621
|
+
async function injectTechFromAnalysis(iterationDir, taskDir, sectionName) {
|
|
622
|
+
const analysisPath = (0, path_1.join)(iterationDir, '00-需求文档', 'ANALYSIS.md');
|
|
623
|
+
if (!(await (0, fs_extra_1.pathExists)(analysisPath)))
|
|
624
|
+
return;
|
|
625
|
+
const analysis = await (0, fs_extra_1.readFile)(analysisPath, 'utf-8');
|
|
626
|
+
// Extract relevant tech stack section
|
|
627
|
+
const techSection = analysis.match(/### 技术选型[\s\S]*?(?=###|$)/);
|
|
628
|
+
const dbSection = analysis.match(/### 数据库变更[\s\S]*?(?=###|$)/);
|
|
629
|
+
const depSection = analysis.match(/### 接口依赖[\s\S]*?(?=###|$)/);
|
|
630
|
+
if (!techSection && !dbSection && !depSection)
|
|
631
|
+
return;
|
|
632
|
+
const techPath = (0, path_1.join)(taskDir, 'backend', 'TECH.md');
|
|
633
|
+
let tech = await (0, fs_extra_1.readFile)(techPath, 'utf-8');
|
|
634
|
+
const note = '\n\n> 以下内容自动从 ANALYSIS.md 注入\n\n';
|
|
635
|
+
if (techSection && !tech.includes(techSection[0].trim())) {
|
|
636
|
+
tech += note + techSection[0].trim() + '\n';
|
|
637
|
+
}
|
|
638
|
+
if (dbSection && !tech.includes(dbSection[0].trim())) {
|
|
639
|
+
tech += dbSection[0].trim() + '\n';
|
|
640
|
+
}
|
|
641
|
+
if (depSection && !tech.includes(depSection[0].trim())) {
|
|
642
|
+
tech += depSection[0].trim() + '\n';
|
|
643
|
+
}
|
|
644
|
+
await (0, fs_extra_1.writeFile)(techPath, tech);
|
|
645
|
+
}
|
|
165
646
|
//# sourceMappingURL=split.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split.js","sourceRoot":"","sources":["../../../src/commands/iteration/split.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"split.js","sourceRoot":"","sources":["../../../src/commands/iteration/split.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/commands/lifecycle.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAyBD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqE/E"}
|