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.
Files changed (56) hide show
  1. package/README.md +8 -4
  2. package/dist/cli.js +41 -3
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/analyze.d.ts +7 -0
  5. package/dist/commands/analyze.d.ts.map +1 -0
  6. package/dist/commands/analyze.js +369 -0
  7. package/dist/commands/analyze.js.map +1 -0
  8. package/dist/commands/change.d.ts +2 -0
  9. package/dist/commands/change.d.ts.map +1 -1
  10. package/dist/commands/change.js +72 -0
  11. package/dist/commands/change.js.map +1 -1
  12. package/dist/commands/done.d.ts +8 -0
  13. package/dist/commands/done.d.ts.map +1 -0
  14. package/dist/commands/done.js +97 -0
  15. package/dist/commands/done.js.map +1 -0
  16. package/dist/commands/execute.d.ts +2 -0
  17. package/dist/commands/execute.d.ts.map +1 -1
  18. package/dist/commands/execute.js +147 -5
  19. package/dist/commands/execute.js.map +1 -1
  20. package/dist/commands/init.d.ts.map +1 -1
  21. package/dist/commands/init.js +3 -0
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/iteration/create.d.ts.map +1 -1
  24. package/dist/commands/iteration/create.js +6 -4
  25. package/dist/commands/iteration/create.js.map +1 -1
  26. package/dist/commands/iteration/split.d.ts +2 -0
  27. package/dist/commands/iteration/split.d.ts.map +1 -1
  28. package/dist/commands/iteration/split.js +492 -11
  29. package/dist/commands/iteration/split.js.map +1 -1
  30. package/dist/commands/lifecycle.d.ts +9 -0
  31. package/dist/commands/lifecycle.d.ts.map +1 -0
  32. package/dist/commands/lifecycle.js +223 -0
  33. package/dist/commands/lifecycle.js.map +1 -0
  34. package/dist/commands/word2spec.d.ts +1 -0
  35. package/dist/commands/word2spec.d.ts.map +1 -1
  36. package/dist/commands/word2spec.js +92 -12
  37. package/dist/commands/word2spec.js.map +1 -1
  38. package/dist/core/git-integration.d.ts +1 -1
  39. package/dist/core/git-integration.d.ts.map +1 -1
  40. package/dist/core/git-integration.js +5 -1
  41. package/dist/core/git-integration.js.map +1 -1
  42. package/dist/core/global-counters.d.ts +16 -0
  43. package/dist/core/global-counters.d.ts.map +1 -0
  44. package/dist/core/global-counters.js +44 -0
  45. package/dist/core/global-counters.js.map +1 -0
  46. package/dist/core/next-steps.d.ts +2 -0
  47. package/dist/core/next-steps.d.ts.map +1 -0
  48. package/dist/core/next-steps.js +69 -0
  49. package/dist/core/next-steps.js.map +1 -0
  50. package/dist/core/risk-scorer.d.ts +14 -0
  51. package/dist/core/risk-scorer.d.ts.map +1 -0
  52. package/dist/core/risk-scorer.js +61 -0
  53. package/dist/core/risk-scorer.js.map +1 -0
  54. package/dist/locales/en-US.json +19 -2
  55. package/dist/locales/zh-CN.json +19 -2
  56. 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"}
@@ -1,5 +1,8 @@
1
1
  {
2
- "_meta": { "locale": "en-US", "name": "English" },
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
+ }
@@ -1,5 +1,8 @@
1
1
  {
2
- "_meta": { "locale": "zh-CN", "name": "中文" },
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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speccore",
3
- "version": "5.11.2",
3
+ "version": "5.13.0",
4
4
  "description": "SpecCore - Code by Spec, Not by Vibe.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",