speccore 6.97.0 → 7.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.
- package/.agents/agents/README.md +79 -0
- package/.agents/agents/spec-analyzer.md +41 -0
- package/.agents/agents/spec-architect.md +57 -0
- package/.agents/agents/spec-change-detector.md +55 -0
- package/.agents/agents/spec-clarifier.md +83 -0
- package/.agents/agents/spec-executor.md +41 -0
- package/.agents/agents/spec-gatekeeper.md +84 -0
- package/.agents/agents/spec-global-analyzer.md +111 -0
- package/.agents/agents/spec-knowledge-curator.md +54 -0
- package/.agents/agents/spec-reviewer.md +46 -0
- package/.agents/agents/spec-security-auditor.md +56 -0
- package/.agents/agents/spec-tester.md +120 -0
- package/README.md +25 -1
- package/dist/cli.js +55 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +179 -40
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/config.js +15 -4
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/graph.d.ts +25 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +523 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +229 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/iteration-from-global.js +2 -2
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +2 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/core/ask-engine.d.ts.map +1 -1
- package/dist/core/ask-engine.js +12 -5
- package/dist/core/ask-engine.js.map +1 -1
- package/dist/core/code-graph/parser.d.ts.map +1 -1
- package/dist/core/code-graph/parser.js +21 -1
- package/dist/core/code-graph/parser.js.map +1 -1
- package/dist/core/graph-semantic.d.ts +51 -0
- package/dist/core/graph-semantic.d.ts.map +1 -0
- package/dist/core/graph-semantic.js +371 -0
- package/dist/core/graph-semantic.js.map +1 -0
- package/dist/core/incremental-analyzer.js +1 -1
- package/dist/core/incremental-analyzer.js.map +1 -1
- package/dist/core/knowledge-graph.d.ts +3 -0
- package/dist/core/knowledge-graph.d.ts.map +1 -1
- package/dist/core/knowledge-graph.js +190 -0
- package/dist/core/knowledge-graph.js.map +1 -1
- package/dist/core/platform-addition.js +3 -3
- package/dist/core/platform-addition.js.map +1 -1
- package/dist/core/rag-engine.d.ts +30 -0
- package/dist/core/rag-engine.d.ts.map +1 -1
- package/dist/core/rag-engine.js +78 -0
- package/dist/core/rag-engine.js.map +1 -1
- package/dist/utils/mermaid-render.d.ts +39 -0
- package/dist/utils/mermaid-render.d.ts.map +1 -0
- package/dist/utils/mermaid-render.js +284 -0
- package/dist/utils/mermaid-render.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/analyze.js
CHANGED
|
@@ -506,13 +506,17 @@ async function analyzeCommand(options) {
|
|
|
506
506
|
if (options.scope === 'global') {
|
|
507
507
|
// 全局分析:预创建 .speccore/GLOBAL/ 目录结构,不写迭代目录
|
|
508
508
|
// v6.81.0+: 需求文档单独放在 requirements/ 下,技术文档放在 platforms/ 下
|
|
509
|
+
// v6.98.0+: 全局技术文档统一放在 global/ 子目录下,不与 platforms/requirements 平级
|
|
509
510
|
const globalDir = (0, path_1.join)(process.cwd(), '.speccore', 'GLOBAL');
|
|
510
511
|
await (0, fs_extra_1.ensureDir)(globalDir);
|
|
512
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(globalDir, 'global'));
|
|
511
513
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(globalDir, 'platforms'));
|
|
512
514
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(globalDir, 'requirements'));
|
|
513
515
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(globalDir, 'requirements', 'images'));
|
|
514
516
|
await (0, fs_extra_1.ensureDir)((0, path_1.join)(globalDir, 'requirements', 'prototypes'));
|
|
515
|
-
|
|
517
|
+
// v7.0.0+: 图表可视化目录
|
|
518
|
+
await (0, fs_extra_1.ensureDir)((0, path_1.join)(globalDir, 'diagrams'));
|
|
519
|
+
logger_1.logger.info(`📁 已预创建 .speccore/GLOBAL/ 目录结构(global/ + platforms/ + requirements/ + diagrams/)`);
|
|
516
520
|
}
|
|
517
521
|
else {
|
|
518
522
|
const iterForDirs = options.iteration || await (0, context_1.getDefaultIteration)();
|
|
@@ -801,11 +805,13 @@ async function analyzeCommand(options) {
|
|
|
801
805
|
targetFilename = filename;
|
|
802
806
|
}
|
|
803
807
|
else if (globalSet.has(filename)) {
|
|
804
|
-
|
|
808
|
+
// v6.98.0+: 全局技术文档统一放入 global/ 子目录
|
|
809
|
+
targetDir = (0, path_1.join)(globalBaseDir, 'global');
|
|
805
810
|
targetFilename = filename;
|
|
806
811
|
}
|
|
807
812
|
else {
|
|
808
|
-
|
|
813
|
+
// v6.98.0+: 未知文件也归入 global/ 子目录,避免与 platforms/requirements 平级
|
|
814
|
+
targetDir = (0, path_1.join)(globalBaseDir, 'global');
|
|
809
815
|
targetFilename = filename;
|
|
810
816
|
}
|
|
811
817
|
await (0, fs_extra_1.ensureDir)(targetDir);
|
|
@@ -1710,6 +1716,49 @@ async function buildMultiDocPrompt(command, ctx, options) {
|
|
|
1710
1716
|
prompt += `| 性能 | 搜索性能相关代码(懒加载/虚拟滚动/缓存/预加载) | 优化手段、适用场景 |\n\n`;
|
|
1711
1717
|
prompt += `**输出**:每个端一个 \`_INDEX.md\`,按上述维度组织,只含名称和路径列表,不含详细逻辑\n`;
|
|
1712
1718
|
prompt += `**存放**:\`.speccore/GLOBAL/platforms/{端名}/_INDEX.md\`\n\n`;
|
|
1719
|
+
prompt += `### Layer 1 附加任务:提取可复用模式(PATTERNS)\n`;
|
|
1720
|
+
prompt += `在扫描每个端时,同时识别该端的可复用设计模式,写入 \`.speccore/PATTERNS/\`。这是跨迭代复用的核心资产。\n\n`;
|
|
1721
|
+
prompt += `**后端端模式提取维度(6类)**:\n`;
|
|
1722
|
+
prompt += `| 模式类型 | 扫描位置 | 提取内容 | 存放路径 |\n`;
|
|
1723
|
+
prompt += `| :--- | :--- | :--- | :--- |\n`;
|
|
1724
|
+
prompt += `| 架构模式 | 项目结构、模块划分 | 分层架构、目录约定、模块组织方式 | \`PATTERNS/{端名}/architecture/\` |\n`;
|
|
1725
|
+
prompt += `| 数据模型模式 | Entity/Model/Schema | 通用字段设计(软删除、多租户、审计字段)、关联模式 | \`PATTERNS/{端名}/data-model/\` |\n`;
|
|
1726
|
+
prompt += `| API 契约模式 | Controller/Handler | 统一响应格式、分页模式、错误包装、鉴权装饰器 | \`PATTERNS/{端名}/api-contract/\` |\n`;
|
|
1727
|
+
prompt += `| 安全模式 | 鉴权/校验/加密代码 | JWT/RBAC 实现、输入校验策略、敏感数据处理 | \`PATTERNS/{端名}/security/\` |\n`;
|
|
1728
|
+
prompt += `| 性能模式 | 缓存/批量/异步代码 | 缓存策略、批量查询、异步处理、连接池配置 | \`PATTERNS/{端名}/performance/\` |\n`;
|
|
1729
|
+
prompt += `| 工具/中间件 | utils/middleware 目录 | 可复用的工具函数、通用中间件、拦截器 | \`PATTERNS/{端名}/utils/\` |\n`;
|
|
1730
|
+
prompt += `**前端端模式提取维度(6类)**:\n`;
|
|
1731
|
+
prompt += `| 模式类型 | 扫描位置 | 提取内容 | 存放路径 |\n`;
|
|
1732
|
+
prompt += `| :--- | :--- | :--- | :--- |\n`;
|
|
1733
|
+
prompt += `| 组件模式 | components/ui 目录 | 高复用组件、复合组件、设计 token 使用 | \`PATTERNS/{端名}/components/\` |\n`;
|
|
1734
|
+
prompt += `| Hooks 模式 | hooks/composables 目录 | 可复用逻辑抽离、状态封装、生命周期管理 | \`PATTERNS/{端名}/hooks/\` |\n`;
|
|
1735
|
+
prompt += `| 状态管理模式 | store/pinia/vuex/redux | 状态切片设计、actions 组织、持久化策略 | \`PATTERNS/{端名}/state/\` |\n`;
|
|
1736
|
+
prompt += `| 路由/导航模式 | router/routes 配置 | 路由守卫、权限路由、动态路由、面包屑 | \`PATTERNS/{端名}/routing/\` |\n`;
|
|
1737
|
+
prompt += `| 请求/拦截模式 | API 调用封装 | 请求封装、错误处理、重试策略、缓存策略 | \`PATTERNS/{端名}/api-client/\` |\n`;
|
|
1738
|
+
prompt += `| 布局/样式模式 | layouts/themes 目录 | 布局组件、响应式策略、主题切换、CSS 架构 | \`PATTERNS/{端名}/layout/\` |\n`;
|
|
1739
|
+
prompt += `**跨端通用模式**:如果某模式在 2+ 端出现,优先写入通用分类(如 \`PATTERNS/architecture/\`),端差异用段落标注。\n`;
|
|
1740
|
+
prompt += `**写入方式**:使用 \`PATTERNS/{端名}/{分类}/{kebab-case模式名}.md\` 作为文件名。\n\n`;
|
|
1741
|
+
prompt += `### Layer 1 附加任务:提取语义级节点标签(SEMANTIC TAGS)\n`;
|
|
1742
|
+
prompt += `在扫描每个端时,同时提取语义标签,写入 \`.speccore/cache/semantic-tags.json\`。这是知识图谱理解代码意图的关键资产。\n\n`;
|
|
1743
|
+
prompt += `**提取规则(本地解析,零 Token 消耗)**:\n`;
|
|
1744
|
+
prompt += `| 提取源 | 提取内容 | 示例 |\n`;
|
|
1745
|
+
prompt += `| :--- | :--- | :--- |\n`;
|
|
1746
|
+
prompt += `| JSDoc/TSDoc 注释 | 函数/类的 @description、@summary | \`用户认证入口,处理登录/注册/登出\` |\n`;
|
|
1747
|
+
prompt += `| 文件头注释 | 文件顶部的多行注释 | \`会议室预订服务的核心业务逻辑层\` |\n`;
|
|
1748
|
+
prompt += `| 文件名推断 | 文件名关键词映射到业务域 | auth → 认证授权, order → 订单交易 |\n`;
|
|
1749
|
+
prompt += `| 导出名称推断 | 类名后缀推断角色 | XxxController → 接口控制器, XxxService → 业务服务 |\n`;
|
|
1750
|
+
prompt += `| 目录结构推断 | 文件所在目录映射到模块 | src/user/ → 用户管理, src/order/ → 订单交易 |\n\n`;
|
|
1751
|
+
prompt += `**输出格式**:JSON 数组,每个文件一条记录\n`;
|
|
1752
|
+
prompt += `\`\`\`json\n`;
|
|
1753
|
+
prompt += `[\n`;
|
|
1754
|
+
prompt += ` {\n`;
|
|
1755
|
+
prompt += ` "file": "backend/src/auth/AuthController.ts",\n`;
|
|
1756
|
+
prompt += ` "semanticTags": ["认证授权", "用户管理"],\n`;
|
|
1757
|
+
prompt += ` "description": "用户认证控制器,处理登录/注册/Token刷新",\n`;
|
|
1758
|
+
prompt += ` "businessRole": "接口控制器"\n`;
|
|
1759
|
+
prompt += ` }\n`;
|
|
1760
|
+
prompt += `]\n`;
|
|
1761
|
+
prompt += `\`\`\`\n\n`;
|
|
1713
1762
|
prompt += `## 🔗 Layer 2: 跨端关联分析(基于 Layer 1 的索引)\n\n`;
|
|
1714
1763
|
prompt += `1. **匹配前后端接口**:\n`;
|
|
1715
1764
|
prompt += ` - 前端 \`_INDEX.md\` 中的 API 调用路径 vs 后端 \`_INDEX.md\` 中的接口路径\n`;
|
|
@@ -1744,7 +1793,10 @@ async function buildMultiDocPrompt(command, ctx, options) {
|
|
|
1744
1793
|
prompt += ` - 每个功能模块标注:涉及端、核心页面、核心接口、实体名称、消息队列\n\n`;
|
|
1745
1794
|
prompt += `**输出**:\n`;
|
|
1746
1795
|
prompt += `- \`_ASSOCIATION.md\`:前后端关联矩阵 + 接口缺口/未使用接口清单 + 消息流链路 + 定时任务影响 + 外部集成分布 + 配置一致性风险\n`;
|
|
1796
|
+
prompt += ` - 此文档中必须包含 **模块关系 Mermaid 图**(graph LR),展示各功能模块间的依赖关系\n`;
|
|
1797
|
+
prompt += ` - 此文档中必须包含 **接口依赖 Mermaid 图**(graph TD),展示前端页面 → 后端接口的调用关系\n`;
|
|
1747
1798
|
prompt += `- \`_MODULES.md\`:功能模块候选清单(从源码聚类,含消息/定时任务维度,供 Layer 3 验证)\n`;
|
|
1799
|
+
prompt += ` - 此文档中必须包含 **模块全景 Mermaid 图**(graph LR),展示所有功能模块及其所属端\n`;
|
|
1748
1800
|
prompt += `**存放**:\`.speccore/GLOBAL/platforms/_shared/\`\n\n`;
|
|
1749
1801
|
prompt += `## 🔍 Layer 3: 按功能模块深入分析(不是按端)\n\n`;
|
|
1750
1802
|
prompt += `基于 Layer 2 的 \`_MODULES.md\`,逐个功能模块深入分析。\n`;
|
|
@@ -1760,7 +1812,29 @@ async function buildMultiDocPrompt(command, ctx, options) {
|
|
|
1760
1812
|
prompt += `- 后端端:该功能模块相关的 API 详细设计、数据模型、业务规则、安全策略\n`;
|
|
1761
1813
|
prompt += `- 前端端:该功能模块相关的页面详细设计、交互流程、字段映射、错误处理\n`;
|
|
1762
1814
|
prompt += `- 跨端:该功能模块的交互时序图(含异步消息链路,供 Layer 4 汇总到 INTERACTION_MAP.md)\n`;
|
|
1815
|
+
prompt += ` - 时序图用 **Mermaid sequenceDiagram** 语法嵌入到分析文档中\n`;
|
|
1816
|
+
prompt += ` - 关键操作流程用 **Mermaid flowchart** 语法嵌入到分析文档中\n`;
|
|
1817
|
+
prompt += ` - 状态流转用 **Mermaid stateDiagram** 语法嵌入到分析文档中\n`;
|
|
1763
1818
|
prompt += `- 跨端:该功能模块涉及的外部集成清单(第三方 API、消息队列、定时任务)\n\n`;
|
|
1819
|
+
prompt += `### Layer 3 附加任务:功能模块级模式提取(PATTERNS)\n`;
|
|
1820
|
+
prompt += `每个功能模块分析完成后,提取该模块的可复用模式,补充到 \`.speccore/PATTERNS/\`。\n\n`;
|
|
1821
|
+
prompt += `**提取维度**:\n`;
|
|
1822
|
+
prompt += `- **跨端交互模式**:该模块的前后端交互方式是否有代表性(如表单提交+乐观更新、轮询刷新、WebSocket 实时推送)\n`;
|
|
1823
|
+
prompt += `- **业务规则模式**:该模块的业务规则是否有通用性(如审批流程、库存扣减、权限校验)\n`;
|
|
1824
|
+
prompt += `- **数据流模式**:该模块的数据流转是否有代表性(如缓存更新策略、数据同步机制、离线优先)\n`;
|
|
1825
|
+
prompt += `- **UI 交互模式**:该模块的页面交互是否有复用价值(如列表筛选、表单校验、弹窗确认、拖拽排序)\n`;
|
|
1826
|
+
prompt += `- **错误处理模式**:该模块的错误场景处理是否有代表性(如网络失败重试、权限不足提示、数据冲突解决)\n\n`;
|
|
1827
|
+
prompt += `**存放规则**:\n`;
|
|
1828
|
+
prompt += `- 单端模式 → \`PATTERNS/{端名}/{分类}/{模块名}-{模式类型}.md\`\n`;
|
|
1829
|
+
prompt += `- 跨端模式 → \`PATTERNS/{分类}/{模块名}-{模式类型}.md\`(不绑定端)\n`;
|
|
1830
|
+
prompt += `- 示例:\`PATTERNS/h5-mobile/components/booking-form-validation.md\`、\`PATTERNS/architecture/optimistic-update-pattern.md\`\n\n`;
|
|
1831
|
+
prompt += `### Layer 3 附加任务:功能模块语义标注\n`;
|
|
1832
|
+
prompt += `每个功能模块分析完成后,为该模块涉及的核心代码文件生成语义标注,追加到 \`semantic-tags.json\`。\n\n`;
|
|
1833
|
+
prompt += `**标注维度**:\n`;
|
|
1834
|
+
prompt += `- **业务功能标签**:该文件在功能模块中承担什么职责(如「表单提交校验」、「状态机驱动」、「数据持久化」)\n`;
|
|
1835
|
+
prompt += `- **交互角色标签**:该文件在跨端交互中扮演什么角色(如「请求发起者」、「事件生产者」、「状态同步者」)\n`;
|
|
1836
|
+
prompt += `- **数据流标签**:该文件处理的数据类型(如「用户输入数据」、「配置数据」、「缓存数据」、「消息事件」)\n`;
|
|
1837
|
+
prompt += `- **质量标签**:该文件的代码特征(如「高复用」、「核心业务」、「边界处理」、「性能敏感」)\n\n`;
|
|
1764
1838
|
prompt += `## 🌍 Layer 4: 全局汇总(所有功能模块分析完成后)\n\n`;
|
|
1765
1839
|
prompt += `1. **一致性校验**:\n`;
|
|
1766
1840
|
prompt += ` - 前端字段 vs 后端字段是否一致(名称、类型、必填性、校验规则)\n`;
|
|
@@ -1770,23 +1844,42 @@ async function buildMultiDocPrompt(command, ctx, options) {
|
|
|
1770
1844
|
prompt += ` - 消息孤儿清单(无消费者/无生产者的队列)\n`;
|
|
1771
1845
|
prompt += ` - 配置不一致清单(超时/重试/限流各端差异)\n`;
|
|
1772
1846
|
prompt += ` → 输出 \`CONSISTENCY_CHECK.md\`\n\n`;
|
|
1773
|
-
prompt += `2. **生成全局文档**(按视角分离存放,v6.
|
|
1774
|
-
prompt += ` **产品视角 → 存放到 .speccore/GLOBAL/requirements
|
|
1775
|
-
prompt += ` - \`requirements/REQUIREMENT.md
|
|
1776
|
-
prompt += `
|
|
1847
|
+
prompt += `2. **生成全局文档**(按视角分离存放,v6.98.0+):\n`;
|
|
1848
|
+
prompt += ` **产品视角 → 存放到 .speccore/GLOBAL/requirements/(以专业产品角色撰写,v6.99.0+):**\n`;
|
|
1849
|
+
prompt += ` - \`requirements/REQUIREMENT.md\`:全局需求总纲(产品总监视角,按业务场景/用户旅程组织)\n`;
|
|
1850
|
+
prompt += ` - 必须包含:产品愿景、目标用户画像、核心场景地图、功能全景图\n`;
|
|
1851
|
+
prompt += ` - 按业务场景组织章节,每个场景:用户故事 → 操作流程 → 业务规则 → 边界条件 → 验收标准\n`;
|
|
1852
|
+
prompt += ` - 包含功能优先级矩阵(P0/P1/P2)、发布里程碑、风险预判\n`;
|
|
1853
|
+
prompt += ` - 包含与竞品的差异化分析(如有)、数据埋点需求、运营需求\n`;
|
|
1854
|
+
prompt += ` - 不要写技术实现细节,不要按端分章节\n`;
|
|
1855
|
+
prompt += ` - \`requirements/{前端端}/REQUIREMENT.md\`:各前端端的产品视角需求(前端产品经理视角)\n`;
|
|
1777
1856
|
prompt += ` - 前端端示例: requirements/admin-web/REQUIREMENT.md, requirements/h5-mobile/REQUIREMENT.md\n`;
|
|
1778
|
-
prompt += ` -
|
|
1779
|
-
prompt += `
|
|
1780
|
-
prompt += `
|
|
1781
|
-
prompt += `
|
|
1782
|
-
prompt += `
|
|
1783
|
-
prompt += `
|
|
1784
|
-
prompt += `
|
|
1785
|
-
prompt += `
|
|
1786
|
-
prompt += `
|
|
1787
|
-
prompt += `
|
|
1788
|
-
prompt += ` - \`
|
|
1789
|
-
prompt += ` - \`
|
|
1857
|
+
prompt += ` - **信息架构**:页面层级结构、导航关系、面包屑、路由映射\n`;
|
|
1858
|
+
prompt += ` - **用户旅程**:从入口到完成目标的完整流程,标注关键决策点、情绪曲线\n`;
|
|
1859
|
+
prompt += ` - **页面清单**:每页含页面名称、URL/路由、核心功能、进入条件、离开条件\n`;
|
|
1860
|
+
prompt += ` - **交互设计**:表单填写流程、列表操作、搜索筛选、分页/无限滚动、弹窗/抽屉\n`;
|
|
1861
|
+
prompt += ` - **状态与反馈**:加载状态、空状态、错误状态、成功反馈、操作确认\n`;
|
|
1862
|
+
prompt += ` - **权限与角色**:各角色可见页面/可操作按钮/数据范围\n`;
|
|
1863
|
+
prompt += ` - **响应式/适配策略**:不同设备尺寸下的布局变化、断点设计\n`;
|
|
1864
|
+
prompt += ` - **无障碍要求**:键盘导航、屏幕阅读器、色彩对比度(如有要求)\n`;
|
|
1865
|
+
prompt += ` - 每个前端端需求目录下可放 images/(截图/流程图/原型图)和 prototypes/(可交互原型文件)\n`;
|
|
1866
|
+
prompt += ` **技术视角 → 存放到 .speccore/GLOBAL/global/(不与 platforms/requirements 平级):**\n`;
|
|
1867
|
+
prompt += ` - \`global/FUNCTION_MAP.md\`:功能单元 × 端映射表\n`;
|
|
1868
|
+
prompt += ` - \`global/INTERACTION_MAP.md\`:跨端交互时序图(含同步 API + 异步消息,从 Layer 3 汇总)\n`;
|
|
1869
|
+
prompt += ` - 必须包含 **Mermaid sequenceDiagram**,展示各端之间的核心交互时序\n`;
|
|
1870
|
+
prompt += ` - \`global/API_CONTRACT.yaml\`:全局接口契约(汇总所有后端 API_INVENTORY,含 rate limit、幂等性、版本策略)\n`;
|
|
1871
|
+
prompt += ` - \`global/ARCHITECTURE.md\`:全局架构文档(服务拓扑、数据流、部署关系、容错设计、降级策略、扩容方案)\n`;
|
|
1872
|
+
prompt += ` - 必须包含 **Mermaid architecture diagram**(graph TB),展示服务拓扑和部署关系\n`;
|
|
1873
|
+
prompt += ` - 必须包含 **Mermaid graph LR**,展示模块间的依赖关系\n`;
|
|
1874
|
+
prompt += ` - \`global/SECURITY_AUDIT.md\`:全局安全审计(鉴权策略矩阵、敏感数据流、攻击面分析、CVE 清单、合规检查)\n`;
|
|
1875
|
+
prompt += ` - \`global/PERFORMANCE_BASELINE.md\`:性能基线(慢查询清单、缓存策略矩阵、并发承载评估、关键路径耗时)\n`;
|
|
1876
|
+
prompt += ` - \`global/DATA_FLOW.md\`:数据流与隐私分析(PII 识别与追踪、数据生命周期、存储/传输/归档策略、GDPR 合规检查)\n`;
|
|
1877
|
+
prompt += ` - 必须包含 **Mermaid flowchart**,展示数据从产生到销毁的完整生命周期\n`;
|
|
1878
|
+
prompt += ` - \`global/EXTERNAL_INTEGRATIONS.md\`:外部集成审计(第三方服务清单、SDK 版本与风险、Webhook 接收分布、重复集成识别)\n`;
|
|
1879
|
+
prompt += ` - \`global/DEPLOYMENT.md\`:部署运维分析(容器化状态、CI/CD 流水线、健康检查端点、环境配置差异、日志聚合方案)\n`;
|
|
1880
|
+
prompt += ` - 必须包含 **Mermaid flowchart**,展示 CI/CD 流水线流程\n`;
|
|
1881
|
+
prompt += ` - \`global/OBSERVABILITY.md\`:可观测性分析(日志链路追踪、错误码体系、监控埋点清单、告警策略、SLA 定义)\n`;
|
|
1882
|
+
prompt += ` - \`global/CONSISTENCY_CHECK.md\`:一致性校验报告(字段/状态/接口/消息/配置)\n\n`;
|
|
1790
1883
|
prompt += `3. **生成各端详细文档**(技术视角,从 Layer 3 汇总):\n`;
|
|
1791
1884
|
prompt += ` > 存放: .speccore/GLOBAL/platforms/{端名}/\n`;
|
|
1792
1885
|
prompt += ` **后端端(9项)**:\n`;
|
|
@@ -1873,6 +1966,43 @@ async function buildMultiDocPrompt(command, ctx, options) {
|
|
|
1873
1966
|
prompt += ` - 文件已存在 → 读取旧内容 → 在末尾追加新发现的变体(用 \`---\` 分隔)\n`;
|
|
1874
1967
|
prompt += ` - 文件不存在 → 直接 Write 新文件\n\n`;
|
|
1875
1968
|
prompt += `5. 以上文档输出到 .speccore/GLOBAL/ 和 .speccore/PATTERNS/,使用 Write 工具写入\n`;
|
|
1969
|
+
prompt += `\n`;
|
|
1970
|
+
prompt += `## 📊 图表生成规范(v7.0.0+)\n`;
|
|
1971
|
+
prompt += `全局分析必须生成丰富的可视化图表,帮助开发者直观理解系统结构和数据流。\n\n`;
|
|
1972
|
+
prompt += `### Mermaid 图表语法要求\n`;
|
|
1973
|
+
prompt += `所有图表使用标准 Mermaid 语法,嵌入到对应 Markdown 文档的代码块中:\n`;
|
|
1974
|
+
prompt += `\`\`\`mermaid\n`;
|
|
1975
|
+
prompt += `graph LR\n`;
|
|
1976
|
+
prompt += ` A[前端页面] -->|调用| B[后端接口]\n`;
|
|
1977
|
+
prompt += ` B --> C[数据库]\n`;
|
|
1978
|
+
prompt += `\`\`\`\n\n`;
|
|
1979
|
+
prompt += `### 各层级必须生成的图表\n`;
|
|
1980
|
+
prompt += `| 层级 | 文档 | 图表类型 | Mermaid 语法 | 内容 |\n`;
|
|
1981
|
+
prompt += `| :--- | :--- | :--- | :--- | :--- |\n`;
|
|
1982
|
+
prompt += `| Layer 2 | _ASSOCIATION.md | 模块关系图 | graph LR / graph TD | 功能模块间的依赖关系、接口调用链路 |\n`;
|
|
1983
|
+
prompt += `| Layer 2 | _MODULES.md | 模块全景图 | graph LR | 所有功能模块及所属端 |\n`;
|
|
1984
|
+
prompt += `| Layer 3 | 功能模块文档 | 时序图 | sequenceDiagram | 跨端交互时序(请求→处理→响应→推送) |\n`;
|
|
1985
|
+
prompt += `| Layer 3 | 功能模块文档 | 流程图 | flowchart TD | 关键业务流程(如下单、审批、支付) |\n`;
|
|
1986
|
+
prompt += `| Layer 3 | 功能模块文档 | 状态图 | stateDiagram-v2 | 实体状态流转(如订单状态机) |\n`;
|
|
1987
|
+
prompt += `| Layer 4 | INTERACTION_MAP.md | 交互时序图 | sequenceDiagram | 全系统核心跨端交互时序 |\n`;
|
|
1988
|
+
prompt += `| Layer 4 | ARCHITECTURE.md | 架构拓扑图 | graph TB | 服务拓扑、部署关系 |\n`;
|
|
1989
|
+
prompt += `| Layer 4 | ARCHITECTURE.md | 依赖关系图 | graph LR | 模块间依赖关系 |\n`;
|
|
1990
|
+
prompt += `| Layer 4 | DATA_FLOW.md | 数据流图 | flowchart LR | 数据生命周期(产生→传输→存储→归档→销毁) |\n`;
|
|
1991
|
+
prompt += `| Layer 4 | DEPLOYMENT.md | CI/CD 流程图 | flowchart LR | 从代码提交到部署的完整流水线 |\n\n`;
|
|
1992
|
+
prompt += `### 图表质量要求\n`;
|
|
1993
|
+
prompt += `- **节点命名**:使用中文或业务术语,不要使用文件名或类名\n`;
|
|
1994
|
+
prompt += `- **边标注**:标注调用关系(如「调用」、「依赖」、「推送」、「订阅」)\n`;
|
|
1995
|
+
prompt += `- **颜色区分**:用不同颜色区分端(前端=blue, 后端=green, 数据库=gray, 第三方=orange)\n`;
|
|
1996
|
+
prompt += `- **层次清晰**:从上到下或从左到右按逻辑层次排列,避免交叉线过多\n`;
|
|
1997
|
+
prompt += `- **聚焦核心**:不要试图把所有细节放进一张图,核心业务路径优先\n\n`;
|
|
1998
|
+
prompt += `### 独立图表文件(可选但推荐)\n`;
|
|
1999
|
+
prompt += `对于特别复杂的图表,除了嵌入文档外,还可以生成独立的 .mmd 文件到 \`diagrams/\` 目录:\n`;
|
|
2000
|
+
prompt += `- \`diagrams/module-relationship.mmd\`:模块关系图(从 _ASSOCIATION.md 提取)\n`;
|
|
2001
|
+
prompt += `- \`diagrams/architecture.mmd\`:架构拓扑图(从 ARCHITECTURE.md 提取)\n`;
|
|
2002
|
+
prompt += `- \`diagrams/data-flow.mmd\`:数据流图(从 DATA_FLOW.md 提取)\n`;
|
|
2003
|
+
prompt += `- \`diagrams/{模块名}-sequence.mmd\`:核心模块时序图\n`;
|
|
2004
|
+
prompt += `- \`diagrams/{模块名}-flow.mmd\`:核心模块流程图\n`;
|
|
2005
|
+
prompt += `独立 .mmd 文件只包含 Mermaid 代码(无 Markdown 包装),便于后续渲染为 HTML/PNG。\n`;
|
|
1876
2006
|
}
|
|
1877
2007
|
else {
|
|
1878
2008
|
prompt += `4. 读取 .speccore/GLOBAL/ 下各项目需求文档,生成跨项目索引和需求目录\n`;
|
|
@@ -1886,27 +2016,27 @@ async function buildMultiDocPrompt(command, ctx, options) {
|
|
|
1886
2016
|
prompt += `| _INDEX.md | Layer 1 | platforms/{端}/ | 各端全面索引(10维度扫描:接口/数据/业务/中间件/消息/定时/配置/外部/日志/错误) |\n`;
|
|
1887
2017
|
prompt += `| _ASSOCIATION.md | Layer 2 | platforms/_shared/ | 前后端关联矩阵 + 接口缺口 + 消息流链路 + 定时任务影响 + 外部集成分布 + 配置一致性风险 |\n`;
|
|
1888
2018
|
prompt += `| _MODULES.md | Layer 2 | platforms/_shared/ | 功能模块候选清单(含页面/接口/消息三维聚类) |\n`;
|
|
1889
|
-
prompt += `\n### 需求文档(产品视角,v6.
|
|
2019
|
+
prompt += `\n### 需求文档(产品视角,v6.99.0+)\n`;
|
|
1890
2020
|
prompt += `> 存放: .speccore/GLOBAL/requirements/(含 images/ prototypes/ 子目录)\n\n`;
|
|
1891
2021
|
prompt += `| 文档 | 视角 | 内容 |\n`;
|
|
1892
2022
|
prompt += `| :--- | :--- | :--- |\n`;
|
|
1893
|
-
prompt += `| requirements/REQUIREMENT.md |
|
|
1894
|
-
prompt += `| requirements/{前端端}/REQUIREMENT.md |
|
|
1895
|
-
prompt += `\n### 全局技术性文档(Layer 4 汇总生成,v6.
|
|
1896
|
-
prompt += `> 存放: .speccore/GLOBAL/
|
|
2023
|
+
prompt += `| requirements/REQUIREMENT.md | 产品总监视角 | 需求总纲:愿景、用户画像、场景地图、功能全景、优先级矩阵、里程碑、风险预判 |\n`;
|
|
2024
|
+
prompt += `| requirements/{前端端}/REQUIREMENT.md | 前端产品经理视角 | 信息架构、用户旅程、页面清单、交互设计、状态反馈、权限角色、响应式策略 |\n`;
|
|
2025
|
+
prompt += `\n### 全局技术性文档(Layer 4 汇总生成,v6.98.0+)\n`;
|
|
2026
|
+
prompt += `> 存放: .speccore/GLOBAL/global/(不与 platforms/requirements 平级)\n\n`;
|
|
1897
2027
|
prompt += `| 文档 | 视角 | 内容 |\n`;
|
|
1898
2028
|
prompt += `| :--- | :--- | :--- |\n`;
|
|
1899
|
-
prompt += `| FUNCTION_MAP.md | 架构视角 | 功能单元 × 端映射表 |\n`;
|
|
1900
|
-
prompt += `| INTERACTION_MAP.md | 架构视角 | 跨端交互时序图(同步 API + 异步消息) |\n`;
|
|
1901
|
-
prompt += `| API_CONTRACT.yaml | 技术视角 | 全局接口契约(含 rate limit、幂等性、版本策略、废弃标记) |\n`;
|
|
1902
|
-
prompt += `| ARCHITECTURE.md | 技术视角 | 全局架构(服务拓扑、数据流、部署关系、容错、降级、扩容) |\n`;
|
|
1903
|
-
prompt += `| SECURITY_AUDIT.md | 安全视角 | 鉴权矩阵、敏感数据流、攻击面、CVE 清单、合规检查 |\n`;
|
|
1904
|
-
prompt += `| PERFORMANCE_BASELINE.md | 性能视角 | 慢查询清单、缓存策略矩阵、并发承载、关键路径耗时 |\n`;
|
|
1905
|
-
prompt += `| DATA_FLOW.md | 数据视角 | PII 识别追踪、数据生命周期、存储/传输/归档、GDPR 合规 |\n`;
|
|
1906
|
-
prompt += `| EXTERNAL_INTEGRATIONS.md | 集成视角 | 第三方服务清单、SDK 风险、Webhook 分布、重复集成识别 |\n`;
|
|
1907
|
-
prompt += `| DEPLOYMENT.md | 运维视角 | 容器化、CI/CD、健康检查、环境差异、日志聚合 |\n`;
|
|
1908
|
-
prompt += `| OBSERVABILITY.md | 可观测视角 | 日志链路、错误码体系、监控埋点、告警策略、SLA |\n`;
|
|
1909
|
-
prompt += `| CONSISTENCY_CHECK.md | 质量视角 | 一致性校验报告(字段/状态/接口/消息/配置) |\n`;
|
|
2029
|
+
prompt += `| global/FUNCTION_MAP.md | 架构视角 | 功能单元 × 端映射表 |\n`;
|
|
2030
|
+
prompt += `| global/INTERACTION_MAP.md | 架构视角 | 跨端交互时序图(同步 API + 异步消息) |\n`;
|
|
2031
|
+
prompt += `| global/API_CONTRACT.yaml | 技术视角 | 全局接口契约(含 rate limit、幂等性、版本策略、废弃标记) |\n`;
|
|
2032
|
+
prompt += `| global/ARCHITECTURE.md | 技术视角 | 全局架构(服务拓扑、数据流、部署关系、容错、降级、扩容) |\n`;
|
|
2033
|
+
prompt += `| global/SECURITY_AUDIT.md | 安全视角 | 鉴权矩阵、敏感数据流、攻击面、CVE 清单、合规检查 |\n`;
|
|
2034
|
+
prompt += `| global/PERFORMANCE_BASELINE.md | 性能视角 | 慢查询清单、缓存策略矩阵、并发承载、关键路径耗时 |\n`;
|
|
2035
|
+
prompt += `| global/DATA_FLOW.md | 数据视角 | PII 识别追踪、数据生命周期、存储/传输/归档、GDPR 合规 |\n`;
|
|
2036
|
+
prompt += `| global/EXTERNAL_INTEGRATIONS.md | 集成视角 | 第三方服务清单、SDK 风险、Webhook 分布、重复集成识别 |\n`;
|
|
2037
|
+
prompt += `| global/DEPLOYMENT.md | 运维视角 | 容器化、CI/CD、健康检查、环境差异、日志聚合 |\n`;
|
|
2038
|
+
prompt += `| global/OBSERVABILITY.md | 可观测视角 | 日志链路、错误码体系、监控埋点、告警策略、SLA |\n`;
|
|
2039
|
+
prompt += `| global/CONSISTENCY_CHECK.md | 质量视角 | 一致性校验报告(字段/状态/接口/消息/配置) |\n`;
|
|
1910
2040
|
prompt += `\n### 后端端技术性文档(9项,Layer 3/4 汇总)\n`;
|
|
1911
2041
|
prompt += `> 存放: .speccore/GLOBAL/platforms/{后端端名}/\n\n`;
|
|
1912
2042
|
prompt += `| 文档 | 内容 |\n`;
|
|
@@ -2510,9 +2640,9 @@ sequenceDiagram
|
|
|
2510
2640
|
prompt += `2. 读取全局层产物(建立全局视角,重要)\n`;
|
|
2511
2641
|
prompt += ` 在读取迭代需求之前,先 Read 全局层已有产物,了解系统当前状态:\n`;
|
|
2512
2642
|
prompt += ` a. Read .speccore/GLOBAL/requirements/REQUIREMENT.md → 系统已有功能清单\n`;
|
|
2513
|
-
prompt += ` b. Read .speccore/GLOBAL/FUNCTION_MAP.md → 已有功能单元和涉及端\n`;
|
|
2514
|
-
prompt += ` c. Read .speccore/GLOBAL/API_CONTRACT.yaml → 已有接口契约\n`;
|
|
2515
|
-
prompt += ` d. Read .speccore/GLOBAL/ARCHITECTURE.md → 全局架构(如有)\n`;
|
|
2643
|
+
prompt += ` b. Read .speccore/GLOBAL/global/FUNCTION_MAP.md → 已有功能单元和涉及端\n`;
|
|
2644
|
+
prompt += ` c. Read .speccore/GLOBAL/global/API_CONTRACT.yaml → 已有接口契约\n`;
|
|
2645
|
+
prompt += ` d. Read .speccore/GLOBAL/global/ARCHITECTURE.md → 全局架构(如有)\n`;
|
|
2516
2646
|
prompt += ` e. Read .speccore/GLOBAL/platforms/{相关端}/_INDEX.md → 各端已有页面和接口索引\n`;
|
|
2517
2647
|
prompt += ` f. Read .speccore/GLOBAL/platforms/_shared/_ASSOCIATION.md → 前后端关联矩阵(如有)\n`;
|
|
2518
2648
|
prompt += ` g. Read .speccore/GLOBAL/platforms/_shared/_MODULES.md → 功能模块候选(如有)\n`;
|
|
@@ -2540,9 +2670,18 @@ sequenceDiagram
|
|
|
2540
2670
|
prompt += ` - 第 4 步:如果以上都无法确定,根据需求文档内容判断\n`;
|
|
2541
2671
|
prompt += ` - 第 5 步:将发现的端列表写入 020-specs/PLATFORMS.md\n`;
|
|
2542
2672
|
// v6.70.0+: REQUIREMENT.md 以产品视角撰写(不按端分章节)
|
|
2673
|
+
// v6.99.0+: 丰富需求文档章节要求
|
|
2543
2674
|
prompt += `8. **REQUIREMENT.md 写作风格(重要)**:全局需求文档必须以产品/用户视角撰写\n`;
|
|
2544
2675
|
prompt += ` - **按业务场景/用户旅程组织章节**,不按端分章节(如"H5端需求"、"后端需求")\n`;
|
|
2545
|
-
prompt += ` -
|
|
2676
|
+
prompt += ` - 文档结构必须包含(如需求文档中有相关信息):\n`;
|
|
2677
|
+
prompt += ` - **产品愿景**:本迭代要解决的核心问题和目标价值(1-2段)\n`;
|
|
2678
|
+
prompt += ` - **目标用户画像**:主要用户角色、使用场景、痛点(如有)\n`;
|
|
2679
|
+
prompt += ` - **核心场景地图**:按业务流程组织的场景列表,每个场景标注优先级\n`;
|
|
2680
|
+
prompt += ` - **功能全景图**:所有功能模块的可视化列表(表格或脑图描述)\n`;
|
|
2681
|
+
prompt += ` - **功能优先级矩阵**:P0(必须)/ P1(重要)/ P2(可选)标注\n`;
|
|
2682
|
+
prompt += ` - **发布里程碑**:如有分期计划,标注各阶段交付内容\n`;
|
|
2683
|
+
prompt += ` - **风险预判**:技术风险、业务风险、依赖风险(如有)\n`;
|
|
2684
|
+
prompt += ` - 每个场景描述:用户操作 → 系统响应 → 业务规则 → 边界条件 → 验收标准\n`;
|
|
2546
2685
|
prompt += ` - 系统响应中自然包含前后端交互,但不刻意标注技术实现细节\n`;
|
|
2547
2686
|
prompt += ` - 示例正确写法:「用户选择时间段后点击预订,系统检查会议室可用性,如可用则锁定会议室并创建待支付订单」\n`;
|
|
2548
2687
|
prompt += ` - 示例错误写法:「后端 booking-service 需要新增 /api/bookings 接口,接收 roomId 参数」\n`;
|
|
@@ -2572,7 +2711,7 @@ sequenceDiagram
|
|
|
2572
2711
|
// v6.70.0+: 跨端功能映射表(FUNCTION_MAP.md)
|
|
2573
2712
|
// v6.71.3+: 增加与全局层关联分析
|
|
2574
2713
|
prompt += `7a. **迭代需求与全局层关联分析(重要)**:在生成功能模块清单时,必须对比全局层产物\n`;
|
|
2575
|
-
prompt += ` - 对比迭代需求中的功能模块 vs .speccore/GLOBAL/FUNCTION_MAP.md 中的功能单元\n`;
|
|
2714
|
+
prompt += ` - 对比迭代需求中的功能模块 vs .speccore/GLOBAL/global/FUNCTION_MAP.md 中的功能单元\n`;
|
|
2576
2715
|
prompt += ` - 标注每个功能模块的「全局对比」类型(新增/扩展/重构/复用)\n`;
|
|
2577
2716
|
prompt += ` - 识别冲突:如迭代需求修改了全局层已有接口的字段/路径 → 在 RISK.md 中标注\n`;
|
|
2578
2717
|
prompt += ` - 识别依赖:如迭代的新功能依赖全局层的某个功能 → 在 FUNCTION_MAP.md「依赖任务」中标注\n\n`;
|