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
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.showNextSteps = showNextSteps;
|
|
4
|
+
/**
|
|
5
|
+
* next-steps — 每个阶段完成时提示下一步操作
|
|
6
|
+
*/
|
|
7
|
+
const logger_1 = require("../utils/logger");
|
|
8
|
+
function showNextSteps(stage, context = {}) {
|
|
9
|
+
const hints = getHints(stage, context);
|
|
10
|
+
if (hints.length === 0)
|
|
11
|
+
return;
|
|
12
|
+
logger_1.logger.info('\n📋 下一步:');
|
|
13
|
+
for (const h of hints) {
|
|
14
|
+
logger_1.logger.info(` ${h.action}`);
|
|
15
|
+
logger_1.logger.info(` ${h.desc}`);
|
|
16
|
+
if (h.args)
|
|
17
|
+
logger_1.logger.info(` 常用参数: ${h.args}`);
|
|
18
|
+
}
|
|
19
|
+
logger_1.logger.info('');
|
|
20
|
+
}
|
|
21
|
+
function getHints(stage, ctx) {
|
|
22
|
+
const iter = ctx.iteration || '';
|
|
23
|
+
switch (stage) {
|
|
24
|
+
case 'init':
|
|
25
|
+
return [
|
|
26
|
+
{ action: 'speccore iteration create --name=Q3', desc: '创建第一个期次', args: '--from/--to 指定时间范围' },
|
|
27
|
+
{ action: 'speccore import --project=backend --path=./src', desc: '导入现有代码到全量层', args: '--type backend|frontend|shell' },
|
|
28
|
+
];
|
|
29
|
+
case 'word2spec':
|
|
30
|
+
return [
|
|
31
|
+
{ action: `speccore analyze${iter ? ` --iteration=${iter}` : ''}`, desc: '分析需求:完整性 + 源码对标 + 架构影响 → ANALYSIS.md', args: '--auto 跳过交互直接生成报告' },
|
|
32
|
+
{ action: 'cat 期次-' + (iter || 'X') + '/00-需求文档/ANALYSIS.md', desc: '查看分析报告,填写技术方案部分' },
|
|
33
|
+
];
|
|
34
|
+
case 'analyze':
|
|
35
|
+
return [
|
|
36
|
+
{ action: `├─ 阻断问题 → 修复后再继续`, desc: '' },
|
|
37
|
+
{ action: `└─ 无阻断 → speccore iteration split${iter ? ` --iteration=${iter}` : ''}`, desc: '拆分需求为 Task', args: '--strict 逐 Task 预览确认' },
|
|
38
|
+
{ action: `补全技术方案:`, desc: '编辑 ANALYSIS.md 中的「技术方案」部分(选型/DB变更/接口依赖)' },
|
|
39
|
+
];
|
|
40
|
+
case 'split':
|
|
41
|
+
return [
|
|
42
|
+
{ action: `cat 期次-${iter || 'X'}/IMPACT.md`, desc: '查看风险评分 + 任务依赖关系' },
|
|
43
|
+
{ action: `speccore execute --task=Task-001 --strict --force${iter ? ` --iteration=${iter}` : ''}`, desc: '严格模式开发:逐项确认后再生成代码' },
|
|
44
|
+
{ action: `speccore execute --all --force${iter ? ` --iteration=${iter}` : ''}`, desc: '快速模式开发:AI 自动生成所有 Task 代码' },
|
|
45
|
+
{ action: `speccore lifecycle --all${iter ? ` --iteration=${iter}` : ''}`, desc: '查看任务看板' },
|
|
46
|
+
];
|
|
47
|
+
case 'execute':
|
|
48
|
+
return [
|
|
49
|
+
{ action: `speccore lifecycle --task=${ctx.task || 'Task-001'} --status=testing`, desc: '推进到测试阶段' },
|
|
50
|
+
{ action: `speccore lifecycle --task=${ctx.task || 'Task-001'} --check`, desc: '检查 TEST.md / REVIEW.md 进度' },
|
|
51
|
+
{ action: `speccore validate --task=${ctx.task || 'Task-001'}`, desc: '校验 Spec 一致性' },
|
|
52
|
+
];
|
|
53
|
+
case 'lifecycle':
|
|
54
|
+
return [
|
|
55
|
+
{ action: '参照 backend/TEST.md 逐项验证', desc: '测试通过后推进', args: `speccore lifecycle --task=${ctx.task || 'Task-001'} --status=review` },
|
|
56
|
+
{ action: '对照 backend/REVIEW.md 审查', desc: '审查通过后推进', args: `speccore lifecycle --task=${ctx.task || 'Task-001'} --status=done` },
|
|
57
|
+
{ action: `speccore archive --task=${ctx.task || 'Task-001'}`, desc: '归档完成的任务' },
|
|
58
|
+
];
|
|
59
|
+
case 'archive':
|
|
60
|
+
return [
|
|
61
|
+
{ action: `speccore sync-global --iteration=${iter || 'Q3'} --direction=to_global`, desc: '同步到全量层' },
|
|
62
|
+
{ action: 'speccore dashboard', desc: '查看全景仪表盘' },
|
|
63
|
+
{ action: 'speccore retro', desc: '迭代回顾' },
|
|
64
|
+
];
|
|
65
|
+
default:
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=next-steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-steps.js","sourceRoot":"","sources":["../../src/core/next-steps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* risk-scorer — 任务风险评分 + 标签
|
|
3
|
+
*/
|
|
4
|
+
export interface RiskScore {
|
|
5
|
+
level: '🔴 high' | '🟡 medium' | '🟢 low';
|
|
6
|
+
score: number;
|
|
7
|
+
tags: string[];
|
|
8
|
+
reasons: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 根据任务需求内容自动评分
|
|
12
|
+
*/
|
|
13
|
+
export declare function scoreRisk(content: string, taskName: string): RiskScore;
|
|
14
|
+
//# sourceMappingURL=risk-scorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk-scorer.d.ts","sourceRoot":"","sources":["../../src/core/risk-scorer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CA2DtE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* risk-scorer — 任务风险评分 + 标签
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.scoreRisk = scoreRisk;
|
|
7
|
+
/**
|
|
8
|
+
* 根据任务需求内容自动评分
|
|
9
|
+
*/
|
|
10
|
+
function scoreRisk(content, taskName) {
|
|
11
|
+
let score = 0;
|
|
12
|
+
const tags = [];
|
|
13
|
+
const reasons = [];
|
|
14
|
+
// ── 高风险: 支付/资金 ──
|
|
15
|
+
if (content.match(/支付|退款|转账|提现|余额|钱包|金额|价格|账单/)) {
|
|
16
|
+
score += 30;
|
|
17
|
+
tags.push('💰 支付');
|
|
18
|
+
reasons.push('涉及支付/资金操作');
|
|
19
|
+
}
|
|
20
|
+
// ── 高风险: 权限/认证 ──
|
|
21
|
+
if (content.match(/权限|角色|RBAC|认证|授权|登录|token|OAuth|JWT|鉴权/)) {
|
|
22
|
+
score += 25;
|
|
23
|
+
tags.push('🔐 权限');
|
|
24
|
+
reasons.push('涉及权限/认证变更');
|
|
25
|
+
}
|
|
26
|
+
// ── 中风险: 批量操作 ──
|
|
27
|
+
if (content.match(/批量删除|批量操作|批量导入|批量更新|全选/)) {
|
|
28
|
+
score += 20;
|
|
29
|
+
tags.push('📦 批量');
|
|
30
|
+
reasons.push('批量操作有数据风险');
|
|
31
|
+
}
|
|
32
|
+
// ── 中风险: 导出/报表 ──
|
|
33
|
+
if (content.match(/导出|报表|Excel|CSV|下载|文件生成/)) {
|
|
34
|
+
score += 15;
|
|
35
|
+
tags.push('📊 导出');
|
|
36
|
+
reasons.push('大数据量导出需注意性能');
|
|
37
|
+
}
|
|
38
|
+
// ── 中风险: 涉及数据库变更 ──
|
|
39
|
+
if (content.match(/数据表|ALTER|建表|索引|迁移|数据迁移|DDL/)) {
|
|
40
|
+
score += 15;
|
|
41
|
+
tags.push('🗄️ DB');
|
|
42
|
+
reasons.push('涉及数据库结构变更');
|
|
43
|
+
}
|
|
44
|
+
// ── 中风险: 外部依赖 ──
|
|
45
|
+
if (content.match(/第三方|外部API|回调|webhook|消息队列|Kafka|MQ/)) {
|
|
46
|
+
score += 10;
|
|
47
|
+
tags.push('🔗 外部依赖');
|
|
48
|
+
reasons.push('涉及外部系统集成');
|
|
49
|
+
}
|
|
50
|
+
// ── 低风险标记 ──
|
|
51
|
+
const crud = content.match(/\| (GET|POST|PUT|DELETE) \|/) || [];
|
|
52
|
+
if (crud.length >= 2 && score < 20) {
|
|
53
|
+
tags.push('📋 CRUD');
|
|
54
|
+
}
|
|
55
|
+
if (score < 15) {
|
|
56
|
+
tags.push('🟢 低风险');
|
|
57
|
+
}
|
|
58
|
+
const level = score >= 30 ? '🔴 high' : score >= 15 ? '🟡 medium' : '🟢 low';
|
|
59
|
+
return { level, score, tags, reasons };
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=risk-scorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk-scorer.js","sourceRoot":"","sources":["../../src/core/risk-scorer.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAYH,8BA2DC;AA9DD;;GAEG;AACH,SAAgB,SAAS,CAAC,OAAe,EAAE,QAAgB;IACzD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,mBAAmB;IACnB,IAAI,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC;QAChD,KAAK,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,EAAE,CAAC;QAC5D,KAAK,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC5C,KAAK,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC7C,KAAK,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;IAED,qBAAqB;IACrB,IAAI,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC;QACjD,KAAK,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,EAAE,CAAC;QACxD,KAAK,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAED,cAAc;IACd,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;IAChE,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC"}
|
package/dist/locales/en-US.json
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_meta": {
|
|
2
|
+
"_meta": {
|
|
3
|
+
"locale": "en-US",
|
|
4
|
+
"name": "English"
|
|
5
|
+
},
|
|
3
6
|
"cmd": {
|
|
4
7
|
"init": {
|
|
5
8
|
"start": "Initializing SpecCore project...",
|
|
@@ -132,5 +135,19 @@
|
|
|
132
135
|
"usage": "Usage: {cmd}",
|
|
133
136
|
"loading": "Loading...",
|
|
134
137
|
"done": "Done"
|
|
138
|
+
},
|
|
139
|
+
"task": {
|
|
140
|
+
"status": {
|
|
141
|
+
"pending": "Pending",
|
|
142
|
+
"in_progress": "In Progress",
|
|
143
|
+
"completed": "Completed",
|
|
144
|
+
"blocked": "Blocked",
|
|
145
|
+
"archived": "Archived"
|
|
146
|
+
},
|
|
147
|
+
"type": {
|
|
148
|
+
"feature": "Feature",
|
|
149
|
+
"bugfix": "Bug Fix",
|
|
150
|
+
"research": "Research"
|
|
151
|
+
}
|
|
135
152
|
}
|
|
136
|
-
}
|
|
153
|
+
}
|
package/dist/locales/zh-CN.json
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_meta": {
|
|
2
|
+
"_meta": {
|
|
3
|
+
"locale": "zh-CN",
|
|
4
|
+
"name": "中文"
|
|
5
|
+
},
|
|
3
6
|
"cmd": {
|
|
4
7
|
"init": {
|
|
5
8
|
"start": "初始化 SpecCore 项目...",
|
|
@@ -132,5 +135,19 @@
|
|
|
132
135
|
"usage": "用法: {cmd}",
|
|
133
136
|
"loading": "加载中...",
|
|
134
137
|
"done": "完成"
|
|
138
|
+
},
|
|
139
|
+
"task": {
|
|
140
|
+
"status": {
|
|
141
|
+
"pending": "待开发",
|
|
142
|
+
"in_progress": "开发中",
|
|
143
|
+
"completed": "已完成",
|
|
144
|
+
"blocked": "已阻塞",
|
|
145
|
+
"archived": "已归档"
|
|
146
|
+
},
|
|
147
|
+
"type": {
|
|
148
|
+
"feature": "功能",
|
|
149
|
+
"bugfix": "修复",
|
|
150
|
+
"research": "调研"
|
|
151
|
+
}
|
|
135
152
|
}
|
|
136
|
-
}
|
|
153
|
+
}
|