@chongyan/autospec 1.0.1
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/LICENSE +21 -0
- package/README.en.md +472 -0
- package/README.md +476 -0
- package/bin/autospec.js +3 -0
- package/knowledge/README.md +144 -0
- package/knowledge/checklists/code.md +182 -0
- package/knowledge/checklists/design.md +196 -0
- package/knowledge/checklists/release.md +70 -0
- package/knowledge/checklists/requirement.md +169 -0
- package/knowledge/checklists/test.md +46 -0
- package/knowledge/config/README.en.md +44 -0
- package/knowledge/config/README.md +44 -0
- package/knowledge/config/role-composition.yaml +98 -0
- package/knowledge/config/role-extensions.yaml +140 -0
- package/knowledge/config/skill-compositions.yaml +142 -0
- package/knowledge/config/team-stage.yaml +95 -0
- package/knowledge/config/team-tasks.yaml +139 -0
- package/knowledge/config/team-triggers.yaml +198 -0
- package/knowledge/config/validation-patterns.yaml +137 -0
- package/knowledge/domain/README.md +115 -0
- package/knowledge/domain/flows/README.md +194 -0
- package/knowledge/domain/glossary.md +143 -0
- package/knowledge/domain/rules.md +138 -0
- package/knowledge/environment/README.en.md +36 -0
- package/knowledge/environment/README.md +87 -0
- package/knowledge/environment/component-knowledge.md +316 -0
- package/knowledge/environment/detection-patterns.yaml +502 -0
- package/knowledge/environment/middleware-knowledge.md +237 -0
- package/knowledge/environment/template-registry.md +321 -0
- package/knowledge/guides/domain-driven-design.md +345 -0
- package/knowledge/guides/knowledge-management.md +369 -0
- package/knowledge/guides/requirement-engineering.md +329 -0
- package/knowledge/guides/stages/ai-effect-evaluator.md +93 -0
- package/knowledge/guides/stages/code-implementer.md +205 -0
- package/knowledge/guides/stages/code-reviewer.md +111 -0
- package/knowledge/guides/stages/consistency-checker.md +177 -0
- package/knowledge/guides/stages/design-planner.md +401 -0
- package/knowledge/guides/stages/design-reviewer.md +83 -0
- package/knowledge/guides/stages/integration-test-runner.md +105 -0
- package/knowledge/guides/stages/release-checker.md +205 -0
- package/knowledge/guides/stages/requirement-analyzer.md +195 -0
- package/knowledge/guides/stages/requirement-reviewer.md +83 -0
- package/knowledge/guides/stages/security-reviewer.md +89 -0
- package/knowledge/guides/stages/test-context-analyzer.md +250 -0
- package/knowledge/guides/stages/test-generator.md +241 -0
- package/knowledge/guides/stages/test-planner.md +183 -0
- package/knowledge/guides/stages/test-reviewer.md +76 -0
- package/knowledge/guides/stages/unit-test-runner.md +83 -0
- package/knowledge/guides/support/ai-agent-analyzer.md +362 -0
- package/knowledge/guides/support/ai-anomaly-analyzer.md +213 -0
- package/knowledge/guides/support/ai-artifact-evaluator.md +192 -0
- package/knowledge/guides/support/ai-capability-analyzer.md +193 -0
- package/knowledge/guides/support/ai-component-analyzer.md +169 -0
- package/knowledge/guides/support/ai-data-validator.md +276 -0
- package/knowledge/guides/support/ai-evaluation-planner.md +374 -0
- package/knowledge/guides/support/ai-path-evaluator.md +274 -0
- package/knowledge/guides/support/ai-pipeline-evaluator.md +219 -0
- package/knowledge/guides/support/ai-rag-analyzer.md +339 -0
- package/knowledge/guides/support/ai-task-assessor.md +418 -0
- package/knowledge/guides/support/ai-test-diagnostics.md +133 -0
- package/knowledge/guides/support/complexity-assessor.md +268 -0
- package/knowledge/guides/support/component-discovery.md +183 -0
- package/knowledge/guides/support/environment-scanner.md +207 -0
- package/knowledge/guides/support/environment-validator.md +207 -0
- package/knowledge/guides/support/knowledge-generator.md +234 -0
- package/knowledge/guides/support/methodology-extractor.md +55 -0
- package/knowledge/guides/support/pipeline-protocol.md +438 -0
- package/knowledge/guides/support/practice-logger.md +359 -0
- package/knowledge/guides/support/scope-inference.md +174 -0
- package/knowledge/guides/support/skill-distiller.md +91 -0
- package/knowledge/guides/support/skill-updater.md +45 -0
- package/knowledge/guides/support/skill-validator.md +72 -0
- package/knowledge/guides/support/team-orchestrator.md +323 -0
- package/knowledge/guides/support/tech-stack-analyzer.md +139 -0
- package/knowledge/guides/support/test-runner.md +254 -0
- package/knowledge/guides/system-design.md +352 -0
- package/knowledge/organization/ai-native-team.md +318 -0
- package/knowledge/organization/team-metrics.md +228 -0
- package/knowledge/principles/constitution.md +134 -0
- package/knowledge/principles/core-principles.md +368 -0
- package/knowledge/principles/design-philosophy.md +877 -0
- package/knowledge/principles/evolution.md +553 -0
- package/knowledge/process/01-requirement.md +113 -0
- package/knowledge/process/02-design.md +123 -0
- package/knowledge/process/03-implementation.md +90 -0
- package/knowledge/process/04-review.md +80 -0
- package/knowledge/process/05-testing.md +90 -0
- package/knowledge/process/06-delivery.md +88 -0
- package/knowledge/process/README.en.md +38 -0
- package/knowledge/process/README.md +48 -0
- package/knowledge/process/ai-sdlc.md +475 -0
- package/knowledge/process/overview.md +319 -0
- package/knowledge/standards/code-review.md +876 -0
- package/knowledge/standards/coding-style.md +940 -0
- package/knowledge/standards/data-consistency.md +1085 -0
- package/knowledge/standards/document-versioning.md +210 -0
- package/knowledge/standards/risk-detection.md +186 -0
- package/knowledge/templates/ai-evaluation.md +150 -0
- package/knowledge/templates/api-design.md +117 -0
- package/knowledge/templates/database-design.md +132 -0
- package/knowledge/templates/domain-driven-design.md +321 -0
- package/knowledge/templates/product-proposal.md +201 -0
- package/knowledge/templates/system-design.md +227 -0
- package/knowledge/templates/task-breakdown.md +107 -0
- package/knowledge/templates/test-case.md +170 -0
- package/package.json +53 -0
- package/plugins/.claude-plugin/plugin.json +134 -0
- package/plugins/agents/roles/ai-engineer.md +129 -0
- package/plugins/agents/roles/backend-engineer.md +165 -0
- package/plugins/agents/roles/ceo.md +94 -0
- package/plugins/agents/roles/data-engineer.md +135 -0
- package/plugins/agents/roles/devops-engineer.md +181 -0
- package/plugins/agents/roles/frontend-engineer.md +129 -0
- package/plugins/agents/roles/product-owner.md +98 -0
- package/plugins/agents/roles/quality-engineer.md +129 -0
- package/plugins/agents/roles/security-engineer.md +180 -0
- package/plugins/agents/roles/tech-lead.md +97 -0
- package/plugins/agents/support/blind-comparator.md +88 -0
- package/plugins/agents/support/consistency-checker.md +103 -0
- package/plugins/agents/support/failure-diagnostician.md +141 -0
- package/plugins/agents/support/independent-reviewer.md +80 -0
- package/plugins/agents/support/safety-auditor.md +121 -0
- package/plugins/agents/support/skill-benchmarker.md +86 -0
- package/plugins/agents/support/skill-forger.md +105 -0
- package/plugins/agents/support/stage-gate-evaluator.md +121 -0
- package/plugins/agents/support/test-coverage-reviewer.md +73 -0
- package/plugins/benchmarks/templates/README.md +44 -0
- package/plugins/benchmarks/templates/commands/explore-template.yaml +48 -0
- package/plugins/benchmarks/templates/pipeline/agile-template.yaml +84 -0
- package/plugins/benchmarks/templates/pipeline/waterfall-template.yaml +106 -0
- package/plugins/benchmarks/templates/skills/requirement-analyzer-template.yaml +48 -0
- package/plugins/commands/README.en.md +96 -0
- package/plugins/commands/README.md +96 -0
- package/plugins/commands/apply.md +191 -0
- package/plugins/commands/archive.md +76 -0
- package/plugins/commands/env-export.md +79 -0
- package/plugins/commands/env-sync.md +640 -0
- package/plugins/commands/env-template.md +223 -0
- package/plugins/commands/env-update.md +264 -0
- package/plugins/commands/env-validate.md +176 -0
- package/plugins/commands/env.md +79 -0
- package/plugins/commands/explore.md +76 -0
- package/plugins/commands/field-evolve.md +536 -0
- package/plugins/commands/memory.md +249 -0
- package/plugins/commands/project-evolve.md +821 -0
- package/plugins/commands/propose.md +93 -0
- package/plugins/commands/review.md +140 -0
- package/plugins/commands/run.md +224 -0
- package/plugins/commands/status.md +62 -0
- package/plugins/commands/validate.md +108 -0
- package/plugins/hooks/README.en.md +56 -0
- package/plugins/hooks/README.md +56 -0
- package/plugins/hooks/ai-project-guard.js +329 -0
- package/plugins/hooks/artifact-evaluation-hook.js +237 -0
- package/plugins/hooks/constitution-guard.js +211 -0
- package/plugins/hooks/environment-autocommit.js +264 -0
- package/plugins/hooks/environment-manager.js +778 -0
- package/plugins/hooks/execution-tracker.js +354 -0
- package/plugins/hooks/frozen-zone-guard.js +140 -0
- package/plugins/hooks/layer1-validator.js +423 -0
- package/plugins/hooks/lib/artifact-evaluator.js +414 -0
- package/plugins/hooks/lib/benchmarks/change-detector.js +390 -0
- package/plugins/hooks/lib/benchmarks/evaluator.js +605 -0
- package/plugins/hooks/lib/benchmarks/integration-example.js +169 -0
- package/plugins/hooks/lib/data-and-ai-detector.js +275 -0
- package/plugins/hooks/lib/detection-pattern-loader.js +865 -0
- package/plugins/hooks/lib/directory-discovery.js +395 -0
- package/plugins/hooks/lib/environment-config-loader.js +341 -0
- package/plugins/hooks/lib/environment-detector.js +553 -0
- package/plugins/hooks/lib/environment-evolver.js +564 -0
- package/plugins/hooks/lib/environment-registry.js +813 -0
- package/plugins/hooks/lib/execution-path.js +427 -0
- package/plugins/hooks/lib/hook-error-recorder.js +245 -0
- package/plugins/hooks/lib/hook-logger.js +538 -0
- package/plugins/hooks/lib/hook-runner.js +97 -0
- package/plugins/hooks/lib/hook-runner.sh +44 -0
- package/plugins/hooks/lib/hook-state-manager.js +480 -0
- package/plugins/hooks/lib/memory-extractor.js +377 -0
- package/plugins/hooks/lib/memory-manager.js +673 -0
- package/plugins/hooks/lib/metrics-analyzer.js +489 -0
- package/plugins/hooks/lib/project-evolution/auto-fixer.js +511 -0
- package/plugins/hooks/lib/project-evolution/memory-manager.js +346 -0
- package/plugins/hooks/lib/project-evolution/pattern-detector.js +476 -0
- package/plugins/hooks/lib/project-evolution/semantic-indexer.js +480 -0
- package/plugins/hooks/lib/project-structure-detector.js +326 -0
- package/plugins/hooks/lib/rollback-tracker.js +346 -0
- package/plugins/hooks/lib/source-code-scanner.js +596 -0
- package/plugins/hooks/lib/technology-stack-detector.js +374 -0
- package/plugins/hooks/lib/test-failure-analyzer.js +375 -0
- package/plugins/hooks/lib/test-failure-fixer.js +268 -0
- package/plugins/hooks/lib/trace-context.js +277 -0
- package/plugins/hooks/lib/validation-patterns.js +415 -0
- package/plugins/hooks/memory-sync.js +171 -0
- package/plugins/hooks/pipeline-observer.js +413 -0
- package/plugins/hooks/scope-sentinel.js +204 -0
- package/plugins/hooks/trace-initialization.js +169 -0
- package/plugins/memory/templates/code-quality.yaml +149 -0
- package/plugins/memory/templates/multi-system.yaml +155 -0
- package/plugins/memory/templates/team-habits.yaml +119 -0
- package/plugins/memory/templates/testing.yaml +121 -0
- package/plugins/skills/README.en.md +47 -0
- package/plugins/skills/README.md +104 -0
- package/plugins/skills/benchmark-executor/README.md +93 -0
- package/plugins/skills/benchmark-executor/SKILL.md +647 -0
- package/plugins/skills/benchmark-generator/SKILL.md +349 -0
- package/plugins/skills/delivery-stage/SKILL.md +203 -0
- package/plugins/skills/design-stage/SKILL.md +216 -0
- package/plugins/skills/evolution-process/SKILL.md +291 -0
- package/plugins/skills/exploration-phase/SKILL.md +133 -0
- package/plugins/skills/implementation-stage/SKILL.md +179 -0
- package/plugins/skills/layer1-validation/SKILL.md +79 -0
- package/plugins/skills/pending-dashboard/SKILL.md +109 -0
- package/plugins/skills/project-evolution/SKILL.md +847 -0
- package/plugins/skills/requirement-stage/SKILL.md +183 -0
- package/plugins/skills/skill-forge/SKILL.md +223 -0
- package/plugins/skills/skill-forge/references/description-guide.md +92 -0
- package/plugins/skills/skill-forge/references/quality-rubric.md +104 -0
- package/plugins/skills/skill-forge/references/skill-template.md +106 -0
- package/plugins/skills/startup-guard/SKILL.md +38 -0
- package/plugins/skills/testing-stage/SKILL.md +195 -0
- package/scripts/cli/global-init.js +288 -0
- package/scripts/cli/global.js +324 -0
- package/scripts/cli/index.js +55 -0
- package/scripts/cli/init.js +382 -0
- package/scripts/cli/list.js +69 -0
- package/scripts/cli/org.js +340 -0
- package/scripts/cli/update.js +44 -0
- package/scripts/config/commands.config.js +145 -0
- package/scripts/config/hooks.config.js +197 -0
- package/scripts/evolution/evolution-router.js +273 -0
- package/scripts/evolution/evolution-signal-collector.js +307 -0
- package/scripts/evolution/knowledge-loader.js +346 -0
- package/scripts/evolution/marketplace.js +317 -0
- package/scripts/evolution/version-manager.js +371 -0
- package/scripts/install/agents.js +106 -0
- package/scripts/install/commands.js +133 -0
- package/scripts/install/constants.js +424 -0
- package/scripts/install/hook-logger.js +536 -0
- package/scripts/install/hooks.js +110 -0
- package/scripts/install/index.js +39 -0
- package/scripts/install/skills.js +95 -0
- package/scripts/postinstall.js +25 -0
- package/scripts/state.js +376 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
# 环境知识模板注册表
|
|
2
|
+
|
|
3
|
+
> 定义环境知识的模板类型、来源和输出位置。供 env-sync、env-import、env-validate 命令引用。
|
|
4
|
+
>
|
|
5
|
+
> **版本**: v3.0
|
|
6
|
+
> **最后更新**: 2026-03-26
|
|
7
|
+
> **扩展说明**: 新增 design-knowledge/、test-knowledge/、business-knowledge/ 分类
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 模板清单
|
|
12
|
+
|
|
13
|
+
### 环境知识模板(原有)
|
|
14
|
+
|
|
15
|
+
| 模板名称 | 来源文件 | 输出位置 | 必填章节 |
|
|
16
|
+
|---------|---------|---------|---------|
|
|
17
|
+
| middleware | middleware-knowledge.md | env-knowledge/middleware/{name}.md | 基本信息、环境变量、连接代码模板 |
|
|
18
|
+
| component | component-knowledge.md | component-lib/components/{name}/component.md | 基本信息、接口定义、使用示例 |
|
|
19
|
+
| infrastructure | middleware-knowledge.md | env-knowledge/infrastructure/{name}.md | 基本信息、环境变量 |
|
|
20
|
+
|
|
21
|
+
### 研发流程模板
|
|
22
|
+
|
|
23
|
+
| 模板名称 | 来源文件 | 输出位置 | 必填章节 |
|
|
24
|
+
|---------|---------|---------|---------|
|
|
25
|
+
| proposal | product-proposal.md | requirements/{业务域}/{需求}/proposal.md | 背景与价值、目标与范围、业务架构设计、用例业务流程 |
|
|
26
|
+
| design | system-design.md | requirements/{业务域}/{需求}/{系统名}/design.md | 项目背景、业务用例、功能设计(大纲 + 详设)、领域模型 |
|
|
27
|
+
| task | task-breakdown.md | requirements/{业务域}/{需求}/{系统名}/task.md | Meta 信息、Tasks 列表、Progress、Validation |
|
|
28
|
+
| testcase | test-case.md | requirements/{业务域}/{需求}/{系统名}/testcase.md | 测试概要、测试用例、覆盖矩阵、覆盖统计 |
|
|
29
|
+
|
|
30
|
+
### API 文档模板(新增)
|
|
31
|
+
|
|
32
|
+
| 模板名称 | 来源文件 | 输出位置 | 必填章节 |
|
|
33
|
+
|---------|---------|---------|---------|
|
|
34
|
+
| api-overview | api-overview.md | docs/api/{服务名}/overview.md | 接口概述、认证方式、错误码 |
|
|
35
|
+
| api-parameters | api-parameters.md | docs/api/{服务名}/parameters.md | 参数定义、类型说明、校验规则 |
|
|
36
|
+
| api-error-codes | api-error-codes.md | docs/api/{服务名}/error-codes.md | 错误码列表、处理建议 |
|
|
37
|
+
|
|
38
|
+
### 规范文档模板
|
|
39
|
+
|
|
40
|
+
| 模板名称 | 来源文件 | 输出位置 | 必填章节 |
|
|
41
|
+
|---------|---------|---------|---------|
|
|
42
|
+
| coding-style | standards/coding-style.md | standards/coding-style.md | 数据安全、异常处理、多线程、数据库、日志规范 |
|
|
43
|
+
| data-consistency | standards/data-consistency.md | standards/data-consistency.md | 一致性方案、幂等性设计、分布式事务 |
|
|
44
|
+
| code-review | standards/code-review.md | standards/code-review.md | 评审原则、好代码三要素、检查清单 |
|
|
45
|
+
|
|
46
|
+
### 设计知识模板
|
|
47
|
+
|
|
48
|
+
| 模板名称 | 来源文件 | 输出位置 | 必填章节 |
|
|
49
|
+
|---------|---------|---------|---------|
|
|
50
|
+
| product-design | templates/product-proposal.md | design-knowledge/product/{name}.md | 背景与价值、目标与范围、业务架构设计 |
|
|
51
|
+
| architecture | templates/system-design.md | design-knowledge/architecture/{name}.md | 项目背景、业务用例、功能设计、UML图 |
|
|
52
|
+
| api-design | templates/api-design.md | design-knowledge/api/{name}.md | 接口概述、参数定义、错误码 |
|
|
53
|
+
| database | templates/database-design.md | design-knowledge/database/{name}.md | ER图、表结构、索引设计 |
|
|
54
|
+
|
|
55
|
+
### 测试知识模板
|
|
56
|
+
|
|
57
|
+
| 模板名称 | 来源文件 | 输出位置 | 必填章节 |
|
|
58
|
+
|---------|---------|---------|---------|
|
|
59
|
+
| test-design | templates/test-case.md | test-knowledge/test-designs/{name}.md | 测试概要、测试用例、覆盖矩阵 |
|
|
60
|
+
| evaluation | templates/ai-evaluation.md | test-knowledge/evaluation/{name}.md | 评测目标、数据集、指标、Badcase分析 |
|
|
61
|
+
|
|
62
|
+
### 业务知识模板(新增)
|
|
63
|
+
|
|
64
|
+
| 模板名称 | 来源文件 | 输出位置 | 必填章节 |
|
|
65
|
+
|---------|---------|---------|---------|
|
|
66
|
+
| glossary | domain/glossary.md | business-knowledge/glossary.md | 术语、定义、适用场景 |
|
|
67
|
+
| business-rules | domain/rules.md | business-knowledge/rules.md | 规则ID、规则名称、规则描述、适用场景 |
|
|
68
|
+
| business-flow | domain/flows/README.md | business-knowledge/flows/{name}-flow.md | 流程名称、Mermaid图、说明 |
|
|
69
|
+
|
|
70
|
+
### DDD 模板(新增)
|
|
71
|
+
|
|
72
|
+
| 模板名称 | 来源文件 | 输出位置 | 必填章节 |
|
|
73
|
+
|---------|---------|---------|---------|
|
|
74
|
+
| domain-driven-design | templates/domain-driven-design.md | design-knowledge/ddd/{name}-ddd.md | 领域识别、限界上下文、聚合设计 |
|
|
75
|
+
|
|
76
|
+
**DDD模板适用场景**:
|
|
77
|
+
- 复杂业务系统(业务概念 > 20个)
|
|
78
|
+
- 核心业务建模
|
|
79
|
+
- 微服务边界划分
|
|
80
|
+
- 需要跨团队协作的项目
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 模板分类
|
|
85
|
+
|
|
86
|
+
| 分类 | 说明 | 模板列表 |
|
|
87
|
+
|------|------|---------|
|
|
88
|
+
| `environment/` | 环境知识模板 | middleware, component, infrastructure |
|
|
89
|
+
| `design-knowledge/` | 设计知识模板 | product-design, architecture, api-design, database, domain-driven-design |
|
|
90
|
+
| `test-knowledge/` | 测试知识模板 | test-design, evaluation |
|
|
91
|
+
| `business-knowledge/` | 业务知识模板 | glossary, business-rules, business-flow |
|
|
92
|
+
| `standards/` | 规范文档模板 | coding-style, data-consistency, code-review |
|
|
93
|
+
| `ddd/` | DDD领域驱动设计模板 | domain-driven-design |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 类型枚举
|
|
98
|
+
|
|
99
|
+
### 中间件类型
|
|
100
|
+
|
|
101
|
+
| 类型 | 说明 | 典型示例 |
|
|
102
|
+
|------|------|---------|
|
|
103
|
+
| relational-database | 关系型数据库 | MySQL, PostgreSQL, Oracle |
|
|
104
|
+
| document-database | 文档数据库 | MongoDB, CouchDB |
|
|
105
|
+
| cache | 缓存 | Redis, Memcached |
|
|
106
|
+
| message-queue | 消息队列 | Kafka, RabbitMQ, RocketMQ |
|
|
107
|
+
| search-engine | 搜索引擎 | Elasticsearch, Solr |
|
|
108
|
+
| vector-store | 向量存储 | Milvus, Pinecone, Weaviate |
|
|
109
|
+
| object-storage | 对象存储 | OSS, S3, MinIO |
|
|
110
|
+
|
|
111
|
+
### 组件类型
|
|
112
|
+
|
|
113
|
+
| 类型 | 说明 | 典型示例 |
|
|
114
|
+
|------|------|---------|
|
|
115
|
+
| service-component | 服务组件,封装外部服务调用 | 认证组件、支付网关 |
|
|
116
|
+
| utility | 工具组件,提供通用功能 | 日志组件、配置组件 |
|
|
117
|
+
| library | 库组件,封装业务逻辑 | 领域模型、数据访问层 |
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 必填章节定义
|
|
122
|
+
|
|
123
|
+
### development 模板必填章节
|
|
124
|
+
|
|
125
|
+
#### proposal 模板
|
|
126
|
+
|
|
127
|
+
| 章节 | 说明 |
|
|
128
|
+
|------|------|
|
|
129
|
+
| 1. 背景与价值 | 业务背景、业务价值 |
|
|
130
|
+
| 2. 目标与范围 | 目标 (Success Criteria)、范围 (包含/不包含) |
|
|
131
|
+
| 3. 业务架构设计 | 总体架构图、需求用例图、用例业务流程 |
|
|
132
|
+
|
|
133
|
+
#### design 模板
|
|
134
|
+
|
|
135
|
+
| 章节 | 说明 |
|
|
136
|
+
|------|------|
|
|
137
|
+
| 1. 项目背景 | 目标、参与人、相关文档 |
|
|
138
|
+
| 2. 业务用例 | Mermaid flowchart |
|
|
139
|
+
| 3. 功能设计 | 功能点列表、详细设计(两步生成) |
|
|
140
|
+
|
|
141
|
+
#### task 模板
|
|
142
|
+
|
|
143
|
+
| 章节 | 说明 |
|
|
144
|
+
|------|------|
|
|
145
|
+
| Meta | design 路径、system 引用 |
|
|
146
|
+
| Tasks | 任务列表(Goal/Depends/Files/Done when) |
|
|
147
|
+
| Progress | 进度跟踪 |
|
|
148
|
+
|
|
149
|
+
#### testcase 模板
|
|
150
|
+
|
|
151
|
+
| 章节 | 说明 |
|
|
152
|
+
|------|------|
|
|
153
|
+
| 1. 测试概要 | 需求、系统、来源、用例统计 |
|
|
154
|
+
| 3. 测试用例 | 正向/异常/边界/幂等/回归场景 |
|
|
155
|
+
| 5. 覆盖统计 | 各优先级用例数量统计 |
|
|
156
|
+
|
|
157
|
+
### middleware 模板必填章节
|
|
158
|
+
|
|
159
|
+
| 章节 | 说明 |
|
|
160
|
+
|------|------|
|
|
161
|
+
| 基本信息 | 名称、类型、默认端口、知识版本 |
|
|
162
|
+
| 环境变量 | 必需变量表格、可选变量表格 |
|
|
163
|
+
| 连接代码模板 | Node.js、Python 等语言的连接代码 |
|
|
164
|
+
|
|
165
|
+
### component 模板必填章节
|
|
166
|
+
|
|
167
|
+
| 章节 | 说明 |
|
|
168
|
+
|------|------|
|
|
169
|
+
| 基本信息 | 名称、类型、版本、维护者 |
|
|
170
|
+
| 接口定义 | 方法名、输入参数、输出参数、错误码 |
|
|
171
|
+
| 使用示例 | 安装命令、代码示例 |
|
|
172
|
+
|
|
173
|
+
### standards 模板必填章节
|
|
174
|
+
|
|
175
|
+
#### coding-style 模板
|
|
176
|
+
|
|
177
|
+
| 章节 | 说明 |
|
|
178
|
+
|------|------|
|
|
179
|
+
| 数据安全 | 一锁二判三更新、金额计算规范 |
|
|
180
|
+
| 异常处理 | 异步方法异常捕获、禁止空 catch |
|
|
181
|
+
| 多线程 | ThreadLocal 清理、线程池规范 |
|
|
182
|
+
| 数据库 | 禁止 SELECT *、参数化查询 |
|
|
183
|
+
| 日志规范 | LogUtil 使用、日志级别 |
|
|
184
|
+
|
|
185
|
+
#### data-consistency 模板
|
|
186
|
+
|
|
187
|
+
| 章节 | 说明 |
|
|
188
|
+
|------|------|
|
|
189
|
+
| 一致性方案 | 分布式事务、中间态 + 重试、消息队列 |
|
|
190
|
+
| 幂等性设计 | 唯一索引、分布式锁、Token 机制、状态机 |
|
|
191
|
+
| 分布式事务 | 2PC、SAGA 模式 |
|
|
192
|
+
|
|
193
|
+
#### code-review 模板
|
|
194
|
+
|
|
195
|
+
| 章节 | 说明 |
|
|
196
|
+
|------|------|
|
|
197
|
+
| 评审原则 | 24 小时响应、不苛求完美、正向激励 |
|
|
198
|
+
| 好代码三要素 | 可读性、可靠性、可扩展性 |
|
|
199
|
+
| 检查清单 | 可读性检查、可靠性检查、可扩展性检查 |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 同步策略
|
|
204
|
+
|
|
205
|
+
### 环境知识同步(middleware/component)
|
|
206
|
+
|
|
207
|
+
**首次同步**:
|
|
208
|
+
1. 复制 `detection-patterns.yaml` 到本地
|
|
209
|
+
2. 扫描依赖文件、代码模式、环境变量
|
|
210
|
+
3. 按 MD 模板生成知识文件
|
|
211
|
+
4. 校验必填章节完整性
|
|
212
|
+
5. 注册到 registry.json
|
|
213
|
+
|
|
214
|
+
**增量同步**:
|
|
215
|
+
1. 扫描变更的依赖和代码
|
|
216
|
+
2. 对比已有知识文件
|
|
217
|
+
3. 仅更新变更项
|
|
218
|
+
4. 校验后更新注册表
|
|
219
|
+
|
|
220
|
+
### 研发模板同步(proposal/design/task/testcase)
|
|
221
|
+
|
|
222
|
+
**模板加载**:
|
|
223
|
+
1. 从 `knowledge/templates/` 读取模板文件
|
|
224
|
+
2. 解析模板中的占位符(如 `{需求名称}`)
|
|
225
|
+
3. 根据用户输入填充占位符
|
|
226
|
+
4. 输出到目标位置
|
|
227
|
+
|
|
228
|
+
**模板验证**:
|
|
229
|
+
1. 检查必填章节是否存在
|
|
230
|
+
2. 检查占位符是否全部填充
|
|
231
|
+
3. 检查 Markdown 格式是否正确
|
|
232
|
+
|
|
233
|
+
### 规范文档同步(standards)
|
|
234
|
+
|
|
235
|
+
**规范加载**:
|
|
236
|
+
1. 从 `knowledge/standards/` 读取规范文件
|
|
237
|
+
2. 解析规范中的检查项
|
|
238
|
+
3. 集成到 code-review 流程中
|
|
239
|
+
|
|
240
|
+
**规范更新**:
|
|
241
|
+
1. 定期 review 规范文档
|
|
242
|
+
2. 根据实践反馈更新规范
|
|
243
|
+
3. 更新后通知所有使用者
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 校验规则
|
|
248
|
+
|
|
249
|
+
### 章节完整性校验
|
|
250
|
+
|
|
251
|
+
检查 MD 文件是否包含所有必填章节:
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
middleware:
|
|
255
|
+
- "## 基本信息"
|
|
256
|
+
- "## 环境变量"
|
|
257
|
+
- "## 连接代码模板"
|
|
258
|
+
|
|
259
|
+
component:
|
|
260
|
+
- "## 基本信息"
|
|
261
|
+
- "## 接口定义"
|
|
262
|
+
- "## 使用示例"
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### 表格格式校验
|
|
266
|
+
|
|
267
|
+
- 表格必须有表头行
|
|
268
|
+
- 表格列数必须一致
|
|
269
|
+
- 必填表格不能为空
|
|
270
|
+
|
|
271
|
+
### 类型枚举校验
|
|
272
|
+
|
|
273
|
+
- 中间件类型必须在预定义枚举中
|
|
274
|
+
- 组件类型必须在预定义枚举中
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## AI 生成参考
|
|
279
|
+
|
|
280
|
+
### 环境知识生成
|
|
281
|
+
|
|
282
|
+
| 场景 | 参考文件 |
|
|
283
|
+
|------|---------|
|
|
284
|
+
| 扫描检测 | `knowledge/guides/support/environment-scanner.md` |
|
|
285
|
+
| 知识生成 | `knowledge/guides/support/knowledge-generator.md` |
|
|
286
|
+
| 检测规则 | `knowledge/environment/detection-patterns.yaml` |
|
|
287
|
+
|
|
288
|
+
### 研发文档生成
|
|
289
|
+
|
|
290
|
+
| 场景 | 参考文件 |
|
|
291
|
+
|------|---------|
|
|
292
|
+
| 需求提案 | `knowledge/process/01-requirement.md` + `knowledge/templates/product-proposal.md` |
|
|
293
|
+
| 系统设计 | `knowledge/process/02-design.md` + `knowledge/templates/system-design.md` |
|
|
294
|
+
| 任务分解 | `knowledge/process/03-implementation.md` + `knowledge/templates/task-breakdown.md` |
|
|
295
|
+
| 测试用例 | `knowledge/process/04-test.md` + `knowledge/templates/test-case.md` |
|
|
296
|
+
| DDD设计 | `knowledge/guides/domain-driven-design.md` + `knowledge/templates/domain-driven-design.md` |
|
|
297
|
+
|
|
298
|
+
### 规范文档引用
|
|
299
|
+
|
|
300
|
+
| 场景 | 参考文件 |
|
|
301
|
+
|------|---------|
|
|
302
|
+
| 编码规范 | `knowledge/standards/coding-style.md` |
|
|
303
|
+
| 数据一致性 | `knowledge/standards/data-consistency.md` |
|
|
304
|
+
| Code Review | `knowledge/standards/code-review.md` |
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## 版本历史
|
|
309
|
+
|
|
310
|
+
| 版本 | 日期 | 修改说明 |
|
|
311
|
+
|-----|------|---------|
|
|
312
|
+
| v1.0 | 2026-03-26 | 初始版本,定义 middleware 和 component 模板 |
|
|
313
|
+
| v2.0 | 2026-03-26 | 新增 development/、api-docs/、standards/分类,注册所有研发模板和规范文档 |
|
|
314
|
+
| v3.0 | 2026-03-26 | 新增 design-knowledge/、test-knowledge/、business-knowledge/ 分类,支持环境知识双向同步 |
|
|
315
|
+
| v3.1 | 2026-03-26 | 新增 DDD 模板(domain-driven-design),模板命名规范化 |
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
**维护者**: AutoSpec 团队
|
|
320
|
+
**进化分区**: 🟡 受控区
|
|
321
|
+
**关联文档**: `knowledge/environment/README.md`
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
# 领域驱动设计方法论
|
|
2
|
+
|
|
3
|
+
> **定位**: DDD方法论的实践指南,指导何时、如何应用DDD
|
|
4
|
+
>
|
|
5
|
+
> **版本**: v1.0
|
|
6
|
+
> **最后更新**: 2026-03-26
|
|
7
|
+
> **权威来源**: Eric Evans《领域驱动设计》、Vaughn Vernon《实现领域驱动设计》
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 何时使用DDD
|
|
12
|
+
|
|
13
|
+
### 适用场景评估
|
|
14
|
+
|
|
15
|
+
| 场景 | 推荐程度 | 原因 | 投入建议 |
|
|
16
|
+
|------|---------|------|---------|
|
|
17
|
+
| 核心业务系统 | ⭐⭐⭐ 强烈推荐 | 领域复杂度高,值得投入 | 重点建模 |
|
|
18
|
+
| 支撑系统 | ⭐⭐ 可选 | 复杂度中等,按需使用 | 关键模块建模 |
|
|
19
|
+
| CRUD系统 | ⭐ 不推荐 | 过度设计,简单方案即可 | 不需要DDD |
|
|
20
|
+
| 快速原型 | ⭐ 不推荐 | 迭代太快,建模成本高 | 后期重构 |
|
|
21
|
+
|
|
22
|
+
### 复杂度评估标准
|
|
23
|
+
|
|
24
|
+
**推荐DDD的条件**(满足2个以上):
|
|
25
|
+
1. 业务概念数量 > 20个
|
|
26
|
+
2. 业务规则复杂度 > 简单CRUD
|
|
27
|
+
3. 需要跨团队协作
|
|
28
|
+
4. 预期生命周期 > 2年
|
|
29
|
+
5. 业务逻辑频繁变更
|
|
30
|
+
|
|
31
|
+
**不推荐DDD的条件**:
|
|
32
|
+
1. 简单CRUD操作为主
|
|
33
|
+
2. 业务逻辑稳定不变
|
|
34
|
+
3. 团队规模 < 3人
|
|
35
|
+
4. 快速迭代原型阶段
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## DDD与AutoSpec流程融合
|
|
40
|
+
|
|
41
|
+
### 需求阶段 → 战略设计
|
|
42
|
+
|
|
43
|
+
| 需求阶段活动 | DDD对应活动 | 产出物 |
|
|
44
|
+
|-------------|------------|--------|
|
|
45
|
+
| 业务域拆解 | 子领域识别 | 核心域、支撑域、通用域划分 |
|
|
46
|
+
| 用例分析 | 限界上下文边界识别 | 上下文定义、边界划分 |
|
|
47
|
+
| 业务流程 | 上下文集成关系 | 上下文映射图 |
|
|
48
|
+
| 术语提取 | 统一语言建立 | 术语表 |
|
|
49
|
+
|
|
50
|
+
### 设计阶段 → 战术设计
|
|
51
|
+
|
|
52
|
+
| 设计阶段活动 | DDD对应活动 | 产出物 |
|
|
53
|
+
|-------------|------------|--------|
|
|
54
|
+
| 系统设计 | 聚合设计、领域模型 | 聚合定义、实体、值对象 |
|
|
55
|
+
| 接口设计 | 领域服务、仓储接口 | 服务定义、仓储契约 |
|
|
56
|
+
| 数据库设计 | 聚合持久化映射 | 表结构、索引设计 |
|
|
57
|
+
| 状态设计 | 聚合根状态机 | 状态流转图 |
|
|
58
|
+
|
|
59
|
+
### 实现阶段
|
|
60
|
+
|
|
61
|
+
| 实现阶段活动 | DDD实践 | 注意事项 |
|
|
62
|
+
|-------------|---------|---------|
|
|
63
|
+
| 代码组织 | 按聚合组织包结构 | 一个聚合一个包 |
|
|
64
|
+
| 依赖管理 | 领域层不依赖基础设施 | 依赖倒置 |
|
|
65
|
+
| 事件处理 | 领域事件驱动解耦 | 幂等处理 |
|
|
66
|
+
| 持久化 | 仓储隔离持久化细节 | 聚合完整性 |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## DDD核心实践
|
|
71
|
+
|
|
72
|
+
### 统一语言(Ubiquitous Language)
|
|
73
|
+
|
|
74
|
+
**定义**:团队共享的业务术语,消除沟通歧义
|
|
75
|
+
|
|
76
|
+
**实践要点**:
|
|
77
|
+
- 代码命名与业务术语一致
|
|
78
|
+
- 文档与代码术语同步
|
|
79
|
+
- 术语冲突必须消除
|
|
80
|
+
- 新术语需要团队共识
|
|
81
|
+
|
|
82
|
+
**常见问题**:
|
|
83
|
+
| 问题 | 症状 | 解决方案 |
|
|
84
|
+
|------|------|---------|
|
|
85
|
+
| 术语不一致 | 同一概念多个名称 | 统一到术语表 |
|
|
86
|
+
| 技术术语污染 | 代码用技术术语而非业务术语 | 重构命名 |
|
|
87
|
+
| 术语漂移 | 不同阶段术语含义变化 | 定期审查术语表 |
|
|
88
|
+
|
|
89
|
+
### 聚合设计原则
|
|
90
|
+
|
|
91
|
+
**核心原则**:
|
|
92
|
+
1. **小聚合优于大聚合**:减少并发冲突
|
|
93
|
+
2. **通过ID引用其他聚合**:保持边界清晰
|
|
94
|
+
3. **聚合边界 = 一致性边界**:事务边界
|
|
95
|
+
|
|
96
|
+
**聚合大小判断**:
|
|
97
|
+
```
|
|
98
|
+
理想聚合大小:
|
|
99
|
+
- 1个聚合根
|
|
100
|
+
- 0-3个内部实体
|
|
101
|
+
- 若干值对象
|
|
102
|
+
- 不超过5个字段变更频繁的属性
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**聚合划分信号**:
|
|
106
|
+
| 信号 | 说明 | 行动 |
|
|
107
|
+
|------|------|------|
|
|
108
|
+
| 并发冲突频繁 | 多用户同时修改同一聚合 | 考虑拆分 |
|
|
109
|
+
| 加载性能差 | 聚合数据量大 | 考虑拆分 |
|
|
110
|
+
| 事务失败率高 | 事务涉及多个独立变更 | 考虑拆分 |
|
|
111
|
+
| 部分字段很少使用 | 某些字段很少被访问 | 考虑拆分 |
|
|
112
|
+
|
|
113
|
+
### 领域事件驱动
|
|
114
|
+
|
|
115
|
+
**事件设计原则**:
|
|
116
|
+
- 命名:过去时(OrderCreated, PaymentCompleted)
|
|
117
|
+
- 不可变:事件一旦发生不可修改
|
|
118
|
+
- 幂等:同一事件多次处理结果相同
|
|
119
|
+
|
|
120
|
+
**事件驱动模式**:
|
|
121
|
+
```
|
|
122
|
+
聚合A变更 → 发布事件 → 事件总线 → 聚合B订阅 → 聚合B变更
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**事件存储**:
|
|
126
|
+
| 模式 | 说明 | 适用场景 |
|
|
127
|
+
|------|------|---------|
|
|
128
|
+
| 直接发布 | 事件直接发送到消息队列 | 允许丢失 |
|
|
129
|
+
| 事件表 | 事件先存库再发送 | 不允许丢失 |
|
|
130
|
+
| 事件溯源 | 事件作为状态存储 | 需要历史追溯 |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 上下文集成模式详解
|
|
135
|
+
|
|
136
|
+
### 模式选择决策树
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
上下文关系类型?
|
|
140
|
+
├── 同一团队
|
|
141
|
+
│ └── Partnership(伙伴关系)
|
|
142
|
+
├── 不同团队,下游有话语权
|
|
143
|
+
│ └── Customer/Supplier(客户-供应商)
|
|
144
|
+
├── 不同团队,下游无话语权
|
|
145
|
+
│ ├── 需要隔离模型
|
|
146
|
+
│ │ └── Anticorruption Layer(防腐层)
|
|
147
|
+
│ └── 可以接受上游模型
|
|
148
|
+
│ └── Conformist(跟随者)
|
|
149
|
+
├── 共享核心逻辑
|
|
150
|
+
│ └── Shared Kernel(共享内核)
|
|
151
|
+
└── 对外提供服务
|
|
152
|
+
└── Open Host Service(开放主机服务)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 模式详解
|
|
156
|
+
|
|
157
|
+
#### Partnership(伙伴关系)
|
|
158
|
+
|
|
159
|
+
**适用场景**:同一团队或紧密协作的团队
|
|
160
|
+
|
|
161
|
+
**特点**:
|
|
162
|
+
- 共同演进
|
|
163
|
+
- 同步协调
|
|
164
|
+
- 共享责任
|
|
165
|
+
|
|
166
|
+
**实践建议**:
|
|
167
|
+
- 定期同步会议
|
|
168
|
+
- 共享代码仓库
|
|
169
|
+
- 统一部署节奏
|
|
170
|
+
|
|
171
|
+
#### Anticorruption Layer(防腐层)
|
|
172
|
+
|
|
173
|
+
**适用场景**:集成外部系统或遗留系统
|
|
174
|
+
|
|
175
|
+
**特点**:
|
|
176
|
+
- 隔离外部模型
|
|
177
|
+
- 适配器模式
|
|
178
|
+
- 保护内部模型
|
|
179
|
+
|
|
180
|
+
**实践建议**:
|
|
181
|
+
- 定义清晰的适配接口
|
|
182
|
+
- 外部模型不渗透到内部
|
|
183
|
+
- 适配逻辑集中管理
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 反模式警示
|
|
188
|
+
|
|
189
|
+
### 贫血模型(Anemic Domain Model)
|
|
190
|
+
|
|
191
|
+
**症状**:
|
|
192
|
+
- 实体只有getter/setter
|
|
193
|
+
- 业务逻辑全在服务层
|
|
194
|
+
- 失去面向对象价值
|
|
195
|
+
|
|
196
|
+
**风险**:
|
|
197
|
+
- 业务逻辑散落
|
|
198
|
+
- 难以维护
|
|
199
|
+
- 重复代码
|
|
200
|
+
|
|
201
|
+
**解决方案**:
|
|
202
|
+
```
|
|
203
|
+
// 错误:贫血模型
|
|
204
|
+
class Order {
|
|
205
|
+
String status;
|
|
206
|
+
// 只有getter/setter
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
class OrderService {
|
|
210
|
+
void pay(Order order) {
|
|
211
|
+
order.setStatus("PAID"); // 业务逻辑在服务层
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// 正确:富领域模型
|
|
216
|
+
class Order {
|
|
217
|
+
String status;
|
|
218
|
+
|
|
219
|
+
void pay() {
|
|
220
|
+
if (!canPay()) throw new BusinessException();
|
|
221
|
+
this.status = "PAID";
|
|
222
|
+
publishEvent(new OrderPaidEvent(this.id));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### 大聚合(Large Aggregate)
|
|
228
|
+
|
|
229
|
+
**症状**:
|
|
230
|
+
- 聚合包含过多实体
|
|
231
|
+
- 加载性能差
|
|
232
|
+
- 并发冲突频繁
|
|
233
|
+
|
|
234
|
+
**风险**:
|
|
235
|
+
- 性能问题
|
|
236
|
+
- 可扩展性差
|
|
237
|
+
- 用户体验差
|
|
238
|
+
|
|
239
|
+
**解决方案**:
|
|
240
|
+
```
|
|
241
|
+
// 错误:大聚合
|
|
242
|
+
class Order {
|
|
243
|
+
List<OrderItem> items; // 可能有几十个
|
|
244
|
+
List<Payment> payments; // 可能有多个
|
|
245
|
+
List<Refund> refunds; // 可能有多个
|
|
246
|
+
List<Logistics> logistics; // 可能有多个
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// 正确:拆分小聚合
|
|
250
|
+
class Order {
|
|
251
|
+
String id;
|
|
252
|
+
String status;
|
|
253
|
+
Money totalAmount;
|
|
254
|
+
// 只保留核心属性
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
class OrderItem { /* 独立聚合 */ }
|
|
258
|
+
class Payment { /* 独立聚合 */ }
|
|
259
|
+
class Refund { /* 独立聚合 */ }
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### 领域服务滥用
|
|
263
|
+
|
|
264
|
+
**症状**:
|
|
265
|
+
- 服务承载所有逻辑
|
|
266
|
+
- 实体变成数据容器
|
|
267
|
+
- 过程式代码
|
|
268
|
+
|
|
269
|
+
**风险**:
|
|
270
|
+
- 失去DDD价值
|
|
271
|
+
- 代码难以理解
|
|
272
|
+
- 测试困难
|
|
273
|
+
|
|
274
|
+
**解决方案**:
|
|
275
|
+
```
|
|
276
|
+
// 错误:逻辑在服务
|
|
277
|
+
class OrderService {
|
|
278
|
+
void calculateTotal(Order order) {
|
|
279
|
+
// 计算逻辑在服务
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// 正确:逻辑在实体
|
|
284
|
+
class Order {
|
|
285
|
+
Money calculateTotal() {
|
|
286
|
+
return items.stream()
|
|
287
|
+
.map(Item::getPrice)
|
|
288
|
+
.reduce(Money.ZERO, Money::add);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## DDD实施检查清单
|
|
296
|
+
|
|
297
|
+
### 战略设计阶段
|
|
298
|
+
|
|
299
|
+
- [ ] 识别核心域、支撑域、通用域
|
|
300
|
+
- [ ] 定义限界上下文边界
|
|
301
|
+
- [ ] 绘制上下文映射图
|
|
302
|
+
- [ ] 确定上下文集成模式
|
|
303
|
+
- [ ] 建立统一语言术语表
|
|
304
|
+
|
|
305
|
+
### 战术设计阶段
|
|
306
|
+
|
|
307
|
+
- [ ] 设计聚合边界
|
|
308
|
+
- [ ] 定义聚合根、实体、值对象
|
|
309
|
+
- [ ] 设计领域服务
|
|
310
|
+
- [ ] 定义领域事件
|
|
311
|
+
- [ ] 设计仓储接口
|
|
312
|
+
|
|
313
|
+
### 实现阶段
|
|
314
|
+
|
|
315
|
+
- [ ] 代码结构按聚合组织
|
|
316
|
+
- [ ] 领域层不依赖基础设施
|
|
317
|
+
- [ ] 领域事件驱动解耦
|
|
318
|
+
- [ ] 仓储隔离持久化细节
|
|
319
|
+
- [ ] 统一语言一致性检查
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## 参考资料
|
|
324
|
+
|
|
325
|
+
### 权威书籍
|
|
326
|
+
|
|
327
|
+
1. **Eric Evans《Domain-Driven Design: Tackling Complexity in the Heart of Software》**
|
|
328
|
+
- DDD奠基之作
|
|
329
|
+
- 战略设计核心概念
|
|
330
|
+
|
|
331
|
+
2. **Vaughn Vernon《Implementing Domain-Driven Design》**
|
|
332
|
+
- 实践指南
|
|
333
|
+
- 战术设计详解
|
|
334
|
+
|
|
335
|
+
### 在线资源
|
|
336
|
+
|
|
337
|
+
- Microsoft Azure Architecture Center - Tactical DDD
|
|
338
|
+
- DDD Crew GitHub - Bounded Context Canvas, Context Mapping
|
|
339
|
+
- Martin Fowler - CQRS, Event Sourcing
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
**维护者**: AutoSpec 团队
|
|
344
|
+
**进化分区**: 🟡 受控区
|
|
345
|
+
**关联文档**: `knowledge/templates/domain-driven-design.md`
|