speccore 8.0.0 → 8.1.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.
@@ -30,6 +30,24 @@ export interface ProgressResult {
30
30
  /** 总数 */
31
31
  totalCount: number;
32
32
  }
33
+ export declare const QUALITY_RUBRICS: Record<string, {
34
+ checklist: string[];
35
+ antiPatterns: string[];
36
+ }>;
37
+ /**
38
+ * 根据文档名获取质量标准文本
39
+ * 自动区分 overview 和 platform 文档(TECH.md 后端/前端差异化)
40
+ */
41
+ export declare function buildQualityRubRIC(docName: string, platform?: string): string;
42
+ /**
43
+ * 校验已填充文档的内容质量
44
+ * 检查:最低字数、必含章节、表格是否有真实数据
45
+ */
46
+ export declare function validateContentQuality(docName: string, content: string, platform?: string): Promise<{
47
+ pass: boolean;
48
+ score: number;
49
+ issues: string[];
50
+ }>;
33
51
  /**
34
52
  * 计算 analyze 命令的文件清单
35
53
  * @param platforms 端列表
@@ -1 +1 @@
1
- {"version":3,"file":"spec-skeleton.d.ts","sourceRoot":"","sources":["../../src/core/spec-skeleton.ts"],"names":[],"mappings":"AAkBA,4BAA4B;AAC5B,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAMxD,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC;IAClC,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW;IACX,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qBAAqB;IACrB,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS;IACT,UAAU,EAAE,MAAM,CAAC;CACpB;AA6OD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,EACjB,SAAS,GAAE,MAAW,GACrB,aAAa,EAAE,CA+BjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,GAClB,aAAa,EAAE,CAgBjB;AAMD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,GACvB,OAAO,CAAC,cAAc,CAAC,CAmBzB;AAMD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,GACvB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAqBnD;AAMD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,GACvB,OAAO,CAAC,cAAc,CAAC,CAmBzB;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,EAAE,MAAM,GACd,MAAM,CAoCR"}
1
+ {"version":3,"file":"spec-skeleton.d.ts","sourceRoot":"","sources":["../../src/core/spec-skeleton.ts"],"names":[],"mappings":"AAkBA,4BAA4B;AAC5B,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAMxD,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC;IAClC,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW;IACX,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qBAAqB;IACrB,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS;IACT,UAAU,EAAE,MAAM,CAAC;CACpB;AA8OD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CA0L3F,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA0B7E;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAwE7D;AAMD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,EACjB,SAAS,GAAE,MAAW,GACrB,aAAa,EAAE,CA+BjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,GAClB,aAAa,EAAE,CAgBjB;AAMD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,GACvB,OAAO,CAAC,cAAc,CAAC,CAsBzB;AAMD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,GACvB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAqBnD;AAMD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,GACvB,OAAO,CAAC,cAAc,CAAC,CAmBzB;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,EAAE,MAAM,GACd,MAAM,CAoCR"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SKELETON_MARKER = void 0;
3
+ exports.QUALITY_RUBRICS = exports.SKELETON_MARKER = void 0;
4
+ exports.buildQualityRubRIC = buildQualityRubRIC;
5
+ exports.validateContentQuality = validateContentQuality;
4
6
  exports.computeAnalyzeManifest = computeAnalyzeManifest;
5
7
  exports.computeTaskManifest = computeTaskManifest;
6
8
  exports.generateSkeleton = generateSkeleton;
@@ -251,6 +253,299 @@ const TASK_DOCS = [
251
253
  },
252
254
  ];
253
255
  // ================================================================
256
+ // 质量标准(Quality Rubrics)— v8.1.0+
257
+ // 每种文档类型的专业质量检查清单,自动注入骨架文件和 prompt
258
+ // ================================================================
259
+ exports.QUALITY_RUBRICS = {
260
+ 'REQUIREMENT.md': {
261
+ checklist: [
262
+ '产品愿景与目标用户画像',
263
+ '核心场景地图(按业务场景分章节组织)',
264
+ '每个场景:用户故事 → 操作流程 → 业务规则 → 边界条件',
265
+ '验收标准(Given/When/Then 格式)',
266
+ '功能优先级矩阵(P0/P1/P2)',
267
+ '功能模块清单表(含「涉及端」列,标准端名)',
268
+ '发布里程碑与风险预判',
269
+ ],
270
+ antiPatterns: [
271
+ '按端分章节(应按业务场景组织)',
272
+ '写技术实现细节(应纯产品视角)',
273
+ '功能模块缺少「涉及端」标注',
274
+ '验收标准用模糊描述(如「正常使用」「合理范围」)',
275
+ ],
276
+ },
277
+ 'ANALYSIS.md': {
278
+ checklist: [
279
+ '按优先级分节(P0 必修 / P1 应修 / P2 建议)',
280
+ '每个功能点有唯一编号(F-01, F-02...)',
281
+ '每个功能点标注涉及端',
282
+ '接口变更清单(路径/方法/参数变化)',
283
+ '数据库变更清单(新增表/字段/索引)',
284
+ '风险点与缓解策略',
285
+ ],
286
+ antiPatterns: [
287
+ '功能点无编号或无涉及端标注',
288
+ '只列功能名不描述具体行为',
289
+ '缺少接口变更和数据库变更清单',
290
+ ],
291
+ },
292
+ 'TECH.md': {
293
+ checklist: [
294
+ '整体架构图(Mermaid graph/flowchart)',
295
+ '跨端交互说明(调用方 → 被调方、协议、接口路径)',
296
+ '中间件选型及理由',
297
+ '数据库设计(表名/字段/类型/索引/约束)',
298
+ '安全方案(鉴权/加密/脱敏/SQL注入防护)',
299
+ '性能指标(QPS预估/缓存策略/慢查询优化)',
300
+ 'API 契约(统一响应格式/错误码/分页规范)',
301
+ ],
302
+ antiPatterns: [
303
+ '只列技术栈不解释选型理由',
304
+ '接口定义缺少字段级说明',
305
+ '无安全方案或性能考量',
306
+ '架构图与文字描述不一致',
307
+ ],
308
+ },
309
+ 'DEPS.md': {
310
+ checklist: [
311
+ '内部服务依赖清单(服务名/用途/接口/SLA)',
312
+ '第三方依赖清单(包名/版本/用途/许可证)',
313
+ '集成方式说明(SDK/API/消息队列)',
314
+ '版本兼容性风险',
315
+ ],
316
+ antiPatterns: [
317
+ '只列名称不说明用途',
318
+ '缺少版本号',
319
+ '遗漏关键依赖',
320
+ ],
321
+ },
322
+ 'RISK.md': {
323
+ checklist: [
324
+ '至少 3 个风险项',
325
+ '每项标注可能性(高/中/低)和影响(高/中/低)',
326
+ '每项有具体缓解措施',
327
+ '回滚方案(触发条件 + 具体步骤)',
328
+ '数据恢复方案(如涉及数据变更)',
329
+ ],
330
+ antiPatterns: [
331
+ '风险描述笼统(如「可能出问题」)',
332
+ '缓解措施为空或「待定」',
333
+ '无回滚方案',
334
+ ],
335
+ },
336
+ 'REVIEW.md': {
337
+ checklist: [
338
+ '参数校验完整性',
339
+ '幂等性处理',
340
+ '索引覆盖',
341
+ '迁移脚本可回滚',
342
+ '鉴权配置',
343
+ '日志规范',
344
+ '错误处理',
345
+ '并发安全',
346
+ '至少 8 项检查,每项有具体检查方法',
347
+ ],
348
+ antiPatterns: [
349
+ '检查项过于笼统(如「代码质量」)',
350
+ '缺少具体检查方法',
351
+ '遗漏安全相关检查项',
352
+ ],
353
+ },
354
+ 'MONITOR.md': {
355
+ checklist: [
356
+ '业务指标(成功率/响应时间/错误率,含阈值)',
357
+ '系统指标(CPU/内存/连接池/磁盘)',
358
+ '告警规则(条件/级别/通知渠道)',
359
+ '监控大盘(必备指标列表)',
360
+ '至少 3 个业务指标 + 2 条告警规则',
361
+ ],
362
+ antiPatterns: [
363
+ '指标无阈值',
364
+ '告警规则无通知渠道',
365
+ '只有系统指标没有业务指标',
366
+ ],
367
+ },
368
+ 'FUNCTION_MAP.md': {
369
+ checklist: [
370
+ '表格含所有列:功能单元/涉及端/优先级/全局对比/共享能力/依赖任务/说明',
371
+ '功能单元与 REQUIREMENT.md 一一对应(不允许合并)',
372
+ '涉及端使用标准端名(逗号分隔)',
373
+ '全局对比标注(新增/扩展/重构/复用)',
374
+ '依赖任务标注正确',
375
+ '每行有跨端交互说明',
376
+ ],
377
+ antiPatterns: [
378
+ '将多个功能模块合并为一行',
379
+ '涉及端为空或使用非标准端名',
380
+ '缺少全局对比列',
381
+ '功能单元与 REQUIREMENT.md 不对应',
382
+ ],
383
+ },
384
+ 'TEST.md': {
385
+ checklist: [
386
+ '单元测试覆盖(核心函数/方法)',
387
+ '集成测试(API 端到端)',
388
+ '边界测试(异常参数/超时/并发/空值)',
389
+ '性能测试方案(基准/目标/工具)',
390
+ '测试用例含前置条件+操作步骤+预期结果',
391
+ '覆盖所有核心功能的正常流+异常流',
392
+ ],
393
+ antiPatterns: [
394
+ '只列「需要测试」不写具体用例',
395
+ '缺少异常场景测试',
396
+ '无性能测试基准',
397
+ '测试用例缺少预期结果',
398
+ ],
399
+ },
400
+ 'UI_SPEC.md': {
401
+ checklist: [
402
+ '页面清单(页面名/路由/核心功能/入口)',
403
+ '组件拆分(组件名/职责/复用级别)',
404
+ '交互流程(关键操作流程+状态变化)',
405
+ '状态管理(全局状态/本地状态/同步策略)',
406
+ '字段映射(前端字段 ↔ 后端 API 响应字段一一对应)',
407
+ '异常状态 UI(空状态/加载态/错误态/骨架屏)',
408
+ ],
409
+ antiPatterns: [
410
+ '字段映射与后端 API 不一致',
411
+ '缺少异常状态 UI 设计',
412
+ '只画正常流程不处理边界',
413
+ '组件拆分粒度过粗或过细',
414
+ ],
415
+ },
416
+ 'REQ.md': {
417
+ checklist: [
418
+ '功能描述(本任务的核心职责)',
419
+ '验收标准(Given/When/Then 格式,具体可测试)',
420
+ '业务规则(具体到可执行逻辑)',
421
+ '边界条件(参数范围/时间窗口/并发限制)',
422
+ '异常场景(至少 3 种异常 + 处理方式)',
423
+ '与其他 Task 的依赖关系',
424
+ ],
425
+ antiPatterns: [
426
+ '验收标准不可测试(如「功能正常」)',
427
+ '业务规则模糊(如「合理处理」)',
428
+ '缺少异常场景',
429
+ '未标注依赖关系',
430
+ ],
431
+ },
432
+ 'TASK.md': {
433
+ checklist: [
434
+ '按开发顺序列出实施步骤',
435
+ '每步有明确的完成标准(可验证)',
436
+ '标注步骤间依赖关系',
437
+ '估算每步工作量',
438
+ ],
439
+ antiPatterns: [
440
+ '步骤过于笼统(如「实现功能」)',
441
+ '无完成标准',
442
+ '缺少依赖关系',
443
+ ],
444
+ },
445
+ };
446
+ /**
447
+ * 根据文档名获取质量标准文本
448
+ * 自动区分 overview 和 platform 文档(TECH.md 后端/前端差异化)
449
+ */
450
+ function buildQualityRubRIC(docName, platform) {
451
+ const rubric = exports.QUALITY_RUBRICS[docName];
452
+ if (!rubric)
453
+ return '';
454
+ let text = `\n## 📋 质量标准(${docName})\n\n`;
455
+ // 端特定提示
456
+ if (platform && docName === 'TECH.md') {
457
+ const isBackend = /service|api|server|backend/i.test(platform);
458
+ if (isBackend) {
459
+ text += `> 🎯 **${platform} 是后端服务**,TECH.md 必须包含:接口签名(路径/方法/参数/响应)、数据模型(表/字段/索引)、业务逻辑、安全方案\n\n`;
460
+ }
461
+ else {
462
+ text += `> 🎯 **${platform} 是前端端**,TECH.md 必须包含:用户旅程、页面清单与路由、API 调用清单、组件设计、状态管理\n\n`;
463
+ }
464
+ }
465
+ text += `**必含内容**:\n`;
466
+ for (const item of rubric.checklist) {
467
+ text += `- [ ] ${item}\n`;
468
+ }
469
+ text += `\n**禁止**:\n`;
470
+ for (const item of rubric.antiPatterns) {
471
+ text += `- ❌ ${item}\n`;
472
+ }
473
+ return text;
474
+ }
475
+ /**
476
+ * 校验已填充文档的内容质量
477
+ * 检查:最低字数、必含章节、表格是否有真实数据
478
+ */
479
+ async function validateContentQuality(docName, content, platform) {
480
+ const issues = [];
481
+ let score = 100;
482
+ // 1. 最低字数检查(排除标记和空白)
483
+ const cleanContent = content
484
+ .replace(/<!--.*?-->/gs, '')
485
+ .replace(/^#+\s/gm, '')
486
+ .replace(/^>\s/gm, '')
487
+ .trim();
488
+ if (cleanContent.length < 200) {
489
+ issues.push(`内容过薄(${cleanContent.length} 字符,最低 200)`);
490
+ score -= 30;
491
+ }
492
+ else if (cleanContent.length < 500) {
493
+ issues.push(`内容偏少(${cleanContent.length} 字符,建议 500+)`);
494
+ score -= 10;
495
+ }
496
+ // 2. 必含章节检查
497
+ const rubric = exports.QUALITY_RUBRICS[docName];
498
+ if (rubric) {
499
+ const sectionMarkers = {
500
+ 'REQUIREMENT.md': ['验收标准', '优先级', '涉及端'],
501
+ 'ANALYSIS.md': ['P0', 'F-'],
502
+ 'TECH.md': ['接口', '数据模型'],
503
+ 'TEST.md': ['单元测试', '边界'],
504
+ 'UI_SPEC.md': ['页面', '组件'],
505
+ 'RISK.md': ['回滚'],
506
+ 'MONITOR.md': ['告警'],
507
+ 'FUNCTION_MAP.md': ['功能单元', '涉及端'],
508
+ 'REQ.md': ['验收标准', '异常'],
509
+ 'TASK.md': ['步骤'],
510
+ };
511
+ const markers = sectionMarkers[docName] || [];
512
+ for (const marker of markers) {
513
+ if (!content.includes(marker)) {
514
+ issues.push(`缺少关键内容:「${marker}」`);
515
+ score -= 10;
516
+ }
517
+ }
518
+ }
519
+ // 3. 占位符残留检查
520
+ const placeholders = ['待填充', 'TODO', 'TBD', '_待定_', 'AI-FILL'];
521
+ for (const ph of placeholders) {
522
+ if (content.includes(ph)) {
523
+ issues.push(`含占位符残留:「${ph}」`);
524
+ score -= 5;
525
+ }
526
+ }
527
+ // 4. 表格数据检查(有表头但无数据行)
528
+ const tableHeaders = content.match(/^\|.+\|$/gm);
529
+ if (tableHeaders && tableHeaders.length > 0) {
530
+ const lines = content.split('\n');
531
+ for (let i = 0; i < lines.length; i++) {
532
+ if (/^\|.+\|$/.test(lines[i]) && lines[i].includes('---')) {
533
+ const nextLine = lines[i + 1] || '';
534
+ if (!/^\|.+\|$/.test(nextLine) || /^\|\s*\|$/.test(nextLine)) {
535
+ issues.push('表格有表头但无数据行');
536
+ score -= 10;
537
+ break;
538
+ }
539
+ }
540
+ }
541
+ }
542
+ return {
543
+ pass: score >= 60 && issues.filter(i => i.includes('过薄')).length === 0,
544
+ score: Math.max(0, score),
545
+ issues,
546
+ };
547
+ }
548
+ // ================================================================
254
549
  // Manifest 计算函数
255
550
  // ================================================================
256
551
  /**
@@ -327,8 +622,11 @@ async function generateSkeleton(specDir, entries) {
327
622
  continue;
328
623
  }
329
624
  // 文件不存在 → 创建骨架
625
+ // v8.1.0+: 自动追加质量标准(AI 填充时可见质量要求)
330
626
  await (0, fs_extra_1.ensureDir)((0, path_1.dirname)(fullPath));
331
- await (0, fs_extra_1.writeFile)(fullPath, entry.placeholder, 'utf-8');
627
+ const rubricSection = buildQualityRubRIC(entry.docName, entry.platform);
628
+ const fullContent = entry.placeholder + rubricSection;
629
+ await (0, fs_extra_1.writeFile)(fullPath, fullContent, 'utf-8');
332
630
  result.created.push(entry.relPath);
333
631
  }
334
632
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"spec-skeleton.js","sourceRoot":"","sources":["../../src/core/spec-skeleton.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-skeleton.js","sourceRoot":"","sources":["../../src/core/spec-skeleton.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify-engine.d.ts","sourceRoot":"","sources":["../../src/core/verify-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAMD,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAO9E;AAyID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA0DnE;AAMD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE,OAAO,CAAC,YAAY,CAAC,CAmEvB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgD/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQvF;AAsYD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE,OAAO,CAAC,iBAAiB,CAAC,CAmH5B;AAMD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
1
+ {"version":3,"file":"verify-engine.d.ts","sourceRoot":"","sources":["../../src/core/verify-engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAMD,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAO9E;AAyID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA0DnE;AAMD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE,OAAO,CAAC,YAAY,CAAC,CAmEvB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgD/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQvF;AAsYD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE,OAAO,CAAC,iBAAiB,CAAC,CA2H5B;AAgID;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
@@ -21,6 +21,7 @@ const fs_extra_1 = require("fs-extra");
21
21
  const logger_1 = require("../utils/logger");
22
22
  // v6.84.0+: AGENTS 引擎集成
23
23
  const agents_1 = require("./agents");
24
+ const spec_skeleton_1 = require("./spec-skeleton");
24
25
  // ============================================================
25
26
  // 项目类型检测
26
27
  // ============================================================
@@ -794,6 +795,12 @@ async function runQualityGate(taskId, codePath, taskDir, options) {
794
795
  // 10. 错误码一致性(非阻塞,读取 ERROR_CODES.md)
795
796
  logger_1.logger.info(' 🔢 错误码一致性...');
796
797
  checks.push(await checkArtifactConsistency(codePath, taskDir, 'ERROR_CODES.md', '错误码一致性'));
798
+ // 11. 规格文档质量校验(v8.1.0+,检查 REQ.md/TECH.md 是否有实质内容)
799
+ logger_1.logger.info(' 📋 规格文档质量...');
800
+ checks.push(await checkSpecDocQuality(taskDir));
801
+ // 12. 代码文件非空检查(v8.1.0+,确保 src/ 下有实际代码)
802
+ logger_1.logger.info(' 📁 代码文件检查...');
803
+ checks.push(await checkCodeFilesExist(codePath));
797
804
  // 汇总
798
805
  const report = {
799
806
  taskId,
@@ -858,6 +865,123 @@ async function runQualityGate(taskId, codePath, taskDir, options) {
858
865
  return { passed, blockingFailed, warnings, report, agentChecks };
859
866
  }
860
867
  // ============================================================
868
+ // v8.1.0+: 规格文档质量校验 — 检查 REQ.md/TECH.md 是否有实质内容
869
+ // ============================================================
870
+ async function checkSpecDocQuality(taskDir) {
871
+ const start = Date.now();
872
+ const issues = [];
873
+ let totalScore = 0;
874
+ let checkedCount = 0;
875
+ // 扫描子任务目录下的 REQ.md 和 TECH.md
876
+ const specFiles = [];
877
+ const candidates = ['REQ.md', 'TECH.md'];
878
+ // 直接子目录(00-specs/)
879
+ for (const doc of candidates) {
880
+ const p = (0, path_1.join)(taskDir, '00-specs', doc);
881
+ if (await (0, fs_extra_1.pathExists)(p))
882
+ specFiles.push({ path: p, docName: doc });
883
+ }
884
+ // 端子任务目录(10-backend/*/subtask/, 20-frontend/*/subtask/)
885
+ for (const catDir of ['10-backend', '20-frontend']) {
886
+ const catPath = (0, path_1.join)(taskDir, catDir);
887
+ if (!(await (0, fs_extra_1.pathExists)(catPath)))
888
+ continue;
889
+ try {
890
+ const services = await (0, fs_extra_1.readdir)(catPath, { withFileTypes: true });
891
+ for (const svc of services) {
892
+ if (!svc.isDirectory())
893
+ continue;
894
+ const subs = await (0, fs_extra_1.readdir)((0, path_1.join)(catPath, svc.name), { withFileTypes: true });
895
+ for (const sub of subs) {
896
+ if (!sub.isDirectory())
897
+ continue;
898
+ for (const doc of candidates) {
899
+ const p = (0, path_1.join)(catPath, svc.name, sub.name, doc);
900
+ if (await (0, fs_extra_1.pathExists)(p))
901
+ specFiles.push({ path: p, docName: doc });
902
+ }
903
+ }
904
+ }
905
+ }
906
+ catch { /* 跳过 */ }
907
+ }
908
+ if (specFiles.length === 0) {
909
+ return {
910
+ name: '规格文档质量',
911
+ status: 'skip',
912
+ duration: Date.now() - start,
913
+ output: '未找到 REQ.md/TECH.md',
914
+ details: '未找到规格文档',
915
+ blocking: false,
916
+ };
917
+ }
918
+ for (const sf of specFiles) {
919
+ try {
920
+ const content = await (0, fs_extra_1.readFile)(sf.path, 'utf-8');
921
+ const result = await (0, spec_skeleton_1.validateContentQuality)(sf.docName, content);
922
+ totalScore += result.score;
923
+ checkedCount++;
924
+ if (result.score < 60) {
925
+ issues.push(`${sf.path.replace(taskDir + '/', '')}: ${result.score}/100 — ${result.issues.join(';')}`);
926
+ }
927
+ }
928
+ catch { /* skip */ }
929
+ }
930
+ const avgScore = checkedCount > 0 ? Math.round(totalScore / checkedCount) : 0;
931
+ const details = checkedCount > 0
932
+ ? `${checkedCount} 个文档平均 ${avgScore}/100${issues.length > 0 ? `,${issues.length} 个不达标` : ''}`
933
+ : '无文档可检查';
934
+ return {
935
+ name: '规格文档质量',
936
+ status: issues.length > 0 ? 'warn' : 'pass',
937
+ duration: Date.now() - start,
938
+ output: issues.join('\n'),
939
+ details,
940
+ blocking: false,
941
+ };
942
+ }
943
+ // ============================================================
944
+ // v8.1.0+: 代码文件非空检查 — 确保 src/ 下有实际代码
945
+ // ============================================================
946
+ async function checkCodeFilesExist(codePath) {
947
+ const start = Date.now();
948
+ const srcDir = (0, path_1.join)(codePath, 'src');
949
+ const codeExts = ['.ts', '.js', '.java', '.go', '.py', '.vue', '.jsx', '.tsx'];
950
+ let codeFileCount = 0;
951
+ async function countCodeFiles(dir) {
952
+ if (!(await (0, fs_extra_1.pathExists)(dir)))
953
+ return;
954
+ try {
955
+ const entries = await (0, fs_extra_1.readdir)(dir, { withFileTypes: true });
956
+ for (const entry of entries) {
957
+ if (entry.isDirectory()) {
958
+ await countCodeFiles((0, path_1.join)(dir, entry.name));
959
+ }
960
+ else if (codeExts.some(ext => entry.name.endsWith(ext))) {
961
+ codeFileCount++;
962
+ }
963
+ }
964
+ }
965
+ catch { /* skip */ }
966
+ }
967
+ await countCodeFiles(srcDir);
968
+ // 也检查 tests/ 目录
969
+ let testFileCount = 0;
970
+ const testDir = (0, path_1.join)(codePath, 'tests');
971
+ await countCodeFiles(testDir).then(() => {
972
+ testFileCount = codeFileCount - testFileCount;
973
+ // 重新计算:只统计 tests/
974
+ });
975
+ return {
976
+ name: '代码文件检查',
977
+ status: codeFileCount === 0 ? 'warn' : 'pass',
978
+ duration: Date.now() - start,
979
+ output: codeFileCount === 0 ? 'src/ 目录无代码文件' : `发现 ${codeFileCount} 个代码文件`,
980
+ details: codeFileCount === 0 ? 'src/ 无代码文件' : `${codeFileCount} 个代码文件`,
981
+ blocking: false,
982
+ };
983
+ }
984
+ // ============================================================
861
985
  // v6.79.0+: 文档同步 — 根据实际测试结果更新 TEST.md
862
986
  // ============================================================
863
987
  /**