speccore 5.27.11 → 5.27.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +2 -2
- package/dist/commands/analyze.js +3 -3
- package/dist/commands/change.js +2 -2
- package/dist/commands/dev.js +6 -6
- package/dist/commands/doc2spec.js +8 -8
- package/dist/commands/handover.js +1 -1
- package/dist/commands/init.js +5 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/iteration/create.js +3 -3
- package/dist/commands/iteration/split.js +6 -6
- package/dist/commands/iteration-from-global.js +2 -2
- package/dist/commands/spec2doc.js +2 -2
- package/dist/commands/status-panel.js +4 -4
- package/dist/commands/sync-global.js +2 -2
- package/dist/commands/welcome.js +2 -2
- package/dist/core/ai-context-generator.js +3 -3
- package/dist/core/analyze-engine.js +8 -8
- package/dist/core/next-steps.js +1 -1
- package/dist/core/question-checklist.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -811,8 +811,8 @@ if (process.argv.length <= 2) {
|
|
|
811
811
|
if (idirs.length > 0) {
|
|
812
812
|
iteration = idirs[0].slice(3);
|
|
813
813
|
const base = idirs[0];
|
|
814
|
-
const req = join(base, '
|
|
815
|
-
const ana = join(base, '
|
|
814
|
+
const req = join(base, '02-需求文档', 'REQUIREMENT.md');
|
|
815
|
+
const ana = join(base, '02-需求文档', 'ANALYSIS.md');
|
|
816
816
|
if (!existsSync(req)) {
|
|
817
817
|
phase = 'require';
|
|
818
818
|
nextCmd = 'speccore doc2spec --iteration ' + iteration;
|
package/dist/commands/analyze.js
CHANGED
|
@@ -11,7 +11,7 @@ exports.analyzeCommand = analyzeCommand;
|
|
|
11
11
|
*
|
|
12
12
|
* 输出范围:
|
|
13
13
|
* - global → .speccore/GLOBAL/ 全局架构/代码健康
|
|
14
|
-
* - iteration → Iteration-XX/
|
|
14
|
+
* - iteration → Iteration-XX/02-需求文档/ (默认)
|
|
15
15
|
* - task → Iteration-XX/Task-NN/ 单任务深化
|
|
16
16
|
*/
|
|
17
17
|
const fs_extra_1 = require("fs-extra");
|
|
@@ -154,10 +154,10 @@ async function analyzeCommand(options) {
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
/**
|
|
157
|
-
* 期次级 Spec 文档生成: 为
|
|
157
|
+
* 期次级 Spec 文档生成: 为 02-需求文档/ 创建全套规范文件
|
|
158
158
|
*/
|
|
159
159
|
async function generateIterationSpecDocs(iteration) {
|
|
160
|
-
const specDir = (0, path_1.join)(`Iteration-${iteration}`, '
|
|
160
|
+
const specDir = (0, path_1.join)(`Iteration-${iteration}`, '02-需求文档');
|
|
161
161
|
await (0, fs_extra_1.ensureDir)(specDir);
|
|
162
162
|
const now = new Date().toISOString().split('T')[0];
|
|
163
163
|
const templates = [
|
package/dist/commands/change.js
CHANGED
|
@@ -302,7 +302,7 @@ function normalizeDescription(desc) {
|
|
|
302
302
|
*/
|
|
303
303
|
async function syncToRequirement(iteration, taskId, desc) {
|
|
304
304
|
const iterDir = `Iteration-${iteration}`;
|
|
305
|
-
const reqPath = (0, path_1.join)(iterDir, '
|
|
305
|
+
const reqPath = (0, path_1.join)(iterDir, '02-需求文档', 'REQUIREMENT.md');
|
|
306
306
|
if (!(await (0, fs_extra_1.pathExists)(reqPath))) {
|
|
307
307
|
logger_1.logger.warn(` ⚠️ REQUIREMENT.md 不存在,跳过同步`);
|
|
308
308
|
return;
|
|
@@ -334,7 +334,7 @@ async function syncToRequirement(iteration, taskId, desc) {
|
|
|
334
334
|
*/
|
|
335
335
|
async function syncToAnalysis(iteration, taskId, desc) {
|
|
336
336
|
const iterDir = `Iteration-${iteration}`;
|
|
337
|
-
const analysisPath = (0, path_1.join)(iterDir, '
|
|
337
|
+
const analysisPath = (0, path_1.join)(iterDir, '02-需求文档', 'ANALYSIS.md');
|
|
338
338
|
if (!(await (0, fs_extra_1.pathExists)(analysisPath))) {
|
|
339
339
|
logger_1.logger.warn(` ⚠️ ANALYSIS.md 不存在,跳过同步。请先运行 speccore analyze`);
|
|
340
340
|
return;
|
package/dist/commands/dev.js
CHANGED
|
@@ -47,8 +47,8 @@ async function devCommand(options) {
|
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
const iterDir = `Iteration-${iteration}`;
|
|
50
|
-
const legacyReq = (0, path_1.join)(iterDir, '
|
|
51
|
-
const analysis = (0, path_1.join)(iterDir, '
|
|
50
|
+
const legacyReq = (0, path_1.join)(iterDir, '01-产品需求', 'REQUIREMENT.md');
|
|
51
|
+
const analysis = (0, path_1.join)(iterDir, '01-产品需求', 'ANALYSIS.md');
|
|
52
52
|
if (!(await (0, fs_extra_1.pathExists)(legacyReq))) {
|
|
53
53
|
showPhase('导入需求', ['speccore doc2spec -f PRD.docx -i ' + iteration]);
|
|
54
54
|
}
|
|
@@ -73,8 +73,8 @@ async function autoPipeline(options) {
|
|
|
73
73
|
}
|
|
74
74
|
spinner.stop(`期次: ${iteration}`);
|
|
75
75
|
const iterDir = `Iteration-${iteration}`;
|
|
76
|
-
const reqDoc = (0, path_1.join)(iterDir, '
|
|
77
|
-
const analysis = (0, path_1.join)(iterDir, '
|
|
76
|
+
const reqDoc = (0, path_1.join)(iterDir, '01-产品需求', 'REQUIREMENT.md');
|
|
77
|
+
const analysis = (0, path_1.join)(iterDir, '01-产品需求', 'ANALYSIS.md');
|
|
78
78
|
if (!(await (0, fs_extra_1.pathExists)(reqDoc))) {
|
|
79
79
|
(0, child_process_1.execSync)(`speccore doc2spec -f PRD.docx -i ${iteration} --no-ai`, { stdio: 'inherit' });
|
|
80
80
|
}
|
|
@@ -99,8 +99,8 @@ async function renderDevHtml(options) {
|
|
|
99
99
|
{ name: '归档收尾', key: 'done', done: false, icon: '✅', cmd: 'done', description: '校验、同步、审计,归档记录', args: '--all' },
|
|
100
100
|
];
|
|
101
101
|
if (iterDir) {
|
|
102
|
-
const reqDoc = (0, path_1.join)(iterDir, '
|
|
103
|
-
const analysis = (0, path_1.join)(iterDir, '
|
|
102
|
+
const reqDoc = (0, path_1.join)(iterDir, '01-产品需求', 'REQUIREMENT.md');
|
|
103
|
+
const analysis = (0, path_1.join)(iterDir, '01-产品需求', 'ANALYSIS.md');
|
|
104
104
|
if (await (0, fs_extra_1.pathExists)(reqDoc))
|
|
105
105
|
phases[1].done = true;
|
|
106
106
|
if (await (0, fs_extra_1.pathExists)(analysis))
|
|
@@ -6,14 +6,14 @@ exports.doc2specCommand = doc2specCommand;
|
|
|
6
6
|
* doc2spec — 文档导入 → SpecCore Markdown
|
|
7
7
|
*
|
|
8
8
|
* 将多种格式的 PRD 需求文档转换为 SpecCore 兼容的 Markdown,
|
|
9
|
-
* 自动放入对应期次的
|
|
9
|
+
* 自动放入对应期次的 02-需求文档/ 目录。
|
|
10
10
|
*
|
|
11
11
|
* 支持格式: .docx / .doc / .md / .pdf / .html / .pptx / .odt / .ipynb
|
|
12
12
|
* 依赖: pandoc (macOS: brew install pandoc)
|
|
13
13
|
*
|
|
14
14
|
* 图片路径设计:
|
|
15
|
-
* 提取到 → Iteration-xxx/
|
|
16
|
-
* Task 引用 → ../../
|
|
15
|
+
* 提取到 → Iteration-xxx/02-需求文档/images/
|
|
16
|
+
* Task 引用 → ../../02-需求文档/images/xxx.png
|
|
17
17
|
* 这样所有 Task 共享同一份原型图,不需要重复存放。
|
|
18
18
|
*
|
|
19
19
|
* 依赖: pandoc (macOS: brew install pandoc)
|
|
@@ -161,7 +161,7 @@ async function processSingle(options) {
|
|
|
161
161
|
logger_1.logger.info('跳过安装。你可以:');
|
|
162
162
|
logger_1.logger.info(` 1. 手动执行: ${installCmd}`);
|
|
163
163
|
logger_1.logger.info(' 2. 使用 word2md 技能(对话中可用)');
|
|
164
|
-
logger_1.logger.info(' 3. 在 Word 中另存为 .md 后手动放到
|
|
164
|
+
logger_1.logger.info(' 3. 在 Word 中另存为 .md 后手动放到 02-需求文档/');
|
|
165
165
|
return;
|
|
166
166
|
}
|
|
167
167
|
}
|
|
@@ -170,11 +170,11 @@ async function processSingle(options) {
|
|
|
170
170
|
try {
|
|
171
171
|
const iterName = options.iter.replace(/^Iteration-/, '');
|
|
172
172
|
const iterDir = `Iteration-${iterName}`;
|
|
173
|
-
// 目标目录:指定 --task 则放入 Task 目录,否则放入
|
|
173
|
+
// 目标目录:指定 --task 则放入 Task 目录,否则放入 01-产品需求
|
|
174
174
|
const taskId = options.task ? (options.task.startsWith('Task-') ? options.task : `Task-${options.task}`) : null;
|
|
175
|
-
const baseDir = taskId ? (0, path_1.join)(iterDir, taskId) : (0, path_1.join)(iterDir, '
|
|
175
|
+
const baseDir = taskId ? (0, path_1.join)(iterDir, taskId) : (0, path_1.join)(iterDir, '01-产品需求');
|
|
176
176
|
const targetDir = baseDir;
|
|
177
|
-
const imageDir = (0, path_1.join)(iterDir, '
|
|
177
|
+
const imageDir = (0, path_1.join)(iterDir, '01-产品需求', '素材'); // 共享素材,跨端引用
|
|
178
178
|
const platform = options.platform || '需求';
|
|
179
179
|
const outputPath = (0, path_1.join)(targetDir, `${platform}需求.md`);
|
|
180
180
|
await (0, fs_extra_1.ensureDir)(targetDir);
|
|
@@ -248,7 +248,7 @@ async function processSingle(options) {
|
|
|
248
248
|
content += `\n---\n> ⚠️ Word 自动转换,请在下方补充接口定义表格后运行 speccore execute:\n\n| 方法 | 路径 | 说明 |\n| :--- | :--- | :--- |\n| | | |\n`;
|
|
249
249
|
}
|
|
250
250
|
// 5. 图片引用注释(告知 Task 如何引用这些图)
|
|
251
|
-
content = content.replace(/^#/, `# ${platform}需求\n\n<!-- \n 原型图片路径: images/\n Task 引用方式: \n 所有 Task 共享此目录,无需重复存放。\n-->\n\n#`);
|
|
252
252
|
await (0, fs_extra_1.writeFile)(outputPath, content);
|
|
253
253
|
// ── 更新 INDEX.md ──
|
|
254
254
|
const indexPath = (0, path_1.join)(targetDir, 'INDEX.md');
|
|
@@ -125,7 +125,7 @@ async function generateHandoverDoc(iteration) {
|
|
|
125
125
|
doc += `### 相关文件\n\n`;
|
|
126
126
|
doc += `- 期次目录: \`${iteration}/\`\n`;
|
|
127
127
|
doc += `- 技术架构: \`${iteration}/00-技术文档/ARCHITECTURE.md\`\n`;
|
|
128
|
-
doc += `- 需求文档: \`${iteration}/
|
|
128
|
+
doc += `- 需求文档: \`${iteration}/02-需求文档/REQUIREMENT.md\`\n`;
|
|
129
129
|
doc += `- 项目图谱: \`${iteration}/00-迭代总览/PROJECT_GRAPH.md\`\n`;
|
|
130
130
|
return doc;
|
|
131
131
|
}
|
package/dist/commands/init.js
CHANGED
|
@@ -832,7 +832,7 @@ async function askUser(prompt) {
|
|
|
832
832
|
}
|
|
833
833
|
async function createToolIntegrations(projectRoot) {
|
|
834
834
|
const commands = [
|
|
835
|
-
['spec-ask', 'AI
|
|
835
|
+
['spec-ask', 'AI万能入口(自然语言路由)', 'speccore ask "${1:描述你的需求}"'],
|
|
836
836
|
['spec-welcome', '项目名片', 'speccore welcome'],
|
|
837
837
|
['spec-help', '命令帮助中心', 'speccore help'],
|
|
838
838
|
['spec-dashboard', '全局仪表盘', 'speccore dashboard --scope global'],
|
|
@@ -914,9 +914,9 @@ async function createSampleIteration(projectRoot) {
|
|
|
914
914
|
'',
|
|
915
915
|
'> 编辑此文件后重新运行 split 即可更新默认分配',
|
|
916
916
|
].join('\n'));
|
|
917
|
-
//
|
|
917
|
+
// 01-产品需求/ — 按产品端区分
|
|
918
918
|
// 源文件/ 存放原始文档与素材 各端/ 存放转换后的 MD
|
|
919
|
-
const prdDir = (0, path_1.join)(iterDir, '
|
|
919
|
+
const prdDir = (0, path_1.join)(iterDir, '01-产品需求');
|
|
920
920
|
// 源文件/ 存放原始文档 素材/ 存放共享图片、原型(跨端引用)
|
|
921
921
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(prdDir, '源文件'));
|
|
922
922
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(prdDir, '素材'));
|
|
@@ -931,8 +931,8 @@ async function createSampleIteration(projectRoot) {
|
|
|
931
931
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(prdDir, '小程序端/需求.md'), '# 小程序端需求\n\n## 核心功能\n- 功能描述');
|
|
932
932
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(prdDir, '管理后台/需求.md'), '# 管理后台需求\n\n## 核心功能\n- 功能描述');
|
|
933
933
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(prdDir, '_shared/业务规则.md'), '# 通用业务规则\n\n- 规则1\n- 规则2');
|
|
934
|
-
//
|
|
935
|
-
const specDir = (0, path_1.join)(iterDir, '
|
|
934
|
+
// 02-需求文档/ — analyze 输出,按端生成
|
|
935
|
+
const specDir = (0, path_1.join)(iterDir, '02-需求文档');
|
|
936
936
|
for (const platform of ['APP端', 'H5端', '小程序端', '管理后台']) {
|
|
937
937
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(specDir, platform));
|
|
938
938
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(specDir, platform, 'ANALYSIS.md'), [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ async function iterationCreateCommand(options) {
|
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
// Create directory structure
|
|
27
|
-
await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '
|
|
27
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '02-需求文档'));
|
|
28
28
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '00-技术文档'));
|
|
29
29
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '00-迭代总览'));
|
|
30
30
|
// Create default files
|
|
@@ -41,7 +41,7 @@ async function iterationCreateCommand(options) {
|
|
|
41
41
|
spinner.stop(`期次创建: ${fullName}`);
|
|
42
42
|
logger_1.logger.info('');
|
|
43
43
|
logger_1.logger.info('Next steps:');
|
|
44
|
-
logger_1.logger.info(` 1. Edit ${iterationDir}/
|
|
44
|
+
logger_1.logger.info(` 1. Edit ${iterationDir}/02-需求文档/REQUIREMENT.md`);
|
|
45
45
|
logger_1.logger.info(` 2. Edit ${iterationDir}/00-技术文档/ARCHITECTURE.md`);
|
|
46
46
|
logger_1.logger.info(` 3. Run: speccore iteration split`);
|
|
47
47
|
}
|
|
@@ -52,7 +52,7 @@ async function iterationCreateCommand(options) {
|
|
|
52
52
|
}
|
|
53
53
|
async function createIterationFiles(iterationDir, fullName, options) {
|
|
54
54
|
// REQUIREMENT.md
|
|
55
|
-
await (0, fs_extra_1.writeFile)((0, path_1.join)(iterationDir, '
|
|
55
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(iterationDir, '02-需求文档', 'REQUIREMENT.md'), `# 本期需求文档
|
|
56
56
|
|
|
57
57
|
> 期次:${fullName}
|
|
58
58
|
> 时间范围:${options.from || '未指定'} ~ ${options.to || '未指定'}
|
|
@@ -19,7 +19,7 @@ async function detectPlatforms(iterationDir, specified) {
|
|
|
19
19
|
if (specified)
|
|
20
20
|
return specified.split(',').map(p => p.trim()).filter(Boolean);
|
|
21
21
|
// Auto-detect from INDEX.md (populated by doc2spec)
|
|
22
|
-
const indexPath = (0, path_1.join)(iterationDir, '
|
|
22
|
+
const indexPath = (0, path_1.join)(iterationDir, '02-需求文档', 'INDEX.md');
|
|
23
23
|
if (await (0, fs_extra_1.pathExists)(indexPath)) {
|
|
24
24
|
const content = await (0, fs_extra_1.readFile)(indexPath, 'utf-8');
|
|
25
25
|
// Parse table rows: skip header and separator lines
|
|
@@ -54,7 +54,7 @@ async function iterationSplitCommand(options) {
|
|
|
54
54
|
}
|
|
55
55
|
const iterationDir = `Iteration-${iteration}`;
|
|
56
56
|
// ── 1. 检查 ANALYSIS.md + AI 智能拆分建议 ──
|
|
57
|
-
const analysisPath = (0, path_1.join)(iterationDir, '
|
|
57
|
+
const analysisPath = (0, path_1.join)(iterationDir, '02-需求文档', 'ANALYSIS.md');
|
|
58
58
|
if (await (0, fs_extra_1.pathExists)(analysisPath)) {
|
|
59
59
|
const analysis = await (0, fs_extra_1.readFile)(analysisPath, 'utf-8');
|
|
60
60
|
const blockerLines = analysis.split('\n').filter(l => l.includes('🔴') || l.includes('🚫') || l.toLowerCase().includes('blocker'));
|
|
@@ -74,12 +74,12 @@ async function iterationSplitCommand(options) {
|
|
|
74
74
|
// 生成 AI 拆分建议上下文
|
|
75
75
|
const promptsDir = (0, path_1.join)('.speccore', 'prompts');
|
|
76
76
|
await (0, fs_extra_1.ensureDir)(promptsDir);
|
|
77
|
-
const reqPath2 = (0, path_1.join)(iterationDir, '
|
|
77
|
+
const reqPath2 = (0, path_1.join)(iterationDir, '02-需求文档', 'REQUIREMENT.md');
|
|
78
78
|
let reqContent2 = '';
|
|
79
79
|
if (await (0, fs_extra_1.pathExists)(reqPath2)) {
|
|
80
80
|
reqContent2 = await (0, fs_extra_1.readFile)(reqPath2, 'utf-8');
|
|
81
81
|
}
|
|
82
|
-
const specDir2 = (0, path_1.join)(iterationDir, '
|
|
82
|
+
const specDir2 = (0, path_1.join)(iterationDir, '02-需求文档');
|
|
83
83
|
const specs = [];
|
|
84
84
|
for (const f of ['TECH.md', 'TEST.md', 'REVIEW.md', 'RISK.md', 'DEPS.md']) {
|
|
85
85
|
if (await (0, fs_extra_1.pathExists)((0, path_1.join)(specDir2, f)))
|
|
@@ -92,7 +92,7 @@ async function iterationSplitCommand(options) {
|
|
|
92
92
|
else {
|
|
93
93
|
logger_1.logger.info(' ℹ️ 未找到 ANALYSIS.md,建议先运行 speccore analyze');
|
|
94
94
|
}
|
|
95
|
-
const reqFile = (0, path_1.join)(iterationDir, '
|
|
95
|
+
const reqFile = (0, path_1.join)(iterationDir, '02-需求文档', options.file || 'REQUIREMENT.md');
|
|
96
96
|
if (!(await (0, fs_extra_1.pathExists)(reqFile))) {
|
|
97
97
|
spinner.fail(`Requirement file not found: ${reqFile}`);
|
|
98
98
|
return;
|
|
@@ -875,7 +875,7 @@ async function generateEnvExample(iterationDir, sections) {
|
|
|
875
875
|
logger_1.logger.info(`Env example: ${iterationDir}/.env.example`);
|
|
876
876
|
}
|
|
877
877
|
async function injectTechFromAnalysis(iterationDir, taskDir, sectionName) {
|
|
878
|
-
const analysisPath = (0, path_1.join)(iterationDir, '
|
|
878
|
+
const analysisPath = (0, path_1.join)(iterationDir, '02-需求文档', 'ANALYSIS.md');
|
|
879
879
|
if (!(await (0, fs_extra_1.pathExists)(analysisPath)))
|
|
880
880
|
return;
|
|
881
881
|
const analysis = await (0, fs_extra_1.readFile)(analysisPath, 'utf-8');
|
|
@@ -67,12 +67,12 @@ async function iterationFromGlobalCommand(options) {
|
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '
|
|
70
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '02-需求文档'));
|
|
71
71
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '00-技术文档'));
|
|
72
72
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(iterationDir, '00-迭代总览'));
|
|
73
73
|
// 6. 生成需求文档
|
|
74
74
|
const reqContent = generateIterationRequirement(options.name, reqDetails);
|
|
75
|
-
await (0, fs_extra_1.writeFile)((0, path_1.join)(iterationDir, '
|
|
75
|
+
await (0, fs_extra_1.writeFile)((0, path_1.join)(iterationDir, '02-需求文档', 'REQUIREMENT.md'), reqContent);
|
|
76
76
|
// 7. 生成架构文档
|
|
77
77
|
const archContent = generateIterationArchitecture(options.name, foundReqs);
|
|
78
78
|
await (0, fs_extra_1.writeFile)((0, path_1.join)(iterationDir, '00-技术文档', 'ARCHITECTURE.md'), archContent);
|
|
@@ -95,12 +95,12 @@ async function spec2docCommand(options) {
|
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
97
|
const iterDir = iterName.startsWith('Iteration-') ? iterName : `Iteration-${iterName}`;
|
|
98
|
-
const reqFile = (0, path_1.join)(iterDir, '
|
|
98
|
+
const reqFile = (0, path_1.join)(iterDir, '02-需求文档', 'REQUIREMENT.md');
|
|
99
99
|
if (await (0, fs_extra_1.pathExists)(reqFile)) {
|
|
100
100
|
sourceFiles.push({ path: reqFile, label: '需求文档' });
|
|
101
101
|
}
|
|
102
102
|
// 也检查 ANALYSIS.md
|
|
103
|
-
const anaFile = (0, path_1.join)(iterDir, '
|
|
103
|
+
const anaFile = (0, path_1.join)(iterDir, '02-需求文档', 'ANALYSIS.md');
|
|
104
104
|
if (await (0, fs_extra_1.pathExists)(anaFile)) {
|
|
105
105
|
sourceFiles.push({ path: anaFile, label: '分析文档' });
|
|
106
106
|
}
|
|
@@ -205,8 +205,8 @@ async function countPlatforms(iterDir, tasks) {
|
|
|
205
205
|
return { backend, frontend };
|
|
206
206
|
}
|
|
207
207
|
async function detectPhase(iterDir) {
|
|
208
|
-
const reqDoc = (0, path_1.join)(iterDir, '
|
|
209
|
-
const analysis = (0, path_1.join)(iterDir, '
|
|
208
|
+
const reqDoc = (0, path_1.join)(iterDir, '02-需求文档', 'REQUIREMENT.md');
|
|
209
|
+
const analysis = (0, path_1.join)(iterDir, '02-需求文档', 'ANALYSIS.md');
|
|
210
210
|
if (!(await (0, fs_extra_1.pathExists)(reqDoc)))
|
|
211
211
|
return 'init';
|
|
212
212
|
if (!(await (0, fs_extra_1.pathExists)(analysis)))
|
|
@@ -621,8 +621,8 @@ async function buildPersonPlatforms(iterDir, tasks) {
|
|
|
621
621
|
return map;
|
|
622
622
|
}
|
|
623
623
|
async function defaultPhase(iterDir) {
|
|
624
|
-
const reqDoc = (0, path_1.join)(iterDir, '
|
|
625
|
-
const analysis = (0, path_1.join)(iterDir, '
|
|
624
|
+
const reqDoc = (0, path_1.join)(iterDir, '02-需求文档', 'REQUIREMENT.md');
|
|
625
|
+
const analysis = (0, path_1.join)(iterDir, '02-需求文档', 'ANALYSIS.md');
|
|
626
626
|
if (!(await (0, fs_extra_1.pathExists)(reqDoc)))
|
|
627
627
|
return 'init';
|
|
628
628
|
if (!(await (0, fs_extra_1.pathExists)(analysis)))
|
|
@@ -58,7 +58,7 @@ async function syncToGlobal(options) {
|
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
// 2. 读取期次需求文档
|
|
61
|
-
const iterReqPath = (0, path_1.join)(iterDir, '
|
|
61
|
+
const iterReqPath = (0, path_1.join)(iterDir, '02-需求文档', 'REQUIREMENT.md');
|
|
62
62
|
if (!(await (0, fs_extra_1.pathExists)(iterReqPath))) {
|
|
63
63
|
logger_1.logger.error(`期次需求文档不存在: ${iterReqPath}`);
|
|
64
64
|
return;
|
|
@@ -155,7 +155,7 @@ async function syncFromGlobal(options) {
|
|
|
155
155
|
return;
|
|
156
156
|
}
|
|
157
157
|
const iterDirName = iterationName.startsWith('Iteration-') ? iterationName : `Iteration-${iterationName}`;
|
|
158
|
-
const iterReqPath = (0, path_1.join)(process.cwd(), iterDirName, '
|
|
158
|
+
const iterReqPath = (0, path_1.join)(process.cwd(), iterDirName, '02-需求文档', 'REQUIREMENT.md');
|
|
159
159
|
if (!(await (0, fs_extra_1.pathExists)(iterReqPath))) {
|
|
160
160
|
logger_1.logger.error(`期次需求文档不存在: ${iterReqPath}`);
|
|
161
161
|
return;
|
package/dist/commands/welcome.js
CHANGED
|
@@ -35,10 +35,10 @@ async function welcomeCommand(_options) {
|
|
|
35
35
|
}
|
|
36
36
|
let phase = 'doc';
|
|
37
37
|
if (iterName) {
|
|
38
|
-
const reqDoc = (0, path_1.join)(`Iteration-${iterName}`, '
|
|
38
|
+
const reqDoc = (0, path_1.join)(`Iteration-${iterName}`, '02-需求文档', 'REQUIREMENT.md');
|
|
39
39
|
if (!(await (0, fs_extra_1.pathExists)(reqDoc)))
|
|
40
40
|
phase = 'doc';
|
|
41
|
-
else if (!(await (0, fs_extra_1.pathExists)((0, path_1.join)(`Iteration-${iterName}`, '
|
|
41
|
+
else if (!(await (0, fs_extra_1.pathExists)((0, path_1.join)(`Iteration-${iterName}`, '02-需求文档', 'ANALYSIS.md'))))
|
|
42
42
|
phase = 'analyze';
|
|
43
43
|
else if (taskCount === 0)
|
|
44
44
|
phase = 'split';
|
|
@@ -170,7 +170,7 @@ ${Object.entries(modules).map(([name, files]) => `**${name}** (${files.length}
|
|
|
170
170
|
? '.speccore/GLOBAL/ANALYSIS.md'
|
|
171
171
|
: scope === 'task'
|
|
172
172
|
? `Iteration-${iteration}/${taskId}/backend/ANALYSIS.md`
|
|
173
|
-
: `Iteration-${iteration || 'current'}/
|
|
173
|
+
: `Iteration-${iteration || 'current'}/02-需求文档/ANALYSIS.md`}**
|
|
174
174
|
|
|
175
175
|
同时参考填充同目录下的 TECH.md、TEST.md、REVIEW.md、RISK.md、DEPS.md、MONITOR.md 模板文件。
|
|
176
176
|
`;
|
|
@@ -229,7 +229,7 @@ function groupByModule(files) {
|
|
|
229
229
|
*
|
|
230
230
|
* 从两个来源推断(优先级从高到低):
|
|
231
231
|
* 1. CONSTITUTION.md 中「项目信息」表格的「对应需求端」列 → N:M 映射
|
|
232
|
-
* 2.
|
|
232
|
+
* 2. 01-产品需求/ 下的子目录名 + 源码目录名 → 1:1 简单推断
|
|
233
233
|
*
|
|
234
234
|
* 用户可随时编辑 CONSTITUTION.md 中的「对应需求端」列来调整映射。
|
|
235
235
|
* 格式: "APP端, 管理后台" 表示该工程同时对应 APP端 和 管理后台 的需求。
|
|
@@ -242,7 +242,7 @@ function buildPlatformSourceMap(input) {
|
|
|
242
242
|
const platformDirs = new Set();
|
|
243
243
|
for (const req of input.requirements) {
|
|
244
244
|
const parts = req.split('/');
|
|
245
|
-
const prdIdx = parts.indexOf('
|
|
245
|
+
const prdIdx = parts.indexOf('01-产品需求');
|
|
246
246
|
if (prdIdx >= 0 && prdIdx + 1 < parts.length) {
|
|
247
247
|
const platformDir = parts[prdIdx + 1];
|
|
248
248
|
if (platformDir && !platformDir.startsWith('_')) {
|
|
@@ -13,7 +13,7 @@ exports.runAnalysis = runAnalysis;
|
|
|
13
13
|
*
|
|
14
14
|
* 输出范围 (scope):
|
|
15
15
|
* - global → .speccore/GLOBAL/ 全局架构/代码健康
|
|
16
|
-
* - iteration → Iteration-XX/
|
|
16
|
+
* - iteration → Iteration-XX/02-需求文档/ (默认)
|
|
17
17
|
* - task → Iteration-XX/Task-NN/ 单任务深化
|
|
18
18
|
*/
|
|
19
19
|
const fs_extra_1 = require("fs-extra");
|
|
@@ -35,10 +35,10 @@ async function runAnalysis(input) {
|
|
|
35
35
|
if (input.scope === 'task' && (!input.taskId || !input.iteration)) {
|
|
36
36
|
throw new Error('--scope task 必须同时指定 --task <id> 和 -I <iteration>');
|
|
37
37
|
}
|
|
38
|
-
// 自动检测: 都没指定 → 从
|
|
38
|
+
// 自动检测: 都没指定 → 从 01-产品需求/ 递归读取产品原始需求
|
|
39
39
|
if (requirements.length === 0 && sources.length === 0) {
|
|
40
40
|
if (input.scope === 'iteration' && input.iteration) {
|
|
41
|
-
const productReqDir = (0, path_1.join)(`Iteration-${input.iteration}`, '
|
|
41
|
+
const productReqDir = (0, path_1.join)(`Iteration-${input.iteration}`, '01-产品需求');
|
|
42
42
|
if (await (0, fs_extra_1.pathExists)(productReqDir)) {
|
|
43
43
|
// 递归扫描子目录 (backend/ frontend/Web/ 等)
|
|
44
44
|
const scanDir = async (dir) => {
|
|
@@ -55,9 +55,9 @@ async function runAnalysis(input) {
|
|
|
55
55
|
};
|
|
56
56
|
await scanDir(productReqDir);
|
|
57
57
|
}
|
|
58
|
-
// 兼容旧路径: 如果没有
|
|
58
|
+
// 兼容旧路径: 如果没有 01-产品需求/, 回退到 02-需求文档/REQUIREMENT.md
|
|
59
59
|
if (requirements.length === 0) {
|
|
60
|
-
const legacyReq = (0, path_1.join)(`Iteration-${input.iteration}`, '
|
|
60
|
+
const legacyReq = (0, path_1.join)(`Iteration-${input.iteration}`, '01-产品需求', 'REQUIREMENT.md');
|
|
61
61
|
if (await (0, fs_extra_1.pathExists)(legacyReq)) {
|
|
62
62
|
requirements = [legacyReq];
|
|
63
63
|
}
|
|
@@ -134,7 +134,7 @@ async function analyzeRequirements(input) {
|
|
|
134
134
|
else {
|
|
135
135
|
// iteration (default)
|
|
136
136
|
const iterDir = `Iteration-${input.iteration || 'current'}`;
|
|
137
|
-
outputPath = (0, path_1.join)(iterDir, '
|
|
137
|
+
outputPath = (0, path_1.join)(iterDir, '02-需求文档', input.output || 'ANALYSIS.md');
|
|
138
138
|
report = buildIterationReqReport(input, issues, archImpact);
|
|
139
139
|
}
|
|
140
140
|
return {
|
|
@@ -172,7 +172,7 @@ async function analyzeCodebase(input) {
|
|
|
172
172
|
else {
|
|
173
173
|
// iteration (default)
|
|
174
174
|
const iterDir = `Iteration-${input.iteration || 'current'}`;
|
|
175
|
-
outputPath = (0, path_1.join)(iterDir, '
|
|
175
|
+
outputPath = (0, path_1.join)(iterDir, '02-需求文档', input.output || 'CODE_ANALYSIS.md');
|
|
176
176
|
report = buildIterationCodeReport(input, fileStats, apiInventory, hotspots, deps);
|
|
177
177
|
}
|
|
178
178
|
return {
|
|
@@ -238,7 +238,7 @@ async function analyzeCombined(input) {
|
|
|
238
238
|
}
|
|
239
239
|
else {
|
|
240
240
|
const iterDir = `Iteration-${input.iteration || 'current'}`;
|
|
241
|
-
outputPath = (0, path_1.join)(iterDir, '
|
|
241
|
+
outputPath = (0, path_1.join)(iterDir, '02-需求文档', input.output || 'ANALYSIS.md');
|
|
242
242
|
report = buildAIEnhancedReport(input, 'iteration', { issues, archImpact, fileStats, apiInventory, aiContext, sourceContents });
|
|
243
243
|
}
|
|
244
244
|
return {
|
package/dist/core/next-steps.js
CHANGED
|
@@ -29,7 +29,7 @@ function getHints(stage, ctx) {
|
|
|
29
29
|
case 'doc2spec':
|
|
30
30
|
return [
|
|
31
31
|
{ action: `speccore analyze${iter ? ` --iteration=${iter}` : ''}`, desc: '分析需求:完整性 + 源码对标 + 架构影响 → ANALYSIS.md', args: '--auto 跳过交互直接生成报告' },
|
|
32
|
-
{ action: 'cat Iteration-' + (iter || 'X') + '/
|
|
32
|
+
{ action: 'cat Iteration-' + (iter || 'X') + '/02-需求文档/ANALYSIS.md', desc: '查看分析报告,填写技术方案部分' },
|
|
33
33
|
];
|
|
34
34
|
case 'analyze':
|
|
35
35
|
return [
|
|
@@ -12,7 +12,7 @@ const logger_1 = require("../utils/logger");
|
|
|
12
12
|
* 从迭代 ANALYSIS.md 提取所有待确认问题
|
|
13
13
|
*/
|
|
14
14
|
async function extractQuestions(iterationDir) {
|
|
15
|
-
const analysisPath = (0, path_1.join)(iterationDir, '
|
|
15
|
+
const analysisPath = (0, path_1.join)(iterationDir, '02-需求文档', 'ANALYSIS.md');
|
|
16
16
|
if (!(await (0, fs_extra_1.pathExists)(analysisPath)))
|
|
17
17
|
return [];
|
|
18
18
|
const content = await (0, fs_extra_1.readFile)(analysisPath, 'utf-8');
|